[Python-checkins] r73146 - python/branches/tk_and_idle_maintenance/Lib/lib-tk/test/test_tkinter/test_listbox.py

guilherme.polo python-checkins at python.org
Tue Jun 2 17:53:29 CEST 2009


Author: guilherme.polo
Date: Tue Jun  2 17:53:28 2009
New Revision: 73146

Log:
Initial tests for Tkinter.Listbox.

Added:
   python/branches/tk_and_idle_maintenance/Lib/lib-tk/test/test_tkinter/test_listbox.py   (contents, props changed)

Added: python/branches/tk_and_idle_maintenance/Lib/lib-tk/test/test_tkinter/test_listbox.py
==============================================================================
--- (empty file)
+++ python/branches/tk_and_idle_maintenance/Lib/lib-tk/test/test_tkinter/test_listbox.py	Tue Jun  2 17:53:28 2009
@@ -0,0 +1,148 @@
+import unittest
+import Tkinter
+from test.test_support import requires, run_unittest
+from ttk import setup_master
+
+requires('gui')
+
+class ListboxTest(unittest.TestCase):
+
+    def setUp(self):
+        self.root = setup_master()
+        self.lb = Tkinter.Listbox(self.root)
+
+    def tearDown(self):
+        self.lb.destroy()
+
+    def test_activate(self): pass
+
+    def test_bbox(self):
+        self.assertRaises(Tkinter.TclError, self.lb.bbox, '@1.2')
+        self.assertIs(self.lb.bbox(0), None)
+
+        self.lb.insert(0, 'hi')
+        bbox = self.lb.bbox(0)
+        self.assertTrue(isinstance(bbox, tuple))
+        self.assertEqual(len(bbox), 4)
+        for item in bbox:
+            self.assertTrue(isinstance(item, int))
+
+        self.assertEqual(self.lb.bbox(('0',)), self.lb.bbox(0))
+        self.assertEqual(self.lb.bbox(0), self.lb.bbox('0'))
+
+    def test_curselection(self):
+        self.assertEqual(self.lb.curselection(), ())
+        self.lb.insert(0, *[i for i in range(15)])
+        self.lb.selection_set(0, 9)
+        indices = self.lb.curselection()
+        self.assertTrue(isinstance(indices, tuple))
+        for item in indices:
+            self.assertTrue(isinstance(item, int))
+
+    def test_delete(self):
+        self.assertRaises(Tkinter.TclError, self.lb.delete, '@1.2')
+
+        self.lb.insert(0, 1, '2', 3)
+        self.lb.delete(0)
+        self.assertEqual(self.lb.get(0, 'end'), ('2', 3))
+        self.lb.delete(0, 'end')
+        self.assertEqual(self.lb.get(0, 'end'), ())
+
+    def test_get(self):
+        self.assertFalse(self.lb.get(0))
+        self.lb.insert(0, 'a', 'b', 'c d e')
+        self.assertEqual(self.lb.get(2), 'c d e')
+        self.assertEqual(self.lb.get(1, 'end'), ('b', 'c d e'))
+        self.assertEqual(self.lb.get(3, 2), ())
+        self.assertEqual(self.lb.get(2, 0), ())
+        # 'last' is not a valid index in listbox
+        self.assertRaises(Tkinter.TclError, self.lb.get, 'last')
+
+    def test_index(self):
+        self.assertEqual(self.lb.index('end'), 0)
+        self.lb.insert(0, *range(5))
+        self.assertEqual(self.lb.index('end'), 5)
+        self.assertEqual(self.lb.index('2'), 2)
+        # XXX how can I get a None using the index method ?
+
+    def test_nearest(self): pass
+    def test_scan(self): pass
+
+    def test_see(self):
+        self.lb['height'] = 5
+        self.lb.insert(0, *range(7))
+        self.lb.pack()
+        self.lb.update_idletasks()
+
+        self.assertEqual(self.lb.index('@5,%d' % (self.lb.winfo_height() - 5)),
+                4)
+        self.lb.see('end')
+        self.assertEqual(self.lb.index('@5,%d' % (self.lb.winfo_height() - 5)),
+                6)
+
+    def test_selection(self):
+        self.lb.insert(0, *range(20))
+
+        # Verifying that selection_set includes the end point.
+        self.assertFalse(self.lb.select_includes(0))
+        self.assertFalse(self.lb.select_includes(5))
+        self.lb.selection_set(0, 5)
+        self.assertTrue(self.lb.select_includes(0))
+        self.assertTrue(self.lb.select_includes(5))
+        self.assertEqual(self.lb.curselection(), tuple(range(6)))
+
+        # Verifying that setting a new selection doesn't remove the old
+        # selection.
+        self.lb.selection_set(7, 9)
+        self.assertEqual(self.lb.curselection(), (0, 1, 2, 3, 4, 5, 7, 8, 9))
+        self.lb.selection_set(6)
+        self.assertEqual(self.lb.curselection(), (0, 1, 2, 3, 4, 5, 6, 7, 8, 9))
+        self.lb.selection_set(3, 6)
+        self.assertEqual(self.lb.curselection(), (0, 1, 2, 3, 4, 5, 6, 7, 8, 9))
+
+        # Verifying that selection_clear includes the end point.
+        self.assertTrue(self.lb.selection_includes(0))
+        self.assertTrue(self.lb.selection_includes(5))
+        self.lb.selection_clear(0, 5)
+        self.assertFalse(self.lb.selection_includes(0))
+        self.assertFalse(self.lb.selection_includes(5))
+        self.assertEqual(self.lb.curselection(), (6, 7, 8, 9))
+        self.lb.selection_clear(7)
+        self.assertEqual(self.lb.curselection(), (6, 8, 9))
+        self.lb.selection_clear(0, 'end')
+        self.assertEqual(self.lb.curselection(), ())
+
+    def test_xview(self, method='xview'):
+        view = getattr(self.lb, method)()
+        self.assertTrue(isinstance(view, tuple))
+        self.assertEqual(len(view), 2)
+        for item in view:
+            self.assertTrue(isinstance(item, float))
+
+    def test_yview(self):
+        self.test_xview('yview')
+
+    def test_itemcget(self):
+        self.lb.insert(0, 0)
+        self.lb.itemconfigure(0, bg='blue')
+        self.assertEqual(self.lb.itemcget(0, 'bg'), 'blue')
+        # invalid index:
+        self.assertRaises(Tkinter.TclError, self.lb.itemcget, 2, 'bg')
+        # invalid option:
+        self.assertRaises(Tkinter.TclError, self.lb.itemcget, 0, 'hi')
+
+    def test_itemconfigure(self):
+        self.lb.insert(0, 0)
+        self.lb.itemconfigure(0, background='blue')
+        self.assertTrue(isinstance(self.lb.itemconfigure(0), dict))
+        self.assertEqual(self.lb.itemconfigure(0, 'background'),
+                self.lb.itemconfigure(0)['background'])
+
+        self.assertRaises(Tkinter.TclError, self.lb.itemconfigure, 0, 'hi')
+        self.assertRaises(Tkinter.TclError, self.lb.itemconfigure, 2)
+
+
+tests_gui = (ListboxTest, )
+
+if __name__ == "__main__":
+    run_unittest(*tests_gui)


More information about the Python-checkins mailing list