@@ -40,6 +40,60 @@ def test_search(self):
40
40
self .assertEqual (text .search ('-test' , '1.0' , 'end' ), '1.2' )
41
41
self .assertEqual (text .search ('test' , '1.0' , 'end' ), '1.3' )
42
42
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
+
43
97
44
98
if __name__ == "__main__" :
45
99
unittest .main ()
0 commit comments