blob: 71dc85425189523a2389db17c55bfa3b92efe274 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
from __future__ import annotations
import pytest
from pydantic import ValidationError
from gap_pipeline.models import JudgeVerdict, KernelCandidate, KernelPlan
def test_valid_plan_and_candidate(plan_dict: dict, candidate_dict: dict) -> None:
plan = KernelPlan.model_validate(plan_dict)
candidate = KernelCandidate.model_validate(candidate_dict)
assert len(plan.core_steps) == 2
assert candidate.question.startswith("Let x")
def test_plan_requires_slots(plan_dict: dict) -> None:
plan_dict["mutable_slots"] = {}
with pytest.raises(ValidationError, match="mutable slot"):
KernelPlan.model_validate(plan_dict)
def test_plan_rejects_more_than_five_core_steps(plan_dict: dict) -> None:
plan_dict["core_steps"] = [f"step {index}" for index in range(6)]
with pytest.raises(ValidationError):
KernelPlan.model_validate(plan_dict)
def test_candidate_requires_question_and_solution(candidate_dict: dict) -> None:
candidate_dict["solution"] = ""
with pytest.raises(ValidationError, match="non-empty"):
KernelCandidate.model_validate(candidate_dict)
def test_accept_verdict_cannot_report_blocking_issue() -> None:
with pytest.raises(ValidationError, match="cannot contain"):
JudgeVerdict(
verdict="accept",
step_by_step_check="checked",
blocking_issues="an error",
)
|