"""Synthetic proofs for derived alpha/material/static-animation cleanup.""" import copy import io import json import struct import tempfile import unittest from pathlib import Path import numpy as np from PIL import Image import hd_frame_policy from hd_sprite_cleanup import digest, palette_rgb, render_family, run_recipe, viewport_numbers class SpriteCleanupTests(unittest.TestCase): def setUp(self): self.temporary = tempfile.TemporaryDirectory() self.addCleanup(self.temporary.cleanup) self.root = Path(self.temporary.name) palette = bytearray(768) for index, rgb in {1: [3, 3, 3], 2: [20, 10, 6], 3: [40, 30, 20], 4: [0, 0, 12]}.items(): palette[index*3:index*3+3] = bytes(rgb) self.palette = self.put("palette", bytes(palette)) def put(self, name, data): path = self.root / name path.write_bytes(data) return {"path": str(path), "sha256": digest(data)} def source(self, name, values): values = np.array(values) height, width = values.shape data = bytearray(struct.pack("