29 lines
919 B
Go
29 lines
919 B
Go
|
|
package outreach
|
||
|
|
|
||
|
|
import "testing"
|
||
|
|
|
||
|
|
func TestParseGenerateOutput(t *testing.T) {
|
||
|
|
raw := `{"relevance":0.85,"reason":"對方在問敏感肌保養","drafts":[{"text":"我之前也這樣…","angle":"共情","rationale":"先回應情緒"}]}`
|
||
|
|
got, err := ParseGenerateOutput(raw)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("ParseGenerateOutput() error = %v", err)
|
||
|
|
}
|
||
|
|
if got.Relevance != 0.85 {
|
||
|
|
t.Fatalf("relevance = %v, want 0.85", got.Relevance)
|
||
|
|
}
|
||
|
|
if len(got.Drafts) != 1 || got.Drafts[0].Text == "" {
|
||
|
|
t.Fatalf("drafts = %+v", got.Drafts)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestParseGenerateOutputCodeFence(t *testing.T) {
|
||
|
|
raw := "```json\n{\"relevance\":1.2,\"reason\":\"ok\",\"drafts\":[{\"text\":\"hi\",\"angle\":\"a\",\"rationale\":\"b\"}]}\n```"
|
||
|
|
got, err := ParseGenerateOutput(raw)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("ParseGenerateOutput() error = %v", err)
|
||
|
|
}
|
||
|
|
if got.Relevance != 1 {
|
||
|
|
t.Fatalf("relevance clamped = %v, want 1", got.Relevance)
|
||
|
|
}
|
||
|
|
}
|