package tools import ( "context" "encoding/json" "net/http" "net/http/httptest" "strings" "testing" ) func TestBuiltinSearchTool(t *testing.T) { server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodGet { t.Fatalf("method = %s", r.Method) } if got := r.URL.Query().Get("q"); got != "agentu" { t.Fatalf("query = %q", got) } w.Header().Set("Content-Type", "text/html") _, _ = w.Write([]byte(`
`)) })) defer server.Close() tool := NewBuiltinSearchToolWithBaseURL(server.URL, 5, server.Client()) out, err := tool.Execute(context.Background(), json.RawMessage(`{"query":"agentu"}`)) if err != nil { t.Fatal(err) } for _, want := range []string{"Web search results", "Agentu release", "https://example.com/agentu", "Agentu adds built-in web tools"} { if !strings.Contains(out, want) { t.Fatalf("output missing %q:\n%s", want, out) } } } func TestBuiltinFetchTool(t *testing.T) { server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodGet { t.Fatalf("method = %s", r.Method) } w.Header().Set("Content-Type", "text/html; charset=utf-8") _, _ = w.Write([]byte(`Built-in fetch reads HTML.