Example #1
0
    def test_StorageLimit(self):
        storage = self.storage_mock
        renderer = self.renderer_mock
        ui = self.ui_mock

        storage.mock_add_spec(['get', 'step_next'], spec_set=True)
        img_next = Mock(spec_set=[], name='img_next')
        imgs = {
            -3: None,
            -2: Mock(spec_set=[], name='img_-2'),
            -1: Mock(spec_set=[], name='img_-1'),
            0: Mock(spec_set=[], name='img_0'),
            1: img_next,
            2: Mock(spec_set=[], name='img_2'),
            3: Mock(spec_set=[], name='img_3'),
            4: None,
        }

        def _get(offset):
            return imgs[offset]

        storage.get.side_effect = _get
        expect_storage_get = [
            call.get(0), call.get(-1), call.get(-2), call.get(-3),
            call.get(1), call.get(2), call.get(3), call.get(4)
        ]

        renderer.mock_add_spec(['calc', 'render_to_left'], spec_set=True)
        calc_result = [
            # left side
            {'left': 0, 'left_done': False, 'right': 0, 'right_done': False},
            {'left': 0, 'left_done': False, 'right': 1, 'right_done': False},
            {'left': 0, 'left_done': False, 'right': 2, 'right_done': False},
            # right side
            {'left': 0, 'left_done': False, 'right': 0, 'right_done': False},
            {'left': 0, 'left_done': False, 'right': 1, 'right_done': False},
            {'left': 0, 'left_done': False, 'right': 2, 'right_done': False}
        ]
        renderer.calc.side_effect = calc_result
        expect_renderer_calc = list(itertools.repeat(call.calc(ANY, ANY), len(calc_result)))

        render_result = list(itertools.repeat(Mock(spec_set=[]), 101))
        renderer.render_to_left.side_effect = render_result
        args_render = [imgs[-2], imgs[-1], imgs[0], imgs[1], imgs[2], imgs[3]]
        expect_renderer_render = [
            call.render_to_left(args_render, img_next, i) for i in range(101)
        ]

        expect_ui = [call.draw(pic) for pic in render_result]

        self.instance.to_left()

        storage.assert_has_calls(expect_storage_get + [call.step_next()])
        self.assertEqual(renderer.calc.call_count, len(expect_renderer_calc))
        self.assertEqual(renderer.render_to_left.call_count, len(expect_renderer_render))
        renderer.assert_has_calls(expect_renderer_calc + expect_renderer_render)
        ui.assert_has_calls(expect_ui)
Example #2
0
    def test_StorageNoNext(self):
        storage = self.storage_mock
        renderer = self.renderer_mock
        ui = self.ui_mock

        storage.mock_add_spec(['get'], spec_set=True)
        img_current = Mock(spec_set=[], name='image_current')
        imgs = {
            -3: None,
            -2: Mock(spec_set=[], name='img_-2'),
            -1: Mock(spec_set=[], name='img_-1'),
            0: img_current,
            1: None
        }

        def _get(offset):
            return imgs[offset]

        storage.get.side_effect = _get
        expect_storage_get = [
            call.get(0), call.get(-1), call.get(-2), call.get(-3),
            call.get(1)
        ]

        renderer.mock_add_spec(['calc', 'render_to_left'], spec_set=True)
        calc_result = [
            # only left side
            {'left': 0, 'left_done': False, 'right': 0, 'right_done': False},
            {'left': 0, 'left_done': False, 'right': 1, 'right_done': False},
            {'left': 0, 'left_done': False, 'right': 2, 'right_done': False}
        ]
        renderer.calc.side_effect = calc_result
        expect_renderer_calc = list(itertools.repeat(call.calc(ANY, ANY), len(calc_result)))
        img_ui = Mock(spec_set=[])
        renderer.render_to_left.return_value = img_ui
        expect_renderer_render = [call.render_to_left([imgs[-2], imgs[-1], imgs[0]], img_current, 100)]

        self.instance.to_left()

        storage.assert_has_calls(expect_storage_get)
        renderer.assert_has_calls(expect_renderer_calc + expect_renderer_render)
        ui.draw.assert_called_once_with(img_ui)
Example #3
0
    def test_RendererLimit(self):
        storage = self.storage_mock
        renderer = self.renderer_mock
        ui = self.ui_mock

        storage.mock_add_spec(['get', 'step_previous'], spec_set=True)
        img_current = Mock(spec_set=[], name='img_next')
        img_previous = Mock(spec_set=[], name='img_next')
        imgs = {
            -3: Mock(spec_set=[], name='img_-3'),
            -2: Mock(spec_set=[], name='img_-2'),
            -1: img_previous,
            0: img_current,
            1: Mock(spec_set=[], name='img_1'),
            2: Mock(spec_set=[], name='img_2')
        }

        def _get(offset):
            return imgs[offset]

        storage.get.side_effect = _get
        expect_storage_get = [
            call.get(0), call.get(1), call.get(2),
            call.get(-1), call.get(-2), call.get(-3)
        ]

        renderer.mock_add_spec(['calc', 'render_to_right'], spec_set=True)
        calc_result = [
            # right side
            {'left': 0, 'left_done': False, 'right': 0, 'right_done': False},
            {'left': 0, 'left_done': False, 'right': 1, 'right_done': False},
            {'left': 0, 'left_done': False, 'right': 2, 'right_done': True},
            # left side
            {'left': 0, 'left_done': False, 'right': 0, 'right_done': False},
            {'left': 0, 'left_done': False, 'right': 1, 'right_done': False},
            {'left': 0, 'left_done': True, 'right': 2, 'right_done': False}
        ]
        renderer.calc.side_effect = calc_result

        expect_renderer_calc = [
            #left side
            call.calc(ANY, img_current),
            call.calc(ANY, img_current),
            call.calc([imgs[0], imgs[1], imgs[2]], img_current),
            #right side
            call.calc(ANY, img_previous),
            call.calc(ANY, img_previous),
            call.calc([imgs[-3], imgs[-2], imgs[-1]], img_previous)
        ]

        renderer.render_to_right.side_effect = list(itertools.repeat(Mock(spec_set=[]), 101))
        args_render = [imgs[-3], imgs[-2], imgs[-1], imgs[0], imgs[1], imgs[2]]
        expect_renderer_render = [
            call.render_to_right(args_render, img_previous, i) for i in range(101)
        ]

        expect_ui = list(itertools.repeat(call.draw(ANY), 101))

        self.instance.to_right()

        storage.assert_has_calls(expect_storage_get + [call.step_previous()])
        self.assertEqual(renderer.calc.call_count, len(expect_renderer_calc))
        self.assertEqual(renderer.render_to_right.call_count, len(expect_renderer_render))
        renderer.assert_has_calls(expect_renderer_calc + expect_renderer_render)
        ui.assert_has_calls(expect_ui)