forked from mirror/go-json
1989 lines
39 KiB
Go
1989 lines
39 KiB
Go
package json_test
|
|
|
|
import (
|
|
"bytes"
|
|
stdjson "encoding/json"
|
|
"testing"
|
|
|
|
"github.com/goccy/go-json"
|
|
)
|
|
|
|
type customBool bool
|
|
|
|
type customBoolWithMarshaler bool
|
|
|
|
func (b customBoolWithMarshaler) MarshalJSON() ([]byte, error) {
|
|
return stdjson.Marshal(bool(b))
|
|
}
|
|
|
|
func TestCoverBool(t *testing.T) {
|
|
type structBool struct {
|
|
A bool `json:"a"`
|
|
}
|
|
type structBoolOmitEmpty struct {
|
|
A bool `json:"a,omitempty"`
|
|
}
|
|
type structBoolString struct {
|
|
A bool `json:"a,string"`
|
|
}
|
|
|
|
type structBoolPtr struct {
|
|
A *bool `json:"a"`
|
|
}
|
|
type structBoolPtrOmitEmpty struct {
|
|
A *bool `json:"a,omitempty"`
|
|
}
|
|
type structBoolPtrString struct {
|
|
A *bool `json:"a,string"`
|
|
}
|
|
|
|
type structCustomBoolOmitEmpty struct {
|
|
A customBool `json:"a,omitempty"`
|
|
}
|
|
|
|
type structCustomBoolWithMarshalerOmitEmpty struct {
|
|
A customBoolWithMarshaler `json:"a,omitempty"`
|
|
}
|
|
|
|
tests := []struct {
|
|
name string
|
|
data interface{}
|
|
}{
|
|
{
|
|
name: "Bool",
|
|
data: bool(true),
|
|
},
|
|
{
|
|
name: "BoolPtr",
|
|
data: boolptr(true),
|
|
},
|
|
{
|
|
name: "BoolPtr3",
|
|
data: boolptr3(true),
|
|
},
|
|
{
|
|
name: "BoolPtrNil",
|
|
data: (*bool)(nil),
|
|
},
|
|
{
|
|
name: "BoolPtr3Nil",
|
|
data: (***bool)(nil),
|
|
},
|
|
|
|
// HeadBoolZero
|
|
{
|
|
name: "HeadBoolZero",
|
|
data: struct {
|
|
A bool `json:"a"`
|
|
}{},
|
|
},
|
|
{
|
|
name: "HeadBoolZeroOmitEmpty",
|
|
data: struct {
|
|
A bool `json:"a,omitempty"`
|
|
}{},
|
|
},
|
|
{
|
|
name: "HeadBoolZeroString",
|
|
data: struct {
|
|
A bool `json:"a,string"`
|
|
}{},
|
|
},
|
|
|
|
// HeadBool
|
|
{
|
|
name: "HeadBool",
|
|
data: struct {
|
|
A bool `json:"a"`
|
|
}{A: true},
|
|
},
|
|
{
|
|
name: "HeadBoolOmitEmpty",
|
|
data: struct {
|
|
A bool `json:"a,omitempty"`
|
|
}{A: true},
|
|
},
|
|
{
|
|
name: "HeadBoolString",
|
|
data: struct {
|
|
A bool `json:"a,string"`
|
|
}{A: true},
|
|
},
|
|
|
|
// HeadBoolPtr
|
|
{
|
|
name: "HeadBoolPtr",
|
|
data: struct {
|
|
A *bool `json:"a"`
|
|
}{A: boolptr(true)},
|
|
},
|
|
{
|
|
name: "HeadBoolPtrOmitEmpty",
|
|
data: struct {
|
|
A *bool `json:"a,omitempty"`
|
|
}{A: boolptr(true)},
|
|
},
|
|
{
|
|
name: "HeadBoolPtrString",
|
|
data: struct {
|
|
A *bool `json:"a,string"`
|
|
}{A: boolptr(true)},
|
|
},
|
|
|
|
// HeadBoolPtrNil
|
|
{
|
|
name: "HeadBoolPtrNil",
|
|
data: struct {
|
|
A *bool `json:"a"`
|
|
}{A: nil},
|
|
},
|
|
{
|
|
name: "HeadBoolPtrNilOmitEmpty",
|
|
data: struct {
|
|
A *bool `json:"a,omitempty"`
|
|
}{A: nil},
|
|
},
|
|
{
|
|
name: "HeadBoolPtrNilString",
|
|
data: struct {
|
|
A *bool `json:"a,string"`
|
|
}{A: nil},
|
|
},
|
|
|
|
// PtrHeadBoolZero
|
|
{
|
|
name: "PtrHeadBoolZero",
|
|
data: &struct {
|
|
A bool `json:"a"`
|
|
}{},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolZeroOmitEmpty",
|
|
data: &struct {
|
|
A bool `json:"a,omitempty"`
|
|
}{},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolZeroString",
|
|
data: &struct {
|
|
A bool `json:"a,string"`
|
|
}{},
|
|
},
|
|
|
|
// PtrHeadBool
|
|
{
|
|
name: "PtrHeadBool",
|
|
data: &struct {
|
|
A bool `json:"a"`
|
|
}{A: true},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolOmitEmpty",
|
|
data: &struct {
|
|
A bool `json:"a,omitempty"`
|
|
}{A: true},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolString",
|
|
data: &struct {
|
|
A bool `json:"a,string"`
|
|
}{A: true},
|
|
},
|
|
|
|
// PtrHeadBoolPtr
|
|
{
|
|
name: "PtrHeadBoolPtr",
|
|
data: &struct {
|
|
A *bool `json:"a"`
|
|
}{A: boolptr(true)},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolPtrOmitEmpty",
|
|
data: &struct {
|
|
A *bool `json:"a,omitempty"`
|
|
}{A: boolptr(true)},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolPtrString",
|
|
data: &struct {
|
|
A *bool `json:"a,string"`
|
|
}{A: boolptr(true)},
|
|
},
|
|
|
|
// PtrHeadBoolPtrNil
|
|
{
|
|
name: "PtrHeadBoolPtrNil",
|
|
data: &struct {
|
|
A *bool `json:"a"`
|
|
}{A: nil},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolPtrNilOmitEmpty",
|
|
data: &struct {
|
|
A *bool `json:"a,omitempty"`
|
|
}{A: nil},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolPtrNilString",
|
|
data: &struct {
|
|
A *bool `json:"a,string"`
|
|
}{A: nil},
|
|
},
|
|
|
|
// PtrHeadBoolNil
|
|
{
|
|
name: "PtrHeadBoolNil",
|
|
data: (*struct {
|
|
A *bool `json:"a"`
|
|
})(nil),
|
|
},
|
|
{
|
|
name: "PtrHeadBoolNilOmitEmpty",
|
|
data: (*struct {
|
|
A *bool `json:"a,omitempty"`
|
|
})(nil),
|
|
},
|
|
{
|
|
name: "PtrHeadBoolNilString",
|
|
data: (*struct {
|
|
A *bool `json:"a,string"`
|
|
})(nil),
|
|
},
|
|
|
|
// HeadBoolZeroMultiFields
|
|
{
|
|
name: "HeadBoolZeroMultiFields",
|
|
data: struct {
|
|
A bool `json:"a"`
|
|
B bool `json:"b"`
|
|
C bool `json:"c"`
|
|
}{},
|
|
},
|
|
{
|
|
name: "HeadBoolZeroMultiFieldsOmitEmpty",
|
|
data: struct {
|
|
A bool `json:"a,omitempty"`
|
|
B bool `json:"b,omitempty"`
|
|
C bool `json:"c,omitempty"`
|
|
}{},
|
|
},
|
|
{
|
|
name: "HeadBoolZeroMultiFields",
|
|
data: struct {
|
|
A bool `json:"a,string"`
|
|
B bool `json:"b,string"`
|
|
C bool `json:"c,string"`
|
|
}{},
|
|
},
|
|
|
|
// HeadBoolMultiFields
|
|
{
|
|
name: "HeadBoolMultiFields",
|
|
data: struct {
|
|
A bool `json:"a"`
|
|
B bool `json:"b"`
|
|
C bool `json:"c"`
|
|
}{A: true, B: false, C: true},
|
|
},
|
|
{
|
|
name: "HeadBoolMultiFieldsOmitEmpty",
|
|
data: struct {
|
|
A bool `json:"a,omitempty"`
|
|
B bool `json:"b,omitempty"`
|
|
C bool `json:"c,omitempty"`
|
|
}{A: true, B: false, C: true},
|
|
},
|
|
{
|
|
name: "HeadBoolMultiFieldsString",
|
|
data: struct {
|
|
A bool `json:"a,string"`
|
|
B bool `json:"b,string"`
|
|
C bool `json:"c,string"`
|
|
}{A: true, B: false, C: true},
|
|
},
|
|
|
|
// HeadBoolPtrMultiFields
|
|
{
|
|
name: "HeadBoolPtrMultiFields",
|
|
data: struct {
|
|
A *bool `json:"a"`
|
|
B *bool `json:"b"`
|
|
C *bool `json:"c"`
|
|
}{A: boolptr(true), B: boolptr(false), C: boolptr(true)},
|
|
},
|
|
{
|
|
name: "HeadBoolPtrMultiFieldsOmitEmpty",
|
|
data: struct {
|
|
A *bool `json:"a,omitempty"`
|
|
B *bool `json:"b,omitempty"`
|
|
C *bool `json:"c,omitempty"`
|
|
}{A: boolptr(true), B: boolptr(false), C: boolptr(true)},
|
|
},
|
|
{
|
|
name: "HeadBoolPtrMultiFieldsString",
|
|
data: struct {
|
|
A *bool `json:"a,string"`
|
|
B *bool `json:"b,string"`
|
|
C *bool `json:"c,string"`
|
|
}{A: boolptr(true), B: boolptr(false), C: boolptr(true)},
|
|
},
|
|
|
|
// HeadBoolPtrNilMultiFields
|
|
{
|
|
name: "HeadBoolPtrNilMultiFields",
|
|
data: struct {
|
|
A *bool `json:"a"`
|
|
B *bool `json:"b"`
|
|
C *bool `json:"c"`
|
|
}{A: nil, B: nil, C: nil},
|
|
},
|
|
{
|
|
name: "HeadBoolPtrNilMultiFieldsOmitEmpty",
|
|
data: struct {
|
|
A *bool `json:"a,omitempty"`
|
|
B *bool `json:"b,omitempty"`
|
|
C *bool `json:"c,omitempty"`
|
|
}{A: nil, B: nil, C: nil},
|
|
},
|
|
{
|
|
name: "HeadBoolPtrNilMultiFieldsString",
|
|
data: struct {
|
|
A *bool `json:"a,string"`
|
|
B *bool `json:"b,string"`
|
|
C *bool `json:"c,string"`
|
|
}{A: nil, B: nil, C: nil},
|
|
},
|
|
|
|
// PtrHeadBoolZeroMultiFields
|
|
{
|
|
name: "PtrHeadBoolZeroMultiFields",
|
|
data: &struct {
|
|
A bool `json:"a"`
|
|
B bool `json:"b"`
|
|
}{},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolZeroMultiFieldsOmitEmpty",
|
|
data: &struct {
|
|
A bool `json:"a,omitempty"`
|
|
B bool `json:"b,omitempty"`
|
|
}{},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolZeroMultiFieldsString",
|
|
data: &struct {
|
|
A bool `json:"a,string"`
|
|
B bool `json:"b,string"`
|
|
}{},
|
|
},
|
|
|
|
// PtrHeadBoolMultiFields
|
|
{
|
|
name: "PtrHeadBoolMultiFields",
|
|
data: &struct {
|
|
A bool `json:"a"`
|
|
B bool `json:"b"`
|
|
}{A: true, B: false},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolMultiFieldsOmitEmpty",
|
|
data: &struct {
|
|
A bool `json:"a,omitempty"`
|
|
B bool `json:"b,omitempty"`
|
|
}{A: true, B: false},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolMultiFieldsString",
|
|
data: &struct {
|
|
A bool `json:"a,string"`
|
|
B bool `json:"b,string"`
|
|
}{A: true, B: false},
|
|
},
|
|
|
|
// PtrHeadBoolPtrMultiFields
|
|
{
|
|
name: "PtrHeadBoolPtrMultiFields",
|
|
data: &struct {
|
|
A *bool `json:"a"`
|
|
B *bool `json:"b"`
|
|
}{A: boolptr(true), B: boolptr(false)},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolPtrMultiFieldsOmitEmpty",
|
|
data: &struct {
|
|
A *bool `json:"a,omitempty"`
|
|
B *bool `json:"b,omitempty"`
|
|
}{A: boolptr(true), B: boolptr(false)},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolPtrMultiFieldsString",
|
|
data: &struct {
|
|
A *bool `json:"a,string"`
|
|
B *bool `json:"b,string"`
|
|
}{A: boolptr(true), B: boolptr(false)},
|
|
},
|
|
|
|
// PtrHeadBoolPtrNilMultiFields
|
|
{
|
|
name: "PtrHeadBoolPtrNilMultiFields",
|
|
data: &struct {
|
|
A *bool `json:"a"`
|
|
B *bool `json:"b"`
|
|
}{A: nil, B: nil},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolPtrNilMultiFieldsOmitEmpty",
|
|
data: &struct {
|
|
A *bool `json:"a,omitempty"`
|
|
B *bool `json:"b,omitempty"`
|
|
}{A: nil, B: nil},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolPtrNilMultiFieldsString",
|
|
data: &struct {
|
|
A *bool `json:"a,string"`
|
|
B *bool `json:"b,string"`
|
|
}{A: nil, B: nil},
|
|
},
|
|
|
|
// PtrHeadBoolNilMultiFields
|
|
{
|
|
name: "PtrHeadBoolNilMultiFields",
|
|
data: (*struct {
|
|
A *bool `json:"a"`
|
|
B *bool `json:"b"`
|
|
})(nil),
|
|
},
|
|
{
|
|
name: "PtrHeadBoolNilMultiFieldsOmitEmpty",
|
|
data: (*struct {
|
|
A *bool `json:"a,omitempty"`
|
|
B *bool `json:"b,omitempty"`
|
|
})(nil),
|
|
},
|
|
{
|
|
name: "PtrHeadBoolNilMultiFieldsString",
|
|
data: (*struct {
|
|
A *bool `json:"a,string"`
|
|
B *bool `json:"b,string"`
|
|
})(nil),
|
|
},
|
|
|
|
// HeadBoolZeroNotRoot
|
|
{
|
|
name: "HeadBoolZeroNotRoot",
|
|
data: struct {
|
|
A struct {
|
|
A bool `json:"a"`
|
|
}
|
|
}{},
|
|
},
|
|
{
|
|
name: "HeadBoolZeroNotRootOmitEmpty",
|
|
data: struct {
|
|
A struct {
|
|
A bool `json:"a,omitempty"`
|
|
}
|
|
}{},
|
|
},
|
|
{
|
|
name: "HeadBoolZeroNotRootString",
|
|
data: struct {
|
|
A struct {
|
|
A bool `json:"a,string"`
|
|
}
|
|
}{},
|
|
},
|
|
|
|
// HeadBoolNotRoot
|
|
{
|
|
name: "HeadBoolNotRoot",
|
|
data: struct {
|
|
A struct {
|
|
A bool `json:"a"`
|
|
}
|
|
}{A: struct {
|
|
A bool `json:"a"`
|
|
}{A: true}},
|
|
},
|
|
{
|
|
name: "HeadBoolNotRootOmitEmpty",
|
|
data: struct {
|
|
A struct {
|
|
A bool `json:"a,omitempty"`
|
|
}
|
|
}{A: struct {
|
|
A bool `json:"a,omitempty"`
|
|
}{A: true}},
|
|
},
|
|
{
|
|
name: "HeadBoolNotRootString",
|
|
data: struct {
|
|
A struct {
|
|
A bool `json:"a,string"`
|
|
}
|
|
}{A: struct {
|
|
A bool `json:"a,string"`
|
|
}{A: true}},
|
|
},
|
|
|
|
// HeadBoolPtrNotRoot
|
|
{
|
|
name: "HeadBoolPtrNotRoot",
|
|
data: struct {
|
|
A struct {
|
|
A *bool `json:"a"`
|
|
}
|
|
}{A: struct {
|
|
A *bool `json:"a"`
|
|
}{boolptr(true)}},
|
|
},
|
|
{
|
|
name: "HeadBoolPtrNotRootOmitEmpty",
|
|
data: struct {
|
|
A struct {
|
|
A *bool `json:"a,omitempty"`
|
|
}
|
|
}{A: struct {
|
|
A *bool `json:"a,omitempty"`
|
|
}{boolptr(true)}},
|
|
},
|
|
{
|
|
name: "HeadBoolPtrNotRootString",
|
|
data: struct {
|
|
A struct {
|
|
A *bool `json:"a,string"`
|
|
}
|
|
}{A: struct {
|
|
A *bool `json:"a,string"`
|
|
}{boolptr(true)}},
|
|
},
|
|
|
|
// HeadBoolPtrNilNotRoot
|
|
{
|
|
name: "HeadBoolPtrNilNotRoot",
|
|
data: struct {
|
|
A struct {
|
|
A *bool `json:"a"`
|
|
}
|
|
}{},
|
|
},
|
|
{
|
|
name: "HeadBoolPtrNilNotRootOmitEmpty",
|
|
data: struct {
|
|
A struct {
|
|
A *bool `json:"a,omitempty"`
|
|
}
|
|
}{},
|
|
},
|
|
{
|
|
name: "HeadBoolPtrNilNotRootString",
|
|
data: struct {
|
|
A struct {
|
|
A *bool `json:"a,string"`
|
|
}
|
|
}{},
|
|
},
|
|
|
|
// PtrHeadBoolZeroNotRoot
|
|
{
|
|
name: "PtrHeadBoolZeroNotRoot",
|
|
data: struct {
|
|
A *struct {
|
|
A bool `json:"a"`
|
|
}
|
|
}{A: new(struct {
|
|
A bool `json:"a"`
|
|
})},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolZeroNotRootOmitEmpty",
|
|
data: struct {
|
|
A *struct {
|
|
A bool `json:"a,omitempty"`
|
|
}
|
|
}{A: new(struct {
|
|
A bool `json:"a,omitempty"`
|
|
})},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolZeroNotRootString",
|
|
data: struct {
|
|
A *struct {
|
|
A bool `json:"a,string"`
|
|
}
|
|
}{A: new(struct {
|
|
A bool `json:"a,string"`
|
|
})},
|
|
},
|
|
|
|
// PtrHeadBoolNotRoot
|
|
{
|
|
name: "PtrHeadBoolNotRoot",
|
|
data: struct {
|
|
A *struct {
|
|
A bool `json:"a"`
|
|
}
|
|
}{A: &(struct {
|
|
A bool `json:"a"`
|
|
}{A: true})},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolNotRootOmitEmpty",
|
|
data: struct {
|
|
A *struct {
|
|
A bool `json:"a,omitempty"`
|
|
}
|
|
}{A: &(struct {
|
|
A bool `json:"a,omitempty"`
|
|
}{A: true})},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolNotRootString",
|
|
data: struct {
|
|
A *struct {
|
|
A bool `json:"a,string"`
|
|
}
|
|
}{A: &(struct {
|
|
A bool `json:"a,string"`
|
|
}{A: true})},
|
|
},
|
|
|
|
// PtrHeadBoolPtrNotRoot
|
|
{
|
|
name: "PtrHeadBoolPtrNotRoot",
|
|
data: struct {
|
|
A *struct {
|
|
A *bool `json:"a"`
|
|
}
|
|
}{A: &(struct {
|
|
A *bool `json:"a"`
|
|
}{A: boolptr(true)})},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolPtrNotRootOmitEmpty",
|
|
data: struct {
|
|
A *struct {
|
|
A *bool `json:"a,omitempty"`
|
|
}
|
|
}{A: &(struct {
|
|
A *bool `json:"a,omitempty"`
|
|
}{A: boolptr(true)})},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolPtrNotRootString",
|
|
data: struct {
|
|
A *struct {
|
|
A *bool `json:"a,string"`
|
|
}
|
|
}{A: &(struct {
|
|
A *bool `json:"a,string"`
|
|
}{A: boolptr(true)})},
|
|
},
|
|
|
|
// PtrHeadBoolPtrNilNotRoot
|
|
{
|
|
name: "PtrHeadBoolPtrNilNotRoot",
|
|
data: struct {
|
|
A *struct {
|
|
A *bool `json:"a"`
|
|
}
|
|
}{A: &(struct {
|
|
A *bool `json:"a"`
|
|
}{A: nil})},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolPtrNilNotRootOmitEmpty",
|
|
data: struct {
|
|
A *struct {
|
|
A *bool `json:"a,omitempty"`
|
|
}
|
|
}{A: &(struct {
|
|
A *bool `json:"a,omitempty"`
|
|
}{A: nil})},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolPtrNilNotRootString",
|
|
data: struct {
|
|
A *struct {
|
|
A *bool `json:"a,string"`
|
|
}
|
|
}{A: &(struct {
|
|
A *bool `json:"a,string"`
|
|
}{A: nil})},
|
|
},
|
|
|
|
// PtrHeadBoolNilNotRoot
|
|
{
|
|
name: "PtrHeadBoolNilNotRoot",
|
|
data: struct {
|
|
A *struct {
|
|
A *bool `json:"a"`
|
|
}
|
|
}{A: nil},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolNilNotRootOmitEmpty",
|
|
data: struct {
|
|
A *struct {
|
|
A *bool `json:"a,omitempty"`
|
|
} `json:",omitempty"`
|
|
}{A: nil},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolNilNotRootString",
|
|
data: struct {
|
|
A *struct {
|
|
A *bool `json:"a,string"`
|
|
} `json:",string"`
|
|
}{A: nil},
|
|
},
|
|
|
|
// HeadBoolZeroMultiFieldsNotRoot
|
|
{
|
|
name: "HeadBoolZeroMultiFieldsNotRoot",
|
|
data: struct {
|
|
A struct {
|
|
A bool `json:"a"`
|
|
}
|
|
B struct {
|
|
B bool `json:"b"`
|
|
}
|
|
}{},
|
|
},
|
|
{
|
|
name: "HeadBoolZeroMultiFieldsNotRootOmitEmpty",
|
|
data: struct {
|
|
A struct {
|
|
A bool `json:"a,omitempty"`
|
|
}
|
|
B struct {
|
|
B bool `json:"b,omitempty"`
|
|
}
|
|
}{},
|
|
},
|
|
{
|
|
name: "HeadBoolZeroMultiFieldsNotRootString",
|
|
data: struct {
|
|
A struct {
|
|
A bool `json:"a,string"`
|
|
}
|
|
B struct {
|
|
B bool `json:"b,string"`
|
|
}
|
|
}{},
|
|
},
|
|
|
|
// HeadBoolMultiFieldsNotRoot
|
|
{
|
|
name: "HeadBoolMultiFieldsNotRoot",
|
|
data: struct {
|
|
A struct {
|
|
A bool `json:"a"`
|
|
}
|
|
B struct {
|
|
B bool `json:"b"`
|
|
}
|
|
}{A: struct {
|
|
A bool `json:"a"`
|
|
}{A: true}, B: struct {
|
|
B bool `json:"b"`
|
|
}{B: false}},
|
|
},
|
|
{
|
|
name: "HeadBoolMultiFieldsNotRootOmitEmpty",
|
|
data: struct {
|
|
A struct {
|
|
A bool `json:"a,omitempty"`
|
|
}
|
|
B struct {
|
|
B bool `json:"b,omitempty"`
|
|
}
|
|
}{A: struct {
|
|
A bool `json:"a,omitempty"`
|
|
}{A: true}, B: struct {
|
|
B bool `json:"b,omitempty"`
|
|
}{B: false}},
|
|
},
|
|
{
|
|
name: "HeadBoolMultiFieldsNotRootString",
|
|
data: struct {
|
|
A struct {
|
|
A bool `json:"a,string"`
|
|
}
|
|
B struct {
|
|
B bool `json:"b,string"`
|
|
}
|
|
}{A: struct {
|
|
A bool `json:"a,string"`
|
|
}{A: true}, B: struct {
|
|
B bool `json:"b,string"`
|
|
}{B: false}},
|
|
},
|
|
|
|
// HeadBoolPtrMultiFieldsNotRoot
|
|
{
|
|
name: "HeadBoolPtrMultiFieldsNotRoot",
|
|
data: struct {
|
|
A struct {
|
|
A *bool `json:"a"`
|
|
}
|
|
B struct {
|
|
B *bool `json:"b"`
|
|
}
|
|
}{A: struct {
|
|
A *bool `json:"a"`
|
|
}{A: boolptr(true)}, B: struct {
|
|
B *bool `json:"b"`
|
|
}{B: boolptr(false)}},
|
|
},
|
|
{
|
|
name: "HeadBoolPtrMultiFieldsNotRootOmitEmpty",
|
|
data: struct {
|
|
A struct {
|
|
A *bool `json:"a,omitempty"`
|
|
}
|
|
B struct {
|
|
B *bool `json:"b,omitempty"`
|
|
}
|
|
}{A: struct {
|
|
A *bool `json:"a,omitempty"`
|
|
}{A: boolptr(true)}, B: struct {
|
|
B *bool `json:"b,omitempty"`
|
|
}{B: boolptr(false)}},
|
|
},
|
|
{
|
|
name: "HeadBoolPtrMultiFieldsNotRootString",
|
|
data: struct {
|
|
A struct {
|
|
A *bool `json:"a,string"`
|
|
}
|
|
B struct {
|
|
B *bool `json:"b,string"`
|
|
}
|
|
}{A: struct {
|
|
A *bool `json:"a,string"`
|
|
}{A: boolptr(true)}, B: struct {
|
|
B *bool `json:"b,string"`
|
|
}{B: boolptr(false)}},
|
|
},
|
|
|
|
// HeadBoolPtrNilMultiFieldsNotRoot
|
|
{
|
|
name: "HeadBoolPtrNilMultiFieldsNotRoot",
|
|
data: struct {
|
|
A struct {
|
|
A *bool `json:"a"`
|
|
}
|
|
B struct {
|
|
B *bool `json:"b"`
|
|
}
|
|
}{A: struct {
|
|
A *bool `json:"a"`
|
|
}{A: nil}, B: struct {
|
|
B *bool `json:"b"`
|
|
}{B: nil}},
|
|
},
|
|
{
|
|
name: "HeadBoolPtrNilMultiFieldsNotRootOmitEmpty",
|
|
data: struct {
|
|
A struct {
|
|
A *bool `json:"a,omitempty"`
|
|
}
|
|
B struct {
|
|
B *bool `json:"b,omitempty"`
|
|
}
|
|
}{A: struct {
|
|
A *bool `json:"a,omitempty"`
|
|
}{A: nil}, B: struct {
|
|
B *bool `json:"b,omitempty"`
|
|
}{B: nil}},
|
|
},
|
|
{
|
|
name: "HeadBoolPtrNilMultiFieldsNotRootString",
|
|
data: struct {
|
|
A struct {
|
|
A *bool `json:"a,string"`
|
|
}
|
|
B struct {
|
|
B *bool `json:"b,string"`
|
|
}
|
|
}{A: struct {
|
|
A *bool `json:"a,string"`
|
|
}{A: nil}, B: struct {
|
|
B *bool `json:"b,string"`
|
|
}{B: nil}},
|
|
},
|
|
|
|
// PtrHeadBoolZeroMultiFieldsNotRoot
|
|
{
|
|
name: "PtrHeadBoolZeroMultiFieldsNotRoot",
|
|
data: &struct {
|
|
A struct {
|
|
A bool `json:"a"`
|
|
}
|
|
B struct {
|
|
B bool `json:"b"`
|
|
}
|
|
}{},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolZeroMultiFieldsNotRootOmitEmpty",
|
|
data: &struct {
|
|
A struct {
|
|
A bool `json:"a,omitempty"`
|
|
}
|
|
B struct {
|
|
B bool `json:"b,omitempty"`
|
|
}
|
|
}{},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolZeroMultiFieldsNotRootString",
|
|
data: &struct {
|
|
A struct {
|
|
A bool `json:"a,string"`
|
|
}
|
|
B struct {
|
|
B bool `json:"b,string"`
|
|
}
|
|
}{},
|
|
},
|
|
|
|
// PtrHeadBoolMultiFieldsNotRoot
|
|
{
|
|
name: "PtrHeadBoolMultiFieldsNotRoot",
|
|
data: &struct {
|
|
A struct {
|
|
A bool `json:"a"`
|
|
}
|
|
B struct {
|
|
B bool `json:"b"`
|
|
}
|
|
}{A: struct {
|
|
A bool `json:"a"`
|
|
}{A: true}, B: struct {
|
|
B bool `json:"b"`
|
|
}{B: false}},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolMultiFieldsNotRootOmitEmpty",
|
|
data: &struct {
|
|
A struct {
|
|
A bool `json:"a,omitempty"`
|
|
}
|
|
B struct {
|
|
B bool `json:"b,omitempty"`
|
|
}
|
|
}{A: struct {
|
|
A bool `json:"a,omitempty"`
|
|
}{A: true}, B: struct {
|
|
B bool `json:"b,omitempty"`
|
|
}{B: false}},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolMultiFieldsNotRootString",
|
|
data: &struct {
|
|
A struct {
|
|
A bool `json:"a,string"`
|
|
}
|
|
B struct {
|
|
B bool `json:"b,string"`
|
|
}
|
|
}{A: struct {
|
|
A bool `json:"a,string"`
|
|
}{A: true}, B: struct {
|
|
B bool `json:"b,string"`
|
|
}{B: false}},
|
|
},
|
|
|
|
// PtrHeadBoolPtrMultiFieldsNotRoot
|
|
{
|
|
name: "PtrHeadBoolPtrMultiFieldsNotRoot",
|
|
data: &struct {
|
|
A *struct {
|
|
A *bool `json:"a"`
|
|
}
|
|
B *struct {
|
|
B *bool `json:"b"`
|
|
}
|
|
}{A: &(struct {
|
|
A *bool `json:"a"`
|
|
}{A: boolptr(true)}), B: &(struct {
|
|
B *bool `json:"b"`
|
|
}{B: boolptr(false)})},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolPtrMultiFieldsNotRootOmitEmpty",
|
|
data: &struct {
|
|
A *struct {
|
|
A *bool `json:"a,omitempty"`
|
|
}
|
|
B *struct {
|
|
B *bool `json:"b,omitempty"`
|
|
}
|
|
}{A: &(struct {
|
|
A *bool `json:"a,omitempty"`
|
|
}{A: boolptr(true)}), B: &(struct {
|
|
B *bool `json:"b,omitempty"`
|
|
}{B: boolptr(false)})},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolPtrMultiFieldsNotRootString",
|
|
data: &struct {
|
|
A *struct {
|
|
A *bool `json:"a,string"`
|
|
}
|
|
B *struct {
|
|
B *bool `json:"b,string"`
|
|
}
|
|
}{A: &(struct {
|
|
A *bool `json:"a,string"`
|
|
}{A: boolptr(true)}), B: &(struct {
|
|
B *bool `json:"b,string"`
|
|
}{B: boolptr(false)})},
|
|
},
|
|
|
|
// PtrHeadBoolPtrNilMultiFieldsNotRoot
|
|
{
|
|
name: "PtrHeadBoolPtrNilMultiFieldsNotRoot",
|
|
data: &struct {
|
|
A *struct {
|
|
A *bool `json:"a"`
|
|
}
|
|
B *struct {
|
|
B *bool `json:"b"`
|
|
}
|
|
}{A: nil, B: nil},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolPtrNilMultiFieldsNotRootOmitEmpty",
|
|
data: &struct {
|
|
A *struct {
|
|
A *bool `json:"a,omitempty"`
|
|
} `json:",omitempty"`
|
|
B *struct {
|
|
B *bool `json:"b,omitempty"`
|
|
} `json:",omitempty"`
|
|
}{A: nil, B: nil},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolPtrNilMultiFieldsNotRootString",
|
|
data: &struct {
|
|
A *struct {
|
|
A *bool `json:"a,string"`
|
|
} `json:",string"`
|
|
B *struct {
|
|
B *bool `json:"b,string"`
|
|
} `json:",string"`
|
|
}{A: nil, B: nil},
|
|
},
|
|
|
|
// PtrHeadBoolNilMultiFieldsNotRoot
|
|
{
|
|
name: "PtrHeadBoolNilMultiFieldsNotRoot",
|
|
data: (*struct {
|
|
A *struct {
|
|
A *bool `json:"a"`
|
|
}
|
|
B *struct {
|
|
B *bool `json:"b"`
|
|
}
|
|
})(nil),
|
|
},
|
|
{
|
|
name: "PtrHeadBoolNilMultiFieldsNotRootOmitEmpty",
|
|
data: (*struct {
|
|
A *struct {
|
|
A *bool `json:"a,omitempty"`
|
|
}
|
|
B *struct {
|
|
B *bool `json:"b,omitempty"`
|
|
}
|
|
})(nil),
|
|
},
|
|
{
|
|
name: "PtrHeadBoolNilMultiFieldsNotRootString",
|
|
data: (*struct {
|
|
A *struct {
|
|
A *bool `json:"a,string"`
|
|
}
|
|
B *struct {
|
|
B *bool `json:"b,string"`
|
|
}
|
|
})(nil),
|
|
},
|
|
|
|
// PtrHeadBoolDoubleMultiFieldsNotRoot
|
|
{
|
|
name: "PtrHeadBoolDoubleMultiFieldsNotRoot",
|
|
data: &struct {
|
|
A *struct {
|
|
A bool `json:"a"`
|
|
B bool `json:"b"`
|
|
}
|
|
B *struct {
|
|
A bool `json:"a"`
|
|
B bool `json:"b"`
|
|
}
|
|
}{A: &(struct {
|
|
A bool `json:"a"`
|
|
B bool `json:"b"`
|
|
}{A: true, B: false}), B: &(struct {
|
|
A bool `json:"a"`
|
|
B bool `json:"b"`
|
|
}{A: true, B: false})},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolDoubleMultiFieldsNotRootOmitEmpty",
|
|
data: &struct {
|
|
A *struct {
|
|
A bool `json:"a,omitempty"`
|
|
B bool `json:"b,omitempty"`
|
|
}
|
|
B *struct {
|
|
A bool `json:"a,omitempty"`
|
|
B bool `json:"b,omitempty"`
|
|
}
|
|
}{A: &(struct {
|
|
A bool `json:"a,omitempty"`
|
|
B bool `json:"b,omitempty"`
|
|
}{A: true, B: false}), B: &(struct {
|
|
A bool `json:"a,omitempty"`
|
|
B bool `json:"b,omitempty"`
|
|
}{A: true, B: false})},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolDoubleMultiFieldsNotRootString",
|
|
data: &struct {
|
|
A *struct {
|
|
A bool `json:"a,string"`
|
|
B bool `json:"b,string"`
|
|
}
|
|
B *struct {
|
|
A bool `json:"a,string"`
|
|
B bool `json:"b,string"`
|
|
}
|
|
}{A: &(struct {
|
|
A bool `json:"a,string"`
|
|
B bool `json:"b,string"`
|
|
}{A: true, B: false}), B: &(struct {
|
|
A bool `json:"a,string"`
|
|
B bool `json:"b,string"`
|
|
}{A: true, B: false})},
|
|
},
|
|
|
|
// PtrHeadBoolNilDoubleMultiFieldsNotRoot
|
|
{
|
|
name: "PtrHeadBoolNilDoubleMultiFieldsNotRoot",
|
|
data: &struct {
|
|
A *struct {
|
|
A bool `json:"a"`
|
|
B bool `json:"b"`
|
|
}
|
|
B *struct {
|
|
A bool `json:"a"`
|
|
B bool `json:"b"`
|
|
}
|
|
}{A: nil, B: nil},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolNilDoubleMultiFieldsNotRootOmitEmpty",
|
|
data: &struct {
|
|
A *struct {
|
|
A bool `json:"a,omitempty"`
|
|
B bool `json:"b,omitempty"`
|
|
} `json:",omitempty"`
|
|
B *struct {
|
|
A bool `json:"a,omitempty"`
|
|
B bool `json:"b,omitempty"`
|
|
} `json:",omitempty"`
|
|
}{A: nil, B: nil},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolNilDoubleMultiFieldsNotRootString",
|
|
data: &struct {
|
|
A *struct {
|
|
A bool `json:"a,string"`
|
|
B bool `json:"b,string"`
|
|
}
|
|
B *struct {
|
|
A bool `json:"a,string"`
|
|
B bool `json:"b,string"`
|
|
}
|
|
}{A: nil, B: nil},
|
|
},
|
|
|
|
// PtrHeadBoolNilDoubleMultiFieldsNotRoot
|
|
{
|
|
name: "PtrHeadBoolNilDoubleMultiFieldsNotRoot",
|
|
data: (*struct {
|
|
A *struct {
|
|
A bool `json:"a"`
|
|
B bool `json:"b"`
|
|
}
|
|
B *struct {
|
|
A bool `json:"a"`
|
|
B bool `json:"b"`
|
|
}
|
|
})(nil),
|
|
},
|
|
{
|
|
name: "PtrHeadBoolNilDoubleMultiFieldsNotRootOmitEmpty",
|
|
data: (*struct {
|
|
A *struct {
|
|
A bool `json:"a,omitempty"`
|
|
B bool `json:"b,omitempty"`
|
|
}
|
|
B *struct {
|
|
A bool `json:"a,omitempty"`
|
|
B bool `json:"b,omitempty"`
|
|
}
|
|
})(nil),
|
|
},
|
|
{
|
|
name: "PtrHeadBoolNilDoubleMultiFieldsNotRootString",
|
|
data: (*struct {
|
|
A *struct {
|
|
A bool `json:"a,string"`
|
|
B bool `json:"b,string"`
|
|
}
|
|
B *struct {
|
|
A bool `json:"a,string"`
|
|
B bool `json:"b,string"`
|
|
}
|
|
})(nil),
|
|
},
|
|
|
|
// PtrHeadBoolPtrDoubleMultiFieldsNotRoot
|
|
{
|
|
name: "PtrHeadBoolPtrDoubleMultiFieldsNotRoot",
|
|
data: &struct {
|
|
A *struct {
|
|
A *bool `json:"a"`
|
|
B *bool `json:"b"`
|
|
}
|
|
B *struct {
|
|
A *bool `json:"a"`
|
|
B *bool `json:"b"`
|
|
}
|
|
}{A: &(struct {
|
|
A *bool `json:"a"`
|
|
B *bool `json:"b"`
|
|
}{A: boolptr(true), B: boolptr(false)}), B: &(struct {
|
|
A *bool `json:"a"`
|
|
B *bool `json:"b"`
|
|
}{A: boolptr(true), B: boolptr(false)})},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolPtrDoubleMultiFieldsNotRootOmitEmpty",
|
|
data: &struct {
|
|
A *struct {
|
|
A *bool `json:"a,omitempty"`
|
|
B *bool `json:"b,omitempty"`
|
|
}
|
|
B *struct {
|
|
A *bool `json:"a,omitempty"`
|
|
B *bool `json:"b,omitempty"`
|
|
}
|
|
}{A: &(struct {
|
|
A *bool `json:"a,omitempty"`
|
|
B *bool `json:"b,omitempty"`
|
|
}{A: boolptr(true), B: boolptr(false)}), B: &(struct {
|
|
A *bool `json:"a,omitempty"`
|
|
B *bool `json:"b,omitempty"`
|
|
}{A: boolptr(true), B: boolptr(false)})},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolPtrDoubleMultiFieldsNotRootString",
|
|
data: &struct {
|
|
A *struct {
|
|
A *bool `json:"a,string"`
|
|
B *bool `json:"b,string"`
|
|
}
|
|
B *struct {
|
|
A *bool `json:"a,string"`
|
|
B *bool `json:"b,string"`
|
|
}
|
|
}{A: &(struct {
|
|
A *bool `json:"a,string"`
|
|
B *bool `json:"b,string"`
|
|
}{A: boolptr(true), B: boolptr(false)}), B: &(struct {
|
|
A *bool `json:"a,string"`
|
|
B *bool `json:"b,string"`
|
|
}{A: boolptr(true), B: boolptr(false)})},
|
|
},
|
|
|
|
// PtrHeadBoolPtrNilDoubleMultiFieldsNotRoot
|
|
{
|
|
name: "PtrHeadBoolPtrNilDoubleMultiFieldsNotRoot",
|
|
data: &struct {
|
|
A *struct {
|
|
A *bool `json:"a"`
|
|
B *bool `json:"b"`
|
|
}
|
|
B *struct {
|
|
A *bool `json:"a"`
|
|
B *bool `json:"b"`
|
|
}
|
|
}{A: nil, B: nil},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolPtrNilDoubleMultiFieldsNotRootOmitEmpty",
|
|
data: &struct {
|
|
A *struct {
|
|
A *bool `json:"a,omitempty"`
|
|
B *bool `json:"b,omitempty"`
|
|
} `json:",omitempty"`
|
|
B *struct {
|
|
A *bool `json:"a,omitempty"`
|
|
B *bool `json:"b,omitempty"`
|
|
} `json:",omitempty"`
|
|
}{A: nil, B: nil},
|
|
},
|
|
{
|
|
name: "PtrHeadBoolPtrNilDoubleMultiFieldsNotRootString",
|
|
data: &struct {
|
|
A *struct {
|
|
A *bool `json:"a,string"`
|
|
B *bool `json:"b,string"`
|
|
}
|
|
B *struct {
|
|
A *bool `json:"a,string"`
|
|
B *bool `json:"b,string"`
|
|
}
|
|
}{A: nil, B: nil},
|
|
},
|
|
|
|
// PtrHeadBoolPtrNilDoubleMultiFieldsNotRoot
|
|
{
|
|
name: "PtrHeadBoolPtrNilDoubleMultiFieldsNotRoot",
|
|
data: (*struct {
|
|
A *struct {
|
|
A *bool `json:"a"`
|
|
B *bool `json:"b"`
|
|
}
|
|
B *struct {
|
|
A *bool `json:"a"`
|
|
B *bool `json:"b"`
|
|
}
|
|
})(nil),
|
|
},
|
|
{
|
|
name: "PtrHeadBoolPtrNilDoubleMultiFieldsNotRootOmitEmpty",
|
|
data: (*struct {
|
|
A *struct {
|
|
A *bool `json:"a,omitempty"`
|
|
B *bool `json:"b,omitempty"`
|
|
}
|
|
B *struct {
|
|
A *bool `json:"a,omitempty"`
|
|
B *bool `json:"b,omitempty"`
|
|
}
|
|
})(nil),
|
|
},
|
|
{
|
|
name: "PtrHeadBoolPtrNilDoubleMultiFieldsNotRootString",
|
|
data: (*struct {
|
|
A *struct {
|
|
A *bool `json:"a,string"`
|
|
B *bool `json:"b,string"`
|
|
}
|
|
B *struct {
|
|
A *bool `json:"a,string"`
|
|
B *bool `json:"b,string"`
|
|
}
|
|
})(nil),
|
|
},
|
|
|
|
// AnonymousHeadBool
|
|
{
|
|
name: "AnonymousHeadBool",
|
|
data: struct {
|
|
structBool
|
|
B bool `json:"b"`
|
|
}{
|
|
structBool: structBool{A: true},
|
|
B: false,
|
|
},
|
|
},
|
|
{
|
|
name: "AnonymousHeadBoolOmitEmpty",
|
|
data: struct {
|
|
structBoolOmitEmpty
|
|
B bool `json:"b,omitempty"`
|
|
}{
|
|
structBoolOmitEmpty: structBoolOmitEmpty{A: true},
|
|
B: false,
|
|
},
|
|
},
|
|
{
|
|
name: "AnonymousHeadCustomBoolOmitEmpty",
|
|
data: struct {
|
|
structCustomBoolOmitEmpty
|
|
B bool `json:"b,omitempty"`
|
|
}{
|
|
structCustomBoolOmitEmpty: structCustomBoolOmitEmpty{A: true},
|
|
B: false,
|
|
},
|
|
},
|
|
{
|
|
name: "AnonymousHeadCustomBoolOmitEmptyFalse",
|
|
data: struct {
|
|
structCustomBoolOmitEmpty
|
|
B bool `json:"b,omitempty"`
|
|
}{
|
|
structCustomBoolOmitEmpty: structCustomBoolOmitEmpty{},
|
|
B: false,
|
|
},
|
|
},
|
|
{
|
|
name: "AnonymousHeadCustomBoolWithMarshalerOmitEmpty",
|
|
data: struct {
|
|
structCustomBoolWithMarshalerOmitEmpty
|
|
B bool `json:"b,omitempty"`
|
|
}{
|
|
structCustomBoolWithMarshalerOmitEmpty: structCustomBoolWithMarshalerOmitEmpty{A: true},
|
|
B: false,
|
|
},
|
|
},
|
|
{
|
|
name: "AnonymousHeadCustomBoolWithMarshalerOmitEmptyFalse",
|
|
data: struct {
|
|
structCustomBoolWithMarshalerOmitEmpty
|
|
B bool `json:"b,omitempty"`
|
|
}{
|
|
structCustomBoolWithMarshalerOmitEmpty: structCustomBoolWithMarshalerOmitEmpty{},
|
|
B: false,
|
|
},
|
|
},
|
|
{
|
|
name: "AnonymousHeadBoolString",
|
|
data: struct {
|
|
structBoolString
|
|
B bool `json:"b,string"`
|
|
}{
|
|
structBoolString: structBoolString{A: true},
|
|
B: false,
|
|
},
|
|
},
|
|
|
|
// PtrAnonymousHeadBool
|
|
{
|
|
name: "PtrAnonymousHeadBool",
|
|
data: struct {
|
|
*structBool
|
|
B bool `json:"b"`
|
|
}{
|
|
structBool: &structBool{A: true},
|
|
B: false,
|
|
},
|
|
},
|
|
{
|
|
name: "PtrAnonymousHeadBoolOmitEmpty",
|
|
data: struct {
|
|
*structBoolOmitEmpty
|
|
B bool `json:"b,omitempty"`
|
|
}{
|
|
structBoolOmitEmpty: &structBoolOmitEmpty{A: true},
|
|
B: false,
|
|
},
|
|
},
|
|
{
|
|
name: "PtrAnonymousHeadCustomBoolOmitEmpty",
|
|
data: struct {
|
|
*structCustomBoolOmitEmpty
|
|
B bool `json:"b,omitempty"`
|
|
}{
|
|
structCustomBoolOmitEmpty: &structCustomBoolOmitEmpty{A: true},
|
|
B: false,
|
|
},
|
|
},
|
|
{
|
|
name: "PtrAnonymousHeadCustomBoolOmitEmptyFalse",
|
|
data: struct {
|
|
*structCustomBoolOmitEmpty
|
|
B bool `json:"b,omitempty"`
|
|
}{
|
|
structCustomBoolOmitEmpty: &structCustomBoolOmitEmpty{},
|
|
B: false,
|
|
},
|
|
},
|
|
{
|
|
name: "PtrAnonymousHeadCustomBoolWithMarshalerOmitEmpty",
|
|
data: struct {
|
|
*structCustomBoolWithMarshalerOmitEmpty
|
|
B bool `json:"b,omitempty"`
|
|
}{
|
|
structCustomBoolWithMarshalerOmitEmpty: &structCustomBoolWithMarshalerOmitEmpty{A: true},
|
|
B: false,
|
|
},
|
|
},
|
|
{
|
|
name: "PtrAnonymousHeadCustomBoolWithMarshalerOmitEmptyFalse",
|
|
data: struct {
|
|
*structCustomBoolWithMarshalerOmitEmpty
|
|
B bool `json:"b,omitempty"`
|
|
}{
|
|
structCustomBoolWithMarshalerOmitEmpty: &structCustomBoolWithMarshalerOmitEmpty{},
|
|
B: false,
|
|
},
|
|
},
|
|
{
|
|
name: "PtrAnonymousHeadBoolString",
|
|
data: struct {
|
|
*structBoolString
|
|
B bool `json:"b,string"`
|
|
}{
|
|
structBoolString: &structBoolString{A: true},
|
|
B: false,
|
|
},
|
|
},
|
|
|
|
// NilPtrAnonymousHeadBool
|
|
{
|
|
name: "NilPtrAnonymousHeadBool",
|
|
data: struct {
|
|
*structBool
|
|
B bool `json:"b"`
|
|
}{
|
|
structBool: nil,
|
|
B: true,
|
|
},
|
|
},
|
|
{
|
|
name: "NilPtrAnonymousHeadBoolOmitEmpty",
|
|
data: struct {
|
|
*structBoolOmitEmpty
|
|
B bool `json:"b,omitempty"`
|
|
}{
|
|
structBoolOmitEmpty: nil,
|
|
B: true,
|
|
},
|
|
},
|
|
{
|
|
name: "NilPtrAnonymousHeadCustomBoolOmitEmpty",
|
|
data: struct {
|
|
*structCustomBoolOmitEmpty
|
|
B bool `json:"b,omitempty"`
|
|
}{
|
|
structCustomBoolOmitEmpty: nil,
|
|
B: true,
|
|
},
|
|
},
|
|
{
|
|
name: "NilPtrAnonymousHeadCustomBoolWithMarshalerOmitEmpty",
|
|
data: struct {
|
|
*structCustomBoolWithMarshalerOmitEmpty
|
|
B bool `json:"b,omitempty"`
|
|
}{
|
|
structCustomBoolWithMarshalerOmitEmpty: nil,
|
|
B: true,
|
|
},
|
|
},
|
|
{
|
|
name: "NilPtrAnonymousHeadBoolString",
|
|
data: struct {
|
|
*structBoolString
|
|
B bool `json:"b,string"`
|
|
}{
|
|
structBoolString: nil,
|
|
B: true,
|
|
},
|
|
},
|
|
|
|
// AnonymousHeadBoolPtr
|
|
{
|
|
name: "AnonymousHeadBoolPtr",
|
|
data: struct {
|
|
structBoolPtr
|
|
B *bool `json:"b"`
|
|
}{
|
|
structBoolPtr: structBoolPtr{A: boolptr(true)},
|
|
B: boolptr(false),
|
|
},
|
|
},
|
|
{
|
|
name: "AnonymousHeadBoolPtrOmitEmpty",
|
|
data: struct {
|
|
structBoolPtrOmitEmpty
|
|
B *bool `json:"b,omitempty"`
|
|
}{
|
|
structBoolPtrOmitEmpty: structBoolPtrOmitEmpty{A: boolptr(true)},
|
|
B: boolptr(false),
|
|
},
|
|
},
|
|
{
|
|
name: "AnonymousHeadBoolPtrString",
|
|
data: struct {
|
|
structBoolPtrString
|
|
B *bool `json:"b,string"`
|
|
}{
|
|
structBoolPtrString: structBoolPtrString{A: boolptr(true)},
|
|
B: boolptr(false),
|
|
},
|
|
},
|
|
|
|
// AnonymousHeadBoolPtrNil
|
|
{
|
|
name: "AnonymousHeadBoolPtrNil",
|
|
data: struct {
|
|
structBoolPtr
|
|
B *bool `json:"b"`
|
|
}{
|
|
structBoolPtr: structBoolPtr{A: nil},
|
|
B: boolptr(true),
|
|
},
|
|
},
|
|
{
|
|
name: "AnonymousHeadBoolPtrNilOmitEmpty",
|
|
data: struct {
|
|
structBoolPtrOmitEmpty
|
|
B *bool `json:"b,omitempty"`
|
|
}{
|
|
structBoolPtrOmitEmpty: structBoolPtrOmitEmpty{A: nil},
|
|
B: boolptr(true),
|
|
},
|
|
},
|
|
{
|
|
name: "AnonymousHeadBoolPtrNilString",
|
|
data: struct {
|
|
structBoolPtrString
|
|
B *bool `json:"b,string"`
|
|
}{
|
|
structBoolPtrString: structBoolPtrString{A: nil},
|
|
B: boolptr(true),
|
|
},
|
|
},
|
|
|
|
// PtrAnonymousHeadBoolPtr
|
|
{
|
|
name: "PtrAnonymousHeadBoolPtr",
|
|
data: struct {
|
|
*structBoolPtr
|
|
B *bool `json:"b"`
|
|
}{
|
|
structBoolPtr: &structBoolPtr{A: boolptr(true)},
|
|
B: boolptr(false),
|
|
},
|
|
},
|
|
{
|
|
name: "PtrAnonymousHeadBoolPtrOmitEmpty",
|
|
data: struct {
|
|
*structBoolPtrOmitEmpty
|
|
B *bool `json:"b,omitempty"`
|
|
}{
|
|
structBoolPtrOmitEmpty: &structBoolPtrOmitEmpty{A: boolptr(true)},
|
|
B: boolptr(false),
|
|
},
|
|
},
|
|
{
|
|
name: "PtrAnonymousHeadBoolPtrString",
|
|
data: struct {
|
|
*structBoolPtrString
|
|
B *bool `json:"b,string"`
|
|
}{
|
|
structBoolPtrString: &structBoolPtrString{A: boolptr(true)},
|
|
B: boolptr(false),
|
|
},
|
|
},
|
|
|
|
// NilPtrAnonymousHeadBoolPtr
|
|
{
|
|
name: "NilPtrAnonymousHeadBoolPtr",
|
|
data: struct {
|
|
*structBoolPtr
|
|
B *bool `json:"b"`
|
|
}{
|
|
structBoolPtr: nil,
|
|
B: boolptr(true),
|
|
},
|
|
},
|
|
{
|
|
name: "NilPtrAnonymousHeadBoolPtrOmitEmpty",
|
|
data: struct {
|
|
*structBoolPtrOmitEmpty
|
|
B *bool `json:"b,omitempty"`
|
|
}{
|
|
structBoolPtrOmitEmpty: nil,
|
|
B: boolptr(true),
|
|
},
|
|
},
|
|
{
|
|
name: "NilPtrAnonymousHeadBoolPtrString",
|
|
data: struct {
|
|
*structBoolPtrString
|
|
B *bool `json:"b,string"`
|
|
}{
|
|
structBoolPtrString: nil,
|
|
B: boolptr(true),
|
|
},
|
|
},
|
|
|
|
// AnonymousHeadBoolOnly
|
|
{
|
|
name: "AnonymousHeadBoolOnly",
|
|
data: struct {
|
|
structBool
|
|
}{
|
|
structBool: structBool{A: true},
|
|
},
|
|
},
|
|
{
|
|
name: "AnonymousHeadBoolOnlyOmitEmpty",
|
|
data: struct {
|
|
structBoolOmitEmpty
|
|
}{
|
|
structBoolOmitEmpty: structBoolOmitEmpty{A: true},
|
|
},
|
|
},
|
|
{
|
|
name: "AnonymousHeadCustomBoolOnlyOmitEmpty",
|
|
data: struct {
|
|
structCustomBoolOmitEmpty
|
|
}{
|
|
structCustomBoolOmitEmpty: structCustomBoolOmitEmpty{A: true},
|
|
},
|
|
},
|
|
{
|
|
name: "AnonymousHeadCustomBoolWithMarshalerOnlyOmitEmpty",
|
|
data: struct {
|
|
structCustomBoolWithMarshalerOmitEmpty
|
|
}{
|
|
structCustomBoolWithMarshalerOmitEmpty: structCustomBoolWithMarshalerOmitEmpty{A: true},
|
|
},
|
|
},
|
|
{
|
|
name: "AnonymousHeadCustomBoolWithMarshalerOnlyOmitEmptyFalse",
|
|
data: struct {
|
|
structCustomBoolWithMarshalerOmitEmpty
|
|
}{
|
|
structCustomBoolWithMarshalerOmitEmpty: structCustomBoolWithMarshalerOmitEmpty{},
|
|
},
|
|
},
|
|
{
|
|
name: "AnonymousHeadBoolOnlyString",
|
|
data: struct {
|
|
structBoolString
|
|
}{
|
|
structBoolString: structBoolString{A: true},
|
|
},
|
|
},
|
|
|
|
// PtrAnonymousHeadBoolOnly
|
|
{
|
|
name: "PtrAnonymousHeadBoolOnly",
|
|
data: struct {
|
|
*structBool
|
|
}{
|
|
structBool: &structBool{A: true},
|
|
},
|
|
},
|
|
{
|
|
name: "PtrAnonymousHeadBoolOnlyOmitEmpty",
|
|
data: struct {
|
|
*structBoolOmitEmpty
|
|
}{
|
|
structBoolOmitEmpty: &structBoolOmitEmpty{A: true},
|
|
},
|
|
},
|
|
{
|
|
name: "PtrAnonymousHeadCustomBoolOnlyOmitEmpty",
|
|
data: struct {
|
|
*structCustomBoolOmitEmpty
|
|
}{
|
|
structCustomBoolOmitEmpty: &structCustomBoolOmitEmpty{A: true},
|
|
},
|
|
},
|
|
{
|
|
name: "PtrAnonymousHeadCustomBoolWithMarshalerOnlyOmitEmpty",
|
|
data: struct {
|
|
*structCustomBoolWithMarshalerOmitEmpty
|
|
}{
|
|
structCustomBoolWithMarshalerOmitEmpty: &structCustomBoolWithMarshalerOmitEmpty{A: true},
|
|
},
|
|
},
|
|
{
|
|
name: "PtrAnonymousHeadCustomBoolWithMarshalerOnlyOmitEmptyFalse",
|
|
data: struct {
|
|
*structCustomBoolWithMarshalerOmitEmpty
|
|
}{
|
|
structCustomBoolWithMarshalerOmitEmpty: &structCustomBoolWithMarshalerOmitEmpty{},
|
|
},
|
|
},
|
|
{
|
|
name: "PtrAnonymousHeadBoolOnlyString",
|
|
data: struct {
|
|
*structBoolString
|
|
}{
|
|
structBoolString: &structBoolString{A: true},
|
|
},
|
|
},
|
|
|
|
// NilPtrAnonymousHeadBoolOnly
|
|
{
|
|
name: "NilPtrAnonymousHeadBoolOnly",
|
|
data: struct {
|
|
*structBool
|
|
}{
|
|
structBool: nil,
|
|
},
|
|
},
|
|
{
|
|
name: "NilPtrAnonymousHeadBoolOnlyOmitEmpty",
|
|
data: struct {
|
|
*structBoolOmitEmpty
|
|
}{
|
|
structBoolOmitEmpty: nil,
|
|
},
|
|
},
|
|
{
|
|
name: "NilPtrAnonymousHeadCustomBoolOnlyOmitEmpty",
|
|
data: struct {
|
|
*structCustomBoolOmitEmpty
|
|
}{
|
|
structCustomBoolOmitEmpty: nil,
|
|
},
|
|
},
|
|
{
|
|
name: "NilPtrAnonymousHeadCustomBoolWithMarshalerOnlyOmitEmpty",
|
|
data: struct {
|
|
*structCustomBoolWithMarshalerOmitEmpty
|
|
}{
|
|
structCustomBoolWithMarshalerOmitEmpty: nil,
|
|
},
|
|
},
|
|
{
|
|
name: "NilPtrAnonymousHeadBoolOnlyString",
|
|
data: struct {
|
|
*structBoolString
|
|
}{
|
|
structBoolString: nil,
|
|
},
|
|
},
|
|
|
|
// AnonymousHeadBoolPtrOnly
|
|
{
|
|
name: "AnonymousHeadBoolPtrOnly",
|
|
data: struct {
|
|
structBoolPtr
|
|
}{
|
|
structBoolPtr: structBoolPtr{A: boolptr(true)},
|
|
},
|
|
},
|
|
{
|
|
name: "AnonymousHeadBoolPtrOnlyOmitEmpty",
|
|
data: struct {
|
|
structBoolPtrOmitEmpty
|
|
}{
|
|
structBoolPtrOmitEmpty: structBoolPtrOmitEmpty{A: boolptr(true)},
|
|
},
|
|
},
|
|
{
|
|
name: "AnonymousHeadBoolPtrOnlyString",
|
|
data: struct {
|
|
structBoolPtrString
|
|
}{
|
|
structBoolPtrString: structBoolPtrString{A: boolptr(true)},
|
|
},
|
|
},
|
|
|
|
// AnonymousHeadBoolPtrNilOnly
|
|
{
|
|
name: "AnonymousHeadBoolPtrNilOnly",
|
|
data: struct {
|
|
structBoolPtr
|
|
}{
|
|
structBoolPtr: structBoolPtr{A: nil},
|
|
},
|
|
},
|
|
{
|
|
name: "AnonymousHeadBoolPtrNilOnlyOmitEmpty",
|
|
data: struct {
|
|
structBoolPtrOmitEmpty
|
|
}{
|
|
structBoolPtrOmitEmpty: structBoolPtrOmitEmpty{A: nil},
|
|
},
|
|
},
|
|
{
|
|
name: "AnonymousHeadBoolPtrNilOnlyString",
|
|
data: struct {
|
|
structBoolPtrString
|
|
}{
|
|
structBoolPtrString: structBoolPtrString{A: nil},
|
|
},
|
|
},
|
|
|
|
// PtrAnonymousHeadBoolPtrOnly
|
|
{
|
|
name: "PtrAnonymousHeadBoolPtrOnly",
|
|
data: struct {
|
|
*structBoolPtr
|
|
}{
|
|
structBoolPtr: &structBoolPtr{A: boolptr(true)},
|
|
},
|
|
},
|
|
{
|
|
name: "PtrAnonymousHeadBoolPtrOnlyOmitEmpty",
|
|
data: struct {
|
|
*structBoolPtrOmitEmpty
|
|
}{
|
|
structBoolPtrOmitEmpty: &structBoolPtrOmitEmpty{A: boolptr(true)},
|
|
},
|
|
},
|
|
{
|
|
name: "PtrAnonymousHeadBoolPtrOnlyString",
|
|
data: struct {
|
|
*structBoolPtrString
|
|
}{
|
|
structBoolPtrString: &structBoolPtrString{A: boolptr(true)},
|
|
},
|
|
},
|
|
|
|
// NilPtrAnonymousHeadBoolPtrOnly
|
|
{
|
|
name: "NilPtrAnonymousHeadBoolPtrOnly",
|
|
data: struct {
|
|
*structBoolPtr
|
|
}{
|
|
structBoolPtr: nil,
|
|
},
|
|
},
|
|
{
|
|
name: "NilPtrAnonymousHeadBoolPtrOnlyOmitEmpty",
|
|
data: struct {
|
|
*structBoolPtrOmitEmpty
|
|
}{
|
|
structBoolPtrOmitEmpty: nil,
|
|
},
|
|
},
|
|
{
|
|
name: "NilPtrAnonymousHeadBoolPtrOnlyString",
|
|
data: struct {
|
|
*structBoolPtrString
|
|
}{
|
|
structBoolPtrString: nil,
|
|
},
|
|
},
|
|
}
|
|
for _, test := range tests {
|
|
for _, indent := range []bool{true, false} {
|
|
for _, htmlEscape := range []bool{true, false} {
|
|
var buf bytes.Buffer
|
|
enc := json.NewEncoder(&buf)
|
|
enc.SetEscapeHTML(htmlEscape)
|
|
if indent {
|
|
enc.SetIndent("", " ")
|
|
}
|
|
if err := enc.Encode(test.data); err != nil {
|
|
t.Fatalf("%s(htmlEscape:%v,indent:%v): %+v: %s", test.name, htmlEscape, indent, test.data, err)
|
|
}
|
|
stdresult := encodeByEncodingJSON(test.data, indent, htmlEscape)
|
|
if buf.String() != stdresult {
|
|
t.Errorf("%s(htmlEscape:%v,indent:%v): doesn't compatible with encoding/json. expected %q but got %q", test.name, htmlEscape, indent, stdresult, buf.String())
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|