Files
AetherForge/server/internal/ai/personas_test.go
AetherForge 4ce9826660
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
Add Calibrate AI persona presets with per-mode system prompts
2026-06-07 02:31:14 -07:00

68 lines
1.9 KiB
Go

package ai
import (
"strings"
"testing"
)
func TestPersonaSystemPromptNonEmptyDistinct(t *testing.T) {
modes := []string{PersonaAggressive, PersonaSilent, PersonaPassive, PersonaPersuasive, PersonaBalanced}
seen := make(map[string]string, len(modes))
for _, mode := range modes {
prompt := PersonaSystemPrompt(mode)
if strings.TrimSpace(prompt) == "" {
t.Fatalf("persona %q returned empty prompt", mode)
}
if !strings.Contains(prompt, "AetherForge fleet controller") {
t.Fatalf("persona %q missing base system prompt", mode)
}
if prev, ok := seen[prompt]; ok {
t.Fatalf("personas %q and %q produced identical prompts", prev, mode)
}
seen[prompt] = mode
}
}
func TestPersonaSystemPromptModeSpecificGuidance(t *testing.T) {
cases := []struct {
mode string
needle string
}{
{PersonaAggressive, "spread_now and discover_and_join"},
{PersonaSilent, "Never spread_now unless stuck"},
{PersonaPassive, "Default to noop"},
{PersonaPersuasive, "discover_and_join before restart_mining"},
{PersonaBalanced, "Balance spread vs mine"},
}
for _, tc := range cases {
prompt := PersonaSystemPrompt(tc.mode)
if !strings.Contains(prompt, tc.needle) {
t.Fatalf("persona %q missing %q in:\n%s", tc.mode, tc.needle, prompt)
}
}
}
func TestNormalizePersona(t *testing.T) {
if got := NormalizePersona(" AGGRESSIVE "); got != PersonaAggressive {
t.Fatalf("got %q", got)
}
if got := NormalizePersona("unknown"); got != PersonaBalanced {
t.Fatalf("unknown should map to balanced, got %q", got)
}
}
func TestCourtJudgeOverlayDistinct(t *testing.T) {
modes := []string{PersonaAggressive, PersonaSilent, PersonaPassive, PersonaPersuasive, PersonaBalanced}
prev := ""
for _, mode := range modes {
overlay := CourtJudgeOverlay(mode)
if strings.TrimSpace(overlay) == "" {
t.Fatalf("empty overlay for %q", mode)
}
if overlay == prev && prev != "" {
t.Fatalf("duplicate court overlay for %q", mode)
}
prev = overlay
}
}