Files
semif-agent/tests/test_contract.py
T

46 lines
1.4 KiB
Python

from semif_agent.decisions import DecisionRequest, DecisionResult, Option, Request
def test_to_semif_row_shape():
request = DecisionRequest(
state="some state",
question="some question?",
options=[Option("a", "A."), Option("b", "B.")],
id="abc",
)
row = request.to_semif_row()
assert row["id"] == "abc"
assert row["state"] == "some state"
assert row["question"] == "some question?"
assert row["options"] == [
{"id": "a", "description": "A."},
{"id": "b", "description": "B."},
]
def test_result_selected_and_probs():
request = DecisionRequest(
state="s",
question="q",
options=[Option("a", "A."), Option("b", "B.")],
)
result = DecisionResult(
request=request, option_ids=["a", "b"], probabilities=[0.3, 0.7]
)
assert result.selected == "b"
assert result.probs == {"a": 0.3, "b": 0.7}
assert result.prob("a") == 0.3
def test_request_requeue_preserves_state():
original = Request(text="t", priority=0.7)
original.resume["from_skill"] = "email.compose"
updated = original.copy_for_requeue()
assert updated.id == original.id
assert updated.priority == original.priority
assert updated.resume["from_skill"] == "email.compose"
assert updated.reentries == original.reentries + 1
def test_request_user_input_defaults_none():
assert Request(text="t").user_input is None