69 lines
2.2 KiB
Go
69 lines
2.2 KiB
Go
package schemas
|
|
|
|
import "testing"
|
|
|
|
func TestIsRealtimeConversationItemEventType(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tests := []struct {
|
|
name string
|
|
eventType RealtimeEventType
|
|
want bool
|
|
}{
|
|
{name: "create", eventType: RTEventConversationItemCreate, want: true},
|
|
{name: "added", eventType: RTEventConversationItemAdded, want: true},
|
|
{name: "created", eventType: RTEventConversationItemCreated, want: true},
|
|
{name: "retrieved", eventType: RTEventConversationItemRetrieved, want: true},
|
|
{name: "done", eventType: RTEventConversationItemDone, want: true},
|
|
{name: "response done", eventType: RTEventResponseDone, want: false},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
if got := IsRealtimeConversationItemEventType(tt.eventType); got != tt.want {
|
|
t.Fatalf("IsRealtimeConversationItemEventType(%q) = %v, want %v", tt.eventType, got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestRealtimeCanonicalEventClassifiers(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
userEvent := &BifrostRealtimeEvent{
|
|
Type: RTEventConversationItemAdded,
|
|
Item: &RealtimeItem{
|
|
Role: "user",
|
|
Type: "message",
|
|
},
|
|
}
|
|
if !IsRealtimeUserInputEvent(userEvent) {
|
|
t.Fatal("expected conversation.item.added user event to be classified as realtime user input")
|
|
}
|
|
if IsRealtimeToolOutputEvent(userEvent) {
|
|
t.Fatal("did not expect conversation.item.added user event to be classified as realtime tool output")
|
|
}
|
|
|
|
toolEvent := &BifrostRealtimeEvent{
|
|
Type: RTEventConversationItemRetrieved,
|
|
Item: &RealtimeItem{
|
|
Type: "function_call_output",
|
|
},
|
|
}
|
|
if !IsRealtimeToolOutputEvent(toolEvent) {
|
|
t.Fatal("expected function_call_output item to be classified as realtime tool output")
|
|
}
|
|
if IsRealtimeUserInputEvent(toolEvent) {
|
|
t.Fatal("did not expect function_call_output item to be classified as realtime user input")
|
|
}
|
|
|
|
transcriptEvent := &BifrostRealtimeEvent{Type: RTEventInputAudioTransCompleted}
|
|
if !IsRealtimeInputTranscriptEvent(transcriptEvent) {
|
|
t.Fatal("expected input audio transcription completion to be classified as transcript event")
|
|
}
|
|
if IsRealtimeInputTranscriptEvent(&BifrostRealtimeEvent{Type: RTEventInputAudioTransDelta}) {
|
|
t.Fatal("did not expect input audio transcription delta to be classified as transcript event")
|
|
}
|
|
}
|