mirror of
https://git.k-space.ee/arti/vt1200.git
synced 2026-11-01 12:14:56 +02:00
41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
import numpy as np
|
|
|
|
from pipeline.movie import Rect, TileRecord, FrameRecord
|
|
from pipeline.tilepack import decompose_tile, diff_tiles, apply_record
|
|
|
|
|
|
def test_decompose_solid_tiles():
|
|
black = np.ones((32, 32), dtype=bool)
|
|
bg, rects = decompose_tile(black)
|
|
assert bg == 1 and rects == []
|
|
white = np.zeros((32, 32), dtype=bool)
|
|
bg, rects = decompose_tile(white)
|
|
assert bg == 0 and rects == []
|
|
|
|
|
|
def test_decompose_block_is_one_rect():
|
|
tile = np.zeros((32, 32), dtype=bool)
|
|
tile[4:6, 7:10] = True
|
|
bg, rects = decompose_tile(tile)
|
|
assert bg == 0
|
|
assert rects == [Rect(7, 4, 3, 2)]
|
|
|
|
|
|
def test_diff_only_reports_changed_tiles():
|
|
a = np.zeros((64, 64), dtype=bool)
|
|
b = a.copy()
|
|
b[0:32, 0:32] = True
|
|
recs = diff_tiles(a, b, tile=32)
|
|
assert len(recs) == 1 and recs[0].tile_index == 0
|
|
|
|
|
|
def test_apply_record_reconstructs():
|
|
a = np.zeros((32, 32), dtype=bool)
|
|
b = a.copy()
|
|
b[4:9, 3:12] = True
|
|
recs = diff_tiles(a, b, tile=32)
|
|
canvas = a.copy()
|
|
for rec in recs:
|
|
apply_record(canvas, FrameRecord(1, 0, [rec]), tile=32)
|
|
assert np.array_equal(canvas, b)
|