mirror of
https://github.com/python/cpython.git
synced 2025-07-14 14:55:17 +00:00

It now always returns an integer if one or less counting options are specified. Previously it could return a single count as a 1-tuple, an integer (only if option "update" was specified) or None if no items found. The result is now the same if wantobjects is set to 0.
79 lines
3.2 KiB
Python
79 lines
3.2 KiB
Python
import unittest
|
|
import tkinter
|
|
from test.support import requires
|
|
from test.test_tkinter.support import AbstractTkTest
|
|
|
|
requires('gui')
|
|
|
|
class TextTest(AbstractTkTest, unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
super().setUp()
|
|
self.text = tkinter.Text(self.root)
|
|
self.text.pack()
|
|
|
|
def test_debug(self):
|
|
text = self.text
|
|
olddebug = text.debug()
|
|
try:
|
|
text.debug(0)
|
|
self.assertEqual(text.debug(), 0)
|
|
text.debug(1)
|
|
self.assertEqual(text.debug(), 1)
|
|
finally:
|
|
text.debug(olddebug)
|
|
self.assertEqual(text.debug(), olddebug)
|
|
|
|
def test_search(self):
|
|
text = self.text
|
|
|
|
# pattern and index are obligatory arguments.
|
|
self.assertRaises(tkinter.TclError, text.search, None, '1.0')
|
|
self.assertRaises(tkinter.TclError, text.search, 'a', None)
|
|
self.assertRaises(tkinter.TclError, text.search, None, None)
|
|
|
|
# Invalid text index.
|
|
self.assertRaises(tkinter.TclError, text.search, '', 0)
|
|
|
|
# Check if we are getting the indices as strings -- you are likely
|
|
# to get Tcl_Obj under Tk 8.5 if Tkinter doesn't convert it.
|
|
text.insert('1.0', 'hi-test')
|
|
self.assertEqual(text.search('-test', '1.0', 'end'), '1.2')
|
|
self.assertEqual(text.search('test', '1.0', 'end'), '1.3')
|
|
|
|
def test_count(self):
|
|
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')
|
|
self.assertEqual(len(text.count('1.0', 'end', *options)), 8)
|
|
self.assertEqual(text.count('1.0', 'end', 'chars', 'lines'), (124, 4))
|
|
self.assertEqual(text.count('1.3', '4.5', 'chars', 'lines'), (92, 3))
|
|
self.assertEqual(text.count('4.5', '1.3', 'chars', 'lines'), (-92, -3))
|
|
self.assertEqual(text.count('1.3', '1.3', 'chars', 'lines'), (0, 0))
|
|
self.assertEqual(text.count('1.0', 'end', 'lines'), 4)
|
|
self.assertEqual(text.count('end', '1.0', 'lines'), -4)
|
|
self.assertEqual(text.count('1.3', '1.5', 'lines'), 0)
|
|
self.assertEqual(text.count('1.3', '1.3', 'lines'), 0)
|
|
self.assertEqual(text.count('1.0', 'end'), 124) # 'indices' by default
|
|
self.assertEqual(text.count('1.0', 'end', 'indices'), 124)
|
|
self.assertRaises(tkinter.TclError, text.count, '1.0', 'end', 'spam')
|
|
self.assertRaises(tkinter.TclError, text.count, '1.0', 'end', '-lines')
|
|
|
|
self.assertIsInstance(text.count('1.3', '1.5', 'ypixels'), int)
|
|
self.assertIsInstance(text.count('1.3', '1.5', 'update', 'ypixels'), int)
|
|
self.assertEqual(text.count('1.3', '1.3', 'update', 'ypixels'), 0)
|
|
self.assertEqual(text.count('1.3', '1.5', 'update', 'indices'), 2)
|
|
self.assertEqual(text.count('1.3', '1.3', 'update', 'indices'), 0)
|
|
self.assertEqual(text.count('1.3', '1.5', 'update'), 2)
|
|
self.assertEqual(text.count('1.3', '1.3', 'update'), 0)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|