@@ -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