first commit
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
package prompts
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/smallnest/pigo/internal/agentcore"
|
||||
"github.com/smallnest/pigo/internal/cli"
|
||||
"github.com/smallnest/pigo/internal/runtime"
|
||||
)
|
||||
|
||||
// TestThinkCommandSwitchesLevel verifies /think mutates the live thinking level
|
||||
// so the next turn picks it up, and that a bare /think reports the current level.
|
||||
func TestThinkCommandSwitchesLevel(t *testing.T) {
|
||||
live := &cli.LiveConfig{Model: "test", ProviderName: "test", ThinkingLevel: agentcore.ThinkingMedium}
|
||||
reg := runtime.NewSlashRegistry()
|
||||
RegisterLiveCommands(reg, live)
|
||||
|
||||
out, err := reg.ResolveOutcome("/think high")
|
||||
if err != nil {
|
||||
t.Fatalf("ResolveOutcome /think high: %v", err)
|
||||
}
|
||||
if live.ThinkingLevel != agentcore.ThinkingHigh {
|
||||
t.Errorf("ThinkingLevel = %q, want high", live.ThinkingLevel)
|
||||
}
|
||||
if !strings.Contains(out.Message, "high") {
|
||||
t.Errorf("message = %q, want it to mention high", out.Message)
|
||||
}
|
||||
|
||||
// Bare /think reports the current level without changing it.
|
||||
out, err = reg.ResolveOutcome("/think")
|
||||
if err != nil {
|
||||
t.Fatalf("ResolveOutcome /think: %v", err)
|
||||
}
|
||||
if live.ThinkingLevel != agentcore.ThinkingHigh {
|
||||
t.Errorf("bare /think mutated level to %q", live.ThinkingLevel)
|
||||
}
|
||||
if !strings.Contains(out.Message, "high") {
|
||||
t.Errorf("bare /think message = %q, want current level high", out.Message)
|
||||
}
|
||||
}
|
||||
|
||||
// TestThinkCommandRejectsInvalid verifies an unknown level is rejected and the
|
||||
// live level is left unchanged.
|
||||
func TestThinkCommandRejectsInvalid(t *testing.T) {
|
||||
live := &cli.LiveConfig{Model: "test", ProviderName: "test", ThinkingLevel: agentcore.ThinkingLow}
|
||||
reg := runtime.NewSlashRegistry()
|
||||
RegisterLiveCommands(reg, live)
|
||||
|
||||
out, err := reg.ResolveOutcome("/think bogus")
|
||||
if err != nil {
|
||||
t.Fatalf("ResolveOutcome /think bogus: %v", err)
|
||||
}
|
||||
if live.ThinkingLevel != agentcore.ThinkingLow {
|
||||
t.Errorf("invalid level changed ThinkingLevel to %q", live.ThinkingLevel)
|
||||
}
|
||||
if !strings.Contains(out.Message, "invalid") {
|
||||
t.Errorf("message = %q, want an invalid-level notice", out.Message)
|
||||
}
|
||||
}
|
||||
|
||||
// TestEffectAliasesThink verifies /effect behaves identically to /think: it
|
||||
// switches the live thinking level and a bare /effect reports the current level.
|
||||
func TestEffectAliasesThink(t *testing.T) {
|
||||
live := &cli.LiveConfig{Model: "test", ProviderName: "test", ThinkingLevel: agentcore.ThinkingMedium}
|
||||
reg := runtime.NewSlashRegistry()
|
||||
RegisterLiveCommands(reg, live)
|
||||
|
||||
out, err := reg.ResolveOutcome("/effect high")
|
||||
if err != nil {
|
||||
t.Fatalf("ResolveOutcome /effect high: %v", err)
|
||||
}
|
||||
if live.ThinkingLevel != agentcore.ThinkingHigh {
|
||||
t.Errorf("ThinkingLevel = %q, want high", live.ThinkingLevel)
|
||||
}
|
||||
if !strings.Contains(out.Message, "high") {
|
||||
t.Errorf("message = %q, want it to mention high", out.Message)
|
||||
}
|
||||
|
||||
out, err = reg.ResolveOutcome("/effect")
|
||||
if err != nil {
|
||||
t.Fatalf("ResolveOutcome /effect: %v", err)
|
||||
}
|
||||
if !strings.Contains(out.Message, "high") {
|
||||
t.Errorf("bare /effect message = %q, want current level high", out.Message)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user