thread-master/backend/internal/library/style8d/prompt_test.go

44 lines
1.5 KiB
Go
Raw Normal View History

2026-06-26 08:37:04 +00:00
package style8d
import (
"strings"
"testing"
)
func TestResolvePersonaBlockUsesPersonaDraftWhenPersonaEmpty(t *testing.T) {
raw := `{"username":"demo","analysis":{"d1Tone":{"summary":"口語親近","evidence":[]}},"personaDraft":"【我是誰】\n生活觀察者"}`
block := ResolvePersonaBlock("", raw, "")
if block == "" {
t.Fatal("expected non-empty block")
}
2026-07-02 14:52:41 +00:00
for _, part := range []string{"生活觀察者", "D1 語氣人格", "口語親近", "語言指紋與寫作規則"} {
if !strings.Contains(block, part) {
t.Fatalf("block missing %q: %q", part, block)
}
}
}
func TestResolvePersonaBlockCombinesPersonaAndStyleFingerprint(t *testing.T) {
raw := `{"analysis":{"d1Tone":{"summary":"口語親近","evidence":[]}},"personaDraft":"【語言指紋】\n常用慢慢、其實當轉折"}`
block := ResolvePersonaBlock("備孕陪伴帳號", raw, "")
for _, part := range []string{"備孕陪伴帳號", "常用慢慢", "語言指紋與寫作規則"} {
2026-06-26 08:37:04 +00:00
if !strings.Contains(block, part) {
t.Fatalf("block missing %q: %q", part, block)
}
}
}
func TestHasReady8DFromAnalysisOnly(t *testing.T) {
raw := `{"analysis":{"d2Structure":{"summary":"短句開場","evidence":[]}}}`
if !HasReady8D("", raw) {
t.Fatal("expected ready from analysis summary")
}
}
2026-06-28 08:28:42 +00:00
func TestHasReady8DRejectsPersonaDraftOnly(t *testing.T) {
raw := `{"personaDraft":"【我是誰】\n生活觀察者"}`
if HasReady8D("語氣描述", raw) {
t.Fatal("personaDraft without 8D dimensions should not be ready")
}
}