def test_not_enough_lines(): screen = HistoryScreen(5, 5, history=6) screen.set_mode(mo.LNM) for idx in range(len(screen.buffer)): for ch in str(idx): screen.draw(ch) screen.linefeed() assert screen.history.top assert not screen.history.bottom assert screen.history.position == 6 assert screen.display == ["1 ", "2 ", "3 ", "4 ", " "] screen.prev_page() assert not screen.history.top assert len(screen.history.bottom) is 1 assert chars(screen.history.bottom) == [" "] assert screen.display == [ "0 ", "1 ", "2 ", "3 ", "4 ", ] screen.next_page() assert screen.history.top assert not screen.history.bottom assert screen.display == ["1 ", "2 ", "3 ", "4 ", " "]
def test_not_enough_lines(): screen = HistoryScreen(5, 5, history=6) screen.set_mode(mo.LNM) for idx in range(len(screen)): for ch in str(idx): screen.draw(ch) screen.linefeed() assert screen.history.top assert not screen.history.bottom assert screen.history.position == 6 assert screen.display == [ "1 ", "2 ", "3 ", "4 ", " " ] screen.prev_page() assert not screen.history.top assert len(screen.history.bottom) is 1 assert chars(screen.history.bottom) == [" "] assert screen.display == [ "0 ", "1 ", "2 ", "3 ", "4 ", ] screen.next_page() assert screen.history.top assert not screen.history.bottom assert screen.display == [ "1 ", "2 ", "3 ", "4 ", " " ]
def test_next_page(): screen = HistoryScreen(5, 5, history=50) screen.set_mode(mo.LNM) # Once again filling the screen with line numbers, but this time, # we need them to span on multiple lines. for idx in range(len(screen.buffer) * 5): for ch in str(idx): screen.draw(ch) screen.linefeed() assert screen.history.top assert not screen.history.bottom assert screen.history.position == 50 assert len(screen.buffer) == screen.lines assert screen.display == ["21 ", "22 ", "23 ", "24 ", " "] # a) page up -- page down. screen.prev_page() screen.next_page() assert screen.history.top assert not screen.history.bottom assert screen.history.position == 50 assert screen.display == ["21 ", "22 ", "23 ", "24 ", " "] # b) double page up -- page down. screen.prev_page() screen.prev_page() screen.next_page() assert screen.history.position == 45 assert screen.history.top assert chars(screen.history.bottom) == ["23 ", "24 ", " "] assert len(screen.buffer) == screen.lines assert screen.display == ["18 ", "19 ", "20 ", "21 ", "22 "] # c) double page up -- double page down screen.prev_page() screen.prev_page() screen.next_page() screen.next_page() assert screen.history.position == 45 assert len(screen.buffer) == screen.lines assert screen.display == ["18 ", "19 ", "20 ", "21 ", "22 "]
def test_prev_page(): screen = HistoryScreen(4, 4, history=40) screen.set_mode(mo.LNM) assert screen.history.position == 40 # Once again filling the screen with line numbers, but this time, # we need them to span on multiple lines. for idx in range(len(screen.buffer) * 10): for ch in str(idx): screen.draw(ch) screen.linefeed() assert screen.history.top assert not screen.history.bottom assert screen.history.position == 40 assert len(screen.buffer) == screen.lines assert screen.display == ["37 ", "38 ", "39 ", " "] assert chars(screen.history.top)[-4:] == ["33 ", "34 ", "35 ", "36 "] # a) first page up. screen.prev_page() assert screen.history.position == 36 assert len(screen.buffer) == screen.lines assert screen.display == ["35 ", "36 ", "37 ", "38 "] assert chars(screen.history.top)[-4:] == ["31 ", "32 ", "33 ", "34 "] assert len(screen.history.bottom) == 2 assert chars(screen.history.bottom) == [ "39 ", " ", ] # b) second page up. screen.prev_page() assert screen.history.position == 32 assert len(screen.buffer) == screen.lines assert screen.display == [ "33 ", "34 ", "35 ", "36 ", ] assert len(screen.history.bottom) == 4 assert chars(screen.history.bottom) == [ "37 ", "38 ", "39 ", " ", ] # c) same with odd number of lines. screen = HistoryScreen(5, 5, history=50) screen.set_mode(mo.LNM) for idx in range(len(screen.buffer) * 10): for ch in str(idx): screen.draw(ch) screen.linefeed() assert screen.history.top assert not screen.history.bottom assert screen.history.position == 50 assert screen.display == ["46 ", "47 ", "48 ", "49 ", " "] screen.prev_page() assert screen.history.position == 45 assert len(screen.buffer) == screen.lines assert screen.display == ["43 ", "44 ", "45 ", "46 ", "47 "] assert len(screen.history.bottom) == 3 assert chars(screen.history.bottom) == [ "48 ", "49 ", " ", ] # d) same with cursor in the middle of the screen. screen = HistoryScreen(5, 5, history=50) screen.set_mode(mo.LNM) for idx in range(len(screen.buffer) * 10): for ch in str(idx): screen.draw(ch) screen.linefeed() assert screen.history.top assert not screen.history.bottom assert screen.history.position == 50 assert screen.display == ["46 ", "47 ", "48 ", "49 ", " "] screen.cursor_to_line(screen.lines // 2) while screen.history.position > screen.lines: screen.prev_page() assert screen.history.position == screen.lines assert len(screen.buffer) == screen.lines assert screen.display == ["21 ", "22 ", "23 ", "24 ", "25 "] while screen.history.position < screen.history.size: screen.next_page() assert screen.history.position == screen.history.size assert len(screen.buffer) == screen.lines assert screen.display == ["46 ", "47 ", "48 ", "49 ", " "] # e) same with cursor near the middle of the screen. screen = HistoryScreen(5, 5, history=50) screen.set_mode(mo.LNM) for idx in range(len(screen.buffer) * 10): for ch in str(idx): screen.draw(ch) screen.linefeed() assert screen.history.top assert not screen.history.bottom assert screen.history.position == 50 assert screen.display == ["46 ", "47 ", "48 ", "49 ", " "] screen.cursor_to_line(screen.lines // 2 - 2) while screen.history.position > screen.lines: screen.prev_page() assert screen.history.position == screen.lines assert len(screen.buffer) == screen.lines assert screen.display == ["21 ", "22 ", "23 ", "24 ", "25 "] while screen.history.position < screen.history.size: screen.next_page() assert screen.history.position == screen.history.size assert len(screen.buffer) == screen.lines assert screen.display == ["46 ", "47 ", "48 ", "49 ", " "]
def test_prev_page(): screen = HistoryScreen(4, 4, history=40) screen.set_mode(mo.LNM) assert screen.history.position == 40 # Once again filling the screen with line numbers, but this time, # we need them to span on multiple lines. for idx in range(len(screen) * 10): for ch in str(idx): screen.draw(ch) screen.linefeed() assert screen.history.top assert not screen.history.bottom assert screen.history.position == 40 assert len(screen) == screen.lines assert screen.display == [ "37 ", "38 ", "39 ", " " ] assert chars(screen.history.top)[-4:] == [ "33 ", "34 ", "35 ", "36 " ] # a) first page up. screen.prev_page() assert screen.history.position == 36 assert len(screen) == screen.lines assert screen.display == [ "35 ", "36 ", "37 ", "38 " ] assert chars(screen.history.top)[-4:] == [ "31 ", "32 ", "33 ", "34 " ] assert len(screen.history.bottom) == 2 assert chars(screen.history.bottom) == [ "39 ", " ", ] # b) second page up. screen.prev_page() assert screen.history.position == 32 assert len(screen) == screen.lines assert screen.display == [ "33 ", "34 ", "35 ", "36 ", ] assert len(screen.history.bottom) == 4 assert chars(screen.history.bottom) == [ "37 ", "38 ", "39 ", " ", ] # c) same with odd number of lines. screen = HistoryScreen(5, 5, history=50) screen.set_mode(mo.LNM) for idx in range(len(screen) * 10): for ch in str(idx): screen.draw(ch) screen.linefeed() assert screen.history.top assert not screen.history.bottom assert screen.history.position == 50 assert screen.display == [ "46 ", "47 ", "48 ", "49 ", " " ] screen.prev_page() assert screen.history.position == 45 assert len(screen) == screen.lines assert screen.display == [ "43 ", "44 ", "45 ", "46 ", "47 " ] assert len(screen.history.bottom) == 3 assert chars(screen.history.bottom) == [ "48 ", "49 ", " ", ] # d) same with cursor in the middle of the screen. screen = HistoryScreen(5, 5, history=50) screen.set_mode(mo.LNM) for idx in range(len(screen) * 10): for ch in str(idx): screen.draw(ch) screen.linefeed() assert screen.history.top assert not screen.history.bottom assert screen.history.position == 50 assert screen.display == [ "46 ", "47 ", "48 ", "49 ", " " ] screen.cursor_to_line(screen.lines // 2) while screen.history.position > screen.lines: screen.prev_page() assert screen.history.position == screen.lines assert len(screen) == screen.lines assert screen.display == [ "21 ", "22 ", "23 ", "24 ", "25 " ] while screen.history.position < screen.history.size: screen.next_page() assert screen.history.position == screen.history.size assert len(screen) == screen.lines assert screen.display == [ "46 ", "47 ", "48 ", "49 ", " " ] # e) same with cursor near the middle of the screen. screen = HistoryScreen(5, 5, history=50) screen.set_mode(mo.LNM) for idx in range(len(screen) * 10): for ch in str(idx): screen.draw(ch) screen.linefeed() assert screen.history.top assert not screen.history.bottom assert screen.history.position == 50 assert screen.display == [ "46 ", "47 ", "48 ", "49 ", " " ] screen.cursor_to_line(screen.lines // 2 - 2) while screen.history.position > screen.lines: screen.prev_page() assert screen.history.position == screen.lines assert len(screen) == screen.lines assert screen.display == [ "21 ", "22 ", "23 ", "24 ", "25 " ] while screen.history.position < screen.history.size: screen.next_page() assert screen.history.position == screen.history.size assert len(screen) == screen.lines assert screen.display == [ "46 ", "47 ", "48 ", "49 ", " " ]
def test_next_page(): screen = HistoryScreen(5, 5, history=50) screen.set_mode(mo.LNM) # Once again filling the screen with line numbers, but this time, # we need them to span on multiple lines. for idx in range(len(screen) * 5): for ch in str(idx): screen.draw(ch) screen.linefeed() assert screen.history.top assert not screen.history.bottom assert screen.history.position == 50 assert len(screen) == screen.lines assert screen.display == [ "21 ", "22 ", "23 ", "24 ", " " ] # a) page up -- page down. screen.prev_page() screen.next_page() assert screen.history.top assert not screen.history.bottom assert screen.history.position == 50 assert screen.display == [ "21 ", "22 ", "23 ", "24 ", " " ] # b) double page up -- page down. screen.prev_page() screen.prev_page() screen.next_page() assert screen.history.position == 45 assert screen.history.top assert chars(screen.history.bottom) == [ "23 ", "24 ", " " ] assert len(screen) == screen.lines assert screen.display == [ "18 ", "19 ", "20 ", "21 ", "22 " ] # c) double page up -- double page down screen.prev_page() screen.prev_page() screen.next_page() screen.next_page() assert screen.history.position == 45 assert len(screen) == screen.lines assert screen.display == [ "18 ", "19 ", "20 ", "21 ", "22 " ]