@@ -1180,6 +1180,106 @@ def test_get(self):
11801180 self .assertRaises (TypeError , lb .get , 1 , 2 , 3 )
11811181 self .assertRaises (TclError , lb .get , 2.4 )
11821182
1183+ def test_size (self ):
1184+ lb = self .create ()
1185+ self .assertEqual (lb .size (), 0 )
1186+ lb .insert (0 , * ('el%d' % i for i in range (8 )))
1187+ self .assertEqual (lb .size (), 8 )
1188+ lb .delete (0 , 2 )
1189+ self .assertEqual (lb .size (), 5 )
1190+ self .assertRaises (TypeError , lb .size , 0 )
1191+
1192+ def test_delete (self ):
1193+ lb = self .create ()
1194+ lb .insert (0 , * ('el%d' % i for i in range (8 )))
1195+ lb .delete (0 )
1196+ self .assertEqual (lb .get (0 , 'end' ),
1197+ ('el1' , 'el2' , 'el3' , 'el4' , 'el5' , 'el6' , 'el7' ))
1198+ lb .delete (2 , 4 )
1199+ self .assertEqual (lb .get (0 , 'end' ), ('el1' , 'el2' , 'el6' , 'el7' ))
1200+ lb .delete (0 , 'end' )
1201+ self .assertEqual (lb .size (), 0 )
1202+ self .assertRaises (TclError , lb .delete , 'noindex' )
1203+ self .assertRaises (TypeError , lb .delete )
1204+
1205+ def test_index (self ):
1206+ lb = self .create ()
1207+ lb .insert (0 , * ('el%d' % i for i in range (8 )))
1208+ self .assertEqual (lb .index (3 ), 3 )
1209+ self .assertEqual (lb .index ('end' ), 8 ) # the number of elements
1210+ lb .activate (4 )
1211+ self .assertEqual (lb .index ('active' ), 4 )
1212+ lb .selection_anchor (2 )
1213+ self .assertEqual (lb .index ('anchor' ), 2 )
1214+ self .assertRaisesRegex (TclError , 'bad listbox index "spam"' ,
1215+ lb .index , 'spam' )
1216+
1217+ def test_nearest (self ):
1218+ lb = self .create ()
1219+ lb .insert (0 , * ('el%d' % i for i in range (8 )))
1220+ lb .pack ()
1221+ lb .wait_visibility ()
1222+ lb .update ()
1223+ # Derive the line height from the first item, which is always
1224+ # displayed (bbox() returns None for items that are not).
1225+ x , y , w , h = lb .bbox (0 )
1226+ self .assertEqual (lb .nearest (y + h // 2 ), 0 )
1227+ self .assertEqual (lb .nearest (y + 3 * h + h // 2 ), 3 )
1228+ self .assertRaises (TclError , lb .nearest , 'spam' )
1229+ self .assertRaises (TypeError , lb .nearest )
1230+
1231+ def test_see (self ):
1232+ lb = self .create (height = 5 )
1233+ lb .insert (0 , * ('el%d' % i for i in range (20 )))
1234+ lb .pack ()
1235+ lb .update_idletasks ()
1236+ lb .see ('end' )
1237+ lb .update_idletasks ()
1238+ self .assertEqual (lb .yview ()[1 ], 1.0 )
1239+ lb .see (0 )
1240+ lb .update_idletasks ()
1241+ self .assertEqual (lb .yview ()[0 ], 0.0 )
1242+ self .assertRaises (TclError , lb .see , 'spam' )
1243+
1244+ def test_activate (self ):
1245+ lb = self .create ()
1246+ lb .insert (0 , * ('el%d' % i for i in range (8 )))
1247+ lb .activate (3 )
1248+ self .assertEqual (lb .index ('active' ), 3 )
1249+ lb .activate ('end' )
1250+ self .assertEqual (lb .index ('active' ), 7 )
1251+ self .assertRaises (TclError , lb .activate , 'spam' )
1252+ self .assertRaises (TypeError , lb .activate )
1253+
1254+ def test_selection (self ):
1255+ lb = self .create ()
1256+ lb .insert (0 , * ('el%d' % i for i in range (8 )))
1257+ self .assertEqual (lb .curselection (), ())
1258+ self .assertFalse (lb .selection_includes (0 ))
1259+
1260+ lb .selection_set (2 , 4 )
1261+ lb .selection_set (6 )
1262+ self .assertEqual (lb .curselection (), (2 , 3 , 4 , 6 ))
1263+ self .assertTrue (lb .selection_includes (3 ))
1264+ self .assertFalse (lb .selection_includes (5 ))
1265+
1266+ lb .selection_clear (3 , 4 )
1267+ self .assertEqual (lb .curselection (), (2 , 6 ))
1268+
1269+ lb .selection_anchor (5 )
1270+ self .assertEqual (lb .index ('anchor' ), 5 )
1271+
1272+ # select_* are aliases of the selection_* methods.
1273+ lb .select_clear (0 , 'end' )
1274+ self .assertEqual (lb .curselection (), ())
1275+ lb .select_set (1 )
1276+ self .assertTrue (lb .select_includes (1 ))
1277+ lb .select_anchor (1 )
1278+ self .assertEqual (lb .index ('anchor' ), 1 )
1279+
1280+ self .assertRaisesRegex (TclError , 'bad listbox index "spam"' ,
1281+ lb .selection_includes , 'spam' )
1282+
11831283
11841284@add_configure_tests (PixelSizeTests , StandardOptionsTests )
11851285class ScaleTest (AbstractWidgetTest , unittest .TestCase ):
0 commit comments