"""Synthetic array-only comparator tests: no backend or scientific inputs.""" from pathlib import Path import copy import sys import unittest import numpy as np sys.path.insert(0, str(Path(__file__).resolve().parents[1])) import compare_timing as compare def traces(delay, steps, width=3): generated = np.arange(steps * width, dtype=np.float32).reshape(steps, width) * np.float32(.125) full = np.concatenate((np.zeros((delay, width), dtype=np.float32), generated)) return generated, full[:steps].copy(), full[steps:].copy() def sequence_result(generated, applied, pending, delay): checks, differences = {}, {} compare._timing_sequence_checks(generated, applied, pending, delay, 'test', checks, differences) return checks, differences def metadata_run(delay, steps, cpu=False): generated, applied, pending = traces(delay, steps, 4064) state = np.tile(np.array([.25, 1.125], np.float32), (steps, 1)) timing = dict(apl_delay_steps=delay, steps=steps, pending_generated_count=min(steps, delay), generated_rows=steps, applied_generated_rows=max(steps-delay, 0), pending_shape=[delay, 4064], pending_initial_zero_prefix=max(delay-steps, 0), pending_application_tick_start=steps, pending_application_tick_stop_exclusive=steps+delay, pending_generated_tick_start=max(steps-delay, 0), pending_generated_tick_stop_exclusive=steps, pending_raw_sha256=compare.raw_hash(pending, '