64 lines
1.9 KiB
Go
64 lines
1.9 KiB
Go
package claude
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/tidwall/gjson"
|
|
)
|
|
|
|
func TestConvertClaudeRequestToCLI_ToolChoice_SpecificTool(t *testing.T) {
|
|
inputJSON := []byte(`{
|
|
"model": "gemini-3-flash-preview",
|
|
"messages": [
|
|
{
|
|
"role": "user",
|
|
"content": [
|
|
{"type": "text", "text": "hi"}
|
|
]
|
|
}
|
|
],
|
|
"tools": [
|
|
{
|
|
"name": "json",
|
|
"description": "A JSON tool",
|
|
"input_schema": {
|
|
"type": "object",
|
|
"properties": {}
|
|
}
|
|
}
|
|
],
|
|
"tool_choice": {"type": "tool", "name": "json"}
|
|
}`)
|
|
|
|
output := ConvertClaudeRequestToCLI("gemini-3-flash-preview", inputJSON, false)
|
|
|
|
if got := gjson.GetBytes(output, "request.toolConfig.functionCallingConfig.mode").String(); got != "ANY" {
|
|
t.Fatalf("Expected request.toolConfig.functionCallingConfig.mode 'ANY', got '%s'", got)
|
|
}
|
|
allowed := gjson.GetBytes(output, "request.toolConfig.functionCallingConfig.allowedFunctionNames").Array()
|
|
if len(allowed) != 1 || allowed[0].String() != "json" {
|
|
t.Fatalf("Expected allowedFunctionNames ['json'], got %s", gjson.GetBytes(output, "request.toolConfig.functionCallingConfig.allowedFunctionNames").Raw)
|
|
}
|
|
}
|
|
|
|
func TestConvertClaudeRequestToCLI_StripsClaudeCodeAttribution(t *testing.T) {
|
|
inputJSON := []byte(`{
|
|
"model": "claude-sonnet-4-5",
|
|
"system": [
|
|
{"type": "text", "text": "x-anthropic-billing-header: cc_version=2.1.63.abc; cc_entrypoint=cli; cch=12345;"},
|
|
{"type": "text", "text": "User system prompt"}
|
|
],
|
|
"messages": [{"role": "user", "content": [{"type": "text", "text": "hi"}]}]
|
|
}`)
|
|
|
|
output := ConvertClaudeRequestToCLI("gemini-3-flash-preview", inputJSON, false)
|
|
|
|
parts := gjson.GetBytes(output, "request.systemInstruction.parts").Array()
|
|
if len(parts) != 1 {
|
|
t.Fatalf("Expected 1 system part after attribution strip, got %d: %s", len(parts), gjson.GetBytes(output, "request.systemInstruction.parts").Raw)
|
|
}
|
|
if got := parts[0].Get("text").String(); got != "User system prompt" {
|
|
t.Fatalf("Unexpected system part: %q", got)
|
|
}
|
|
}
|