Files
security-game/tools/tests/test_npc_baseline.py
T
zwitschi 4e8665e25b
Full build / Import + headless tests (push) Successful in 42s
Full build / Full desktop build + optional release (push) Skipped
Add the four crowd-variety characters and extend the baseline to twelve
2026-11-04 10:57:58 +01:00

42 lines
1.6 KiB
Python

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()