101 lines
2.9 KiB
Go
101 lines
2.9 KiB
Go
package server
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"gophergate/internal/router"
|
|
)
|
|
|
|
func TestIsSoftwareDevelopment(t *testing.T) {
|
|
tests := []struct {
|
|
message string
|
|
expected bool
|
|
}{
|
|
{"can you check the logs? it looks like a lot of requests are being routed to kimi-k2.7-code when they don't need to be", false},
|
|
{"it looks like its still routing to kimi when it shouldn't need to", false},
|
|
{"Write a python script to parse logs", true},
|
|
{"Search the web for weather in New York", false},
|
|
{"How to build a compiler in Go", true},
|
|
{"Check my vscode config", false},
|
|
{"Let's decode this barcode", false},
|
|
{"go ahead and email both docxs and the ppt to kayla\n\n<memory-context>... HELPipedia_Telethon_Speaker_Script.docx ... mental health program specialist ...", false},
|
|
{"academic program development", false},
|
|
{"write a script for the video presentation", false},
|
|
{"How to write a bash script", true},
|
|
{"refactor this sql query", true},
|
|
{"can you organize Downloads and Documents real quick?\n\n<memory-context>\nCLI wrapper: ~/Projects/rag-engine/rag (bash script activating .venv). Python venv@~/Projects/rag-engine/.venv/.\n</memory-context>", false},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
result := isSoftwareDevelopment(tt.message)
|
|
if result != tt.expected {
|
|
t.Errorf("isSoftwareDevelopment(%q) = %v; expected %v", tt.message, result, tt.expected)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestGetRouteCtxTags(t *testing.T) {
|
|
s := &Server{}
|
|
tests := []struct {
|
|
name string
|
|
routeCtx *router.RouteContext
|
|
expectedTags []string
|
|
mustContain []string
|
|
mustExclude []string
|
|
}{
|
|
{
|
|
name: "Standard query with tools",
|
|
routeCtx: &router.RouteContext{
|
|
UserMessage: "Search the web for weather in Paris",
|
|
RequiresToolCalling: true,
|
|
},
|
|
mustExclude: []string{"tool-heavy", "swe-bench"},
|
|
},
|
|
{
|
|
name: "Coding query with tools",
|
|
routeCtx: &router.RouteContext{
|
|
UserMessage: "Write a python script to parse logs",
|
|
RequiresToolCalling: true,
|
|
IsSoftwareDevelopment: true,
|
|
},
|
|
mustContain: []string{"tool-heavy", "swe-bench"},
|
|
},
|
|
{
|
|
name: "Agent query with tools",
|
|
routeCtx: &router.RouteContext{
|
|
UserMessage: "agent please orchestrate the multi-agent task",
|
|
RequiresToolCalling: true,
|
|
},
|
|
mustContain: []string{"tool-heavy", "swe-bench"},
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
tags := s.getRouteCtxTags(tt.routeCtx)
|
|
|
|
for _, expected := range tt.mustContain {
|
|
found := false
|
|
for _, tag := range tags {
|
|
if tag == expected {
|
|
found = true
|
|
break
|
|
}
|
|
}
|
|
if !found {
|
|
t.Errorf("expected tag %q to be present, but was not in %v", expected, tags)
|
|
}
|
|
}
|
|
|
|
for _, excluded := range tt.mustExclude {
|
|
for _, tag := range tags {
|
|
if tag == excluded {
|
|
t.Errorf("expected tag %q to be excluded, but was found in %v", excluded, tags)
|
|
}
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|