110 lines
3.3 KiB
Go
110 lines
3.3 KiB
Go
|
|
package anthropic_test
|
||
|
|
|
||
|
|
import (
|
||
|
|
"cursor-api-proxy/internal/anthropic"
|
||
|
|
"strings"
|
||
|
|
"testing"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestBuildPromptFromAnthropicMessages_Simple(t *testing.T) {
|
||
|
|
messages := []anthropic.MessageParam{
|
||
|
|
{Role: "user", Content: "Hello"},
|
||
|
|
{Role: "assistant", Content: "Hi there"},
|
||
|
|
}
|
||
|
|
prompt := anthropic.BuildPromptFromAnthropicMessages(messages, nil)
|
||
|
|
if !strings.Contains(prompt, "Hello") {
|
||
|
|
t.Errorf("prompt missing user message: %q", prompt)
|
||
|
|
}
|
||
|
|
if !strings.Contains(prompt, "Hi there") {
|
||
|
|
t.Errorf("prompt missing assistant message: %q", prompt)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestBuildPromptFromAnthropicMessages_WithSystem(t *testing.T) {
|
||
|
|
messages := []anthropic.MessageParam{
|
||
|
|
{Role: "user", Content: "ping"},
|
||
|
|
}
|
||
|
|
prompt := anthropic.BuildPromptFromAnthropicMessages(messages, "You are a helpful bot.")
|
||
|
|
if !strings.Contains(prompt, "You are a helpful bot.") {
|
||
|
|
t.Errorf("prompt missing system: %q", prompt)
|
||
|
|
}
|
||
|
|
if !strings.Contains(prompt, "ping") {
|
||
|
|
t.Errorf("prompt missing user: %q", prompt)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestBuildPromptFromAnthropicMessages_SystemArray(t *testing.T) {
|
||
|
|
system := []interface{}{
|
||
|
|
map[string]interface{}{"type": "text", "text": "Part A"},
|
||
|
|
map[string]interface{}{"type": "text", "text": "Part B"},
|
||
|
|
}
|
||
|
|
messages := []anthropic.MessageParam{
|
||
|
|
{Role: "user", Content: "test"},
|
||
|
|
}
|
||
|
|
prompt := anthropic.BuildPromptFromAnthropicMessages(messages, system)
|
||
|
|
if !strings.Contains(prompt, "Part A") {
|
||
|
|
t.Errorf("prompt missing Part A: %q", prompt)
|
||
|
|
}
|
||
|
|
if !strings.Contains(prompt, "Part B") {
|
||
|
|
t.Errorf("prompt missing Part B: %q", prompt)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestBuildPromptFromAnthropicMessages_ContentBlocks(t *testing.T) {
|
||
|
|
content := []interface{}{
|
||
|
|
map[string]interface{}{"type": "text", "text": "block one"},
|
||
|
|
map[string]interface{}{"type": "text", "text": "block two"},
|
||
|
|
}
|
||
|
|
messages := []anthropic.MessageParam{
|
||
|
|
{Role: "user", Content: content},
|
||
|
|
}
|
||
|
|
prompt := anthropic.BuildPromptFromAnthropicMessages(messages, nil)
|
||
|
|
if !strings.Contains(prompt, "block one") {
|
||
|
|
t.Errorf("prompt missing 'block one': %q", prompt)
|
||
|
|
}
|
||
|
|
if !strings.Contains(prompt, "block two") {
|
||
|
|
t.Errorf("prompt missing 'block two': %q", prompt)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestBuildPromptFromAnthropicMessages_ImageBlock(t *testing.T) {
|
||
|
|
content := []interface{}{
|
||
|
|
map[string]interface{}{
|
||
|
|
"type": "image",
|
||
|
|
"source": map[string]interface{}{
|
||
|
|
"type": "base64",
|
||
|
|
"media_type": "image/png",
|
||
|
|
"data": "abc123",
|
||
|
|
},
|
||
|
|
},
|
||
|
|
}
|
||
|
|
messages := []anthropic.MessageParam{
|
||
|
|
{Role: "user", Content: content},
|
||
|
|
}
|
||
|
|
prompt := anthropic.BuildPromptFromAnthropicMessages(messages, nil)
|
||
|
|
if !strings.Contains(prompt, "[Image") {
|
||
|
|
t.Errorf("prompt missing [Image]: %q", prompt)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestBuildPromptFromAnthropicMessages_EmptyContentSkipped(t *testing.T) {
|
||
|
|
messages := []anthropic.MessageParam{
|
||
|
|
{Role: "user", Content: ""},
|
||
|
|
{Role: "assistant", Content: "response"},
|
||
|
|
}
|
||
|
|
prompt := anthropic.BuildPromptFromAnthropicMessages(messages, nil)
|
||
|
|
if !strings.Contains(prompt, "response") {
|
||
|
|
t.Errorf("prompt missing 'response': %q", prompt)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestBuildPromptFromAnthropicMessages_UnknownRoleBecomesUser(t *testing.T) {
|
||
|
|
messages := []anthropic.MessageParam{
|
||
|
|
{Role: "system", Content: "system-as-user"},
|
||
|
|
}
|
||
|
|
prompt := anthropic.BuildPromptFromAnthropicMessages(messages, nil)
|
||
|
|
if !strings.Contains(prompt, "system-as-user") {
|
||
|
|
t.Errorf("prompt missing 'system-as-user': %q", prompt)
|
||
|
|
}
|
||
|
|
}
|