Spaces:
Paused
Paused
| package executor | |
| import ( | |
| "testing" | |
| "github.com/router-for-me/CLIProxyAPI/v6/internal/thinking" | |
| ) | |
| func TestIFlowExecutorParseSuffix(t *testing.T) { | |
| tests := []struct { | |
| name string | |
| model string | |
| wantBase string | |
| wantLevel string | |
| }{ | |
| {"no suffix", "glm-4", "glm-4", ""}, | |
| {"glm with suffix", "glm-4.1-flash(high)", "glm-4.1-flash", "high"}, | |
| {"minimax no suffix", "minimax-m2", "minimax-m2", ""}, | |
| {"minimax with suffix", "minimax-m2.1(medium)", "minimax-m2.1", "medium"}, | |
| } | |
| for _, tt := range tests { | |
| t.Run(tt.name, func(t *testing.T) { | |
| result := thinking.ParseSuffix(tt.model) | |
| if result.ModelName != tt.wantBase { | |
| t.Errorf("ParseSuffix(%q).ModelName = %q, want %q", tt.model, result.ModelName, tt.wantBase) | |
| } | |
| }) | |
| } | |
| } | |
| func TestPreserveReasoningContentInMessages(t *testing.T) { | |
| tests := []struct { | |
| name string | |
| input []byte | |
| want []byte // nil means output should equal input | |
| }{ | |
| { | |
| "non-glm model passthrough", | |
| []byte(`{"model":"gpt-4","messages":[]}`), | |
| nil, | |
| }, | |
| { | |
| "glm model with empty messages", | |
| []byte(`{"model":"glm-4","messages":[]}`), | |
| nil, | |
| }, | |
| { | |
| "glm model preserves existing reasoning_content", | |
| []byte(`{"model":"glm-4","messages":[{"role":"assistant","content":"hi","reasoning_content":"thinking..."}]}`), | |
| nil, | |
| }, | |
| } | |
| for _, tt := range tests { | |
| t.Run(tt.name, func(t *testing.T) { | |
| got := preserveReasoningContentInMessages(tt.input) | |
| want := tt.want | |
| if want == nil { | |
| want = tt.input | |
| } | |
| if string(got) != string(want) { | |
| t.Errorf("preserveReasoningContentInMessages() = %s, want %s", got, want) | |
| } | |
| }) | |
| } | |
| } | |