@@ -1180,6 +1180,104 @@ 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 .update_idletasks ()
1222+ x1 , y1 , x2 , y2 = lb .bbox (0 )
1223+ self .assertEqual (lb .nearest (y1 + 1 ), 0 )
1224+ x1 , y1 , x2 , y2 = lb .bbox (3 )
1225+ self .assertEqual (lb .nearest (y1 + 1 ), 3 )
1226+ self .assertRaises (TclError , lb .nearest , 'spam' )
1227+ self .assertRaises (TypeError , lb .nearest )
1228+
1229+ def test_see (self ):
1230+ lb = self .create (height = 5 )
1231+ lb .insert (0 , * ('el%d' % i for i in range (20 )))
1232+ lb .pack ()
1233+ lb .update_idletasks ()
1234+ lb .see ('end' )
1235+ lb .update_idletasks ()
1236+ self .assertEqual (lb .yview ()[1 ], 1.0 )
1237+ lb .see (0 )
1238+ lb .update_idletasks ()
1239+ self .assertEqual (lb .yview ()[0 ], 0.0 )
1240+ self .assertRaises (TclError , lb .see , 'spam' )
1241+
1242+ def test_activate (self ):
1243+ lb = self .create ()
1244+ lb .insert (0 , * ('el%d' % i for i in range (8 )))
1245+ lb .activate (3 )
1246+ self .assertEqual (lb .index ('active' ), 3 )
1247+ lb .activate ('end' )
1248+ self .assertEqual (lb .index ('active' ), 7 )
1249+ self .assertRaises (TclError , lb .activate , 'spam' )
1250+ self .assertRaises (TypeError , lb .activate )
1251+
1252+ def test_selection (self ):
1253+ lb = self .create ()
1254+ lb .insert (0 , * ('el%d' % i for i in range (8 )))
1255+ self .assertEqual (lb .curselection (), ())
1256+ self .assertFalse (lb .selection_includes (0 ))
1257+
1258+ lb .selection_set (2 , 4 )
1259+ lb .selection_set (6 )
1260+ self .assertEqual (lb .curselection (), (2 , 3 , 4 , 6 ))
1261+ self .assertTrue (lb .selection_includes (3 ))
1262+ self .assertFalse (lb .selection_includes (5 ))
1263+
1264+ lb .selection_clear (3 , 4 )
1265+ self .assertEqual (lb .curselection (), (2 , 6 ))
1266+
1267+ lb .selection_anchor (5 )
1268+ self .assertEqual (lb .index ('anchor' ), 5 )
1269+
1270+ # select_* are aliases of the selection_* methods.
1271+ lb .select_clear (0 , 'end' )
1272+ self .assertEqual (lb .curselection (), ())
1273+ lb .select_set (1 )
1274+ self .assertTrue (lb .select_includes (1 ))
1275+ lb .select_anchor (1 )
1276+ self .assertEqual (lb .index ('anchor' ), 1 )
1277+
1278+ self .assertRaisesRegex (TclError , 'bad listbox index "spam"' ,
1279+ lb .selection_includes , 'spam' )
1280+
11831281
11841282@add_configure_tests (PixelSizeTests , StandardOptionsTests )
11851283class ScaleTest (AbstractWidgetTest , unittest .TestCase ):
0 commit comments