42 lines
1.3 KiB
Python
42 lines
1.3 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 |