go-json/test/cover/cover_bytes_test.go

1830 lines
38 KiB
Go

package json_test
import (
"bytes"
"fmt"
"testing"
"github.com/goccy/go-json"
)
func TestCoverBytes(t *testing.T) {
type structBytes struct {
A []byte `json:"a"`
}
type structBytesOmitEmpty struct {
A []byte `json:"a,omitempty"`
}
type structBytesBytes struct {
A []byte `json:"a,bytes"`
}
type structBytesPtr struct {
A *[]byte `json:"a"`
}
type structBytesPtrOmitEmpty struct {
A *[]byte `json:"a,omitempty"`
}
type structBytesPtrBytes struct {
A *[]byte `json:"a,bytes"`
}
tests := []struct {
name string
data interface{}
}{
{
name: "Bytes",
data: []byte("a"),
},
{
name: "BytesPtr",
data: []byte("a"),
},
{
name: "BytesPtr3",
data: bytesptr3([]byte("a")),
},
{
name: "BytesPtrNil",
data: (*[]byte)(nil),
},
{
name: "BytesPtr3Nil",
data: (***[]byte)(nil),
},
// HeadBytesZero
{
name: "HeadBytesZero",
data: struct {
A []byte `json:"a"`
}{},
},
{
name: "HeadBytesZeroOmitEmpty",
data: struct {
A []byte `json:"a,omitempty"`
}{},
},
{
name: "HeadBytesZeroString",
data: struct {
A []byte `json:"a,string"`
}{},
},
// HeadBytes
{
name: "HeadString",
data: struct {
A []byte `json:"a"`
}{A: []byte("foo")},
},
{
name: "HeadBytesOmitEmpty",
data: struct {
A []byte `json:"a,omitempty"`
}{A: []byte("foo")},
},
{
name: "HeadBytesString",
data: struct {
A []byte `json:"a,string"`
}{A: []byte("foo")},
},
// HeadBytesPtr
{
name: "HeadBytesPtr",
data: struct {
A *[]byte `json:"a"`
}{A: bytesptr([]byte("foo"))},
},
{
name: "HeadBytesPtrOmitEmpty",
data: struct {
A *[]byte `json:"a,omitempty"`
}{A: bytesptr([]byte("foo"))},
},
{
name: "HeadBytesPtrString",
data: struct {
A *[]byte `json:"a,string"`
}{A: bytesptr([]byte("foo"))},
},
// HeadBytesPtrNil
{
name: "HeadBytesPtrNil",
data: struct {
A *[]byte `json:"a"`
}{A: nil},
},
{
name: "HeadBytesPtrNilOmitEmpty",
data: struct {
A *[]byte `json:"a,omitempty"`
}{A: nil},
},
{
name: "HeadBytesPtrNilString",
data: struct {
A *[]byte `json:"a,string"`
}{A: nil},
},
// PtrHeadBytesZero
{
name: "PtrHeadBytesZero",
data: &struct {
A []byte `json:"a"`
}{},
},
{
name: "PtrHeadBytesZeroOmitEmpty",
data: &struct {
A []byte `json:"a,omitempty"`
}{},
},
{
name: "PtrHeadBytesZeroString",
data: &struct {
A []byte `json:"a,string"`
}{},
},
// PtrHeadBytes
{
name: "PtrHeadString",
data: &struct {
A []byte `json:"a"`
}{A: []byte("foo")},
},
{
name: "PtrHeadBytesOmitEmpty",
data: &struct {
A []byte `json:"a,omitempty"`
}{A: []byte("foo")},
},
{
name: "PtrHeadBytesString",
data: &struct {
A []byte `json:"a,string"`
}{A: []byte("foo")},
},
// PtrHeadBytesPtr
{
name: "PtrHeadBytesPtr",
data: &struct {
A *[]byte `json:"a"`
}{A: bytesptr([]byte("foo"))},
},
{
name: "PtrHeadBytesPtrOmitEmpty",
data: &struct {
A *[]byte `json:"a,omitempty"`
}{A: bytesptr([]byte("foo"))},
},
{
name: "PtrHeadBytesPtrString",
data: &struct {
A *[]byte `json:"a,string"`
}{A: bytesptr([]byte("foo"))},
},
// PtrHeadBytesPtrNil
{
name: "PtrHeadBytesPtrNil",
data: &struct {
A *[]byte `json:"a"`
}{A: nil},
},
{
name: "PtrHeadBytesPtrNilOmitEmpty",
data: &struct {
A *[]byte `json:"a,omitempty"`
}{A: nil},
},
{
name: "PtrHeadBytesPtrNilString",
data: &struct {
A *[]byte `json:"a,string"`
}{A: nil},
},
// PtrHeadBytesNil
{
name: "PtrHeadBytesNil",
data: (*struct {
A *[]byte `json:"a"`
})(nil),
},
{
name: "PtrHeadBytesNilOmitEmpty",
data: (*struct {
A *[]byte `json:"a,omitempty"`
})(nil),
},
{
name: "PtrHeadBytesNilString",
data: (*struct {
A *[]byte `json:"a,string"`
})(nil),
},
// HeadBytesZeroMultiFields
{
name: "HeadBytesZeroMultiFields",
data: struct {
A []byte `json:"a"`
B []byte `json:"b"`
C []byte `json:"c"`
}{},
},
{
name: "HeadBytesZeroMultiFieldsOmitEmpty",
data: struct {
A []byte `json:"a,omitempty"`
B []byte `json:"b,omitempty"`
C []byte `json:"c,omitempty"`
}{},
},
{
name: "HeadBytesZeroMultiFieldsString",
data: struct {
A []byte `json:"a,string"`
B []byte `json:"b,string"`
C []byte `json:"c,string"`
}{},
},
// HeadBytesMultiFields
{
name: "HeadBytesMultiFields",
data: struct {
A []byte `json:"a"`
B []byte `json:"b"`
C []byte `json:"c"`
}{A: []byte("foo"), B: []byte("bar"), C: []byte([]byte("baz"))},
},
{
name: "HeadBytesMultiFieldsOmitEmpty",
data: struct {
A []byte `json:"a,omitempty"`
B []byte `json:"b,omitempty"`
C []byte `json:"c,omitempty"`
}{A: []byte("foo"), B: []byte("bar"), C: []byte([]byte("baz"))},
},
{
name: "HeadBytesMultiFieldsString",
data: struct {
A []byte `json:"a,string"`
B []byte `json:"b,string"`
C []byte `json:"c,string"`
}{A: []byte("foo"), B: []byte("bar"), C: []byte([]byte("baz"))},
},
// HeadBytesPtrMultiFields
{
name: "HeadBytesPtrMultiFields",
data: struct {
A *[]byte `json:"a"`
B *[]byte `json:"b"`
C *[]byte `json:"c"`
}{A: bytesptr([]byte("foo")), B: bytesptr([]byte("bar")), C: bytesptr([]byte([]byte("baz")))},
},
{
name: "HeadBytesPtrMultiFieldsOmitEmpty",
data: struct {
A *[]byte `json:"a,omitempty"`
B *[]byte `json:"b,omitempty"`
C *[]byte `json:"c,omitempty"`
}{A: bytesptr([]byte("foo")), B: bytesptr([]byte("bar")), C: bytesptr([]byte([]byte("baz")))},
},
{
name: "HeadBytesPtrMultiFieldsString",
data: struct {
A *[]byte `json:"a,string"`
B *[]byte `json:"b,string"`
C *[]byte `json:"c,string"`
}{A: bytesptr([]byte("foo")), B: bytesptr([]byte("bar")), C: bytesptr([]byte([]byte("baz")))},
},
// HeadBytesPtrNilMultiFields
{
name: "HeadBytesPtrNilMultiFields",
data: struct {
A *[]byte `json:"a"`
B *[]byte `json:"b"`
C *[]byte `json:"c"`
}{A: nil, B: nil, C: nil},
},
{
name: "HeadBytesPtrNilMultiFieldsOmitEmpty",
data: struct {
A *[]byte `json:"a,omitempty"`
B *[]byte `json:"b,omitempty"`
C *[]byte `json:"c,omitempty"`
}{A: nil, B: nil, C: nil},
},
{
name: "HeadBytesPtrNilMultiFieldsString",
data: struct {
A *[]byte `json:"a,string"`
B *[]byte `json:"b,string"`
C *[]byte `json:"c,string"`
}{A: nil, B: nil, C: nil},
},
// PtrHeadBytesZeroMultiFields
{
name: "PtrHeadBytesZeroMultiFields",
data: &struct {
A []byte `json:"a"`
B []byte `json:"b"`
C []byte `json:"c"`
}{},
},
{
name: "PtrHeadBytesZeroMultiFieldsOmitEmpty",
data: &struct {
A []byte `json:"a,omitempty"`
B []byte `json:"b,omitempty"`
C []byte `json:"c,omitempty"`
}{},
},
{
name: "PtrHeadBytesZeroMultiFieldsString",
data: &struct {
A []byte `json:"a,string"`
B []byte `json:"b,string"`
C []byte `json:"c,string"`
}{},
},
// PtrHeadBytesMultiFields
{
name: "PtrHeadBytesMultiFields",
data: &struct {
A []byte `json:"a"`
B []byte `json:"b"`
C []byte `json:"c"`
}{A: []byte("foo"), B: []byte("bar"), C: []byte("baz")},
},
{
name: "PtrHeadBytesMultiFieldsOmitEmpty",
data: &struct {
A []byte `json:"a,omitempty"`
B []byte `json:"b,omitempty"`
C []byte `json:"c,omitempty"`
}{A: []byte("foo"), B: []byte("bar"), C: []byte("baz")},
},
{
name: "PtrHeadBytesMultiFieldsString",
data: &struct {
A []byte `json:"a,string"`
B []byte `json:"b,string"`
C []byte `json:"c,string"`
}{A: []byte("foo"), B: []byte("bar"), C: []byte("baz")},
},
// PtrHeadBytesPtrMultiFields
{
name: "PtrHeadBytesPtrMultiFields",
data: &struct {
A *[]byte `json:"a"`
B *[]byte `json:"b"`
C *[]byte `json:"c"`
}{A: bytesptr([]byte("foo")), B: bytesptr([]byte("bar")), C: bytesptr([]byte("baz"))},
},
{
name: "PtrHeadBytesPtrMultiFieldsOmitEmpty",
data: &struct {
A *[]byte `json:"a,omitempty"`
B *[]byte `json:"b,omitempty"`
C *[]byte `json:"c,omitempty"`
}{A: bytesptr([]byte("foo")), B: bytesptr([]byte("bar")), C: bytesptr([]byte("baz"))},
},
{
name: "PtrHeadBytesPtrMultiFieldsString",
data: &struct {
A *[]byte `json:"a,string"`
B *[]byte `json:"b,string"`
C *[]byte `json:"c,string"`
}{A: bytesptr([]byte("foo")), B: bytesptr([]byte("bar")), C: bytesptr([]byte("baz"))},
},
// PtrHeadBytesPtrNilMultiFields
{
name: "PtrHeadBytesPtrNilMultiFields",
data: &struct {
A *[]byte `json:"a"`
B *[]byte `json:"b"`
C *[]byte `json:"c"`
}{A: nil, B: nil, C: nil},
},
{
name: "PtrHeadBytesPtrNilMultiFieldsOmitEmpty",
data: &struct {
A *[]byte `json:"a,omitempty"`
B *[]byte `json:"b,omitempty"`
C *[]byte `json:"c,omitempty"`
}{A: nil, B: nil, C: nil},
},
{
name: "PtrHeadBytesPtrNilMultiFieldsString",
data: &struct {
A *[]byte `json:"a,string"`
B *[]byte `json:"b,string"`
C *[]byte `json:"c,string"`
}{A: nil, B: nil, C: nil},
},
// PtrHeadBytesNilMultiFields
{
name: "PtrHeadBytesNilMultiFields",
data: (*struct {
A *[]byte `json:"a"`
B *[]byte `json:"b"`
C *[]byte `json:"c"`
})(nil),
},
{
name: "PtrHeadBytesNilMultiFieldsOmitEmpty",
data: (*struct {
A *[]byte `json:"a,omitempty"`
B *[]byte `json:"b,omitempty"`
C *[]byte `json:"c,omitempty"`
})(nil),
},
{
name: "PtrHeadBytesNilMultiFieldsString",
data: (*struct {
A *[]byte `json:"a,string"`
B *[]byte `json:"b,string"`
C *[]byte `json:"c,string"`
})(nil),
},
// HeadBytesZeroNotRoot
{
name: "HeadBytesZeroNotRoot",
data: struct {
A struct {
A []byte `json:"a"`
}
}{},
},
{
name: "HeadBytesZeroNotRootOmitEmpty",
data: struct {
A struct {
A []byte `json:"a,omitempty"`
}
}{},
},
{
name: "HeadBytesZeroNotRootString",
data: struct {
A struct {
A []byte `json:"a,string"`
}
}{},
},
// HeadBytesNotRoot
{
name: "HeadBytesNotRoot",
data: struct {
A struct {
A []byte `json:"a"`
}
}{A: struct {
A []byte `json:"a"`
}{A: []byte("foo")}},
},
{
name: "HeadBytesNotRootOmitEmpty",
data: struct {
A struct {
A []byte `json:"a,omitempty"`
}
}{A: struct {
A []byte `json:"a,omitempty"`
}{A: []byte("foo")}},
},
{
name: "HeadBytesNotRootString",
data: struct {
A struct {
A []byte `json:"a,string"`
}
}{A: struct {
A []byte `json:"a,string"`
}{A: []byte("foo")}},
},
// HeadBytesPtrNotRoot
{
name: "HeadBytesPtrNotRoot",
data: struct {
A struct {
A *[]byte `json:"a"`
}
}{A: struct {
A *[]byte `json:"a"`
}{bytesptr([]byte("foo"))}},
},
{
name: "HeadBytesPtrNotRootOmitEmpty",
data: struct {
A struct {
A *[]byte `json:"a,omitempty"`
}
}{A: struct {
A *[]byte `json:"a,omitempty"`
}{bytesptr([]byte("foo"))}},
},
{
name: "HeadBytesPtrNotRootString",
data: struct {
A struct {
A *[]byte `json:"a,string"`
}
}{A: struct {
A *[]byte `json:"a,string"`
}{bytesptr([]byte("foo"))}},
},
// HeadBytesPtrNilNotRoot
{
name: "HeadBytesPtrNilNotRoot",
data: struct {
A struct {
A *[]byte `json:"a"`
}
}{},
},
{
name: "HeadBytesPtrNilNotRootOmitEmpty",
data: struct {
A struct {
A *[]byte `json:"a,omitempty"`
}
}{},
},
{
name: "HeadBytesPtrNilNotRootString",
data: struct {
A struct {
A *[]byte `json:"a,string"`
}
}{},
},
// PtrHeadBytesZeroNotRoot
{
name: "PtrHeadBytesZeroNotRoot",
data: struct {
A *struct {
A []byte `json:"a"`
}
}{A: new(struct {
A []byte `json:"a"`
})},
},
{
name: "PtrHeadBytesZeroNotRootOmitEmpty",
data: struct {
A *struct {
A []byte `json:"a,omitempty"`
}
}{A: new(struct {
A []byte `json:"a,omitempty"`
})},
},
{
name: "PtrHeadBytesZeroNotRootString",
data: struct {
A *struct {
A []byte `json:"a,string"`
}
}{A: new(struct {
A []byte `json:"a,string"`
})},
},
// PtrHeadBytesNotRoot
{
name: "PtrHeadBytesNotRoot",
data: struct {
A *struct {
A []byte `json:"a"`
}
}{A: &(struct {
A []byte `json:"a"`
}{A: []byte("foo")})},
},
{
name: "PtrHeadBytesNotRootOmitEmpty",
data: struct {
A *struct {
A []byte `json:"a,omitempty"`
}
}{A: &(struct {
A []byte `json:"a,omitempty"`
}{A: []byte("foo")})},
},
{
name: "PtrHeadBytesNotRootString",
data: struct {
A *struct {
A []byte `json:"a,string"`
}
}{A: &(struct {
A []byte `json:"a,string"`
}{A: []byte("foo")})},
},
// PtrHeadBytesPtrNotRoot
{
name: "PtrHeadBytesPtrNotRoot",
data: struct {
A *struct {
A *[]byte `json:"a"`
}
}{A: &(struct {
A *[]byte `json:"a"`
}{A: bytesptr([]byte("foo"))})},
},
{
name: "PtrHeadBytesPtrNotRootOmitEmpty",
data: struct {
A *struct {
A *[]byte `json:"a,omitempty"`
}
}{A: &(struct {
A *[]byte `json:"a,omitempty"`
}{A: bytesptr([]byte("foo"))})},
},
{
name: "PtrHeadBytesPtrNotRootString",
data: struct {
A *struct {
A *[]byte `json:"a,string"`
}
}{A: &(struct {
A *[]byte `json:"a,string"`
}{A: bytesptr([]byte("foo"))})},
},
// PtrHeadBytesPtrNilNotRoot
{
name: "PtrHeadBytesPtrNilNotRoot",
data: struct {
A *struct {
A *[]byte `json:"a"`
}
}{A: &(struct {
A *[]byte `json:"a"`
}{A: nil})},
},
{
name: "PtrHeadBytesPtrNilNotRootOmitEmpty",
data: struct {
A *struct {
A *[]byte `json:"a,omitempty"`
}
}{A: &(struct {
A *[]byte `json:"a,omitempty"`
}{A: nil})},
},
{
name: "PtrHeadBytesPtrNilNotRootString",
data: struct {
A *struct {
A *[]byte `json:"a,string"`
}
}{A: &(struct {
A *[]byte `json:"a,string"`
}{A: nil})},
},
// PtrHeadBytesNilNotRoot
{
name: "PtrHeadBytesNilNotRoot",
data: struct {
A *struct {
A *[]byte `json:"a"`
}
}{A: nil},
},
{
name: "PtrHeadBytesNilNotRootOmitEmpty",
data: struct {
A *struct {
A *[]byte `json:"a,omitempty"`
} `json:",omitempty"`
}{A: nil},
},
{
name: "PtrHeadBytesNilNotRootString",
data: struct {
A *struct {
A *[]byte `json:"a,string"`
} `json:",string"`
}{A: nil},
},
// HeadBytesZeroMultiFieldsNotRoot
{
name: "HeadBytesZeroMultiFieldsNotRoot",
data: struct {
A struct {
A []byte `json:"a"`
}
B struct {
B []byte `json:"b"`
}
}{},
},
{
name: "HeadBytesZeroMultiFieldsNotRootOmitEmpty",
data: struct {
A struct {
A []byte `json:"a,omitempty"`
}
B struct {
B []byte `json:"b,omitempty"`
}
}{},
},
{
name: "HeadBytesZeroMultiFieldsNotRootString",
data: struct {
A struct {
A []byte `json:"a,string"`
}
B struct {
B []byte `json:"b,string"`
}
}{},
},
// HeadBytesMultiFieldsNotRoot
{
name: "HeadBytesMultiFieldsNotRoot",
data: struct {
A struct {
A []byte `json:"a"`
}
B struct {
B []byte `json:"b"`
}
}{A: struct {
A []byte `json:"a"`
}{A: []byte("foo")}, B: struct {
B []byte `json:"b"`
}{B: []byte("bar")}},
},
{
name: "HeadBytesMultiFieldsNotRootOmitEmpty",
data: struct {
A struct {
A []byte `json:"a,omitempty"`
}
B struct {
B []byte `json:"b,omitempty"`
}
}{A: struct {
A []byte `json:"a,omitempty"`
}{A: []byte("foo")}, B: struct {
B []byte `json:"b,omitempty"`
}{B: []byte("bar")}},
},
{
name: "HeadBytesMultiFieldsNotRootString",
data: struct {
A struct {
A []byte `json:"a,string"`
}
B struct {
B []byte `json:"b,string"`
}
}{A: struct {
A []byte `json:"a,string"`
}{A: []byte("foo")}, B: struct {
B []byte `json:"b,string"`
}{B: []byte("bar")}},
},
// HeadBytesPtrMultiFieldsNotRoot
{
name: "HeadBytesPtrMultiFieldsNotRoot",
data: struct {
A struct {
A *[]byte `json:"a"`
}
B struct {
B *[]byte `json:"b"`
}
}{A: struct {
A *[]byte `json:"a"`
}{A: bytesptr([]byte("foo"))}, B: struct {
B *[]byte `json:"b"`
}{B: bytesptr([]byte("bar"))}},
},
{
name: "HeadBytesPtrMultiFieldsNotRootOmitEmpty",
data: struct {
A struct {
A *[]byte `json:"a,omitempty"`
}
B struct {
B *[]byte `json:"b,omitempty"`
}
}{A: struct {
A *[]byte `json:"a,omitempty"`
}{A: bytesptr([]byte("foo"))}, B: struct {
B *[]byte `json:"b,omitempty"`
}{B: bytesptr([]byte("bar"))}},
},
{
name: "HeadBytesPtrMultiFieldsNotRootString",
data: struct {
A struct {
A *[]byte `json:"a,string"`
}
B struct {
B *[]byte `json:"b,string"`
}
}{A: struct {
A *[]byte `json:"a,string"`
}{A: bytesptr([]byte("foo"))}, B: struct {
B *[]byte `json:"b,string"`
}{B: bytesptr([]byte("bar"))}},
},
// HeadBytesPtrNilMultiFieldsNotRoot
{
name: "HeadBytesPtrNilMultiFieldsNotRoot",
data: struct {
A struct {
A *[]byte `json:"a"`
}
B struct {
B *[]byte `json:"b"`
}
}{A: struct {
A *[]byte `json:"a"`
}{A: nil}, B: struct {
B *[]byte `json:"b"`
}{B: nil}},
},
{
name: "HeadBytesPtrNilMultiFieldsNotRootOmitEmpty",
data: struct {
A struct {
A *[]byte `json:"a,omitempty"`
}
B struct {
B *[]byte `json:"b,omitempty"`
}
}{A: struct {
A *[]byte `json:"a,omitempty"`
}{A: nil}, B: struct {
B *[]byte `json:"b,omitempty"`
}{B: nil}},
},
{
name: "HeadBytesPtrNilMultiFieldsNotRootString",
data: struct {
A struct {
A *[]byte `json:"a,string"`
}
B struct {
B *[]byte `json:"b,string"`
}
}{A: struct {
A *[]byte `json:"a,string"`
}{A: nil}, B: struct {
B *[]byte `json:"b,string"`
}{B: nil}},
},
// PtrHeadBytesZeroMultiFieldsNotRoot
{
name: "PtrHeadBytesZeroMultiFieldsNotRoot",
data: &struct {
A struct {
A []byte `json:"a"`
}
B struct {
B []byte `json:"b"`
}
}{},
},
{
name: "PtrHeadBytesZeroMultiFieldsNotRootOmitEmpty",
data: &struct {
A struct {
A []byte `json:"a,omitempty"`
}
B struct {
B []byte `json:"b,omitempty"`
}
}{},
},
{
name: "PtrHeadBytesZeroMultiFieldsNotRootString",
data: &struct {
A struct {
A []byte `json:"a,string"`
}
B struct {
B []byte `json:"b,string"`
}
}{},
},
// PtrHeadBytesMultiFieldsNotRoot
{
name: "PtrHeadBytesMultiFieldsNotRoot",
data: &struct {
A struct {
A []byte `json:"a"`
}
B struct {
B []byte `json:"b"`
}
}{A: struct {
A []byte `json:"a"`
}{A: []byte("foo")}, B: struct {
B []byte `json:"b"`
}{B: []byte("bar")}},
},
{
name: "PtrHeadBytesMultiFieldsNotRootOmitEmpty",
data: &struct {
A struct {
A []byte `json:"a,omitempty"`
}
B struct {
B []byte `json:"b,omitempty"`
}
}{A: struct {
A []byte `json:"a,omitempty"`
}{A: []byte("foo")}, B: struct {
B []byte `json:"b,omitempty"`
}{B: []byte("bar")}},
},
{
name: "PtrHeadBytesMultiFieldsNotRootString",
data: &struct {
A struct {
A []byte `json:"a,string"`
}
B struct {
B []byte `json:"b,string"`
}
}{A: struct {
A []byte `json:"a,string"`
}{A: []byte("foo")}, B: struct {
B []byte `json:"b,string"`
}{B: []byte("bar")}},
},
// PtrHeadBytesPtrMultiFieldsNotRoot
{
name: "PtrHeadBytesPtrMultiFieldsNotRoot",
data: &struct {
A *struct {
A *[]byte `json:"a"`
}
B *struct {
B *[]byte `json:"b"`
}
}{A: &(struct {
A *[]byte `json:"a"`
}{A: bytesptr([]byte("foo"))}), B: &(struct {
B *[]byte `json:"b"`
}{B: bytesptr([]byte("bar"))})},
},
{
name: "PtrHeadBytesPtrMultiFieldsNotRootOmitEmpty",
data: &struct {
A *struct {
A *[]byte `json:"a,omitempty"`
}
B *struct {
B *[]byte `json:"b,omitempty"`
}
}{A: &(struct {
A *[]byte `json:"a,omitempty"`
}{A: bytesptr([]byte("foo"))}), B: &(struct {
B *[]byte `json:"b,omitempty"`
}{B: bytesptr([]byte("bar"))})},
},
{
name: "PtrHeadBytesPtrMultiFieldsNotRootString",
data: &struct {
A *struct {
A *[]byte `json:"a,string"`
}
B *struct {
B *[]byte `json:"b,string"`
}
}{A: &(struct {
A *[]byte `json:"a,string"`
}{A: bytesptr([]byte("foo"))}), B: &(struct {
B *[]byte `json:"b,string"`
}{B: bytesptr([]byte("bar"))})},
},
// PtrHeadBytesPtrNilMultiFieldsNotRoot
{
name: "PtrHeadBytesPtrNilMultiFieldsNotRoot",
data: &struct {
A *struct {
A *[]byte `json:"a"`
}
B *struct {
B *[]byte `json:"b"`
}
}{A: nil, B: nil},
},
{
name: "PtrHeadBytesPtrNilMultiFieldsNotRootOmitEmpty",
data: &struct {
A *struct {
A *[]byte `json:"a,omitempty"`
}
B *struct {
B *[]byte `json:"b,omitempty"`
}
}{A: nil, B: nil},
},
{
name: "PtrHeadBytesPtrNilMultiFieldsNotRootString",
data: &struct {
A *struct {
A *[]byte `json:"a,string"`
}
B *struct {
B *[]byte `json:"b,string"`
}
}{A: nil, B: nil},
},
// PtrHeadBytesNilMultiFieldsNotRoot
{
name: "PtrHeadBytesNilMultiFieldsNotRoot",
data: (*struct {
A *struct {
A *[]byte `json:"a"`
}
B *struct {
B *[]byte `json:"b"`
}
})(nil),
},
{
name: "PtrHeadBytesNilMultiFieldsNotRootOmitEmpty",
data: (*struct {
A *struct {
A *[]byte `json:"a,omitempty"`
}
B *struct {
B *[]byte `json:"b,omitempty"`
}
})(nil),
},
{
name: "PtrHeadBytesNilMultiFieldsNotRootString",
data: (*struct {
A *struct {
A *[]byte `json:"a,string"`
}
B *struct {
B *[]byte `json:"b,string"`
}
})(nil),
},
// PtrHeadBytesDoubleMultiFieldsNotRoot
{
name: "PtrHeadBytesDoubleMultiFieldsNotRoot",
data: &struct {
A *struct {
A []byte `json:"a"`
B []byte `json:"b"`
C []byte `json:"c"`
}
B *struct {
A []byte `json:"a"`
B []byte `json:"b"`
C []byte `json:"c"`
}
}{A: &(struct {
A []byte `json:"a"`
B []byte `json:"b"`
C []byte `json:"c"`
}{A: []byte("foo"), B: []byte("bar"), C: []byte("baz")}), B: &(struct {
A []byte `json:"a"`
B []byte `json:"b"`
C []byte `json:"c"`
}{A: []byte("foo"), B: []byte("bar"), C: []byte("baz")})},
},
{
name: "PtrHeadBytesDoubleMultiFieldsNotRootOmitEmpty",
data: &struct {
A *struct {
A []byte `json:"a,omitempty"`
B []byte `json:"b,omitempty"`
}
B *struct {
A []byte `json:"a,omitempty"`
B []byte `json:"b,omitempty"`
}
}{A: &(struct {
A []byte `json:"a,omitempty"`
B []byte `json:"b,omitempty"`
}{A: []byte("foo"), B: []byte("bar")}), B: &(struct {
A []byte `json:"a,omitempty"`
B []byte `json:"b,omitempty"`
}{A: []byte("foo"), B: []byte("bar")})},
},
{
name: "PtrHeadBytesDoubleMultiFieldsNotRootString",
data: &struct {
A *struct {
A []byte `json:"a,string"`
B []byte `json:"b,string"`
}
B *struct {
A []byte `json:"a,string"`
B []byte `json:"b,string"`
}
}{A: &(struct {
A []byte `json:"a,string"`
B []byte `json:"b,string"`
}{A: []byte("foo"), B: []byte("bar")}), B: &(struct {
A []byte `json:"a,string"`
B []byte `json:"b,string"`
}{A: []byte("foo"), B: []byte("bar")})},
},
// PtrHeadBytesNilDoubleMultiFieldsNotRoot
{
name: "PtrHeadBytesNilDoubleMultiFieldsNotRoot",
data: &struct {
A *struct {
A []byte `json:"a"`
B []byte `json:"b"`
}
B *struct {
A []byte `json:"a"`
B []byte `json:"b"`
}
}{A: nil, B: nil},
},
{
name: "PtrHeadBytesNilDoubleMultiFieldsNotRootOmitEmpty",
data: &struct {
A *struct {
A []byte `json:"a,omitempty"`
B []byte `json:"b,omitempty"`
}
B *struct {
A []byte `json:"a,omitempty"`
B []byte `json:"b,omitempty"`
}
}{A: nil, B: nil},
},
{
name: "PtrHeadBytesNilDoubleMultiFieldsNotRootString",
data: &struct {
A *struct {
A []byte `json:"a,string"`
B []byte `json:"b,string"`
}
B *struct {
A []byte `json:"a,string"`
B []byte `json:"b,string"`
}
}{A: nil, B: nil},
},
// PtrHeadBytesNilDoubleMultiFieldsNotRoot
{
name: "PtrHeadBytesNilDoubleMultiFieldsNotRoot",
data: (*struct {
A *struct {
A []byte `json:"a"`
B []byte `json:"b"`
}
B *struct {
A []byte `json:"a"`
B []byte `json:"b"`
}
})(nil),
},
{
name: "PtrHeadBytesNilDoubleMultiFieldsNotRootOmitEmpty",
data: (*struct {
A *struct {
A []byte `json:"a,omitempty"`
B []byte `json:"b,omitempty"`
}
B *struct {
A []byte `json:"a,omitempty"`
B []byte `json:"b,omitempty"`
}
})(nil),
},
{
name: "PtrHeadBytesNilDoubleMultiFieldsNotRootString",
data: (*struct {
A *struct {
A []byte `json:"a,string"`
B []byte `json:"b,string"`
}
B *struct {
A []byte `json:"a,string"`
B []byte `json:"b,string"`
}
})(nil),
},
// PtrHeadBytesPtrDoubleMultiFieldsNotRoot
{
name: "PtrHeadBytesPtrDoubleMultiFieldsNotRoot",
data: &struct {
A *struct {
A *[]byte `json:"a"`
B *[]byte `json:"b"`
}
B *struct {
A *[]byte `json:"a"`
B *[]byte `json:"b"`
}
}{A: &(struct {
A *[]byte `json:"a"`
B *[]byte `json:"b"`
}{A: bytesptr([]byte("foo")), B: bytesptr([]byte("bar"))}), B: &(struct {
A *[]byte `json:"a"`
B *[]byte `json:"b"`
}{A: bytesptr([]byte("foo")), B: bytesptr([]byte("bar"))})},
},
{
name: "PtrHeadBytesPtrDoubleMultiFieldsNotRootOmitEmpty",
data: &struct {
A *struct {
A *[]byte `json:"a,omitempty"`
B *[]byte `json:"b,omitempty"`
}
B *struct {
A *[]byte `json:"a,omitempty"`
B *[]byte `json:"b,omitempty"`
}
}{A: &(struct {
A *[]byte `json:"a,omitempty"`
B *[]byte `json:"b,omitempty"`
}{A: bytesptr([]byte("foo")), B: bytesptr([]byte("bar"))}), B: &(struct {
A *[]byte `json:"a,omitempty"`
B *[]byte `json:"b,omitempty"`
}{A: bytesptr([]byte("foo")), B: bytesptr([]byte("bar"))})},
},
{
name: "PtrHeadBytesPtrDoubleMultiFieldsNotRootString",
data: &struct {
A *struct {
A *[]byte `json:"a,string"`
B *[]byte `json:"b,string"`
}
B *struct {
A *[]byte `json:"a,string"`
B *[]byte `json:"b,string"`
}
}{A: &(struct {
A *[]byte `json:"a,string"`
B *[]byte `json:"b,string"`
}{A: bytesptr([]byte("foo")), B: bytesptr([]byte("bar"))}), B: &(struct {
A *[]byte `json:"a,string"`
B *[]byte `json:"b,string"`
}{A: bytesptr([]byte("foo")), B: bytesptr([]byte("bar"))})},
},
// PtrHeadBytesPtrNilDoubleMultiFieldsNotRoot
{
name: "PtrHeadBytesPtrNilDoubleMultiFieldsNotRoot",
data: &struct {
A *struct {
A *[]byte `json:"a"`
B *[]byte `json:"b"`
}
B *struct {
A *[]byte `json:"a"`
B *[]byte `json:"b"`
}
}{A