Skip to content

gh-97928: Add tests for tkinter.Text.count() #98269

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions Lib/test/test_tkinter/test_text.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,60 @@ def test_search(self):
self.assertEqual(text.search('-test', '1.0', 'end'), '1.2')
self.assertEqual(text.search('test', '1.0', 'end'), '1.3')

def test_count(self):
# XXX Some assertions do not check against the intended result,
# but instead check the current result to prevent regression.
text = self.text
text.insert('1.0',
'Lorem ipsum dolor sit amet,\n'
'consectetur adipiscing elit,\n'
'sed do eiusmod tempor incididunt\n'
'ut labore et dolore magna aliqua.')

options = ('chars', 'indices', 'lines',
'displaychars', 'displayindices', 'displaylines',
'xpixels', 'ypixels')
if self.wantobjects:
self.assertEqual(len(text.count('1.0', 'end', *options)), 8)
else:
text.count('1.0', 'end', *options)
self.assertEqual(text.count('1.0', 'end', 'chars', 'lines'), (124, 4)
if self.wantobjects else '124 4')
self.assertEqual(text.count('1.3', '4.5', 'chars', 'lines'), (92, 3)
if self.wantobjects else '92 3')
self.assertEqual(text.count('4.5', '1.3', 'chars', 'lines'), (-92, -3)
if self.wantobjects else '-92 -3')
self.assertEqual(text.count('1.3', '1.3', 'chars', 'lines'), (0, 0)
if self.wantobjects else '0 0')
self.assertEqual(text.count('1.0', 'end', 'lines'), (4,)
if self.wantobjects else ('4',))
self.assertEqual(text.count('end', '1.0', 'lines'), (-4,)
if self.wantobjects else ('-4',))
self.assertEqual(text.count('1.3', '1.5', 'lines'), None
if self.wantobjects else ('0',))
self.assertEqual(text.count('1.3', '1.3', 'lines'), None
if self.wantobjects else ('0',))
self.assertEqual(text.count('1.0', 'end'), (124,) # 'indices' by default
if self.wantobjects else ('124',))
self.assertRaises(tkinter.TclError, text.count, '1.0', 'end', 'spam')
# '-lines' is ignored, 'indices' is used by default
self.assertEqual(text.count('1.0', 'end', '-lines'), (124,)
if self.wantobjects else ('124',))

self.assertIsInstance(text.count('1.3', '1.5', 'ypixels'), tuple)
self.assertIsInstance(text.count('1.3', '1.5', 'update', 'ypixels'), int
if self.wantobjects else str)
self.assertEqual(text.count('1.3', '1.3', 'update', 'ypixels'), None
if self.wantobjects else '0')
self.assertEqual(text.count('1.3', '1.5', 'update', 'indices'), 2
if self.wantobjects else '2')
self.assertEqual(text.count('1.3', '1.3', 'update', 'indices'), None
if self.wantobjects else '0')
self.assertEqual(text.count('1.3', '1.5', 'update'), (2,)
if self.wantobjects else ('2',))
self.assertEqual(text.count('1.3', '1.3', 'update'), None
if self.wantobjects else ('0',))


if __name__ == "__main__":
unittest.main()