| 670 | |
| 671 | |
| 672 | def evaluate(case: Case, result: dict[str, Any]) -> tuple[bool, list[str]]: |
| 673 | failures: list[str] = [] |
| 674 | if result["status"] != 200: |
| 675 | failures.append(f"status={result['status']}") |
| 676 | if result["tier"] != case.expected_tier: |
| 677 | failures.append(f"tier expected {case.expected_tier} got {result['tier']}") |
| 678 | quality = str(result.get("quality") or "").lower() |
| 679 | if quality and quality not in case.acceptable_qualities: |
| 680 | failures.append(f"quality expected one of {case.acceptable_qualities} got {quality}") |
| 681 | if case.expected_lane is not None and result.get("lane") != case.expected_lane: |
| 682 | failures.append(f"lane expected {case.expected_lane} got {result.get('lane')}") |
| 683 | return not failures, failures |
| 684 | |
| 685 | |
| 686 | def main() -> int: |