@@ -60,12 +60,25 @@ def patch_screen():
60
60
We must patch the _Screen class itself instead of the _Screen
61
61
instance because instantiating it requires a display.
62
62
"""
63
+ # Create a mock screen that delegates color validation to the real TurtleScreen methods
64
+ mock_screen = unittest .mock .MagicMock ()
65
+ mock_screen .__class__ = turtle ._Screen
66
+ mock_screen .mode .return_value = "standard"
67
+ mock_screen ._colormode = 1.0
68
+
69
+ def mock_iscolorstring (color ):
70
+ valid_colors = {'red' , 'green' , 'blue' , 'black' , 'white' , 'yellow' ,
71
+ 'orange' , 'purple' , 'pink' , 'brown' , 'gray' , 'grey' ,
72
+ 'cyan' , 'magenta' }
73
+
74
+ return color in valid_colors or (isinstance (color , str ) and color .startswith ('#' ))
75
+
76
+ mock_screen ._iscolorstring = mock_iscolorstring
77
+ mock_screen ._colorstr = turtle ._Screen ._colorstr .__get__ (mock_screen )
78
+
63
79
return unittest .mock .patch (
64
80
"turtle._Screen.__new__" ,
65
- ** {
66
- "return_value.__class__" : turtle ._Screen ,
67
- "return_value.mode.return_value" : "standard" ,
68
- },
81
+ return_value = mock_screen
69
82
)
70
83
71
84
@@ -635,6 +648,28 @@ def test_poly_context_when_creating_poly(self):
635
648
self .assertTrue (self .turtle ._creatingPoly )
636
649
self .assertFalse (self .turtle ._creatingPoly )
637
650
651
+ def test_dot_signature (self ):
652
+ self .turtle .dot ()
653
+ self .turtle .dot (10 )
654
+ self .turtle .dot (size = 10 )
655
+ self .turtle .dot ((0 , 0 , 0 ))
656
+ self .turtle .dot (size = (0 , 0 , 0 ))
657
+ self .turtle .dot ("blue" )
658
+ self .turtle .dot ("" )
659
+ self .turtle .dot (size = "blue" )
660
+ self .turtle .dot (20 , "blue" )
661
+ self .turtle .dot (20 , "blue" )
662
+ self .turtle .dot (20 , (0 , 0 , 0 ))
663
+ self .turtle .dot (20 , 0 , 0 , 0 )
664
+ with self .assertRaises (TypeError ):
665
+ self .turtle .dot (color = "blue" )
666
+ self .assertRaises (turtle .TurtleGraphicsError , self .turtle .dot , "_not_a_color_" )
667
+ self .assertRaises (turtle .TurtleGraphicsError , self .turtle .dot , 0 , (0 , 0 , 0 , 0 ))
668
+ self .assertRaises (turtle .TurtleGraphicsError , self .turtle .dot , 0 , 0 , 0 , 0 , 0 )
669
+ self .assertRaises (turtle .TurtleGraphicsError , self .turtle .dot , 0 , (- 1 , 0 , 0 ))
670
+ self .assertRaises (turtle .TurtleGraphicsError , self .turtle .dot , 0 , - 1 , 0 , 0 )
671
+ self .assertRaises (turtle .TurtleGraphicsError , self .turtle .dot , 0 , (0 , 257 , 0 ))
672
+ self .assertRaises (turtle .TurtleGraphicsError , self .turtle .dot , 0 , 0 , 257 , 0 )
638
673
639
674
class TestModuleLevel (unittest .TestCase ):
640
675
def test_all_signatures (self ):
0 commit comments