import os import tempfile import unittest from pathlib import Path import npc_baseline class NpcBaselineTests(unittest.TestCase): def test_expected_files_cover_all_variants_and_views(self): rows = npc_baseline.expected_files() self.assertEqual(len(rows), len(npc_baseline.VARIANTS) * len(npc_baseline.VIEWS)) self.assertEqual({row[0] for row in rows}, set(npc_baseline.VARIANTS)) self.assertEqual({row[1] for row in rows}, set(npc_baseline.VIEWS)) self.assertEqual(len({row[2] for row in rows}), len(rows)) def test_sheet_accepts_a_custom_view_list(self): from PIL import Image with tempfile.TemporaryDirectory() as tmp: folder = Path(tmp) for variant in npc_baseline.VARIANTS: for view in ("idle", "sit"): Image.new("RGB", (32, 18), (40, 60, 80)).save( folder / f"{variant}__{view}.png") out = npc_baseline.build_sheet(folder, folder / "sheet.jpg", ["idle", "sit"]) with Image.open(out) as sheet: # 2 views x 320 px cells. self.assertEqual(sheet.width, 640) def test_latest_capture_prefers_the_full_stem(self): with tempfile.TemporaryDirectory() as tmp: folder = Path(tmp) (folder / "npc_casual__front.png").write_bytes(b"old") newer = folder / "npc_casual__front-v2.png" newer.write_bytes(b"new") os.utime(newer, (2_000_000_000, 2_000_000_000)) self.assertEqual(npc_baseline.latest_for(folder, "npc_casual__front"), newer) if __name__ == "__main__": unittest.main()