func TestMyAgent_CallsSearchTool(t *testing.T) {
var searchCalled bool
searchTool, _ := tools.Func("search", "Search the web",
tools.NewSchema().AddString("query", "query", true).MustBuild(),
func(ctx context.Context, input string) (string, error) {
searchCalled = true
return "result", nil
},
)
p := testutil.NewMockProvider(
testutil.ToolUseResponse(core.ToolCall{Name: "search", Input: `{"query":"test"}`}),
testutil.EndTurnResponse("Done."),
)
agent, err := chainforge.NewAgent(
chainforge.WithProvider(p),
chainforge.WithModel("mock"),
chainforge.WithTools(searchTool),
)
if err != nil {
t.Fatal(err)
}
result, err := agent.Run(context.Background(), "s1", "Search for test")
if err != nil {
t.Fatal(err)
}
testutil.AssertCallCount(t, p, 2) // tool call + final answer
if !searchCalled {
t.Error("expected search tool to be called")
}
if result != "Done." {
t.Errorf("got %q, want %q", result, "Done.")
}
}