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