55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
from agent_core.tool_registry import ToolRegistry, run_declared_tools
|
|
from agent_core.tools.builtin_tools import calculate_rate, check_required_fields
|
|
|
|
|
|
def test_tool_registry_register_get_and_run():
|
|
registry = ToolRegistry()
|
|
|
|
def hello_tool(user_input: str) -> dict:
|
|
return {"echo": user_input}
|
|
|
|
registry.register("hello", hello_tool)
|
|
|
|
assert registry.get("hello") is hello_tool
|
|
assert registry.run("hello", user_input="demo") == {
|
|
"tool_name": "hello",
|
|
"success": True,
|
|
"arguments": {"user_input": "demo"},
|
|
"result": {"echo": "demo"},
|
|
"error": "",
|
|
}
|
|
|
|
|
|
def test_tool_registry_returns_failed_result_for_missing_tool():
|
|
registry = ToolRegistry()
|
|
|
|
result = registry.run("missing", user_input="demo")
|
|
|
|
assert result["tool_name"] == "missing"
|
|
assert result["success"] is False
|
|
assert result["error"] == "工具未注册"
|
|
|
|
|
|
def test_run_declared_tools_executes_multiple_tools_in_order():
|
|
results = run_declared_tools(["generate_action_items", "missing_tool"], "请生成行动项")
|
|
|
|
assert [item["tool_name"] for item in results] == ["generate_action_items", "missing_tool"]
|
|
assert results[0]["success"] is True
|
|
assert results[1]["success"] is False
|
|
|
|
|
|
def test_calculate_rate_extracts_fraction_like_numbers():
|
|
result = calculate_rate("产线合格率,已完成 18 件,总数 24 件")
|
|
|
|
assert result["success"] is True
|
|
assert result["numerator"] == 18.0
|
|
assert result["denominator"] == 24.0
|
|
assert result["rate"] == 0.75
|
|
|
|
|
|
def test_check_required_fields_reports_missing_fields():
|
|
result = check_required_fields("请检查必填项:合同编号、供应商、金额。当前只提供了合同编号和金额。")
|
|
|
|
assert "供应商" in result["missing_fields"]
|
|
assert "合同编号" not in result["missing_fields"]
|