@@ -759,6 +759,164 @@ def test_configure_yscrollincrement(self):
759759 self .checkPixelsParam (widget , 'yscrollincrement' ,
760760 10 , 0 , 11.2 , 13.6 , - 10 , '0.1i' )
761761
762+ def _test_option_joinstyle (self , c , factory ):
763+ for joinstyle in 'bevel' , 'miter' , 'round' :
764+ i = factory (joinstyle = joinstyle )
765+ self .assertEqual (c .itemcget (i , 'joinstyle' ), joinstyle )
766+ self .assertRaises (TclError , factory , joinstyle = 'spam' )
767+
768+ def _test_option_smooth (self , c , factory ):
769+ for smooth in 1 , True , '1' , 'true' , 'yes' , 'on' :
770+ i = factory (smooth = smooth )
771+ self .assertEqual (c .itemcget (i , 'smooth' ), 'true' )
772+ for smooth in 0 , False , '0' , 'false' , 'no' , 'off' :
773+ i = factory (smooth = smooth )
774+ self .assertEqual (c .itemcget (i , 'smooth' ), '0' )
775+ i = factory (smooth = True , splinestep = 30 )
776+ self .assertEqual (c .itemcget (i , 'smooth' ), 'true' )
777+ self .assertEqual (c .itemcget (i , 'splinestep' ), '30' )
778+ i = factory (smooth = 'raw' , splinestep = 30 )
779+ self .assertEqual (c .itemcget (i , 'smooth' ), 'raw' )
780+ self .assertEqual (c .itemcget (i , 'splinestep' ), '30' )
781+ self .assertRaises (TclError , factory , smooth = 'spam' )
782+
783+ def test_create_rectangle (self ):
784+ c = self .create ()
785+ i1 = c .create_rectangle (20 , 30 , 60 , 10 )
786+ self .assertEqual (c .coords (i1 ), [20.0 , 10.0 , 60.0 , 30.0 ])
787+ self .assertEqual (c .bbox (i1 ), (19 , 9 , 61 , 31 ))
788+
789+ i2 = c .create_rectangle ([21 , 31 , 61 , 11 ])
790+ self .assertEqual (c .coords (i2 ), [21.0 , 11.0 , 61.0 , 31.0 ])
791+ self .assertEqual (c .bbox (i2 ), (20 , 10 , 62 , 32 ))
792+
793+ i3 = c .create_rectangle ((22 , 32 ), (62 , 12 ))
794+ self .assertEqual (c .coords (i3 ), [22.0 , 12.0 , 62.0 , 32.0 ])
795+ self .assertEqual (c .bbox (i3 ), (21 , 11 , 63 , 33 ))
796+
797+ i4 = c .create_rectangle ([(23 , 33 ), (63 , 13 )])
798+ self .assertEqual (c .coords (i4 ), [23.0 , 13.0 , 63.0 , 33.0 ])
799+ self .assertEqual (c .bbox (i4 ), (22 , 12 , 64 , 34 ))
800+
801+ self .assertRaises (TclError , c .create_rectangle , 20 , 30 , 60 )
802+ self .assertRaises (TclError , c .create_rectangle , [20 , 30 , 60 ])
803+ self .assertRaises (TclError , c .create_rectangle , 20 , 30 , 40 , 50 , 60 , 10 )
804+ self .assertRaises (TclError , c .create_rectangle , [20 , 30 , 40 , 50 , 60 , 10 ])
805+ self .assertRaises (TclError , c .create_rectangle , 20 , 30 )
806+ self .assertRaises (TclError , c .create_rectangle , [20 , 30 ])
807+ self .assertRaises (IndexError , c .create_rectangle )
808+ self .assertRaises (IndexError , c .create_rectangle , [])
809+
810+ def test_create_line (self ):
811+ c = self .create ()
812+ i1 = c .create_line (20 , 30 , 40 , 50 , 60 , 10 )
813+ self .assertEqual (c .coords (i1 ), [20.0 , 30.0 , 40.0 , 50.0 , 60.0 , 10.0 ])
814+ self .assertEqual (c .bbox (i1 ), (18 , 8 , 62 , 52 ))
815+ self .assertEqual (c .itemcget (i1 , 'arrow' ), 'none' )
816+ self .assertEqual (c .itemcget (i1 , 'arrowshape' ), '8 10 3' )
817+ self .assertEqual (c .itemcget (i1 , 'capstyle' ), 'butt' )
818+ self .assertEqual (c .itemcget (i1 , 'joinstyle' ), 'round' )
819+ self .assertEqual (c .itemcget (i1 , 'smooth' ), '0' )
820+ self .assertEqual (c .itemcget (i1 , 'splinestep' ), '12' )
821+
822+ i2 = c .create_line ([21 , 31 , 41 , 51 , 61 , 11 ])
823+ self .assertEqual (c .coords (i2 ), [21.0 , 31.0 , 41.0 , 51.0 , 61.0 , 11.0 ])
824+ self .assertEqual (c .bbox (i2 ), (19 , 9 , 63 , 53 ))
825+
826+ i3 = c .create_line ((22 , 32 ), (42 , 52 ), (62 , 12 ))
827+ self .assertEqual (c .coords (i3 ), [22.0 , 32.0 , 42.0 , 52.0 , 62.0 , 12.0 ])
828+ self .assertEqual (c .bbox (i3 ), (20 , 10 , 64 , 54 ))
829+
830+ i4 = c .create_line ([(23 , 33 ), (43 , 53 ), (63 , 13 )])
831+ self .assertEqual (c .coords (i4 ), [23.0 , 33.0 , 43.0 , 53.0 , 63.0 , 13.0 ])
832+ self .assertEqual (c .bbox (i4 ), (21 , 11 , 65 , 55 ))
833+
834+ self .assertRaises (TclError , c .create_line , 20 , 30 , 60 )
835+ self .assertRaises (TclError , c .create_line , [20 , 30 , 60 ])
836+ self .assertRaises (TclError , c .create_line , 20 , 30 )
837+ self .assertRaises (TclError , c .create_line , [20 , 30 ])
838+ self .assertRaises (IndexError , c .create_line )
839+ self .assertRaises (IndexError , c .create_line , [])
840+
841+ for arrow in 'none' , 'first' , 'last' , 'both' :
842+ i = c .create_line (20 , 30 , 60 , 10 , arrow = arrow )
843+ self .assertEqual (c .itemcget (i , 'arrow' ), arrow )
844+ i = c .create_line (20 , 30 , 60 , 10 , arrow = 'first' , arrowshape = [10 , 15 , 5 ])
845+ self .assertEqual (c .itemcget (i , 'arrowshape' ), '10 15 5' )
846+ self .assertRaises (TclError , c .create_line , 20 , 30 , 60 , 10 , arrow = 'spam' )
847+
848+ for capstyle in 'butt' , 'projecting' , 'round' :
849+ i = c .create_line (20 , 30 , 60 , 10 , capstyle = capstyle )
850+ self .assertEqual (c .itemcget (i , 'capstyle' ), capstyle )
851+ self .assertRaises (TclError , c .create_line , 20 , 30 , 60 , 10 , capstyle = 'spam' )
852+
853+ self ._test_option_joinstyle (c ,
854+ lambda ** kwargs : c .create_line (20 , 30 , 40 , 50 , 60 , 10 , ** kwargs ))
855+ self ._test_option_smooth (c ,
856+ lambda ** kwargs : c .create_line (20 , 30 , 60 , 10 , ** kwargs ))
857+
858+ def test_create_polygon (self ):
859+ c = self .create ()
860+ i1 = c .create_polygon (20 , 30 , 40 , 50 , 60 , 10 )
861+ self .assertEqual (c .coords (i1 ), [20.0 , 30.0 , 40.0 , 50.0 , 60.0 , 10.0 ])
862+ self .assertEqual (c .bbox (i1 ), (19 , 9 , 61 , 51 ))
863+ self .assertEqual (c .itemcget (i1 , 'joinstyle' ), 'round' )
864+ self .assertEqual (c .itemcget (i1 , 'smooth' ), '0' )
865+ self .assertEqual (c .itemcget (i1 , 'splinestep' ), '12' )
866+
867+ i2 = c .create_polygon ([21 , 31 , 41 , 51 , 61 , 11 ])
868+ self .assertEqual (c .coords (i2 ), [21.0 , 31.0 , 41.0 , 51.0 , 61.0 , 11.0 ])
869+ self .assertEqual (c .bbox (i2 ), (20 , 10 , 62 , 52 ))
870+
871+ i3 = c .create_polygon ((22 , 32 ), (42 , 52 ), (62 , 12 ))
872+ self .assertEqual (c .coords (i3 ), [22.0 , 32.0 , 42.0 , 52.0 , 62.0 , 12.0 ])
873+ self .assertEqual (c .bbox (i3 ), (21 , 11 , 63 , 53 ))
874+
875+ i4 = c .create_polygon ([(23 , 33 ), (43 , 53 ), (63 , 13 )])
876+ self .assertEqual (c .coords (i4 ), [23.0 , 33.0 , 43.0 , 53.0 , 63.0 , 13.0 ])
877+ self .assertEqual (c .bbox (i4 ), (22 , 12 , 64 , 54 ))
878+
879+ self .assertRaises (TclError , c .create_polygon , 20 , 30 , 60 )
880+ self .assertRaises (TclError , c .create_polygon , [20 , 30 , 60 ])
881+ self .assertRaises (IndexError , c .create_polygon )
882+ self .assertRaises (IndexError , c .create_polygon , [])
883+
884+ self ._test_option_joinstyle (c ,
885+ lambda ** kwargs : c .create_polygon (20 , 30 , 40 , 50 , 60 , 10 , ** kwargs ))
886+ self ._test_option_smooth (c ,
887+ lambda ** kwargs : c .create_polygon (20 , 30 , 40 , 50 , 60 , 10 , ** kwargs ))
888+
889+ def test_coords (self ):
890+ c = self .create ()
891+ i = c .create_line (20 , 30 , 40 , 50 , 60 , 10 , tags = 'x' )
892+ self .assertEqual (c .coords (i ), [20.0 , 30.0 , 40.0 , 50.0 , 60.0 , 10.0 ])
893+ self .assertEqual (c .coords ('x' ), [20.0 , 30.0 , 40.0 , 50.0 , 60.0 , 10.0 ])
894+ self .assertEqual (c .bbox (i ), (18 , 8 , 62 , 52 ))
895+
896+ c .coords (i , 50 , 60 , 70 , 80 , 90 , 40 )
897+ self .assertEqual (c .coords (i ), [50.0 , 60.0 , 70.0 , 80.0 , 90.0 , 40.0 ])
898+ self .assertEqual (c .bbox (i ), (48 , 38 , 92 , 82 ))
899+
900+ c .coords (i , [21 , 31 , 41 , 51 , 61 , 11 ])
901+ self .assertEqual (c .coords (i ), [21.0 , 31.0 , 41.0 , 51.0 , 61.0 , 11.0 ])
902+
903+ c .coords (i , 20 , 30 , 60 , 10 )
904+ self .assertEqual (c .coords (i ), [20.0 , 30.0 , 60.0 , 10.0 ])
905+ self .assertEqual (c .bbox (i ), (18 , 8 , 62 , 32 ))
906+
907+ self .assertRaises (TclError , c .coords , i , 20 , 30 , 60 )
908+ self .assertRaises (TclError , c .coords , i , [20 , 30 , 60 ])
909+ self .assertRaises (TclError , c .coords , i , 20 , 30 )
910+ self .assertRaises (TclError , c .coords , i , [20 , 30 ])
911+
912+ c .coords (i , '20' , '30c' , '60i' , '10p' )
913+ coords = c .coords (i )
914+ self .assertIsInstance (coords , list )
915+ self .assertEqual (len (coords ), 4 )
916+ self .assertEqual (coords [0 ], 20 )
917+ for i in range (4 ):
918+ self .assertIsInstance (coords [i ], float )
919+
762920 @requires_tcl (8 , 6 )
763921 def test_moveto (self ):
764922 widget = self .create ()
0 commit comments