rony-llm-agent/pkg/agent/subagent_test.go

65 lines
1.7 KiB
Go
Raw Normal View History

package agent
import (
"context"
"testing"
llm "github.com/VictorVargas/rony-llm-agent/pkg/llm"
"github.com/VictorVargas/rony-llm-agent/pkg/persona"
"github.com/VictorVargas/rony-llm-agent/pkg/tools"
)
func TestSubAgent_Run(t *testing.T) {
mockClient := &mockLLM{
generateFunc: func(ctx context.Context, req llm.CompletionRequest) (llm.CompletionResponse, error) {
return llm.CompletionResponse{Content: "sub-agent done"}, nil
},
}
sa := SubAgent{
Name: "planner",
Persona: persona.DefaultPersona(),
Tools: tools.NewRegistry(),
}
resp, err := sa.Run(context.Background(), mockClient, "", "plan the task")
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if resp.Content != "sub-agent done" {
t.Errorf("expected 'sub-agent done', got %q", resp.Content)
}
}
func TestSubAgent_Run_DefaultsMaxIterations(t *testing.T) {
mockClient := &mockLLM{
generateFunc: func(ctx context.Context, req llm.CompletionRequest) (llm.CompletionResponse, error) {
return llm.CompletionResponse{Content: "done"}, nil
},
}
sa := SubAgent{Persona: persona.DefaultPersona(), Tools: tools.NewRegistry()}
if sa.MaxIterations != 0 {
t.Fatalf("expected zero-value MaxIterations for this test, got %d", sa.MaxIterations)
}
if _, err := sa.Run(context.Background(), mockClient, "", "hi"); err != nil {
t.Fatalf("unexpected error: %v", err)
}
}
func TestSubAgentRegistry_Get(t *testing.T) {
reg := SubAgentRegistry{
"builder": SubAgent{Name: "builder"},
}
got, ok := reg.Get("builder")
if !ok || got.Name != "builder" {
t.Fatalf("expected to find 'builder', got %+v, ok=%v", got, ok)
}
if _, ok := reg.Get("missing"); ok {
t.Error("expected 'missing' to not be found")
}
}