wasp-os/wasp/boards/simulator/test_unit.py
Daniel Thompson 0831f79a10 draw565: Improve line wrapping
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>
2021-07-22 20:04:50 +01:00

73 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