mirror of
https://github.com/python/cpython.git
synced 2025-11-24 04:17:38 +00:00
[3.14] gh-138772: Add tests for Turtle.dot() signature (GH-138773) (GH-139326)
(cherry picked from commit 2462807b70)
Co-authored-by: Jan-Eric Nitschke <47750513+JanEricNitschke@users.noreply.github.com>
This commit is contained in:
parent
f899c849d4
commit
2de18f251a
1 changed files with 39 additions and 4 deletions
|
|
@ -60,12 +60,25 @@ def patch_screen():
|
||||||
We must patch the _Screen class itself instead of the _Screen
|
We must patch the _Screen class itself instead of the _Screen
|
||||||
instance because instantiating it requires a display.
|
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(
|
return unittest.mock.patch(
|
||||||
"turtle._Screen.__new__",
|
"turtle._Screen.__new__",
|
||||||
**{
|
return_value=mock_screen
|
||||||
"return_value.__class__": turtle._Screen,
|
|
||||||
"return_value.mode.return_value": "standard",
|
|
||||||
},
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -635,6 +648,28 @@ class TestTurtle(unittest.TestCase):
|
||||||
self.assertTrue(self.turtle._creatingPoly)
|
self.assertTrue(self.turtle._creatingPoly)
|
||||||
self.assertFalse(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):
|
class TestModuleLevel(unittest.TestCase):
|
||||||
def test_all_signatures(self):
|
def test_all_signatures(self):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue