Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 39 additions & 4 deletions Lib/test/test_turtle.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,25 @@ def patch_screen():
We must patch the _Screen class itself instead of the _Screen
instance because instantiating it requires a display.
"""
# Create a mock screen that delegates color validation to the real TurtleScreen methods
mock_screen = unittest.mock.MagicMock()
mock_screen.__class__ = turtle._Screen
mock_screen.mode.return_value = "standard"
mock_screen._colormode = 1.0

def mock_iscolorstring(color):
valid_colors = {'red', 'green', 'blue', 'black', 'white', 'yellow',
'orange', 'purple', 'pink', 'brown', 'gray', 'grey',
'cyan', 'magenta'}

return color in valid_colors or (isinstance(color, str) and color.startswith('#'))

mock_screen._iscolorstring = mock_iscolorstring
mock_screen._colorstr = turtle._Screen._colorstr.__get__(mock_screen)

return unittest.mock.patch(
"turtle._Screen.__new__",
**{
"return_value.__class__": turtle._Screen,
"return_value.mode.return_value": "standard",
},
return_value=mock_screen
)


Expand Down Expand Up @@ -635,6 +648,28 @@ def test_poly_context_when_creating_poly(self):
self.assertTrue(self.turtle._creatingPoly)
self.assertFalse(self.turtle._creatingPoly)

def test_dot_signature(self):
self.turtle.dot()
self.turtle.dot(10)
self.turtle.dot(size=10)
self.turtle.dot((0, 0, 0))
self.turtle.dot(size=(0, 0, 0))
self.turtle.dot("blue")
self.turtle.dot("")
self.turtle.dot(size="blue")
self.turtle.dot(20, "blue")
self.turtle.dot(20, "blue")
self.turtle.dot(20, (0, 0, 0))
self.turtle.dot(20, 0, 0, 0)
with self.assertRaises(TypeError):
self.turtle.dot(color="blue")
self.assertRaises(turtle.TurtleGraphicsError, self.turtle.dot, "_not_a_color_")
self.assertRaises(turtle.TurtleGraphicsError, self.turtle.dot, 0, (0, 0, 0, 0))
self.assertRaises(turtle.TurtleGraphicsError, self.turtle.dot, 0, 0, 0, 0, 0)
self.assertRaises(turtle.TurtleGraphicsError, self.turtle.dot, 0, (-1, 0, 0))
self.assertRaises(turtle.TurtleGraphicsError, self.turtle.dot, 0, -1, 0, 0)
self.assertRaises(turtle.TurtleGraphicsError, self.turtle.dot, 0, (0, 257, 0))
self.assertRaises(turtle.TurtleGraphicsError, self.turtle.dot, 0, 0, 257, 0)

class TestModuleLevel(unittest.TestCase):
def test_all_signatures(self):
Expand Down
Loading