package flyto import ( "errors" "testing" ) // TestEventType_AllEvents verifies every Event implementation returns // the correct EventType string. Table-driven to cover all 21 types. func TestEventType_AllEvents(t *testing.T) { cases := []struct { event Event wantType string }{ {&TextDeltaEvent{Text: "hi"}, "text_delta"}, {&TextEvent{Text: "hi"}, "text"}, {&ThinkingDeltaEvent{Text: "hmm"}, "thinking_delta"}, {&ThinkingEvent{Text: "hmm"}, "thinking"}, {&ToolUseEvent{ID: "t1", ToolName: "Bash"}, "tool_use"}, {&ToolResultEvent{ID: "t1"}, "tool_result"}, {&ToolProgressEvent{ID: "t1"}, "tool_progress"}, {&PermissionRequestEvent{ToolName: "Bash"}, "permission_request"}, {&TurnStartEvent{TurnNumber: 1}, "turn_start"}, {&TurnEndEvent{TurnNumber: 1}, "turn_end"}, {&CompactEvent{Summary: "compressed"}, "compact"}, {&DoneEvent{}, "done"}, {&ErrorEvent{Err: errors.New("x"), Code: "test"}, "error"}, {&SessionInfoEvent{SessionID: "s1"}, "session_info"}, {&PermissionLearnEvent{}, "permission_learn"}, {&WarningEvent{Message: "warn"}, "warning"}, {&ToolSummaryEvent{ToolName: "Bash"}, "tool_summary"}, {&SlashCommandEvent{Name: "/help"}, "slash_command"}, {&CheckpointEvent{ToolCallID: "cp1"}, "checkpoint"}, {&CheckpointSuggestedEvent{}, "checkpoint_suggested"}, {&InboxMessageEvent{}, "inbox_message"}, {&UsageEvent{InputTokens: 100}, "usage"}, } for _, tc := range cases { got := tc.event.EventType() if got != tc.wantType { t.Errorf("%T.EventType() = %q, want %q", tc.event, got, tc.wantType) } } } func TestErrorEvent_Error(t *testing.T) { e := &ErrorEvent{ Err: errors.New("something failed"), Code: "internal", } if got := e.Error(); got != "something failed" { t.Errorf("ErrorEvent.Error() = %q, want %q", got, "something failed") } }