| import json | |
| from arm_gym.errors import ErrorKind, StructuredError, VerifierResult | |
| def test_structured_error_round_trips_to_json_for_prompt(): | |
| e = StructuredError(kind=ErrorKind.ASSEMBLE_FAIL, message="bad token", | |
| line=3, column=5, extra={"token": "xzrq"}) | |
| payload = json.loads(e.to_prompt()) | |
| assert payload["kind"] == "assemble_fail" | |
| assert payload["line"] == 3 | |
| assert payload["column"] == 5 | |
| assert payload["extra"]["token"] == "xzrq" | |
| def test_empty_fields_omitted(): | |
| e = StructuredError(kind=ErrorKind.SEGFAULT, message="boom") | |
| payload = json.loads(e.to_prompt()) | |
| assert "line" not in payload | |
| assert "extra" not in payload | |
| def test_verifier_result_defaults_fail_closed(): | |
| v = VerifierResult(ok=False, reward=0.0) | |
| assert v.ok is False | |
| assert v.reward == 0.0 | |
| assert v.speedup is None | |