Files
vt1200/bad-apple/tests/test_tilepack.py
T

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)