def test_print_oob_left_wide(): buffer = Buffer(10, 1) buffer.print("你好,世界", -1, 0) assert_buffer_matches( buffer, " 好 , 世 界 " # extra spaces are shadowed by two-wide chars in terminal )
def test_blit_blittable(): blittable = SimpleNamespace() blittable.blit_to = Mock() blittable.w = 1 blittable.h = 1 buffer = Buffer(1, 1) buffer.blit(blittable) assert blittable.blit_to.called
def test_print_fullwidth_shadowing(): buffer = Buffer(4, 1) buffer.clear(char="X") buffer.print("你好", 0, 0) assert buffer.at(0, 0).char == "你" assert buffer.at(1, 0).char == " " assert buffer.at(2, 0).char == "好" assert buffer.at(3, 0).char == " "
def test_drawing_draw_box_negative_dim(): buffer = Buffer(3, 3) draw_box(buffer, 1, 1, -1, 1, chars=_BOX_CHARS_TEST) assert_buffer_matches( buffer, " ", " ", " " )
def test_drawing_draw_box_one_tall(): buffer = Buffer(5, 3) draw_box(buffer, 1, 1, 3, 1, chars=_BOX_CHARS_TEST) assert_buffer_matches( buffer, " ", " ttt ", " " )
def test_drawing_draw_vline(): buffer = Buffer(3, 3) draw_vline(buffer, 1, char="X") assert_buffer_matches( buffer, " X ", " X ", " X " )
def test_drawing_draw_box_one_wide(): buffer = Buffer(3, 5) draw_box(buffer, 1, 1, 1, 3, chars=_BOX_CHARS_TEST) assert_buffer_matches( buffer, " ", " l ", " l ", " l ", " " )
def test_drawing_draw_box(): buffer = Buffer(5, 5) draw_box(buffer, 1, 1, 3, 3, chars=_BOX_CHARS_TEST) assert_buffer_matches( buffer, " ", " AtB ", " l r ", " CbD ", " " )
def test_buffer_fill_char_none(): buffer = Buffer(2, 1) buffer.at(0, 0).char = "X" buffer.at(1, 0).char = "Y" buffer.fill(0, 0, buffer.w, buffer.h, char=None) assert buffer.at(0, 0).char == "X" assert buffer.at(1, 0).char == "Y"
def test_drawing_draw_progress_too_small(): buffer = Buffer(2, 1) draw_progress( buffer, 0, 0, w=2, progress=1/3, start="[[", end="]" ) assert_buffer_matches( buffer, " " )
def test_drawing_draw_progress(): buffer = Buffer(5, 1) draw_progress( buffer, 0, 0, w=5, progress=1/3, start="[", end="]", bar_char="=", empty_char="x", head_chars=">" ) assert_buffer_matches( buffer, "[=>x]" )
def test_drawing_draw_progress_multi_head(): buffer = Buffer(7, 1) draw_progress( buffer, 0, 0, w=7, progress=3.35/5, start="[", end="]", bar_char="=", empty_char="x", head_chars="0123456789" ) assert_buffer_matches( buffer, "[===3x]" )
def test_drawing_draw_progress_big_caps(): buffer = Buffer(11, 1) draw_progress( buffer, 0, 0, w=11, progress=1/3, start="start", end="end", bar_char="=", empty_char="x", head_chars=">" ) assert_buffer_matches( buffer, "start=>xend" )
def test_drawing_draw_spinner(): buffer = Buffer(1, 1) draw_spinner(buffer, 0, 0, t=0, freq=1/4, frames="0123") assert buffer.at(0, 0).char == "0" draw_spinner(buffer, 0, 0, t=1, freq=1/4, frames="0123") assert buffer.at(0, 0).char == "1" draw_spinner(buffer, 0, 0, t=5, freq=1/4, frames="0123") assert buffer.at(0, 0).char == "1" draw_spinner(buffer, 0, 0, t=7, freq=1/4, frames="0123") assert buffer.at(0, 0).char == "3"
def test_buffer_clear_char(): buffer = Buffer(2, 1) buffer.clear(char="X") assert buffer.at(0, 0).char == "X" assert buffer.at(1, 0).char == "X"
def test_buffer_fill_char(): buffer = Buffer(2, 1) buffer.fill(0, 0, buffer.w, buffer.h, char="X") assert buffer.at(0, 0).char == "X" assert buffer.at(1, 0).char == "X"
def test_buffer_fill_char_oob(): buffer = Buffer(2, 1) buffer.fill(-1, -1, buffer.w + 1, buffer.h + 1, char="X") assert buffer.at(0, 0).char == "X" assert buffer.at(1, 0).char == "X"
def test_buffer_at_oob_raises(): buffer = Buffer(2, 1) with pytest.raises(Exception, match="bounds"): buffer.at(3, 1)
def test_buffer_at_clip(): buffer = Buffer(2, 2) assert buffer.at(2, 1, clip=True) is buffer.at(1, 1) assert buffer.at(-1, 0, clip=True) is buffer.at(0, 0)
def test_buffer_at(): buffer = Buffer(2, 2) assert isinstance(buffer.at(0, 0), PixelData)
def test_buffer_at_distinct(): buffer = Buffer(2, 1) assert buffer.at(0, 0) is not buffer.at(1, 0)
def test_buffer_in_bounds(): buffer = Buffer(3, 2) assert buffer.in_bounds(0, 0) assert buffer.in_bounds(2, 1)
def test_buffer_in_bounds_not(): buffer = Buffer(3, 2) assert not buffer.in_bounds(3, 1) assert not buffer.in_bounds(0, -1)
def test_print_newline_line_start(): buffer = Buffer(3, 3) buffer.print("X\nY", 1, 1, line_start=0) assert buffer.at(1, 1).char == "X" assert buffer.at(1, 2).char == " " assert buffer.at(0, 2).char == "Y"
def source_target_sample_1(): source = Buffer(3, 2) target = Buffer(2, 2) source.fill(1, 1, 2, 1, char="S") target.clear(char="T") return source, target
def test_print_fullwidth_spacing(): buffer = Buffer(4, 1) buffer.print("你好", 0, 0) assert buffer.at(0, 0).char == "你" assert buffer.at(2, 0).char == "好"
def test_put_char(): buffer = Buffer(2, 2) buffer.put_char("X", 1, 1) assert_buffer_matches(buffer, " ", " X")
def test_buffer_resize(): buffer = Buffer(2, 2) buffer.resize(4, 3) assert buffer.w == 4 assert buffer.h == 3
def test_put_char_fullwidth(): buffer = Buffer(2, 1) buffer.put_char("人", 0, 0) assert_buffer_matches(buffer, "人 ")
def test_blit_buffer(): source = Buffer(2, 1) target = Buffer(2, 2) target.clear(char="T") source.at(0, 0).char = "X" source.at(1, 0).char = "Y" target.blit(source, y=1) assert target.at(0, 0).char == "T" assert target.at(1, 0).char == "T" assert target.at(0, 1).char == "X" assert target.at(1, 1).char == "Y"