Files

30 lines
1.1 KiB
Python
Raw Permalink Normal View History

import unittest
from summarize import percentile, summarize
class SummaryTests(unittest.TestCase):
def test_nearest_rank_and_unsorted_input(self):
self.assertEqual(percentile(list(range(20, 0, -1)), 0.95), 19)
self.assertEqual(percentile([3, 1, 2], 0.5), 2)
def test_reject_invalid_samples(self):
for values in ([], [-1], [float("nan")], [float("inf")]):
with self.assertRaises(ValueError):
percentile(values, 0.95)
def test_paired_overhead_retains_negative_noise(self):
sample = lambda ms: {"wall_ms": ms, "metrics": {"total_ms": ms / 2}}
report = {"kind": "synthetic_lexical_index_only", "cases": [{
"case": "exact", "basic": [sample(4), sample(6)],
"debug": [sample(3), sample(5)],
}]}
result = summarize(report)
self.assertIsNone(result["production_gate_pass"])
self.assertEqual(result["cases"][0]["mean_paired_debug_minus_basic_ms"], -1)
report["cases"][0]["debug"].pop()
with self.assertRaises(ValueError):
summarize(report)
if __name__ == "__main__":
unittest.main()