def test_after_scroll_bottom(init_vstart, init_hstart, term_size, max_matrix_dim, expected): viewport = Viewport(init_vstart, init_hstart) viewport.set_term_size(*term_size) viewport.max_width = max_matrix_dim[1] viewport.max_height = max_matrix_dim[0] viewport.scroll_bottom() assert expected == (viewport.v_start, viewport.v_stop, viewport.h_start, viewport.h_stop)
def test_after_scroll_right(init_vstart, init_hstart, term_size, max_matrix_dim, expected): viewport = Viewport(init_vstart, init_hstart) viewport.set_term_size(*term_size) viewport.max_width = max_matrix_dim[1] viewport.max_height = max_matrix_dim[0] viewport.scroll_right() # corrected behaviour: last element should touch right screen edge, if possible! assert expected == (viewport.v_start, viewport.v_stop, viewport.h_start, viewport.h_stop)
def test_after_scroll_down(): viewport = Viewport() viewport.set_term_size(50, 120) viewport.max_width = 400 viewport.max_height = 200 viewport.scroll_down() assert (0, 120) == (viewport.h_start, viewport.h_stop) assert (50, 100) == (viewport.v_start, viewport.v_stop)
def test_scroll_far_right_attaches_to_right_screen_edge(): viewport = Viewport(200, 200) viewport.set_term_size(53, 176) viewport.max_width = 400 viewport.max_height = 400 viewport.scroll_far_right() assert 400 - 176 == viewport.h_start assert 400 == viewport.h_stop assert 200 == viewport.v_start assert 200 + 53 == viewport.v_stop
def test_after_reset_to_starting_position(): viewport = Viewport(400, 500) viewport.set_term_size(53, 176) viewport.max_width = 500 viewport.max_height = 500 viewport.reset_display() assert 0 == viewport.v_start assert 0 == viewport.h_start assert 53 == viewport.v_stop assert 176 == viewport.h_stop
def test_after_scroll_right_when_not_all_space_available_to_the_right(): viewport = Viewport() viewport.set_term_size(53, 176) viewport.max_width = 200 viewport.max_height = 200 viewport.scroll_right() assert 200 - 176 == viewport.h_start # corrected behaviour: last element should touch right screen edge, if possible! assert 200 == viewport.h_stop # (not scroll endelessly to the right) assert 0 == viewport.v_start assert 53 == viewport.v_stop
def test_after_scroll_right_with_nowhere_to_go(): viewport = Viewport(hstart=400 - 176) viewport.set_term_size(53, 176) viewport.max_width = 400 viewport.max_height = 200 viewport.scroll_right() assert 400 - 176 == viewport.h_start # OK, shouldn't move! assert 400 == viewport.h_stop # (not scroll endelessly to the right) assert 0 == viewport.v_start assert 53 == viewport.v_stop
def test_after_scroll_right(): viewport = Viewport() viewport.set_term_size(53, 176) viewport.max_width = 400 viewport.max_height = 200 viewport.scroll_right() assert 176 / 2 == viewport.h_start # corrected behaviour: last element should touch right screen edge, if possible! assert 176 / 2 + 176 == viewport.h_stop # (not scroll endelessly to the right) assert 0 == viewport.v_start assert 53 == viewport.v_stop
def test_after_scroll_left(): viewport = Viewport() viewport.set_term_size(53, 176) viewport.max_width = 200 viewport.max_height = 200 viewport.scroll_left() assert 0 == viewport.h_start assert 176 == viewport.h_stop # BUG?? or assert(10 == viewport.h_stop) is a BUG assert 0 == viewport.v_start assert 53 == viewport.v_stop
def test_after_scroll_up(): viewport = Viewport(vstart=276) viewport.set_term_size(53, 176) viewport.max_height = 300 viewport.scroll_up() assert 300 == viewport.max_height assert 0 == viewport.h_start assert 176 == viewport.h_stop assert 276 - 53 == viewport.v_start assert 276 == viewport.v_stop
def test_after_scroll_down_scroll_up(): viewport = Viewport() viewport.set_term_size(53, 176) viewport.max_height = 300 viewport.scroll_down() assert 300 == viewport.max_height assert 0 == viewport.h_start assert 176 == viewport.h_stop assert 53 == viewport.v_start # This scrolling logic looks ok assert 106 == viewport.v_stop viewport.scroll_up() # Now we can scroll up again assert 300 == viewport.max_height assert 0 == viewport.h_start assert 176 == viewport.h_stop assert 0 == viewport.v_start assert 53 == viewport.v_stop