"""Fixture-free contract tests for the bounded RenderDebug runtime oracle.""" import copy import math from pathlib import Path import re import struct import pytest pytest.importorskip("unicorn") from tools.audit import render_debug_three_runtime as oracle def cases_by_name(): cases = oracle.cases() return {case["name"]: case for case in cases} def modeled_success(case_name): case = cases_by_name()[case_name] unused_input, blocks, unused_locations = oracle.input_image(case) before = oracle.initial_cache(case) after, events, trace, index = oracle.expected_success(case, before, blocks) return case, blocks, before, after, events, trace, index def synthetic_outcome(case_name): case, unused_blocks, unused_before, after, events, trace, index = modeled_success(case_name) entry_hex = None if index is not None: start = oracle.POOL_SIZE + index * oracle.ENTRY_SIZE entry_hex = bytes(after[start:start + oracle.ENTRY_SIZE]).hex() return { "case": case_name, "events": copy.deepcopy(events), "function_trace": list(trace), "cache_entry_hex": entry_hex, "cache_sha256": oracle.digest(bytes(after)), "abi": { "esp_restored": True, "nonvolatiles_restored": True, "cache_guard": True, "fpcw_final": 0x037F, }, } def test_case_population_and_seven_assertion_exits_are_exact(): cases = oracle.cases() by_name = cases_by_name() assert len(cases) == len(by_name) == 22 assert {case["function"] for case in cases} == { oracle.POINT, oracle.LINE, oracle.BOX, } assert {case["name"] for case in cases if case.get("null")} == { "assert_point_null", "assert_point_color_null", "assert_line_point0_null", "assert_line_point1_null", "assert_line_color_null", "assert_box_bounds_null", "assert_box_color_null", } assert oracle.ASSERTIONS == { (oracle.POINT, "point"): ("point", 327), (oracle.POINT, "color"): ("color", 328), (oracle.LINE, "point0"): ("point0", 363), (oracle.LINE, "point1"): ("point1", 364), (oracle.LINE, "color"): ("color", 365), (oracle.BOX, "bounds"): ("bounds", 812), (oracle.BOX, "color"): ("color", 813), } assert len(oracle.ASSERTIONS) == 7 for case in cases: if "size" in case: assert math.isfinite(case["size"]) if "bounds" in case: assert all(math.isfinite(value) for value in case["bounds"]) def test_pin_contract_is_complete_frozen_and_lowercase_sha256(): assert set(oracle.PATHS) == set(oracle.PINS) == { "target", "first", "actual", "source", "cache_reference", } assert all(re.fullmatch(r"[0-9a-f]{64}", value) for value in oracle.PINS.values()) relative = { label: path.relative_to(oracle.ROOT).as_posix() for label, path in oracle.PATHS.items() } assert relative["target"] == ( "scratch/render-debug-three-before-20260906/" "build/split/source/render/render_debug.obj" ) assert relative["source"] == "scratch/render-debug-three-source-final-20260906.c" assert relative["first"] == "scratch/render-debug-three-first-20260906.obj" assert relative["actual"] == "scratch/render-debug-three-actual-20260906.obj" assert oracle.LITERALS["__real@3f000000"] == struct.pack("