Skip to content

Commit 0280744

Browse files
[3.13] gh-130693: Add more tests for tkinter.Text.search() (GH-130848) (GH-141669) (GH-141670)
(cherry picked from commit 8db1aad) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
1 parent 8d4e94e commit 0280744

File tree

1 file changed

+38
-5
lines changed

1 file changed

+38
-5
lines changed

Lib/test/test_tkinter/test_text.py

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,45 @@ def test_search(self):
3434

3535
# Invalid text index.
3636
self.assertRaises(tkinter.TclError, text.search, '', 0)
37+
self.assertRaises(tkinter.TclError, text.search, '', '')
38+
self.assertRaises(tkinter.TclError, text.search, '', 'invalid')
39+
self.assertRaises(tkinter.TclError, text.search, '', '1.0', 'invalid')
3740

38-
# Check if we are getting the indices as strings -- you are likely
39-
# to get Tcl_Obj under Tk 8.5 if Tkinter doesn't convert it.
40-
text.insert('1.0', 'hi-test')
41-
self.assertEqual(text.search('-test', '1.0', 'end'), '1.2')
42-
self.assertEqual(text.search('test', '1.0', 'end'), '1.3')
41+
text.insert('1.0',
42+
'This is a test. This is only a test.\n'
43+
'Another line.\n'
44+
'Yet another line.\n'
45+
'64-bit')
46+
47+
self.assertEqual(text.search('test', '1.0'), '1.10')
48+
self.assertEqual(text.search('test', '1.0', 'end'), '1.10')
49+
self.assertEqual(text.search('test', '1.0', '1.10'), '')
50+
self.assertEqual(text.search('test', '1.11'), '1.31')
51+
self.assertEqual(text.search('test', '1.32', 'end'), '')
52+
self.assertEqual(text.search('test', '1.32'), '1.10')
53+
54+
self.assertEqual(text.search('', '1.0'), '1.0') # empty pattern
55+
self.assertEqual(text.search('nonexistent', '1.0'), '')
56+
self.assertEqual(text.search('-bit', '1.0'), '4.2') # starts with a hyphen
57+
58+
self.assertEqual(text.search('line', '3.0'), '3.12')
59+
self.assertEqual(text.search('line', '3.0', forwards=True), '3.12')
60+
self.assertEqual(text.search('line', '3.0', backwards=True), '2.8')
61+
self.assertEqual(text.search('line', '3.0', forwards=True, backwards=True), '2.8')
62+
63+
self.assertEqual(text.search('t.', '1.0'), '1.13')
64+
self.assertEqual(text.search('t.', '1.0', exact=True), '1.13')
65+
self.assertEqual(text.search('t.', '1.0', regexp=True), '1.10')
66+
self.assertEqual(text.search('t.', '1.0', exact=True, regexp=True), '1.10')
67+
68+
self.assertEqual(text.search('TEST', '1.0'), '')
69+
self.assertEqual(text.search('TEST', '1.0', nocase=True), '1.10')
70+
71+
var = tkinter.Variable(self.root)
72+
self.assertEqual(text.search('test', '1.0', count=var), '1.10')
73+
self.assertEqual(var.get(), 4 if self.wantobjects else '4')
74+
75+
# TODO: Add test for elide=True
4376

4477
def test_count(self):
4578
text = self.text

0 commit comments

Comments
 (0)