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-opus-4-6", "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 }