Example #1
0
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
Example #2
0
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]
Example #3
0
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]
Example #4
0
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 == ["α ± ε"]
Example #5
0
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 == ["α ± ε"]
Example #6
0
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]]
Example #7
0
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"]
Example #8
0
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]
    ]
Example #9
0
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̈!̈", "    "]
Example #10
0
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̈!̈", "    "]
Example #11
0
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"]
Example #12
0
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
Example #13
0
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
Example #14
0
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", "   ", "   "]
Example #15
0
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  ],
    ]
Example #16
0
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  ],
    ]
Example #17
0
def test_display_wcwidth():
    screen = Screen(10, 1)
    screen.draw("コンニチハ".encode("utf-8"))
    assert screen.display == ["コンニチハ"]
Example #18
0
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", "   ", "   "]
Example #19
0
def test_draw_multiple_chars():
    screen = Screen(10, 1)
    screen.draw(b"foobar")
    assert screen.cursor.x == 6
    assert screen.display == ["foobar    "]
Example #20
0
def test_display_wcwidth():
    screen = Screen(10, 1)
    screen.draw("コンニチハ".encode("utf-8"))
    assert screen.display == ["コンニチハ"]
Example #21
0
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
Example #22
0
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
Example #23
0
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
Example #24
0
def test_draw_multiple_chars():
    screen = Screen(10, 1)
    screen.draw(b"foobar")
    assert screen.cursor.x == 6
    assert screen.display == ["foobar    "]
Example #25
0
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