def test_draw_wcwidth(): # Example from https://github.com/selectel/pyte/issues/9 screen = Screen(10, 1) for char in "コンニチハ": screen.draw(char) assert screen.cursor.x == screen.columns
def test_draw_width0_irm(): screen = Screen(10, 1) screen.set_mode(mo.IRM) # The following should not insert any blanks. screen.draw("\N{ZERO WIDTH SPACE}".encode("utf-8")) screen.draw("\u0007".encode("utf-8")) # DELETE. assert screen.display == [" " * screen.columns]
def test_draw_cp437(): screen = Screen(5, 1) assert screen.charset == 0 screen.define_charset(b"U", b"(") screen.select_other_charset(b"@") screen.draw("α ± ε".encode("cp437")) assert screen.display == ["α ± ε"]
def test_attributes(): screen = Screen(2, 2) assert screen.buffer == [[screen.default_char, screen.default_char]] * 2 screen.select_graphic_rendition(1) # bold. # Still default, since we haven't written anything. assert screen.buffer == [[screen.default_char, screen.default_char]] * 2 assert screen.cursor.attrs.bold screen.draw(b"f") assert screen.buffer == [[ Char("f", "default", "default", bold=True), screen.default_char ], [screen.default_char, screen.default_char]]
def test_alignment_display(): screen = Screen(5, 5) screen.set_mode(mo.LNM) screen.draw(b"a") screen.linefeed() screen.linefeed() screen.draw(b"b") assert screen.display == ["a ", " ", "b ", " ", " "] screen.alignment_display() assert screen.display == ["EEEEE", "EEEEE", "EEEEE", "EEEEE", "EEEEE"]
def test_attributes(): screen = Screen(2, 2) assert screen == [[screen.default_char, screen.default_char]] * 2 screen.select_graphic_rendition(1) # Bold # Still default, since we haven't written anything. assert screen == [[screen.default_char, screen.default_char]] * 2 assert screen.cursor.attrs.bold screen.draw("f") assert screen == [ [Char("f", "default", "default", bold=True), screen.default_char], [screen.default_char, screen.default_char] ]
def test_draw_width0_combining(): screen = Screen(4, 2) # a) no prev. character screen.draw("\N{COMBINING DIAERESIS}".encode("utf-8")) assert screen.display == [" ", " "] screen.draw("bad".encode("utf-8")) # b) prev. character is on the same line screen.draw("\N{COMBINING DIAERESIS}".encode("utf-8")) assert screen.display == ["bad̈ ", " "] # c) prev. character is on the prev. line screen.draw("!".encode("utf-8")) screen.draw("\N{COMBINING DIAERESIS}".encode("utf-8")) assert screen.display == ["bad̈!̈", " "]
def test_alignment_display(): screen = Screen(5, 5) screen.draw("a") screen.linefeed() screen.linefeed() screen.draw("b") assert screen.display == ["a ", " ", "b ", " ", " "] screen.alignment_display() assert screen.display == ["EEEEE", "EEEEE", "EEEEE", "EEEEE", "EEEEE"]
def test_draw_width0_decawm_off(): screen = Screen(10, 1) screen.reset_mode(mo.DECAWM) screen.draw(" コンニチハ".encode("utf-8")) assert screen.cursor.x == screen.columns # The following should not advance the cursor. screen.draw("\N{ZERO WIDTH SPACE}".encode("utf-8")) screen.draw("\u0007".encode("utf-8")) # DELETE. assert screen.cursor.x == screen.columns
def test_draw(): # ``DECAWM`` on (default). screen = Screen(3, 3) assert mo.DECAWM in screen.mode map(screen.draw, "abc") assert screen.display == ["abc", " ", " "] assert (screen.cursor.y, screen.cursor.x) == (0, 3) # ... one` more character -- now we got a linefeed! screen.draw("a") assert (screen.cursor.y, screen.cursor.x) == (1, 1) # ``DECAWM`` is off. screen = Screen(3, 3) screen.reset_mode(mo.DECAWM) map(screen.draw, "abc") assert screen.display == ["abc", " ", " "] assert (screen.cursor.y, screen.cursor.x) == (0, 3) # No linefeed is issued on the end of the line ... screen.draw("a") assert screen.display == ["aba", " ", " "] assert (screen.cursor.y, screen.cursor.x) == (0, 3) # ``IRM`` mode is on, expecting new characters to move the old ones # instead of replacing them. screen.set_mode(mo.IRM) screen.cursor_position() screen.draw("x") assert screen.display == ["xab", " ", " "] screen.cursor_position() screen.draw("y") assert screen.display == ["yxa", " ", " "]
def test_attributes_reset(): screen = Screen(2, 2) assert screen == [[screen.default_char, screen.default_char]] * 2 screen.select_graphic_rendition(1) screen.draw("f") screen.draw("o") screen.draw("o") assert screen == [ [Char("f", bold=True), Char("o", bold=True)], [Char("o", bold=True), screen.default_char ], ] screen.cursor_position() screen.select_graphic_rendition(0) # Reset screen.draw("f") assert screen == [ [Char("f"), Char("o", bold=True)], [Char("o", bold=True), screen.default_char ], ]
def test_attributes_reset(): screen = Screen(2, 2) screen.set_mode(mo.LNM) assert screen == [[screen.default_char, screen.default_char]] * 2 screen.select_graphic_rendition(1) screen.draw("f") screen.draw("o") screen.draw("o") assert screen == [ [Char("f", bold=True), Char("o", bold=True)], [Char("o", bold=True), screen.default_char ], ] screen.cursor_position() screen.select_graphic_rendition(0) # Reset screen.draw("f") assert screen == [ [Char("f"), Char("o", bold=True)], [Char("o", bold=True), screen.default_char ], ]
def test_display_wcwidth(): screen = Screen(10, 1) screen.draw("コンニチハ".encode("utf-8")) assert screen.display == ["コンニチハ"]
def test_draw(): # ``DECAWM`` on (default). screen = Screen(3, 3) screen.set_mode(mo.LNM) assert mo.DECAWM in screen.mode for ch in "abc": screen.draw(ch) assert screen.display == ["abc", " ", " "] assert (screen.cursor.y, screen.cursor.x) == (0, 3) # ... one` more character -- now we got a linefeed! screen.draw("a") assert (screen.cursor.y, screen.cursor.x) == (1, 1) # ``DECAWM`` is off. screen = Screen(3, 3) screen.reset_mode(mo.DECAWM) for ch in "abc": screen.draw(ch) assert screen.display == ["abc", " ", " "] assert (screen.cursor.y, screen.cursor.x) == (0, 3) # No linefeed is issued on the end of the line ... screen.draw("a") assert screen.display == ["aba", " ", " "] assert (screen.cursor.y, screen.cursor.x) == (0, 3) # ``IRM`` mode is on, expecting new characters to move the old ones # instead of replacing them. screen.set_mode(mo.IRM) screen.cursor_position() screen.draw("x") assert screen.display == ["xab", " ", " "] screen.cursor_position() screen.draw("y") assert screen.display == ["yxa", " ", " "]
def test_draw_multiple_chars(): screen = Screen(10, 1) screen.draw(b"foobar") assert screen.cursor.x == 6 assert screen.display == ["foobar "]
def test_draw_width2_line_end(): # Test from https://github.com/selectel/pyte/issues/55 screen = Screen(10, 1) screen.draw(" コンニチハ".encode("utf-8")) assert screen.cursor.x == screen.columns
def test_draw_width2(): # Example from https://github.com/selectel/pyte/issues/9 screen = Screen(10, 1) screen.draw("コンニチハ".encode("utf-8")) assert screen.cursor.x == screen.columns