tokenFactory/service/model_meta_infer_test.go

89 lines
1.9 KiB
Go

package service
import (
"testing"
)
func TestFilterTags(t *testing.T) {
tests := []struct {
name string
input string
expected string
}{
{
name: "empty string",
input: "",
expected: "",
},
{
name: "filter out context window size like 262.1K",
input: "Reasoning,Tools,Files,Vision,262.1K",
expected: "Reasoning,Tools,Files,Vision",
},
{
name: "filter out 128K context size",
input: "Reasoning,128K",
expected: "Reasoning",
},
{
name: "filter out 1M context size",
input: "Vision,1M,Chat",
expected: "Vision,Chat",
},
{
name: "filter out numeric-only tags",
input: "Coding,32K,8K",
expected: "Coding",
},
{
name: "all valid tags preserved",
input: "Reasoning,Tools,Files,Vision",
expected: "Reasoning,Tools,Files,Vision",
},
{
name: "all invalid tags removed",
input: "262.1K,128K,1.5M",
expected: "",
},
{
name: "case insensitive matching",
input: "REASONING,tools,VISION",
expected: "REASONING,tools,VISION",
},
{
name: "preserve open weights tag",
input: "Open Weights,Vision,128K",
expected: "Open Weights,Vision",
},
{
name: "whitespace handling",
input: " Reasoning , Tools , 262.1K , Vision ",
expected: "Reasoning,Tools,Vision",
},
{
name: "mixed valid and invalid tags from official preset",
input: "Reasoning,Tools,Files,Vision,262.1K,Proprietary",
expected: "Reasoning,Tools,Files,Vision,Proprietary",
},
{
name: "single valid tag",
input: "Embedding",
expected: "Embedding",
},
{
name: "single invalid tag",
input: "200K",
expected: "",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
result := filterTags(tt.input)
if result != tt.expected {
t.Errorf("filterTags(%q) = %q, want %q", tt.input, result, tt.expected)
}
})
}
}