75 lines
1.9 KiB
Go
75 lines
1.9 KiB
Go
|
|
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)
|
||
|
|
}
|
||
|
|
}
|