mirror of
https://github.com/CJackHwang/ds2api.git
synced 2026-05-05 08:55:28 +08:00
70 lines
1.7 KiB
Go
70 lines
1.7 KiB
Go
package util
|
||
|
||
import (
|
||
"testing"
|
||
|
||
"ds2api/internal/config"
|
||
)
|
||
|
||
func TestMessagesPrepareBasic(t *testing.T) {
|
||
messages := []map[string]any{{"role": "user", "content": "Hello"}}
|
||
got := MessagesPrepare(messages)
|
||
if got == "" {
|
||
t.Fatal("expected non-empty prompt")
|
||
}
|
||
if got != "Hello" {
|
||
t.Fatalf("unexpected prompt: %q", got)
|
||
}
|
||
}
|
||
|
||
func TestMessagesPrepareRoles(t *testing.T) {
|
||
messages := []map[string]any{
|
||
{"role": "system", "content": "You are helper"},
|
||
{"role": "user", "content": "Hi"},
|
||
{"role": "assistant", "content": "Hello"},
|
||
{"role": "user", "content": "How are you"},
|
||
}
|
||
got := MessagesPrepare(messages)
|
||
if !contains(got, "<|Assistant|>") {
|
||
t.Fatalf("expected assistant marker in %q", got)
|
||
}
|
||
if !contains(got, "<|User|>") {
|
||
t.Fatalf("expected user marker in %q", got)
|
||
}
|
||
}
|
||
|
||
func TestConvertClaudeToDeepSeek(t *testing.T) {
|
||
store := config.LoadStore()
|
||
req := map[string]any{
|
||
"model": "claude-sonnet-4-20250514-slow",
|
||
"messages": []any{map[string]any{"role": "user", "content": "Hi"}},
|
||
"system": "You are helpful",
|
||
"stream": true,
|
||
}
|
||
out := ConvertClaudeToDeepSeek(req, store)
|
||
if out["model"] == "" {
|
||
t.Fatal("expected mapped model")
|
||
}
|
||
msgs, ok := out["messages"].([]any)
|
||
if !ok || len(msgs) == 0 {
|
||
t.Fatal("expected messages")
|
||
}
|
||
first, _ := msgs[0].(map[string]any)
|
||
if first["role"] != "system" {
|
||
t.Fatalf("expected first message system, got %#v", first)
|
||
}
|
||
}
|
||
|
||
func contains(s, sub string) bool {
|
||
return len(s) >= len(sub) && (s == sub || len(sub) == 0 || (len(s) > 0 && (indexOf(s, sub) >= 0)))
|
||
}
|
||
|
||
func indexOf(s, sub string) int {
|
||
for i := 0; i+len(sub) <= len(s); i++ {
|
||
if s[i:i+len(sub)] == sub {
|
||
return i
|
||
}
|
||
}
|
||
return -1
|
||
}
|