File: test_image.py

package info (click to toggle)
firmware-microbit-micropython 1.0.1-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid
  • size: 25,448 kB
  • sloc: ansic: 83,496; cpp: 27,664; python: 2,475; asm: 274; makefile: 245; javascript: 41; sh: 25
file content (75 lines) | stat: -rw-r--r-- 2,164 bytes parent folder | download | duplicates (3)
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75

from microbit import display, Image

def eq(i, j):
    w = i.width()
    h = i.height()
    if w != j.width():
        return False
    if h != j.height():
        return False
    for x in range(w):
        for y in range(h):
            if i.get_pixel(x,y) != j.get_pixel(x,y):
                return False
    return True

TEST = Image("44444:45554:45654:45554:44444")

def test_blit():
    assert eq(TEST, TEST)
    i = Image(4, 4)
    i.blit(TEST, 1, 1, 5, 5)
    assert eq(i, Image("5554:5654:5554:4444"))
    i.fill(2)
    i.blit(TEST, -2, -2, 3, 3)
    assert eq(i, Image('0002:0002:0042:2222'))
    i.fill(2)
    i.blit(TEST, 2, 2, 3, 3)
    assert eq(i, Image('6542:5542:4442:2222'))
    i.fill(2)
    i.blit(TEST, 0, 0, 5, 5, -3, -3)
    assert eq(i, Image('5422:4422:2222:2222'))
    i.fill(2)
    i.blit(TEST, 2, 2, 2, 2, 1, 1)
    assert eq(i, Image('2222:2652:2552:2222'))
    i = TEST.copy()
    i.blit(i, 2, 2, 3, 3)
    assert eq(i, Image('65444:55454:44454:45554:44444'))
    i = TEST.copy()
    i.blit(i, -2, -2, 5, 5)
    assert eq(i, Image('00000:00000:00444:00455:00456'))
    i = TEST.copy()
    i.blit(i, 0, 0, 3, 3, 2, 2)
    assert eq(i, Image('44444:45554:45444:45455:44456'))
    i = Image(2, 7)
    i.fill(2)
    i.blit(TEST, -100, -100, 50, 50, 1, 1)
    assert eq(i, Image('22:20:20:20:20:20:20'))

def test_crop():
    assert eq(TEST.crop(-1, -1, 2, 2), Image('00:04'))
    assert eq(TEST.crop(1, 1, 2, 2), Image('55:56'))
    assert eq(TEST.crop(4, 4, 3, 3), Image('400:000:000'))

def test_shift():
    assert eq(TEST, TEST.shift_left(0))
    assert eq(TEST, TEST.shift_up(0))
    for n in range(-6, 7):
        assert eq(TEST.shift_left(n), TEST.shift_right(-n))
        assert eq(TEST.shift_up(n), TEST.shift_down(-n))
    assert eq(TEST.shift_left(1), Image('44440:55540:56540:55540:44440'))
    assert eq(TEST.shift_down(1), Image('00000:44444:45554:45654:45554'))

try:
    display.scroll("blit")
    test_blit()
    display.scroll("crop")
    test_crop()
    display.scroll("shift")
    test_shift()
    print("Image test: PASS")
    display.show(Image.HAPPY)
except Exception as ae:
    display.show(Image.SAD)
    raise