0831f79a10
Currently the final word of wrapped text will always appear as a single word on its own line. Fix this by rearranging the break cases to avoid searching for the most recent space when we get to the end of the text. Fixes: #230 Signed-off-by: Daniel Thompson <daniel@redfelineninja.org.uk>
72 lines
2.7 KiB
Python
72 lines
2.7 KiB
Python
import draw565
|
|
import fonts
|
|
import pytest
|
|
|
|
@pytest.fixture
|
|
def draw():
|
|
"""Provide a RGB565 drawing surface.
|
|
|
|
Currently most of the draw565 functions will not work since we haven't
|
|
mocked up the display. This limits the testing that we can perform.
|
|
"""
|
|
d = draw565.Draw565(None)
|
|
|
|
return d
|
|
|
|
def test_lighten(draw):
|
|
assert draw.lighten(0b00000_000000_00000 ) == 0b00001_000010_00001
|
|
assert draw.lighten(0b00000_000000_00000, 0b00001) == 0b00001_000010_00001
|
|
assert draw.lighten(0b00000_000000_00000, 0b00100) == 0b00100_001000_00100
|
|
|
|
assert draw.lighten(0b10000_100000_10000, 0b10000) == 0b11111_111111_11111
|
|
assert draw.lighten(0b11110_111100_11110, 0b00001) == 0b11111_111110_11111
|
|
assert draw.lighten(0b11110_111101_11110, 0b00001) == 0b11111_111111_11111
|
|
|
|
assert draw.lighten(0b11111_111111_11111, 0b00001) == 0b11111_111111_11111
|
|
|
|
assert draw.lighten(0b10000_010000_01000, 0b10000) == 0b11111_110000_11000
|
|
assert draw.lighten(0b01000_100000_01000, 0b10000) == 0b11000_111111_11000
|
|
assert draw.lighten(0b01000_010000_10000, 0b10000) == 0b11000_110000_11111
|
|
|
|
def test_darken(draw):
|
|
assert draw.darken(0b00001_000010_00001, 0b00001) == 0b00000_000000_00000
|
|
assert draw.darken(0b00010_000100_00010 ) == 0b00001_000010_00001
|
|
assert draw.darken(0b00010_000100_00010, 0b00001) == 0b00001_000010_00001
|
|
assert draw.darken(0b10000_010000_00100, 0b00001) == 0b01111_001110_00011
|
|
|
|
assert draw.darken(0b00000_000000_00000, 0b00001) == 0b00000_000000_00000
|
|
assert draw.darken(0b00001_000001_00001, 0b00001) == 0b00000_000000_00000
|
|
assert draw.darken(0b10000_100000_10000, 0b10001) == 0b00000_000000_00000
|
|
assert draw.darken(0b10000_100010_10010, 0b10001) == 0b00000_000000_00001
|
|
assert draw.darken(0b10000_100100_10010, 0b10001) == 0b00000_000010_00001
|
|
|
|
def test_font_height(draw):
|
|
assert 24 == draw.bounding_box('A')[1]
|
|
|
|
draw.set_font(fonts.sans28)
|
|
assert 27 == draw.bounding_box(None)[1]
|
|
|
|
draw.set_font(fonts.sans36)
|
|
assert 36 == draw.bounding_box('0')[1]
|
|
|
|
def test_font_width(draw):
|
|
for f in (fonts.sans24, fonts.sans28, fonts.sans36):
|
|
draw.set_font(f)
|
|
|
|
assert 0 == draw.bounding_box('0000')[0] % 4
|
|
|
|
if f.max_ch() >= 90:
|
|
assert draw.bounding_box('IIII')[0] < draw.bounding_box('WWWW')[0]
|
|
|
|
@pytest.mark.parametrize("input,expected", (
|
|
('abc', [0, 3]),
|
|
('one.two', [0, 7]),
|
|
('one two', [0, 7]),
|
|
('one two three', [0, 13]),
|
|
('abcdefghijklmnopqrstuvwxyz', [0, 17, 26]),
|
|
('abcdefghijklm nopqrstuvwxyz', [0, 14, 27]),
|
|
('abcde fghij klmno pqrst uvwxyz', [0, 18, 30]),
|
|
|
|
))
|
|
def test_wrap(draw, input, expected):
|
|
assert draw.wrap(input, 240) == expected
|