2026-07-30 14:45:21 +02:00

44 lines
1.6 KiB
Python

from equix_bench.protocol import Result
from equix_bench.stats import _percentile, summarize
def _make(walls):
runs = [
{"index": i, "wall_ns": w, "solutions": 4, "compile_ns": 0,
"attempts": 0, "achieved_effort": 0, "verify_result": None}
for i, w in enumerate(walls)
]
return Result.from_dict({
"schema_version": 1, "ok": True,
"impl": {"name": "x", "version": "1", "commit": "c", "runtime_effective": "compiled"},
"operation": "solve", "runtime_requested": "try-compile",
"runtime_effective": "compiled", "env": {}, "runs": runs,
"solutions_hex": None, "peak_rss_kb": 100, "error": None,
})
def test_percentile_nearest_rank():
assert _percentile([1, 2, 3, 4, 5], 95) == 5
assert _percentile([1, 2, 3, 4, 5], 50) == 3
assert _percentile([], 95) == 0.0
def test_summarize_basic():
s = summarize("x", "solve", "try-compile", {}, _make([10, 20, 30]))
assert s.ok and s.reps == 3
assert s.min_ns == 10 and s.median_ns == 20
assert s.solves_per_sec > 0 # 1e9 / 20 ns
assert s.walls == [10, 20, 30]
def test_summarize_handles_failure():
r = Result.from_dict({
"schema_version": 1, "ok": False,
"impl": {"name": "x", "version": "1", "commit": "c", "runtime_effective": None},
"operation": "solve", "runtime_requested": "must-compile",
"runtime_effective": None, "env": {}, "runs": [],
"solutions_hex": None, "peak_rss_kb": 0, "error": "boom",
})
s = summarize("x", "solve", "must-compile", {}, r)
assert not s.ok and s.error == "boom"