@@ -1091,6 +1091,106 @@ def test_get(self):
10911091 self .assertRaises (TypeError , lb .get , 1 , 2 , 3 )
10921092 self .assertRaises (TclError , lb .get , 2.4 )
10931093
1094+ def test_size (self ):
1095+ lb = self .create ()
1096+ self .assertEqual (lb .size (), 0 )
1097+ lb .insert (0 , * ('el%d' % i for i in range (8 )))
1098+ self .assertEqual (lb .size (), 8 )
1099+ lb .delete (0 , 2 )
1100+ self .assertEqual (lb .size (), 5 )
1101+ self .assertRaises (TypeError , lb .size , 0 )
1102+
1103+ def test_delete (self ):
1104+ lb = self .create ()
1105+ lb .insert (0 , * ('el%d' % i for i in range (8 )))
1106+ lb .delete (0 )
1107+ self .assertEqual (lb .get (0 , 'end' ),
1108+ ('el1' , 'el2' , 'el3' , 'el4' , 'el5' , 'el6' , 'el7' ))
1109+ lb .delete (2 , 4 )
1110+ self .assertEqual (lb .get (0 , 'end' ), ('el1' , 'el2' , 'el6' , 'el7' ))
1111+ lb .delete (0 , 'end' )
1112+ self .assertEqual (lb .size (), 0 )
1113+ self .assertRaises (TclError , lb .delete , 'noindex' )
1114+ self .assertRaises (TypeError , lb .delete )
1115+
1116+ def test_index (self ):
1117+ lb = self .create ()
1118+ lb .insert (0 , * ('el%d' % i for i in range (8 )))
1119+ self .assertEqual (lb .index (3 ), 3 )
1120+ self .assertEqual (lb .index ('end' ), 8 ) # the number of elements
1121+ lb .activate (4 )
1122+ self .assertEqual (lb .index ('active' ), 4 )
1123+ lb .selection_anchor (2 )
1124+ self .assertEqual (lb .index ('anchor' ), 2 )
1125+ self .assertRaisesRegex (TclError , 'bad listbox index "spam"' ,
1126+ lb .index , 'spam' )
1127+
1128+ def test_nearest (self ):
1129+ lb = self .create ()
1130+ lb .insert (0 , * ('el%d' % i for i in range (8 )))
1131+ lb .pack ()
1132+ lb .wait_visibility ()
1133+ lb .update ()
1134+ # Derive the line height from the first item, which is always
1135+ # displayed (bbox() returns None for items that are not).
1136+ x , y , w , h = lb .bbox (0 )
1137+ self .assertEqual (lb .nearest (y + h // 2 ), 0 )
1138+ self .assertEqual (lb .nearest (y + 3 * h + h // 2 ), 3 )
1139+ self .assertRaises (TclError , lb .nearest , 'spam' )
1140+ self .assertRaises (TypeError , lb .nearest )
1141+
1142+ def test_see (self ):
1143+ lb = self .create (height = 5 )
1144+ lb .insert (0 , * ('el%d' % i for i in range (20 )))
1145+ lb .pack ()
1146+ lb .update_idletasks ()
1147+ lb .see ('end' )
1148+ lb .update_idletasks ()
1149+ self .assertEqual (lb .yview ()[1 ], 1.0 )
1150+ lb .see (0 )
1151+ lb .update_idletasks ()
1152+ self .assertEqual (lb .yview ()[0 ], 0.0 )
1153+ self .assertRaises (TclError , lb .see , 'spam' )
1154+
1155+ def test_activate (self ):
1156+ lb = self .create ()
1157+ lb .insert (0 , * ('el%d' % i for i in range (8 )))
1158+ lb .activate (3 )
1159+ self .assertEqual (lb .index ('active' ), 3 )
1160+ lb .activate ('end' )
1161+ self .assertEqual (lb .index ('active' ), 7 )
1162+ self .assertRaises (TclError , lb .activate , 'spam' )
1163+ self .assertRaises (TypeError , lb .activate )
1164+
1165+ def test_selection (self ):
1166+ lb = self .create ()
1167+ lb .insert (0 , * ('el%d' % i for i in range (8 )))
1168+ self .assertEqual (lb .curselection (), ())
1169+ self .assertFalse (lb .selection_includes (0 ))
1170+
1171+ lb .selection_set (2 , 4 )
1172+ lb .selection_set (6 )
1173+ self .assertEqual (lb .curselection (), (2 , 3 , 4 , 6 ))
1174+ self .assertTrue (lb .selection_includes (3 ))
1175+ self .assertFalse (lb .selection_includes (5 ))
1176+
1177+ lb .selection_clear (3 , 4 )
1178+ self .assertEqual (lb .curselection (), (2 , 6 ))
1179+
1180+ lb .selection_anchor (5 )
1181+ self .assertEqual (lb .index ('anchor' ), 5 )
1182+
1183+ # select_* are aliases of the selection_* methods.
1184+ lb .select_clear (0 , 'end' )
1185+ self .assertEqual (lb .curselection (), ())
1186+ lb .select_set (1 )
1187+ self .assertTrue (lb .select_includes (1 ))
1188+ lb .select_anchor (1 )
1189+ self .assertEqual (lb .index ('anchor' ), 1 )
1190+
1191+ self .assertRaisesRegex (TclError , 'bad listbox index "spam"' ,
1192+ lb .selection_includes , 'spam' )
1193+
10941194
10951195@add_standard_options (PixelSizeTests , StandardOptionsTests )
10961196class ScaleTest (AbstractWidgetTest , unittest .TestCase ):
0 commit comments