(case: TestCase, result: dict[str, Any])
| 113 | |
| 114 | @typechecked |
| 115 | def evaluate(case: TestCase, result: dict[str, Any]) -> EvaluationResult: |
| 116 | expected = result.get("expected_bytes", 0) |
| 117 | decoded = result.get("decoded_bytes", 0) |
| 118 | matched = result.get("matched", 0) |
| 119 | mismatched = result.get("mismatched", 0) |
| 120 | edges = result.get("edges_captured", 0) |
| 121 | if expected != case.expected_bytes: |
| 122 | return EvaluationResult( |
| 123 | ok=False, |
| 124 | message=( |
| 125 | f"firmware reported expected_bytes={expected} but test case " |
| 126 | f"expects {case.expected_bytes}" |
| 127 | ), |
| 128 | ) |
| 129 | if mismatched != 0 or decoded != expected: |
| 130 | return EvaluationResult( |
| 131 | ok=False, |
| 132 | message=( |
| 133 | f"byte mismatch: decoded={decoded}/{expected}, " |
| 134 | f"matched={matched}, mismatched={mismatched}, edges={edges}" |
| 135 | ), |
| 136 | ) |
| 137 | return EvaluationResult( |
| 138 | ok=True, |
| 139 | message=f"decoded={decoded}/{expected} all matched, edges={edges}", |
| 140 | ) |
| 141 | |
| 142 | |
| 143 | def main(argv: list[str] | None = None) -> int: |
no test coverage detected