52 lines
1.4 KiB
Go
52 lines
1.4 KiB
Go
package agentcore
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"testing"
|
|
)
|
|
|
|
func TestSubAgentProgressEventImplementsAgentEvent(t *testing.T) {
|
|
var ev AgentEvent = SubAgentProgressEvent{
|
|
ToolCallID: "call-1",
|
|
Description: "do a thing",
|
|
Activity: "Editing",
|
|
Tokens: 42,
|
|
}
|
|
if got := ev.EventType(); got != EventSubAgentProgress {
|
|
t.Fatalf("EventType() = %q, want %q", got, EventSubAgentProgress)
|
|
}
|
|
if EventSubAgentProgress != "subagent_progress" {
|
|
t.Fatalf("EventSubAgentProgress = %q, want %q", EventSubAgentProgress, "subagent_progress")
|
|
}
|
|
}
|
|
|
|
func TestProgressEmitterRoundTrip(t *testing.T) {
|
|
var seen AgentEvent
|
|
sentinel := errors.New("sentinel")
|
|
emit := func(ctx context.Context, ev AgentEvent) error {
|
|
seen = ev
|
|
return sentinel
|
|
}
|
|
|
|
ctx := WithProgressEmitter(context.Background(), emit)
|
|
got := ProgressEmitterFromContext(ctx)
|
|
if got == nil {
|
|
t.Fatal("ProgressEmitterFromContext returned nil after WithProgressEmitter")
|
|
}
|
|
|
|
want := SubAgentProgressEvent{ToolCallID: "call-2", Activity: "Thinking"}
|
|
if err := got(ctx, want); !errors.Is(err, sentinel) {
|
|
t.Fatalf("emitter returned err = %v, want sentinel", err)
|
|
}
|
|
if seen != want {
|
|
t.Fatalf("emitter received %#v, want %#v", seen, want)
|
|
}
|
|
}
|
|
|
|
func TestProgressEmitterFromBareContextIsNil(t *testing.T) {
|
|
if got := ProgressEmitterFromContext(context.Background()); got != nil {
|
|
t.Fatalf("ProgressEmitterFromContext on bare ctx = %v, want nil", got)
|
|
}
|
|
}
|