File size: 2,262 Bytes
8a87cbb | 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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | import pytest
from aegis.agents import EvaluatorAgent
from aegis.core import AgentContext, AgentResult, Task
def make_context(result: AgentResult | dict[str, object] | None) -> AgentContext:
inputs: dict[str, object] = {}
if result is not None:
inputs["result"] = result.model_dump() if isinstance(result, AgentResult) else result
return AgentContext(
task=Task(
name="Evaluate result",
description="Evaluate an agent execution result.",
),
inputs=inputs,
)
@pytest.mark.asyncio
async def test_evaluator_passes_valid_result() -> None:
evaluator = EvaluatorAgent()
context = make_context(
AgentResult(
agent_name="planner",
success=True,
output={"steps": ["analyze", "execute"]},
)
)
result = await evaluator.run(context)
assert result.success is True
assert result.output["passed"] is True
assert result.output["score"] == 100
assert result.output["issues"] == ()
assert result.output["evaluated_agent"] == "planner"
@pytest.mark.asyncio
async def test_evaluator_fails_unsuccessful_result() -> None:
evaluator = EvaluatorAgent()
context = make_context(
AgentResult(
agent_name="tool",
success=False,
errors=["Execution failed."],
)
)
result = await evaluator.run(context)
assert result.success is True
assert result.output["passed"] is False
assert result.output["score"] == 25
assert len(result.output["issues"]) == 3
@pytest.mark.asyncio
async def test_evaluator_rejects_missing_result() -> None:
evaluator = EvaluatorAgent()
context = make_context(None)
result = await evaluator.run(context)
assert result.success is False
assert result.errors == ["Missing required input: result"]
@pytest.mark.asyncio
async def test_evaluator_rejects_invalid_result() -> None:
evaluator = EvaluatorAgent()
context = make_context(
{
"agent_name": "",
"success": True,
}
)
result = await evaluator.run(context)
assert result.success is False
assert result.errors
assert result.errors[0].startswith("Invalid agent result:")
|