mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-02-02 20:40:52 +08:00
68 lines
1.6 KiB
Go
68 lines
1.6 KiB
Go
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)
|
|
}
|
|
})
|
|
}
|
|
}
|