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

guilherme.polo python-checkins at python.org
Sat Jun 6 20:27:26 CEST 2009


Author: guilherme.polo
Date: Sat Jun  6 20:27:26 2009
New Revision: 73261

Log:
More tests for Tkinter.Canvas.

Modified:
   python/branches/tk_and_idle_maintenance/Lib/lib-tk/test/test_tkinter/test_canvas.py

Modified: python/branches/tk_and_idle_maintenance/Lib/lib-tk/test/test_tkinter/test_canvas.py
==============================================================================
--- python/branches/tk_and_idle_maintenance/Lib/lib-tk/test/test_tkinter/test_canvas.py	(original)
+++ python/branches/tk_and_idle_maintenance/Lib/lib-tk/test/test_tkinter/test_canvas.py	Sat Jun  6 20:27:26 2009
@@ -20,7 +20,6 @@
             orig.remove(tag)
         self.assertFalse(orig)
 
-
     def test_addtag(self): pass
 
     def test_bbox(self):
@@ -42,8 +41,18 @@
         for indx, item in enumerate(zip(ba[2:], bb[2:])):
             self.assertEqual(max(item), res[indx + 2])
 
-    def test_tag(self): pass
-    def test_canvasxy(self): pass
+    def test_tagbind_unbind(self):
+        # XXX Very likely to contain a leak, will test soon.
+        pass
+
+    def test_canvasx(self, meth='canvasx'):
+        x = getattr(self.canvas, meth)(832, 5)
+        self.assertTrue(isinstance(x, float))
+        self.assertEqual(x, 830)
+        self.assertEqual(getattr(self.canvas, meth)(832), 832)
+
+    def test_canvasy(self):
+        self.test_canvasx('canvasy')
 
     def test_coords(self):
         coords = self.canvas.coords('x')
@@ -97,7 +106,7 @@
         winid = self.canvas.create_window(1, 2)
         self.assertEqual(self.canvas.type(winid), 'window')
 
-        for key, val in locals().iteritems():
+        for key, val in locals().items():
             if key.endswith('id'):
                 self.assertTrue(isinstance(val, int))
 
@@ -151,7 +160,43 @@
         self.canvas.dtag('b')
         self.verify_tags(['c'], self.canvas.gettags(x))
 
-    def test_find(self): pass
+    def test_find(self):
+        self.assertEqual(self.canvas.find_withtag(1), ())
+        self.assertEqual(self.canvas.find_all(), ())
+
+        lid = self.canvas.create_line(10, 10, 20, 20, tags='a')
+        tid = self.canvas.create_text(30, 30, text='x', tags='a')
+
+        self.assertEqual(self.canvas.find_all(), (lid, tid))
+
+        self.assertEqual(self.canvas.find_withtag(tid), (tid, ))
+        atags = self.canvas.find_withtag('a')
+        self.assertEqual(len(atags), 2)
+        self.assertIn(tid, atags)
+        self.assertIn(lid, atags)
+        self.assertEqual(self.canvas.find_withtag('x'), ())
+
+        self.assertEqual(self.canvas.find_overlapping(30, 30, 30, 30), (tid, ))
+        self.assertEqual(self.canvas.find_overlapping(15, 15, 30, 30),
+                (lid, tid))
+        self.assertEqual(self.canvas.find_overlapping(5, 5, 8, 8), ())
+
+        self.assertEqual(self.canvas.find_enclosed(10, 10, 15, 15), ())
+        self.assertEqual(self.canvas.find_enclosed(8, 8, 22, 22), (lid, ))
+
+        self.assertEqual(self.canvas.find_above(lid), (tid, ))
+        self.canvas.tag_lower(tid)
+        self.assertEqual(self.canvas.find_above(lid), ())
+
+        self.assertEqual(self.canvas.find_below(lid), (tid, ))
+        self.canvas.tag_raise(tid)
+        self.assertEqual(self.canvas.find_below(lid), ())
+
+        self.assertEqual(self.canvas.find_closest(19, 19), (lid, ))
+        self.assertEqual(self.canvas.find_closest(19, 19, 10), (tid, ))
+        self.assertEqual(self.canvas.find_closest(19, 19, 10, tid), (lid, ))
+        self.canvas.tag_raise(lid)
+        self.assertEqual(self.canvas.find_closest(19, 19, 10), (lid, ))
 
     def test_focus(self):
         # XXX This used to raise Tkinter.TclError since canvas.focus allowed
@@ -212,12 +257,88 @@
         # no selection set
         self.assertRaises(Tkinter.TclError, self.canvas.index, tid, 'sel.first')
 
-    def test_insert(self): pass
-    def test_itemcget(self): pass
-    def test_itemconfigure(self): pass
-    def test_move(self): pass
-    def test_postscript(self): pass # XXX
-    def test_scale(self): pass
+    def test_insert(self):
+        # XXX The following used to be "supported" since canvas.insert allowed
+        # any amount of arguments, include invalid amounts.
+        self.assertRaises(TypeError, self.canvas.insert, 0)
+
+        self.assertRaises(Tkinter.TclError, self.canvas.insert, 0, 0)
+
+        tid = self.canvas.create_text(10, 10, text='hi')
+        l1 = self.canvas.create_line(5, 5, 20, 20, tags='a')
+        l2 = self.canvas.create_line(30, 30, 15, 15, tags='a')
+
+        self.canvas.insert(tid, 'end', ' there')
+        self.assertEqual(self.canvas.itemcget(tid, 'text'), 'hi there')
+
+        l1_coords = [5, 5, 20, 20]
+        l2_coords = [30, 30, 15, 15]
+        for indx, item in enumerate(self.canvas.coords(l1)):
+            self.assertAlmostEqual(item, l1_coords[indx])
+        for indx, item in enumerate(self.canvas.coords(l2)):
+            self.assertAlmostEqual(item, l2_coords[indx])
+        self.canvas.insert('a', '@20,20', (10, 10))
+        l1_coords = l1_coords[:2] + [10, 10] + l1_coords[2:]
+        l2_coords = l2_coords[:2] + [10, 10] + l2_coords[2:]
+        for indx, item in enumerate(self.canvas.coords(l1)):
+            self.assertAlmostEqual(item, l1_coords[indx])
+        for indx, item in enumerate(self.canvas.coords(l2)):
+            self.assertAlmostEqual(item, l2_coords[indx])
+
+    def test_itemcget(self):
+        x = self.canvas.create_line(1, 2, 3, 4,
+                fill='blue', activefill='yellow', state='normal')
+        self.assertEqual(self.canvas.itemcget(x, 'fill'), 'blue')
+        self.assertEqual(self.canvas.itemcget(x, 'activefill'), 'yellow')
+        self.assertEqual(self.canvas.itemcget(x, 'state'), 'normal')
+
+        self.assertRaises(Tkinter.TclError, self.canvas.itemcget, x, 'image')
+
+    def test_itemconfigure(self):
+        self.assertEqual(self.canvas.itemconfigure(0), {})
+
+        tid = self.canvas.create_text(10, 10)
+        self.assertRaises(Tkinter.TclError, self.canvas.itemconfigure,
+                tid, 'image')
+
+        self.assertEqual(self.canvas.itemconfigure(tid, 'font'),
+                self.canvas.itemconfigure(tid)['font'])
+
+        self.assertIs(self.canvas.itemconfigure(0, 'image'), None)
+
+    def test_move(self):
+        # XXX These used to raise Tkinter.TclError
+        self.assertRaises(TypeError, self.canvas.move)
+        self.assertRaises(TypeError, self.canvas.move, 1)
+        self.assertRaises(TypeError, self.canvas.move, 1, 2)
+
+        tid = self.canvas.create_text(10, 10, tags='a')
+        lid = self.canvas.create_line(50, 50, 70, 90, tags='a')
+        self.canvas.move('a', -5, 5)
+        self.assertEqual(self.canvas.coords(tid), [5, 15])
+        self.assertEqual(self.canvas.coords(lid), [45, 55, 65, 95])
+
+    def test_postscript(self):
+        ps = self.canvas.postscript()
+        self.assertTrue(isinstance(ps, basestring))
+
+        self.assertRaises(Tkinter.TclError, self.canvas.postscript,
+                invalid='val')
+        self.assertTrue(isinstance(self.canvas.postscript(x=10, y=10),
+            basestring))
+
+    def test_scale(self):
+        # XXX All these used to raise Tkinter.TclError
+        self.assertRaises(TypeError, self.canvas.scale)
+        self.assertRaises(TypeError, self.canvas.scale, 0)
+        self.assertRaises(TypeError, self.canvas.scale, 0, 1)
+        self.assertRaises(TypeError, self.canvas.scale, 0, 1, 2)
+        self.assertRaises(TypeError, self.canvas.scale, 0, 1, 2, 3)
+
+        # Supposing tagOrId is not None, can canvas.scale
+        # raise Tkinter.TclError ?
+        self.assertIs(self.canvas.scale(0, 1, 2, 3, 4), None)
+
     def test_scan(self): pass
     def test_select(self): pass
 


More information about the Python-checkins mailing list