package filedoc import ( "strings" "testing" ) func TestNameAndDescription(t *testing.T) { tool := New(Config{APIKey: "k", Model: "gpt-4o-mini"}, 5000, nil) if tool.Name() != "extract_file_document" { t.Fatalf("unexpected tool name: %s", tool.Name()) } if tool.Description() == "" { t.Fatal("description should not be empty") } } func TestParseInputPlainFileID(t *testing.T) { id, focus, err := parseInput("file_ec_452e96aad38940229058f193f5c5b9c6_12553222") if err != nil { t.Fatalf("parseInput returned error: %v", err) } if id != "file_ec_452e96aad38940229058f193f5c5b9c6_12553222" { t.Fatalf("unexpected id: %s", id) } if focus != "" { t.Fatalf("expected empty focus, got: %q", focus) } } func TestParseInputFileIDSchemeWithFocus(t *testing.T) { input := "fileid://file_ec_12345\n重点关注风险与建议" id, focus, err := parseInput(input) if err != nil { t.Fatalf("parseInput returned error: %v", err) } if id != "file_ec_12345" { t.Fatalf("unexpected id: %s", id) } if focus == "" { t.Fatal("expected non-empty focus") } } func TestParseInputJSON(t *testing.T) { input := `{"file_id":"file_ec_888", "focus":"提取关键结论"}` id, focus, err := parseInput(input) if err != nil { t.Fatalf("parseInput returned error: %v", err) } if id != "file_ec_888" { t.Fatalf("unexpected id: %s", id) } if focus != "提取关键结论" { t.Fatalf("unexpected focus: %s", focus) } } func TestParseInputInvalid(t *testing.T) { _, _, err := parseInput("hello world") if err == nil { t.Fatal("expected parse error") } } func TestBuildExtractionPrompt(t *testing.T) { p := buildExtractionPrompt("file_ec_abc", "关注测试条目") if p == "" { t.Fatal("prompt should not be empty") } if p != "" && !(strings.Contains(p, "file_ec_abc") && strings.Contains(p, "关注测试条目")) { t.Fatalf("unexpected prompt content: %s", p) } }