89 lines · 2.9 KB · Go
RawDownload
package executor import (	"testing" 	"github.com/tidwall/gjson") func TestEnsureImageGenerationTool_NoTools(t *testing.T) {	body := []byte(`{"model":"gpt-5.4","input":"draw a cat"}`)	result := ensureImageGenerationTool(body) 	tools := gjson.GetBytes(result, "tools")	if !tools.IsArray() {		t.Fatalf("expected tools array, got %v", tools.Type)	}	arr := tools.Array()	if len(arr) != 1 {		t.Fatalf("expected 1 tool, got %d", len(arr))	}	if arr[0].Get("type").String() != "image_generation" {		t.Fatalf("expected type=image_generation, got %s", arr[0].Get("type").String())	}	if arr[0].Get("output_format").String() != "png" {		t.Fatalf("expected output_format=png, got %s", arr[0].Get("output_format").String())	}} func TestEnsureImageGenerationTool_ExistingToolsWithoutImageGen(t *testing.T) {	body := []byte(`{"model":"gpt-5.4","tools":[{"type":"function","name":"get_weather","parameters":{}}]}`)	result := ensureImageGenerationTool(body) 	tools := gjson.GetBytes(result, "tools")	arr := tools.Array()	if len(arr) != 2 {		t.Fatalf("expected 2 tools, got %d", len(arr))	}	if arr[0].Get("type").String() != "function" {		t.Fatalf("expected first tool type=function, got %s", arr[0].Get("type").String())	}	if arr[1].Get("type").String() != "image_generation" {		t.Fatalf("expected second tool type=image_generation, got %s", arr[1].Get("type").String())	}} func TestEnsureImageGenerationTool_AlreadyPresent(t *testing.T) {	body := []byte(`{"model":"gpt-5.4","tools":[{"type":"image_generation","output_format":"webp"},{"type":"function","name":"f1"}]}`)	result := ensureImageGenerationTool(body) 	tools := gjson.GetBytes(result, "tools")	arr := tools.Array()	if len(arr) != 2 {		t.Fatalf("expected 2 tools (no duplicate), got %d", len(arr))	}	if arr[0].Get("output_format").String() != "webp" {		t.Fatalf("expected original output_format=webp preserved, got %s", arr[0].Get("output_format").String())	}} func TestEnsureImageGenerationTool_EmptyToolsArray(t *testing.T) {	body := []byte(`{"model":"gpt-5.4","tools":[]}`)	result := ensureImageGenerationTool(body) 	tools := gjson.GetBytes(result, "tools")	arr := tools.Array()	if len(arr) != 1 {		t.Fatalf("expected 1 tool, got %d", len(arr))	}	if arr[0].Get("type").String() != "image_generation" {		t.Fatalf("expected type=image_generation, got %s", arr[0].Get("type").String())	}} func TestEnsureImageGenerationTool_WebSearchAndImageGen(t *testing.T) {	body := []byte(`{"model":"gpt-5.4","tools":[{"type":"web_search"}]}`)	result := ensureImageGenerationTool(body) 	tools := gjson.GetBytes(result, "tools")	arr := tools.Array()	if len(arr) != 2 {		t.Fatalf("expected 2 tools, got %d", len(arr))	}	if arr[0].Get("type").String() != "web_search" {		t.Fatalf("expected first tool type=web_search, got %s", arr[0].Get("type").String())	}	if arr[1].Get("type").String() != "image_generation" {		t.Fatalf("expected second tool type=image_generation, got %s", arr[1].Get("type").String())	}}