Ctrl K
ComunidadGuías…

internal/util/gjson_test.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package util

import (
	"testing"
	"unsafe"
)

func TestGetGJSONBytesNoCopy(t *testing.T) {
	input := []byte(`{"request":{"contents":[{"role":"user"}]}}`)
	contents := GetGJSONBytesNoCopy(input, "request.contents")
	if !contents.IsArray() || contents.Get("0.role").String() != "user" {
		t.Fatalf("request.contents = %s, want user content array", contents.Raw)
	}
}

func TestGetGJSONBytesNoCopyEmptyInput(t *testing.T) {
	if result := GetGJSONBytesNoCopy(nil, "contents"); result.Exists() {
		t.Fatalf("empty input result = %s, want missing", result.Raw)
	}
}

func TestParseGJSONBytesNoCopy(t *testing.T) {
	input := []byte(`{"request":{"contents":[{"role":"user"}]}}`)
	root := ParseGJSONBytesNoCopy(input)
	if !root.IsObject() || root.Get("request.contents.0.role").String() != "user" {
		t.Fatalf("parsed root = %s, want user content array", root.Raw)
	}
}

func TestParseGJSONBytesNoCopyReferencesInput(t *testing.T) {
	input := []byte(`{"contents":[{"role":"user"}]}`)
	root := ParseGJSONBytesNoCopy(input)
	if len(root.Raw) != len(input) {
		t.Fatalf("raw length = %d, want %d", len(root.Raw), len(input))
	}
	if unsafe.StringData(root.Raw) != unsafe.SliceData(input) {
		t.Fatal("parsed result copied the input instead of referencing it")
	}
}

func TestParseGJSONBytesNoCopyEmptyInput(t *testing.T) {
	if result := ParseGJSONBytesNoCopy(nil); result.Exists() {
		t.Fatalf("empty input result = %s, want missing", result.Raw)
	}
}