Row-proxy / internal /model /mapping_test.go
kao0312
feat: lowercase model ids, add glm-5, socks5 proxy pool, remove arm build
cbe30d3
raw
history blame
5.86 kB
package model
import "testing"
// ===== ParseModelName =====
func TestParseModelName_Plain(t *testing.T) {
base, thinking, search, tools := ParseModelName("GLM-4.7")
if base != "glm-4.7" {
t.Errorf("base = %q, want %q", base, "glm-4.7")
}
if thinking || search || tools {
t.Errorf("flags = (%v, %v, %v), want all false", thinking, search, tools)
}
}
func TestParseModelName_Lowercase(t *testing.T) {
base, thinking, _, _ := ParseModelName("glm-4.7-thinking")
if base != "glm-4.7" {
t.Errorf("base = %q, want %q", base, "glm-4.7")
}
if !thinking {
t.Error("thinking should be true")
}
}
func TestParseModelName_Thinking(t *testing.T) {
base, thinking, search, tools := ParseModelName("GLM-4.7-thinking")
if base != "glm-4.7" {
t.Errorf("base = %q", base)
}
if !thinking {
t.Error("thinking should be true")
}
if search || tools {
t.Error("search and tools should be false")
}
}
func TestParseModelName_Search(t *testing.T) {
base, thinking, search, tools := ParseModelName("GLM-4.7-search")
if base != "glm-4.7" {
t.Errorf("base = %q", base)
}
if !search {
t.Error("search should be true")
}
if thinking || tools {
t.Error("thinking and tools should be false")
}
}
func TestParseModelName_Tools(t *testing.T) {
base, thinking, search, tools := ParseModelName("GLM-4.7-tools")
if base != "glm-4.7" {
t.Errorf("base = %q", base)
}
if !tools {
t.Error("tools should be true")
}
if thinking || search {
t.Error("thinking and search should be false")
}
}
func TestParseModelName_ThinkingSearch(t *testing.T) {
base, thinking, search, tools := ParseModelName("GLM-4.7-thinking-search")
if base != "glm-4.7" {
t.Errorf("base = %q", base)
}
if !thinking || !search {
t.Error("thinking and search should both be true")
}
if tools {
t.Error("tools should be false")
}
}
func TestParseModelName_ToolsThinking(t *testing.T) {
base, thinking, search, tools := ParseModelName("GLM-4.7-tools-thinking")
if base != "glm-4.7" {
t.Errorf("base = %q", base)
}
if !tools || !thinking {
t.Error("tools and thinking should both be true")
}
if search {
t.Error("search should be false")
}
}
func TestParseModelName_ToolsSearch(t *testing.T) {
base, thinking, search, tools := ParseModelName("GLM-4.7-tools-search")
if base != "glm-4.7" {
t.Errorf("base = %q", base)
}
if !tools || !search {
t.Error("tools and search should both be true")
}
if thinking {
t.Error("thinking should be false")
}
}
func TestParseModelName_AllTags(t *testing.T) {
base, thinking, search, tools := ParseModelName("GLM-4.7-tools-thinking-search")
if base != "glm-4.7" {
t.Errorf("base = %q", base)
}
if !thinking || !search || !tools {
t.Errorf("all flags should be true, got (%v, %v, %v)", thinking, search, tools)
}
}
func TestParseModelName_ReverseOrder(t *testing.T) {
base, thinking, search, tools := ParseModelName("GLM-4.7-search-thinking-tools")
if base != "glm-4.7" {
t.Errorf("base = %q", base)
}
if !thinking || !search || !tools {
t.Errorf("all flags should be true, got (%v, %v, %v)", thinking, search, tools)
}
}
// ===== GLM-5 =====
func TestParseModelName_GLM5(t *testing.T) {
base, thinking, _, _ := ParseModelName("glm-5")
if base != "glm-5" {
t.Errorf("base = %q, want %q", base, "glm-5")
}
if thinking {
t.Error("thinking should be false")
}
}
func TestGetTargetModel_GLM5(t *testing.T) {
target := GetTargetModel("glm-5")
if target != "glm-5" {
t.Errorf("GetTargetModel(glm-5) = %q, want %q", target, "glm-5")
}
}
func TestGetTargetModel_GLM5Thinking(t *testing.T) {
target := GetTargetModel("glm-5-thinking")
if target != "glm-5" {
t.Errorf("GetTargetModel(glm-5-thinking) = %q, want %q", target, "glm-5")
}
}
// ===== IsToolsModel =====
func TestIsToolsModel_True(t *testing.T) {
tests := []string{
"glm-4.7-tools",
"GLM-4.7-tools-thinking",
"glm-4.7-tools-search",
"GLM-4.7-thinking-tools",
"glm-4.5-tools",
"glm-5-tools",
}
for _, m := range tests {
if !IsToolsModel(m) {
t.Errorf("IsToolsModel(%q) = false, want true", m)
}
}
}
func TestIsToolsModel_False(t *testing.T) {
tests := []string{
"glm-4.7",
"GLM-4.7-thinking",
"glm-4.7-search",
"GLM-4.7-thinking-search",
}
for _, m := range tests {
if IsToolsModel(m) {
t.Errorf("IsToolsModel(%q) = true, want false", m)
}
}
}
// ===== IsThinkingModel / IsSearchModel =====
func TestIsThinkingModel_WithTools(t *testing.T) {
if !IsThinkingModel("glm-4.7-tools-thinking") {
t.Error("IsThinkingModel should be true for glm-4.7-tools-thinking")
}
if IsThinkingModel("glm-4.7-tools") {
t.Error("IsThinkingModel should be false for glm-4.7-tools")
}
}
func TestIsSearchModel_WithTools(t *testing.T) {
if !IsSearchModel("glm-4.7-tools-search") {
t.Error("IsSearchModel should be true for glm-4.7-tools-search")
}
if IsSearchModel("glm-4.7-tools") {
t.Error("IsSearchModel should be false for glm-4.7-tools")
}
}
// ===== GetTargetModel =====
func TestGetTargetModel_WithTools(t *testing.T) {
target := GetTargetModel("glm-4.7-tools")
if target != "glm-4.7" {
t.Errorf("GetTargetModel(glm-4.7-tools) = %q, want %q", target, "glm-4.7")
}
}
func TestGetTargetModel_WithToolsThinking(t *testing.T) {
target := GetTargetModel("GLM-4.7-tools-thinking")
if target != "glm-4.7" {
t.Errorf("GetTargetModel(GLM-4.7-tools-thinking) = %q, want %q", target, "glm-4.7")
}
}
// ===== ModelList =====
func TestModelList_ContainsToolsVariants(t *testing.T) {
expected := map[string]bool{
"glm-4.7-tools": false,
"glm-4.7-tools-thinking": false,
"glm-5": false,
"glm-5-tools": false,
}
for _, m := range ModelList {
if _, ok := expected[m]; ok {
expected[m] = true
}
}
for name, found := range expected {
if !found {
t.Errorf("ModelList missing %q", name)
}
}
}