Exemple #1
0
    def test_async_forward_down_draw_line_vs_init_down(self):

        init_downs = (False, True)
        downs = (None, False, True)

        for init_down, down in it.product(init_downs, downs):
            with self.subTest(init_down=init_down, down=down):

                t = turtle.Turtle(self.sprite, down=init_down)

                self.assertIs(t.down, init_down)

                coro = t.async_forward(42, down=down)
                self._run_coroutines(coro)

                self.assertIs(t.down, init_down)

                effective_down = down if down is not None else init_down
                expected_cb = t._async_draw_line if effective_down else None

                self.sprite.async_forward.assert_awaited_with(
                    42,
                    callback=expected_cb,
                    track_angle=True,
                    speed=None,
                    easing=None,
                    fps=None,
                    update=None,
                )
Exemple #2
0
    def test_sync_move_to_down_draw_line_vs_init_down(self):

        init_downs = (False, True)
        downs = (None, False, True)

        for init_down, down in it.product(init_downs, downs):
            with self.subTest(init_down=init_down, down=down):

                t = turtle.Turtle(self.sprite, down=init_down)

                self.assertIs(t.down, init_down)

                t.sync_move_to(42, 24, down=down)

                self.assertIs(t.down, init_down)

                effective_down = down if down is not None else init_down
                expected_cb = t._sync_draw_line if effective_down else None

                self.sprite.sync_move_to.assert_called_with(
                    42, 24,
                    callback=expected_cb,
                    speed=None,
                    easing=None,
                    fps=None,
                    update=None,
                )
Exemple #3
0
    def test_sync_move_lines_are_behind_the_sprite(self):

        t = turtle.Turtle(self.sprite)

        t.sync_move(40, 30)

        self.canvas.tag_raise.assert_called_with(
            None,   # sprite canvas id, None in the Sprite base class
            42,     # line canvas id from fake canvas.create_line
        )
Exemple #4
0
    def setUp(self):

        super().setUp()

        self.canvas = fake_tkinter.Canvas()
        self.sprite = fake_sprite.Sprite(
            canvas=self.canvas,
            anchor=(0, 0),
            angle=0,
        )
        self.t = turtle.Turtle(self.sprite)
Exemple #5
0
    def test_async_move_to_lines_are_behind_the_sprite(self):

        t = turtle.Turtle(self.sprite)

        coro = t.async_move_to(40, 30)
        self._run_coroutines(coro)

        self.canvas.tag_raise.assert_called_with(
            None,   # sprite canvas id, None in the Sprite base class
            42,     # line canvas id from fake canvas.create_line
        )
Exemple #6
0
    def test_sync_move_draws_calls_canvas_create_line(self):

        t = turtle.Turtle(self.sprite, line_color='pink', line_width=5)

        t.sync_move(40, 30)

        self.canvas.create_line.assert_called_with(
            mock.ANY,
            fill='pink',
            width=5,
            capstyle=mock.ANY,
        )
Exemple #7
0
    def test_async_move_to_draws_calls_canvas_create_line(self):

        t = turtle.Turtle(self.sprite, line_color='pink', line_width=5)

        coro = t.async_move_to(40, 30)
        self._run_coroutines(coro)

        self.canvas.create_line.assert_called_with(
            mock.ANY,
            fill='pink',
            width=5,
            capstyle=mock.ANY,
        )
Exemple #8
0
    def test_sync_move_to_calls_sprite_sync_move_to(self):

        t = turtle.Turtle(self.sprite)

        t.sync_move_to(42, 24)

        self.sprite.sync_move_to.assert_called_with(
            42, 24,
            callback=t._sync_draw_line,
            speed=None,
            easing=None,
            fps=None,
            update=None,
        )
Exemple #9
0
    def test_async_move_to_awaits_sprite_async_move_to(self):

        t = turtle.Turtle(self.sprite)

        coro = t.async_move_to(42, 24)
        self._run_coroutines(coro)

        self.sprite.async_move_to.assert_awaited_with(
            42, 24,
            callback=t._async_draw_line,
            speed=None,
            easing=None,
            fps=None,
            update=None,
        )
Exemple #10
0
    def test_sync_forward_calls_sprite_sync_forward(self):

        t = turtle.Turtle(self.sprite)

        t.sync_forward(42)

        self.sprite.sync_forward.assert_called_with(
            42,
            callback=t._sync_draw_line,
            track_angle=True,
            speed=None,
            easing=None,
            fps=None,
            update=None,
        )
Exemple #11
0
    def test_async_forward_awaits_sprite_async_forward(self):

        t = turtle.Turtle(self.sprite)

        coro = t.async_forward(42)
        self._run_coroutines(coro)

        self.sprite.async_forward.assert_awaited_with(
            42,
            callback=t._async_draw_line,
            track_angle=True,
            speed=None,
            easing=None,
            fps=None,
            update=None,
        )
Exemple #12
0
    def test_sync_move_to_with_args_calls_sprite_sync_move_to_with_args(self):

        t = turtle.Turtle(self.sprite)

        t.sync_move_to(
            42, 24,
            speed='speed',
            easing='easing',
            fps='fps',
            update='update',
        )

        self.sprite.sync_move_to.assert_called_with(
            42, 24,
            callback=t._sync_draw_line,
            speed='speed',
            easing='easing',
            fps='fps',
            update='update',
        )
Exemple #13
0
    def test_async_move_to_with_args_awaits_sprite_async_move_to_with_args(self):

        t = turtle.Turtle(self.sprite)

        coro = t.async_move_to(
            42, 24,
            speed='speed',
            easing='easing',
            fps='fps',
            update='update',
        )
        self._run_coroutines(coro)

        self.sprite.async_move_to.assert_awaited_with(
            42, 24,
            callback=t._async_draw_line,
            speed='speed',
            easing='easing',
            fps='fps',
            update='update',
        )
Exemple #14
0
    def test_sync_forward_lines_are_progressively_updated(self):

        t = turtle.Turtle(self.sprite)

        t.sync_forward(100, speed=100, fps=10)

        # distance=speed=100 and fps=10
        # First frame creates the line, other 9 frames update it.

        coords_call_args_list = self.canvas.coords.call_args_list
        self.assertEqual(
            len(coords_call_args_list),
            9,
            msg='canvas.coords number of calls',
        )

        # All canvas.coords calls include the correct line id: 42
        for call_args in coords_call_args_list:
            self.assertEqual(
                call_args,
                mock.call(42, mock.ANY),
            )
Exemple #15
0
    def test_sync_forward_with_args_calls_sprite_sync_forward_with_args(self):

        t = turtle.Turtle(self.sprite)

        t.sync_forward(
            42,
            track_angle='track-angle',
            speed='speed',
            easing='easing',
            fps='fps',
            update='update',
        )

        self.sprite.sync_forward.assert_called_with(
            42,
            callback=t._sync_draw_line,
            track_angle='track-angle',
            speed='speed',
            easing='easing',
            fps='fps',
            update='update',
        )
Exemple #16
0
    def test_async_move_to_lines_are_progressively_updated(self):

        t = turtle.Turtle(self.sprite)

        coro = t.async_move_to(40, 30, speed=50, fps=10)
        self._run_coroutines(coro)

        # distance=speed=50 and fps=10
        # First frame creates the line, other 9 frames update it.

        coords_call_args_list = self.canvas.coords.call_args_list
        self.assertEqual(
            len(coords_call_args_list),
            9,
            msg='canvas.coords number of calls',
        )

        # All canvas.coords calls include the correct line id: 42
        for call_args in coords_call_args_list:
            self.assertEqual(
                call_args,
                mock.call(42, mock.ANY),
            )
Exemple #17
0
    def test_async_forward_with_args_awaits_sprite_async_forward_with_args(self):

        t = turtle.Turtle(self.sprite)

        coro = t.async_forward(
            42,
            track_angle='track-angle',
            speed='speed',
            easing='easing',
            fps='fps',
            update='update',
        )
        self._run_coroutines(coro)

        self.sprite.async_forward.assert_awaited_with(
            42,
            callback=t._async_draw_line,
            track_angle='track-angle',
            speed='speed',
            easing='easing',
            fps='fps',
            update='update',
        )
Exemple #18
0
    def test_create_turtle_explicit_down_True(self):

        t = turtle.Turtle(self.sprite, down=True)
        self.assertIs(t.down, True)
Exemple #19
0
    def test_create_turtle_default_down(self):

        t = turtle.Turtle(self.sprite)
        self.assertIs(t.down, True)
Exemple #20
0
    def test_create_turtle_default_line_color(self):

        t = turtle.Turtle(self.sprite)
        self.assertEqual(t.line_color, '#cccccc')
Exemple #21
0
    def test_create_turtle_explicit_line_width(self):

        t = turtle.Turtle(self.sprite, line_width=42)
        self.assertEqual(t.line_width, 42)
Exemple #22
0
    def test_create_turtle_explicit_line_color(self):

        t = turtle.Turtle(self.sprite, line_color='orange')
        self.assertEqual(t.line_color, 'orange')
Exemple #23
0
    def test_create_turtle_default_line_width(self):

        t = turtle.Turtle(self.sprite)
        self.assertEqual(t.line_width, 3)
Exemple #24
0
    def test_create_turtle_explicit_down_False(self):

        t = turtle.Turtle(self.sprite, down=False)
        self.assertIs(t.down, False)
Exemple #25
0
    def test_create_turtle_anchor_from_sprite(self):

        t = turtle.Turtle(self.sprite)
        self.assertEqual(t.anchor, (0, 0))
Exemple #26
0
    def test_create_turtle_angle_from_sprite(self):

        t = turtle.Turtle(self.sprite)
        self.assertEqual(t.angle, 0)