@@ -40,6 +40,60 @@ def test_search(self):
4040 self .assertEqual (text .search ('-test' , '1.0' , 'end' ), '1.2' )
4141 self .assertEqual (text .search ('test' , '1.0' , 'end' ), '1.3' )
4242
43+ def test_count (self ):
44+ # XXX Some assertions do not check against the intended result,
45+ # but instead check the current result to prevent regression.
46+ text = self .text
47+ text .insert ('1.0' ,
48+ 'Lorem ipsum dolor sit amet,\n '
49+ 'consectetur adipiscing elit,\n '
50+ 'sed do eiusmod tempor incididunt\n '
51+ 'ut labore et dolore magna aliqua.' )
52+
53+ options = ('chars' , 'indices' , 'lines' ,
54+ 'displaychars' , 'displayindices' , 'displaylines' ,
55+ 'xpixels' , 'ypixels' )
56+ if self .wantobjects :
57+ self .assertEqual (len (text .count ('1.0' , 'end' , * options )), 8 )
58+ else :
59+ text .count ('1.0' , 'end' , * options )
60+ self .assertEqual (text .count ('1.0' , 'end' , 'chars' , 'lines' ), (124 , 4 )
61+ if self .wantobjects else '124 4' )
62+ self .assertEqual (text .count ('1.3' , '4.5' , 'chars' , 'lines' ), (92 , 3 )
63+ if self .wantobjects else '92 3' )
64+ self .assertEqual (text .count ('4.5' , '1.3' , 'chars' , 'lines' ), (- 92 , - 3 )
65+ if self .wantobjects else '-92 -3' )
66+ self .assertEqual (text .count ('1.3' , '1.3' , 'chars' , 'lines' ), (0 , 0 )
67+ if self .wantobjects else '0 0' )
68+ self .assertEqual (text .count ('1.0' , 'end' , 'lines' ), (4 ,)
69+ if self .wantobjects else ('4' ,))
70+ self .assertEqual (text .count ('end' , '1.0' , 'lines' ), (- 4 ,)
71+ if self .wantobjects else ('-4' ,))
72+ self .assertEqual (text .count ('1.3' , '1.5' , 'lines' ), None
73+ if self .wantobjects else ('0' ,))
74+ self .assertEqual (text .count ('1.3' , '1.3' , 'lines' ), None
75+ if self .wantobjects else ('0' ,))
76+ self .assertEqual (text .count ('1.0' , 'end' ), (124 ,) # 'indices' by default
77+ if self .wantobjects else ('124' ,))
78+ self .assertRaises (tkinter .TclError , text .count , '1.0' , 'end' , 'spam' )
79+ # '-lines' is ignored, 'indices' is used by default
80+ self .assertEqual (text .count ('1.0' , 'end' , '-lines' ), (124 ,)
81+ if self .wantobjects else ('124' ,))
82+
83+ self .assertIsInstance (text .count ('1.3' , '1.5' , 'ypixels' ), tuple )
84+ self .assertIsInstance (text .count ('1.3' , '1.5' , 'update' , 'ypixels' ), int
85+ if self .wantobjects else str )
86+ self .assertEqual (text .count ('1.3' , '1.3' , 'update' , 'ypixels' ), None
87+ if self .wantobjects else '0' )
88+ self .assertEqual (text .count ('1.3' , '1.5' , 'update' , 'indices' ), 2
89+ if self .wantobjects else '2' )
90+ self .assertEqual (text .count ('1.3' , '1.3' , 'update' , 'indices' ), None
91+ if self .wantobjects else '0' )
92+ self .assertEqual (text .count ('1.3' , '1.5' , 'update' ), (2 ,)
93+ if self .wantobjects else ('2' ,))
94+ self .assertEqual (text .count ('1.3' , '1.3' , 'update' ), None
95+ if self .wantobjects else ('0' ,))
96+
4397
4498if __name__ == "__main__" :
4599 unittest .main ()
0 commit comments