def test_at_1_before_total_duration_add_1(self):
        scrolling_content = movement.ScrollingContent(30, 4, 0, 1, 2, 3)
        scrolling_content.reset()
        # total duration == 120
        assert scrolling_content.update(119)  # 1 before end
        assert not scrolling_content.end_of_segment_reached
        assert scrolling_content.x_offset == 2
        assert scrolling_content.y_offset == 7
        assert scrolling_content.current_step_num == 3

        # add 1
        assert not scrolling_content.update(1)  # no changed as end reached
        assert scrolling_content.end_of_segment_reached  # this has changed
        assert scrolling_content.x_offset == 2
        assert scrolling_content.y_offset == 7  # but not this
        assert scrolling_content.current_step_num == 3  # nor this
        assert scrolling_content.elapsed_time == 120
        assert scrolling_content.extra_time_after_end == 0

        # add 1
        assert not scrolling_content.update(1)
        assert scrolling_content.end_of_segment_reached  # no change
        assert scrolling_content.x_offset == 2
        assert scrolling_content.y_offset == 7  # no change
        assert scrolling_content.current_step_num == 3  # no change
        assert scrolling_content.elapsed_time == 120
        assert scrolling_content.extra_time_after_end == 1  # change
 def test_reset(self):
     scrolling_content = movement.ScrollingContent(30, 4, -1, 0, 2, 3)
     scrolling_content.reset()
     assert scrolling_content.x_offset == 1  # moves at t=0
     assert scrolling_content.y_offset == 3
     assert scrolling_content.current_step_num == 0
     assert scrolling_content.elapsed_time == 0
     assert scrolling_content.extra_time_after_end == 0
 def test_within_step_scroll_left(self):
     scrolling_content = movement.ScrollingContent(30, 4, -1, 0, 2, 3)
     scrolling_content.reset()
     assert not scrolling_content.update(20)
     assert not scrolling_content.end_of_segment_reached
     assert scrolling_content.x_offset == 1
     assert scrolling_content.y_offset == 3
     assert scrolling_content.current_step_num == 0
     assert scrolling_content.elapsed_time == 20
     assert scrolling_content.extra_time_after_end == 0
 def test_set_offset_after_end(self):
     scrolling_content = movement.ScrollingContent(30, 4, -1, 0, 2, 3)
     scrolling_content.reset()
     scrolling_content.update(150)
     assert scrolling_content.x_offset == -2
     assert scrolling_content.y_offset == 3
     scrolling_content.set_offset(6, 8)
     scrolling_content.update(60)
     # no further movement
     assert scrolling_content.x_offset == 6
     assert scrolling_content.y_offset == 8
    def test_set_offset(self):
        scrolling_content = movement.ScrollingContent(30, 4, -1, 0, 2, 3)
        scrolling_content.reset()
        scrolling_content.update(40)  # at t==40
        assert scrolling_content.x_offset == 0
        assert scrolling_content.y_offset == 3

        scrolling_content.set_offset(6, 8)
        scrolling_content.update(60)  # at t==100
        assert scrolling_content.x_offset == 4
        assert scrolling_content.y_offset == 8
Exemple #6
0
def deserialise_ScrollingContent(
    scrolling_content: departure_pb2.ScrollingContent,
) -> movement.ScrollingContent:
    return movement.ScrollingContent(
        step_duration=scrolling_content.step_duration,
        total_steps=scrolling_content.total_steps,
        delta_x_per_step=scrolling_content.delta_x_per_step,
        delta_y_per_step=scrolling_content.delta_y_per_step,
        x_offset_init=scrolling_content.x_offset_init,
        y_offset_init=scrolling_content.y_offset_init,
    )
 def test_across_steps_scroll_down(self):
     scrolling_content = movement.ScrollingContent(30, 4, 0, 1, 2, 3)
     scrolling_content.reset()
     assert not scrolling_content.update(20)
     assert not scrolling_content.end_of_segment_reached
     assert scrolling_content.update(50)
     assert not scrolling_content.end_of_segment_reached
     assert scrolling_content.x_offset == 2
     assert scrolling_content.y_offset == 6
     assert scrolling_content.current_step_num == 2
     assert scrolling_content.elapsed_time == 70
     assert scrolling_content.extra_time_after_end == 0
 def test_perpetual_scroll(self):
     scrolling_content = movement.ScrollingContent(30, 0, 0, -1, 2, 3)
     scrolling_content.reset()
     assert scrolling_content.update(130)
     assert not scrolling_content.end_of_segment_reached
     assert scrolling_content.x_offset == 2
     assert scrolling_content.y_offset == -2  # moves at t=0, 30, 60, 90, 120
     assert scrolling_content.total_duration == 0
     assert scrolling_content.step_duration == 30
     assert scrolling_content.total_steps == 0
     assert scrolling_content.current_step_num == 0
     assert scrolling_content.elapsed_time == 10
     assert scrolling_content.extra_time_after_end == 0
 def test_init(self):
     scrolling_content = movement.ScrollingContent(30, 4, -1, 0, 2, 3)
     assert scrolling_content.x_offset_init == 2
     assert scrolling_content.y_offset_init == 3
     assert scrolling_content.x_offset is None
     assert scrolling_content.y_offset is None
     assert scrolling_content.current_step_num is None
     assert scrolling_content.elapsed_time is None
     assert scrolling_content.extra_time_after_end is None
     assert scrolling_content.total_duration == 120
     assert scrolling_content.step_duration == 30
     assert scrolling_content.total_steps == 4
     assert scrolling_content.delta_x_per_step == -1
     assert scrolling_content.delta_y_per_step == 0
 def test_reset_scroll(self):
     scrolling_content = movement.ScrollingContent(30, 4, 0, -1, 2, 3)
     scrolling_content.reset()
     scrolling_content.update(80)
     scrolling_content.update(70)
     # (assume other movements happen, then loop back to this movement)
     scrolling_content.reset()
     scrolling_content.set_offset(8, 9)
     assert not scrolling_content.end_of_segment_reached
     assert scrolling_content.x_offset == 8
     assert scrolling_content.y_offset == 9
     assert scrolling_content.current_step_num == 0
     assert scrolling_content.elapsed_time == 0
     assert scrolling_content.extra_time_after_end == 0
    def setup_method(self):
        self.content_pixels = [
            [0, 0, (255, 0, 0)],
            [0, 7, (0, 255, 0)],
            [0, 15, (0, 0, 255)],
        ]

        self.next_content_pixels = [
            [0, 0, (255, 0, 0)],
            [1, 0, (255, 0, 0)],
            [0, 7, (0, 255, 0)],
            [1, 7, (0, 255, 0)],
            [0, 15, (0, 0, 255)],
            [1, 15, (0, 0, 255)],
        ]

        self.board = board.Board(
            board_w=8,
            board_h=8,
            sections=[
                board.BoardSection(
                    output_x=0,
                    output_y=0,
                    output_w=8,
                    output_h=8,
                    content=board.BoardSectionContent(
                        content_pixels=self.content_pixels,
                        content_w=16,
                        content_h=16,
                    ),
                    movement=movement.ScrollingContent(30, 0, 0, -1),
                )
            ],
        )

        self.next_content = board.BoardSectionContent(
            content_pixels=self.next_content_pixels,
            content_w=16,
            content_h=16)
 def setup_method(self):
     self.tracker = movement.MovementCycle([
         movement.StaticContent(200),
         movement.ScrollingContent(15, 4, -1, 0)
     ])
 def test_update_no_reset(self):
     scrolling_content = movement.ScrollingContent(30, 4, -1, 0)
     with pytest.raises(movement.MovementException):
         scrolling_content.update(20)