@@ -759,6 +759,164 @@ def test_configure_yscrollincrement(self):
759
759
self .checkPixelsParam (widget , 'yscrollincrement' ,
760
760
10 , 0 , 11.2 , 13.6 , - 10 , '0.1i' )
761
761
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
+
762
920
@requires_tcl (8 , 6 )
763
921
def test_moveto (self ):
764
922
widget = self .create ()
0 commit comments