aegis / tests /unit /test_evaluator.py
jayc1978's picture
Upload initial Aegis project
8a87cbb verified
Raw History Blame Contribute Delete
2.26 kB
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:")