"""Tests for the benchmarking suite.""" from __future__ import annotations from fusionagi.evaluation.benchmarks import BenchmarkSuite, run_benchmark class TestRunBenchmark: def test_basic_benchmark(self) -> None: result = run_benchmark("test", lambda: sum(range(100)), iterations=10, warmup=2) assert result.name == "test" assert result.iterations == 10 assert result.mean_ms > 0 assert result.min_ms <= result.mean_ms assert result.max_ms >= result.mean_ms def test_summary_format(self) -> None: result = run_benchmark("test", lambda: None, iterations=5) summary = result.summary() assert "test" in summary assert "mean=" in summary class TestBenchmarkSuite: def test_decomposition_benchmark(self) -> None: suite = BenchmarkSuite() result = suite.run_decomposition_benchmark(iterations=3) assert result.name == "decomposition" def test_multi_path_benchmark(self) -> None: suite = BenchmarkSuite() result = suite.run_multi_path_benchmark(iterations=3) assert result.name == "multi_path_scoring" def test_recomposition_benchmark(self) -> None: suite = BenchmarkSuite() result = suite.run_recomposition_benchmark(iterations=3) assert result.name == "recomposition" def test_end_to_end_benchmark(self) -> None: suite = BenchmarkSuite() result = suite.run_end_to_end_benchmark(iterations=2) assert result.name == "end_to_end_super_big_brain" def test_run_all(self) -> None: suite = BenchmarkSuite() results = suite.run_all(iterations=2) assert len(results) >= 4 def test_summary(self) -> None: suite = BenchmarkSuite() assert suite.summary() == "No benchmarks run." suite.run_decomposition_benchmark(iterations=2) summary = suite.summary() assert "decomposition" in summary def test_to_dict(self) -> None: suite = BenchmarkSuite() suite.run_decomposition_benchmark(iterations=2) data = suite.to_dict() assert len(data) == 1 assert "mean_ms" in data[0]