package jsoniter

import (
	"github.com/json-iterator/go/require"
	"testing"
)

func Test_encode_optional_int_pointer(t *testing.T) {
	should := require.New(t)
	var ptr *int
	str, err := MarshalToString(ptr)
	should.Nil(err)
	should.Equal("null", str)
	val := 100
	ptr = &val
	str, err = MarshalToString(ptr)
	should.Nil(err)
	should.Equal("100", str)
}

func Test_decode_struct_with_optional_field(t *testing.T) {
	should := require.New(t)
	type TestObject struct {
		Field1 *string
		Field2 *string
	}
	obj := TestObject{}
	UnmarshalFromString(`{"field1": null, "field2": "world"}`, &obj)
	should.Nil(obj.Field1)
	should.Equal("world", *obj.Field2)
}

func Test_encode_struct_with_optional_field(t *testing.T) {
	should := require.New(t)
	type TestObject struct {
		Field1 *string
		Field2 *string
	}
	obj := TestObject{}
	world := "world"
	obj.Field2 = &world
	str, err := MarshalToString(obj)
	should.Nil(err)
	should.Contains(str, `"Field1":null`)
	should.Contains(str, `"Field2":"world"`)
}