Files
openai.openai-go/packages/param/null_test.go
stainless-app[bot] 13778d44fe release: 3.0.0
2025-09-30 16:35:20 +00:00

50 lines
1.0 KiB
Go

package param_test
import (
"encoding/json"
"github.com/openai/openai-go/v3/packages/param"
"testing"
)
type Nullables struct {
Slice []int `json:"slice,omitzero"`
Map map[string]int `json:"map,omitzero"`
param.APIObject
}
func (n Nullables) MarshalJSON() ([]byte, error) {
type shadow Nullables
return param.MarshalObject(n, (*shadow)(&n))
}
func TestNullMarshal(t *testing.T) {
bytes, err := json.Marshal(Nullables{})
if err != nil {
t.Fatalf("json error %v", err.Error())
}
if string(bytes) != `{}` {
t.Fatalf("expected empty object, got %s", string(bytes))
}
obj := Nullables{
Slice: param.NullSlice[[]int](),
Map: param.NullMap[map[string]int](),
}
bytes, err = json.Marshal(obj)
if !param.IsNull(obj.Slice) {
t.Fatal("failed null check")
}
if !param.IsNull(obj.Map) {
t.Fatal("failed null check")
}
if err != nil {
t.Fatalf("json error %v", err.Error())
}
exp := `{"slice":null,"map":null}`
if string(bytes) != exp {
t.Fatalf("expected %s, got %s", exp, string(bytes))
}
}