summaryrefslogtreecommitdiff
path: root/wasp/boards/simulator/test_unit.py
blob: f292c9af03d92729ba05b9cb0de731e5db31935b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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]