package protocol_test import ( "context" "strings" "testing" "ccLoad/internal/protocol" "ccLoad/internal/protocol/builtin" ) func TestRegistryCodexGeminiStream(t *testing.T) { t.Parallel() reg := protocol.NewRegistry() builtin.Register(reg) t.Run("message done fallback emits text when no delta arrived", func(t *testing.T) { var state any out, err := reg.TranslateResponseStream( context.Background(), protocol.Codex, protocol.Gemini, "gemini-2.5-pro", nil, nil, []byte("event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"type\":\"message\",\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"ok\"}]}}\n\n"), &state, ) if err != nil { t.Fatalf("TranslateResponseStream failed: %v", err) } if len(out) != 1 || !strings.Contains(string(out[0]), `"text":"ok"`) { t.Fatalf("unexpected gemini chunks: %#v", out) } }) t.Run("response created seeds completion metadata", func(t *testing.T) { var state any if _, err := reg.TranslateResponseStream( context.Background(), protocol.Codex, protocol.Gemini, "gemini-2.5-pro", nil, nil, []byte("event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_1\",\"model\":\"gpt-5-codex\"}}\n\n"), &state, ); err != nil { t.Fatalf("response.created failed: %v", err) } done, err := reg.TranslateResponseStream( context.Background(), protocol.Codex, protocol.Gemini, "gemini-2.5-pro", nil, nil, []byte("event: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{}}\n\n"), &state, ) if err != nil { t.Fatalf("response.completed failed: %v", err) } if len(done) != 1 || !strings.Contains(string(done[0]), `"responseId":"resp_1"`) || !strings.Contains(string(done[0]), `"finishReason":"STOP"`) { t.Fatalf("unexpected completion chunk: %#v", done) } }) }