@@ -781,6 +781,164 @@ def test_configure_yscrollincrement(self):
781
781
self .checkPixelsParam (widget , 'yscrollincrement' ,
782
782
10 , 0 , 11.2 , 13.6 , - 10 , '0.1i' )
783
783
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
+
784
942
@requires_tcl (8 , 6 )
785
943
def test_moveto (self ):
786
944
widget = self .create ()
0 commit comments