Files
OpenMaidEngine/tools/test_locate_page.py
2026-07-11 22:52:26 -04:00

52 lines
1.6 KiB
Python

"""Plain tests for locate_page.py."""
import json
import sys
import tempfile
from pathlib import Path
from locate_page import context_window, find_page, load_records
FAILS = []
def check(condition, message):
(FAILS.append(message) or print("FAIL:", message)) if not condition else print("ok:", message)
def test_load_and_find():
rows = [
{"root_scene": "SC0000", "page": 1, "wait_offset": "0x83c"},
{"root_scene": "SC0000", "page": 2, "wait_offset": "0x871"},
]
with tempfile.TemporaryDirectory() as directory:
path = Path(directory) / "pages.jsonl"
path.write_text("\n".join(json.dumps(r) for r in rows) + "\n", encoding="utf-8")
loaded = load_records(path)
check(len(loaded) == 2, "JSONL page records load")
check(find_page(loaded, "sc0000.bin", 2)["wait_offset"] == "0x871",
"scene matching is case-insensitive and accepts .BIN")
check(find_page(loaded, "SC0000", 3) is None, "missing page returns None")
def test_context_window():
check(context_window([0, 5, 10, 15, 20], 10, 1) == (1, 4),
"context window includes target and requested neighbors")
check(context_window([0, 5, 10], 0, 8) == (0, 3), "context window clamps at script bounds")
try:
context_window([0, 5], 3, 1)
raised = False
except ValueError:
raised = True
check(raised, "non-instruction target is rejected")
def main():
test_load_and_find()
test_context_window()
print("FAILURES:", len(FAILS))
return 1 if FAILS else 0
if __name__ == "__main__":
sys.exit(main())