Compare commits

...

7 Commits

Author SHA1 Message Date
Masaaki Goshima dc6fd0dd72 Add test case 2021-02-22 00:59:47 +09:00
Masaaki Goshima 6990aa6938 Add EmptyStruct operation 2021-02-22 00:55:20 +09:00
Masaaki Goshima ef165af9cd Generate encode_optype.go 2021-02-22 00:54:34 +09:00
Masaaki Goshima 73fbc98667 Fix test case 2021-02-19 15:08:30 +09:00
Masaaki Goshima a324a29256 Pass test 2021-02-19 15:03:52 +09:00
Masaaki Goshima 413c811e37 WIP: workaround 2021-02-19 03:34:21 +09:00
Masaaki Goshima 0272fd00f4 WIP: Integrate int/uint operation 2021-02-19 03:06:21 +09:00
15 changed files with 3253 additions and 25149 deletions

View File

@ -295,18 +295,12 @@ func (t opType) fieldToStringTagField() opType {
"StructEnd", "StructEnd",
} }
primitiveTypes := []string{ primitiveTypes := []string{
"int", "int8", "int16", "int32", "int64", "int", "uint", "float32", "float64", "bool", "string", "bytes",
"uint", "uint8", "uint16", "uint32", "uint64",
"float32", "float64", "bool", "string", "bytes",
"array", "map", "mapLoad", "slice", "struct", "MarshalJSON", "MarshalText", "recursive", "array", "map", "mapLoad", "slice", "struct", "MarshalJSON", "MarshalText", "recursive",
"intString", "int8String", "int16String", "int32String", "int64String", "intString", "uintString",
"uintString", "uint8String", "uint16String", "uint32String", "uint64String", "intPtr", "uintPtr", "float32Ptr", "float64Ptr", "boolPtr", "stringPtr", "bytesPtr",
"intPtr", "int8Ptr", "int16Ptr", "int32Ptr", "int64Ptr", "intNPtr", "uintNPtr", "float32NPtr", "float64NPtr", "boolNPtr", "stringNPtr", "bytesNPtr",
"uintPtr", "uint8Ptr", "uint16Ptr", "uint32Ptr", "uint64Ptr", "emptyStruct", "emptyStructPtr",
"float32Ptr", "float64Ptr", "boolPtr", "stringPtr", "bytesPtr",
"intNPtr", "int8NPtr", "int16NPtr", "int32NPtr", "int64NPtr",
"uintNPtr", "uint8NPtr", "uint16NPtr", "uint32NPtr", "uint64NPtr",
"float32NPtr", "float64NPtr", "boolNPtr", "stringNPtr", "bytesNPtr",
} }
primitiveTypesUpper := []string{} primitiveTypesUpper := []string{}
for _, typ := range primitiveTypes { for _, typ := range primitiveTypes {
@ -408,8 +402,7 @@ func (t opType) fieldToStringTagField() opType {
switch typ { switch typ {
case "", "Array", "Map", "MapLoad", "Slice", case "", "Array", "Map", "MapLoad", "Slice",
"Struct", "Recursive", "MarshalJSON", "MarshalText", "Struct", "Recursive", "MarshalJSON", "MarshalText",
"IntString", "Int8String", "Int16String", "Int32String", "Int64String", "IntString", "UintString":
"UintString", "Uint8String", "Uint16String", "Uint32String", "Uint64String":
return op return op
} }
return fmt.Sprintf( return fmt.Sprintf(

View File

@ -245,7 +245,7 @@ func TestCoverInt16(t *testing.T) {
A int16 `json:"a"` A int16 `json:"a"`
B int16 `json:"b"` B int16 `json:"b"`
C int16 `json:"c"` C int16 `json:"c"`
}{A: 1, B: 2, C: 3}, }{A: 1, B: -2, C: 3},
}, },
{ {
name: "HeadInt16MultiFieldsOmitEmpty", name: "HeadInt16MultiFieldsOmitEmpty",
@ -253,7 +253,7 @@ func TestCoverInt16(t *testing.T) {
A int16 `json:"a,omitempty"` A int16 `json:"a,omitempty"`
B int16 `json:"b,omitempty"` B int16 `json:"b,omitempty"`
C int16 `json:"c,omitempty"` C int16 `json:"c,omitempty"`
}{A: 1, B: 2, C: 3}, }{A: 1, B: -2, C: 3},
}, },
{ {
name: "HeadInt16MultiFieldsString", name: "HeadInt16MultiFieldsString",
@ -261,7 +261,7 @@ func TestCoverInt16(t *testing.T) {
A int16 `json:"a,string"` A int16 `json:"a,string"`
B int16 `json:"b,string"` B int16 `json:"b,string"`
C int16 `json:"c,string"` C int16 `json:"c,string"`
}{A: 1, B: 2, C: 3}, }{A: 1, B: -2, C: 3},
}, },
// HeadInt16PtrMultiFields // HeadInt16PtrMultiFields
@ -271,7 +271,7 @@ func TestCoverInt16(t *testing.T) {
A *int16 `json:"a"` A *int16 `json:"a"`
B *int16 `json:"b"` B *int16 `json:"b"`
C *int16 `json:"c"` C *int16 `json:"c"`
}{A: int16ptr(1), B: int16ptr(2), C: int16ptr(3)}, }{A: int16ptr(1), B: int16ptr(-2), C: int16ptr(3)},
}, },
{ {
name: "HeadInt16PtrMultiFieldsOmitEmpty", name: "HeadInt16PtrMultiFieldsOmitEmpty",
@ -279,7 +279,7 @@ func TestCoverInt16(t *testing.T) {
A *int16 `json:"a,omitempty"` A *int16 `json:"a,omitempty"`
B *int16 `json:"b,omitempty"` B *int16 `json:"b,omitempty"`
C *int16 `json:"c,omitempty"` C *int16 `json:"c,omitempty"`
}{A: int16ptr(1), B: int16ptr(2), C: int16ptr(3)}, }{A: int16ptr(1), B: int16ptr(-2), C: int16ptr(3)},
}, },
{ {
name: "HeadInt16PtrMultiFieldsString", name: "HeadInt16PtrMultiFieldsString",
@ -287,7 +287,7 @@ func TestCoverInt16(t *testing.T) {
A *int16 `json:"a,string"` A *int16 `json:"a,string"`
B *int16 `json:"b,string"` B *int16 `json:"b,string"`
C *int16 `json:"c,string"` C *int16 `json:"c,string"`
}{A: int16ptr(1), B: int16ptr(2), C: int16ptr(3)}, }{A: int16ptr(1), B: int16ptr(-2), C: int16ptr(3)},
}, },
// HeadInt16PtrNilMultiFields // HeadInt16PtrNilMultiFields
@ -345,21 +345,21 @@ func TestCoverInt16(t *testing.T) {
data: &struct { data: &struct {
A int16 `json:"a"` A int16 `json:"a"`
B int16 `json:"b"` B int16 `json:"b"`
}{A: 1, B: 2}, }{A: 1, B: -2},
}, },
{ {
name: "PtrHeadInt16MultiFieldsOmitEmpty", name: "PtrHeadInt16MultiFieldsOmitEmpty",
data: &struct { data: &struct {
A int16 `json:"a,omitempty"` A int16 `json:"a,omitempty"`
B int16 `json:"b,omitempty"` B int16 `json:"b,omitempty"`
}{A: 1, B: 2}, }{A: 1, B: -2},
}, },
{ {
name: "PtrHeadInt16MultiFieldsString", name: "PtrHeadInt16MultiFieldsString",
data: &struct { data: &struct {
A int16 `json:"a,string"` A int16 `json:"a,string"`
B int16 `json:"b,string"` B int16 `json:"b,string"`
}{A: 1, B: 2}, }{A: 1, B: -2},
}, },
// PtrHeadInt16PtrMultiFields // PtrHeadInt16PtrMultiFields
@ -368,21 +368,21 @@ func TestCoverInt16(t *testing.T) {
data: &struct { data: &struct {
A *int16 `json:"a"` A *int16 `json:"a"`
B *int16 `json:"b"` B *int16 `json:"b"`
}{A: int16ptr(1), B: int16ptr(2)}, }{A: int16ptr(1), B: int16ptr(-2)},
}, },
{ {
name: "PtrHeadInt16PtrMultiFieldsOmitEmpty", name: "PtrHeadInt16PtrMultiFieldsOmitEmpty",
data: &struct { data: &struct {
A *int16 `json:"a,omitempty"` A *int16 `json:"a,omitempty"`
B *int16 `json:"b,omitempty"` B *int16 `json:"b,omitempty"`
}{A: int16ptr(1), B: int16ptr(2)}, }{A: int16ptr(1), B: int16ptr(-2)},
}, },
{ {
name: "PtrHeadInt16PtrMultiFieldsString", name: "PtrHeadInt16PtrMultiFieldsString",
data: &struct { data: &struct {
A *int16 `json:"a,string"` A *int16 `json:"a,string"`
B *int16 `json:"b,string"` B *int16 `json:"b,string"`
}{A: int16ptr(1), B: int16ptr(2)}, }{A: int16ptr(1), B: int16ptr(-2)},
}, },
// PtrHeadInt16PtrNilMultiFields // PtrHeadInt16PtrNilMultiFields
@ -750,7 +750,7 @@ func TestCoverInt16(t *testing.T) {
A int16 `json:"a"` A int16 `json:"a"`
}{A: 1}, B: struct { }{A: 1}, B: struct {
B int16 `json:"b"` B int16 `json:"b"`
}{B: 2}}, }{B: -2}},
}, },
{ {
name: "HeadInt16MultiFieldsNotRootOmitEmpty", name: "HeadInt16MultiFieldsNotRootOmitEmpty",
@ -765,7 +765,7 @@ func TestCoverInt16(t *testing.T) {
A int16 `json:"a,omitempty"` A int16 `json:"a,omitempty"`
}{A: 1}, B: struct { }{A: 1}, B: struct {
B int16 `json:"b,omitempty"` B int16 `json:"b,omitempty"`
}{B: 2}}, }{B: -2}},
}, },
{ {
name: "HeadInt16MultiFieldsNotRootString", name: "HeadInt16MultiFieldsNotRootString",
@ -780,7 +780,7 @@ func TestCoverInt16(t *testing.T) {
A int16 `json:"a,string"` A int16 `json:"a,string"`
}{A: 1}, B: struct { }{A: 1}, B: struct {
B int16 `json:"b,string"` B int16 `json:"b,string"`
}{B: 2}}, }{B: -2}},
}, },
// HeadInt16PtrMultiFieldsNotRoot // HeadInt16PtrMultiFieldsNotRoot
@ -797,7 +797,7 @@ func TestCoverInt16(t *testing.T) {
A *int16 `json:"a"` A *int16 `json:"a"`
}{A: int16ptr(1)}, B: struct { }{A: int16ptr(1)}, B: struct {
B *int16 `json:"b"` B *int16 `json:"b"`
}{B: int16ptr(2)}}, }{B: int16ptr(-2)}},
}, },
{ {
name: "HeadInt16PtrMultiFieldsNotRootOmitEmpty", name: "HeadInt16PtrMultiFieldsNotRootOmitEmpty",
@ -812,7 +812,7 @@ func TestCoverInt16(t *testing.T) {
A *int16 `json:"a,omitempty"` A *int16 `json:"a,omitempty"`
}{A: int16ptr(1)}, B: struct { }{A: int16ptr(1)}, B: struct {
B *int16 `json:"b,omitempty"` B *int16 `json:"b,omitempty"`
}{B: int16ptr(2)}}, }{B: int16ptr(-2)}},
}, },
{ {
name: "HeadInt16PtrMultiFieldsNotRootString", name: "HeadInt16PtrMultiFieldsNotRootString",
@ -827,7 +827,7 @@ func TestCoverInt16(t *testing.T) {
A *int16 `json:"a,string"` A *int16 `json:"a,string"`
}{A: int16ptr(1)}, B: struct { }{A: int16ptr(1)}, B: struct {
B *int16 `json:"b,string"` B *int16 `json:"b,string"`
}{B: int16ptr(2)}}, }{B: int16ptr(-2)}},
}, },
// HeadInt16PtrNilMultiFieldsNotRoot // HeadInt16PtrNilMultiFieldsNotRoot
@ -926,7 +926,7 @@ func TestCoverInt16(t *testing.T) {
A int16 `json:"a"` A int16 `json:"a"`
}{A: 1}, B: struct { }{A: 1}, B: struct {
B int16 `json:"b"` B int16 `json:"b"`
}{B: 2}}, }{B: -2}},
}, },
{ {
name: "PtrHeadInt16MultiFieldsNotRootOmitEmpty", name: "PtrHeadInt16MultiFieldsNotRootOmitEmpty",
@ -941,7 +941,7 @@ func TestCoverInt16(t *testing.T) {
A int16 `json:"a,omitempty"` A int16 `json:"a,omitempty"`
}{A: 1}, B: struct { }{A: 1}, B: struct {
B int16 `json:"b,omitempty"` B int16 `json:"b,omitempty"`
}{B: 2}}, }{B: -2}},
}, },
{ {
name: "PtrHeadInt16MultiFieldsNotRootString", name: "PtrHeadInt16MultiFieldsNotRootString",
@ -956,7 +956,7 @@ func TestCoverInt16(t *testing.T) {
A int16 `json:"a,string"` A int16 `json:"a,string"`
}{A: 1}, B: struct { }{A: 1}, B: struct {
B int16 `json:"b,string"` B int16 `json:"b,string"`
}{B: 2}}, }{B: -2}},
}, },
// PtrHeadInt16PtrMultiFieldsNotRoot // PtrHeadInt16PtrMultiFieldsNotRoot
@ -973,7 +973,7 @@ func TestCoverInt16(t *testing.T) {
A *int16 `json:"a"` A *int16 `json:"a"`
}{A: int16ptr(1)}), B: &(struct { }{A: int16ptr(1)}), B: &(struct {
B *int16 `json:"b"` B *int16 `json:"b"`
}{B: int16ptr(2)})}, }{B: int16ptr(-2)})},
}, },
{ {
name: "PtrHeadInt16PtrMultiFieldsNotRootOmitEmpty", name: "PtrHeadInt16PtrMultiFieldsNotRootOmitEmpty",
@ -988,7 +988,7 @@ func TestCoverInt16(t *testing.T) {
A *int16 `json:"a,omitempty"` A *int16 `json:"a,omitempty"`
}{A: int16ptr(1)}), B: &(struct { }{A: int16ptr(1)}), B: &(struct {
B *int16 `json:"b,omitempty"` B *int16 `json:"b,omitempty"`
}{B: int16ptr(2)})}, }{B: int16ptr(-2)})},
}, },
{ {
name: "PtrHeadInt16PtrMultiFieldsNotRootString", name: "PtrHeadInt16PtrMultiFieldsNotRootString",
@ -1003,7 +1003,7 @@ func TestCoverInt16(t *testing.T) {
A *int16 `json:"a,string"` A *int16 `json:"a,string"`
}{A: int16ptr(1)}), B: &(struct { }{A: int16ptr(1)}), B: &(struct {
B *int16 `json:"b,string"` B *int16 `json:"b,string"`
}{B: int16ptr(2)})}, }{B: int16ptr(-2)})},
}, },
// PtrHeadInt16PtrNilMultiFieldsNotRoot // PtrHeadInt16PtrNilMultiFieldsNotRoot
@ -1091,7 +1091,7 @@ func TestCoverInt16(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A int16 `json:"a"` A int16 `json:"a"`
B int16 `json:"b"` B int16 `json:"b"`
}{A: 1, B: 2}), B: &(struct { }{A: 1, B: -2}), B: &(struct {
A int16 `json:"a"` A int16 `json:"a"`
B int16 `json:"b"` B int16 `json:"b"`
}{A: 3, B: 4})}, }{A: 3, B: 4})},
@ -1110,7 +1110,7 @@ func TestCoverInt16(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A int16 `json:"a,omitempty"` A int16 `json:"a,omitempty"`
B int16 `json:"b,omitempty"` B int16 `json:"b,omitempty"`
}{A: 1, B: 2}), B: &(struct { }{A: 1, B: -2}), B: &(struct {
A int16 `json:"a,omitempty"` A int16 `json:"a,omitempty"`
B int16 `json:"b,omitempty"` B int16 `json:"b,omitempty"`
}{A: 3, B: 4})}, }{A: 3, B: 4})},
@ -1129,7 +1129,7 @@ func TestCoverInt16(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A int16 `json:"a,string"` A int16 `json:"a,string"`
B int16 `json:"b,string"` B int16 `json:"b,string"`
}{A: 1, B: 2}), B: &(struct { }{A: 1, B: -2}), B: &(struct {
A int16 `json:"a,string"` A int16 `json:"a,string"`
B int16 `json:"b,string"` B int16 `json:"b,string"`
}{A: 3, B: 4})}, }{A: 3, B: 4})},
@ -1232,7 +1232,7 @@ func TestCoverInt16(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A *int16 `json:"a"` A *int16 `json:"a"`
B *int16 `json:"b"` B *int16 `json:"b"`
}{A: int16ptr(1), B: int16ptr(2)}), B: &(struct { }{A: int16ptr(1), B: int16ptr(-2)}), B: &(struct {
A *int16 `json:"a"` A *int16 `json:"a"`
B *int16 `json:"b"` B *int16 `json:"b"`
}{A: int16ptr(3), B: int16ptr(4)})}, }{A: int16ptr(3), B: int16ptr(4)})},
@ -1251,7 +1251,7 @@ func TestCoverInt16(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A *int16 `json:"a,omitempty"` A *int16 `json:"a,omitempty"`
B *int16 `json:"b,omitempty"` B *int16 `json:"b,omitempty"`
}{A: int16ptr(1), B: int16ptr(2)}), B: &(struct { }{A: int16ptr(1), B: int16ptr(-2)}), B: &(struct {
A *int16 `json:"a,omitempty"` A *int16 `json:"a,omitempty"`
B *int16 `json:"b,omitempty"` B *int16 `json:"b,omitempty"`
}{A: int16ptr(3), B: int16ptr(4)})}, }{A: int16ptr(3), B: int16ptr(4)})},
@ -1270,7 +1270,7 @@ func TestCoverInt16(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A *int16 `json:"a,string"` A *int16 `json:"a,string"`
B *int16 `json:"b,string"` B *int16 `json:"b,string"`
}{A: int16ptr(1), B: int16ptr(2)}), B: &(struct { }{A: int16ptr(1), B: int16ptr(-2)}), B: &(struct {
A *int16 `json:"a,string"` A *int16 `json:"a,string"`
B *int16 `json:"b,string"` B *int16 `json:"b,string"`
}{A: int16ptr(3), B: int16ptr(4)})}, }{A: int16ptr(3), B: int16ptr(4)})},
@ -1366,7 +1366,7 @@ func TestCoverInt16(t *testing.T) {
B int16 `json:"b"` B int16 `json:"b"`
}{ }{
structInt16: structInt16{A: 1}, structInt16: structInt16{A: 1},
B: 2, B: -2,
}, },
}, },
{ {
@ -1376,7 +1376,7 @@ func TestCoverInt16(t *testing.T) {
B int16 `json:"b,omitempty"` B int16 `json:"b,omitempty"`
}{ }{
structInt16OmitEmpty: structInt16OmitEmpty{A: 1}, structInt16OmitEmpty: structInt16OmitEmpty{A: 1},
B: 2, B: -2,
}, },
}, },
{ {
@ -1386,7 +1386,7 @@ func TestCoverInt16(t *testing.T) {
B int16 `json:"b,string"` B int16 `json:"b,string"`
}{ }{
structInt16String: structInt16String{A: 1}, structInt16String: structInt16String{A: 1},
B: 2, B: -2,
}, },
}, },
@ -1398,7 +1398,7 @@ func TestCoverInt16(t *testing.T) {
B int16 `json:"b"` B int16 `json:"b"`
}{ }{
structInt16: &structInt16{A: 1}, structInt16: &structInt16{A: 1},
B: 2, B: -2,
}, },
}, },
{ {
@ -1408,7 +1408,7 @@ func TestCoverInt16(t *testing.T) {
B int16 `json:"b,omitempty"` B int16 `json:"b,omitempty"`
}{ }{
structInt16OmitEmpty: &structInt16OmitEmpty{A: 1}, structInt16OmitEmpty: &structInt16OmitEmpty{A: 1},
B: 2, B: -2,
}, },
}, },
{ {
@ -1418,7 +1418,7 @@ func TestCoverInt16(t *testing.T) {
B int16 `json:"b,string"` B int16 `json:"b,string"`
}{ }{
structInt16String: &structInt16String{A: 1}, structInt16String: &structInt16String{A: 1},
B: 2, B: -2,
}, },
}, },
@ -1430,7 +1430,7 @@ func TestCoverInt16(t *testing.T) {
B int16 `json:"b"` B int16 `json:"b"`
}{ }{
structInt16: nil, structInt16: nil,
B: 2, B: -2,
}, },
}, },
{ {
@ -1440,7 +1440,7 @@ func TestCoverInt16(t *testing.T) {
B int16 `json:"b,omitempty"` B int16 `json:"b,omitempty"`
}{ }{
structInt16OmitEmpty: nil, structInt16OmitEmpty: nil,
B: 2, B: -2,
}, },
}, },
{ {
@ -1450,7 +1450,7 @@ func TestCoverInt16(t *testing.T) {
B int16 `json:"b,string"` B int16 `json:"b,string"`
}{ }{
structInt16String: nil, structInt16String: nil,
B: 2, B: -2,
}, },
}, },
@ -1462,7 +1462,7 @@ func TestCoverInt16(t *testing.T) {
B *int16 `json:"b"` B *int16 `json:"b"`
}{ }{
structInt16Ptr: structInt16Ptr{A: int16ptr(1)}, structInt16Ptr: structInt16Ptr{A: int16ptr(1)},
B: int16ptr(2), B: int16ptr(-2),
}, },
}, },
{ {
@ -1472,7 +1472,7 @@ func TestCoverInt16(t *testing.T) {
B *int16 `json:"b,omitempty"` B *int16 `json:"b,omitempty"`
}{ }{
structInt16PtrOmitEmpty: structInt16PtrOmitEmpty{A: int16ptr(1)}, structInt16PtrOmitEmpty: structInt16PtrOmitEmpty{A: int16ptr(1)},
B: int16ptr(2), B: int16ptr(-2),
}, },
}, },
{ {
@ -1482,7 +1482,7 @@ func TestCoverInt16(t *testing.T) {
B *int16 `json:"b,string"` B *int16 `json:"b,string"`
}{ }{
structInt16PtrString: structInt16PtrString{A: int16ptr(1)}, structInt16PtrString: structInt16PtrString{A: int16ptr(1)},
B: int16ptr(2), B: int16ptr(-2),
}, },
}, },
@ -1494,7 +1494,7 @@ func TestCoverInt16(t *testing.T) {
B *int16 `json:"b"` B *int16 `json:"b"`
}{ }{
structInt16Ptr: structInt16Ptr{A: nil}, structInt16Ptr: structInt16Ptr{A: nil},
B: int16ptr(2), B: int16ptr(-2),
}, },
}, },
{ {
@ -1504,7 +1504,7 @@ func TestCoverInt16(t *testing.T) {
B *int16 `json:"b,omitempty"` B *int16 `json:"b,omitempty"`
}{ }{
structInt16PtrOmitEmpty: structInt16PtrOmitEmpty{A: nil}, structInt16PtrOmitEmpty: structInt16PtrOmitEmpty{A: nil},
B: int16ptr(2), B: int16ptr(-2),
}, },
}, },
{ {
@ -1514,7 +1514,7 @@ func TestCoverInt16(t *testing.T) {
B *int16 `json:"b,string"` B *int16 `json:"b,string"`
}{ }{
structInt16PtrString: structInt16PtrString{A: nil}, structInt16PtrString: structInt16PtrString{A: nil},
B: int16ptr(2), B: int16ptr(-2),
}, },
}, },
@ -1526,7 +1526,7 @@ func TestCoverInt16(t *testing.T) {
B *int16 `json:"b"` B *int16 `json:"b"`
}{ }{
structInt16Ptr: &structInt16Ptr{A: int16ptr(1)}, structInt16Ptr: &structInt16Ptr{A: int16ptr(1)},
B: int16ptr(2), B: int16ptr(-2),
}, },
}, },
{ {
@ -1536,7 +1536,7 @@ func TestCoverInt16(t *testing.T) {
B *int16 `json:"b,omitempty"` B *int16 `json:"b,omitempty"`
}{ }{
structInt16PtrOmitEmpty: &structInt16PtrOmitEmpty{A: int16ptr(1)}, structInt16PtrOmitEmpty: &structInt16PtrOmitEmpty{A: int16ptr(1)},
B: int16ptr(2), B: int16ptr(-2),
}, },
}, },
{ {
@ -1546,7 +1546,7 @@ func TestCoverInt16(t *testing.T) {
B *int16 `json:"b,string"` B *int16 `json:"b,string"`
}{ }{
structInt16PtrString: &structInt16PtrString{A: int16ptr(1)}, structInt16PtrString: &structInt16PtrString{A: int16ptr(1)},
B: int16ptr(2), B: int16ptr(-2),
}, },
}, },
@ -1558,7 +1558,7 @@ func TestCoverInt16(t *testing.T) {
B *int16 `json:"b"` B *int16 `json:"b"`
}{ }{
structInt16Ptr: nil, structInt16Ptr: nil,
B: int16ptr(2), B: int16ptr(-2),
}, },
}, },
{ {
@ -1568,7 +1568,7 @@ func TestCoverInt16(t *testing.T) {
B *int16 `json:"b,omitempty"` B *int16 `json:"b,omitempty"`
}{ }{
structInt16PtrOmitEmpty: nil, structInt16PtrOmitEmpty: nil,
B: int16ptr(2), B: int16ptr(-2),
}, },
}, },
{ {
@ -1578,7 +1578,7 @@ func TestCoverInt16(t *testing.T) {
B *int16 `json:"b,string"` B *int16 `json:"b,string"`
}{ }{
structInt16PtrString: nil, structInt16PtrString: nil,
B: int16ptr(2), B: int16ptr(-2),
}, },
}, },

View File

@ -57,19 +57,19 @@ func TestCoverInt32(t *testing.T) {
name: "HeadInt32", name: "HeadInt32",
data: struct { data: struct {
A int32 `json:"a"` A int32 `json:"a"`
}{A: 1}, }{A: -1},
}, },
{ {
name: "HeadInt32OmitEmpty", name: "HeadInt32OmitEmpty",
data: struct { data: struct {
A int32 `json:"a,omitempty"` A int32 `json:"a,omitempty"`
}{A: 1}, }{A: -1},
}, },
{ {
name: "HeadInt32String", name: "HeadInt32String",
data: struct { data: struct {
A int32 `json:"a,string"` A int32 `json:"a,string"`
}{A: 1}, }{A: -1},
}, },
// HeadInt32Ptr // HeadInt32Ptr
@ -77,19 +77,19 @@ func TestCoverInt32(t *testing.T) {
name: "HeadInt32Ptr", name: "HeadInt32Ptr",
data: struct { data: struct {
A *int32 `json:"a"` A *int32 `json:"a"`
}{A: int32ptr(1)}, }{A: int32ptr(-1)},
}, },
{ {
name: "HeadInt32PtrOmitEmpty", name: "HeadInt32PtrOmitEmpty",
data: struct { data: struct {
A *int32 `json:"a,omitempty"` A *int32 `json:"a,omitempty"`
}{A: int32ptr(1)}, }{A: int32ptr(-1)},
}, },
{ {
name: "HeadInt32PtrString", name: "HeadInt32PtrString",
data: struct { data: struct {
A *int32 `json:"a,string"` A *int32 `json:"a,string"`
}{A: int32ptr(1)}, }{A: int32ptr(-1)},
}, },
// HeadInt32PtrNil // HeadInt32PtrNil
@ -137,19 +137,19 @@ func TestCoverInt32(t *testing.T) {
name: "PtrHeadInt32", name: "PtrHeadInt32",
data: &struct { data: &struct {
A int32 `json:"a"` A int32 `json:"a"`
}{A: 1}, }{A: -1},
}, },
{ {
name: "PtrHeadInt32OmitEmpty", name: "PtrHeadInt32OmitEmpty",
data: &struct { data: &struct {
A int32 `json:"a,omitempty"` A int32 `json:"a,omitempty"`
}{A: 1}, }{A: -1},
}, },
{ {
name: "PtrHeadInt32String", name: "PtrHeadInt32String",
data: &struct { data: &struct {
A int32 `json:"a,string"` A int32 `json:"a,string"`
}{A: 1}, }{A: -1},
}, },
// PtrHeadInt32Ptr // PtrHeadInt32Ptr
@ -157,19 +157,19 @@ func TestCoverInt32(t *testing.T) {
name: "PtrHeadInt32Ptr", name: "PtrHeadInt32Ptr",
data: &struct { data: &struct {
A *int32 `json:"a"` A *int32 `json:"a"`
}{A: int32ptr(1)}, }{A: int32ptr(-1)},
}, },
{ {
name: "PtrHeadInt32PtrOmitEmpty", name: "PtrHeadInt32PtrOmitEmpty",
data: &struct { data: &struct {
A *int32 `json:"a,omitempty"` A *int32 `json:"a,omitempty"`
}{A: int32ptr(1)}, }{A: int32ptr(-1)},
}, },
{ {
name: "PtrHeadInt32PtrString", name: "PtrHeadInt32PtrString",
data: &struct { data: &struct {
A *int32 `json:"a,string"` A *int32 `json:"a,string"`
}{A: int32ptr(1)}, }{A: int32ptr(-1)},
}, },
// PtrHeadInt32PtrNil // PtrHeadInt32PtrNil
@ -245,7 +245,7 @@ func TestCoverInt32(t *testing.T) {
A int32 `json:"a"` A int32 `json:"a"`
B int32 `json:"b"` B int32 `json:"b"`
C int32 `json:"c"` C int32 `json:"c"`
}{A: 1, B: 2, C: 3}, }{A: -1, B: 2, C: 3},
}, },
{ {
name: "HeadInt32MultiFieldsOmitEmpty", name: "HeadInt32MultiFieldsOmitEmpty",
@ -253,7 +253,7 @@ func TestCoverInt32(t *testing.T) {
A int32 `json:"a,omitempty"` A int32 `json:"a,omitempty"`
B int32 `json:"b,omitempty"` B int32 `json:"b,omitempty"`
C int32 `json:"c,omitempty"` C int32 `json:"c,omitempty"`
}{A: 1, B: 2, C: 3}, }{A: -1, B: 2, C: 3},
}, },
{ {
name: "HeadInt32MultiFieldsString", name: "HeadInt32MultiFieldsString",
@ -261,7 +261,7 @@ func TestCoverInt32(t *testing.T) {
A int32 `json:"a,string"` A int32 `json:"a,string"`
B int32 `json:"b,string"` B int32 `json:"b,string"`
C int32 `json:"c,string"` C int32 `json:"c,string"`
}{A: 1, B: 2, C: 3}, }{A: -1, B: 2, C: 3},
}, },
// HeadInt32PtrMultiFields // HeadInt32PtrMultiFields
@ -271,7 +271,7 @@ func TestCoverInt32(t *testing.T) {
A *int32 `json:"a"` A *int32 `json:"a"`
B *int32 `json:"b"` B *int32 `json:"b"`
C *int32 `json:"c"` C *int32 `json:"c"`
}{A: int32ptr(1), B: int32ptr(2), C: int32ptr(3)}, }{A: int32ptr(-1), B: int32ptr(2), C: int32ptr(3)},
}, },
{ {
name: "HeadInt32PtrMultiFieldsOmitEmpty", name: "HeadInt32PtrMultiFieldsOmitEmpty",
@ -279,7 +279,7 @@ func TestCoverInt32(t *testing.T) {
A *int32 `json:"a,omitempty"` A *int32 `json:"a,omitempty"`
B *int32 `json:"b,omitempty"` B *int32 `json:"b,omitempty"`
C *int32 `json:"c,omitempty"` C *int32 `json:"c,omitempty"`
}{A: int32ptr(1), B: int32ptr(2), C: int32ptr(3)}, }{A: int32ptr(-1), B: int32ptr(2), C: int32ptr(3)},
}, },
{ {
name: "HeadInt32PtrMultiFieldsString", name: "HeadInt32PtrMultiFieldsString",
@ -287,7 +287,7 @@ func TestCoverInt32(t *testing.T) {
A *int32 `json:"a,string"` A *int32 `json:"a,string"`
B *int32 `json:"b,string"` B *int32 `json:"b,string"`
C *int32 `json:"c,string"` C *int32 `json:"c,string"`
}{A: int32ptr(1), B: int32ptr(2), C: int32ptr(3)}, }{A: int32ptr(-1), B: int32ptr(2), C: int32ptr(3)},
}, },
// HeadInt32PtrNilMultiFields // HeadInt32PtrNilMultiFields
@ -345,21 +345,21 @@ func TestCoverInt32(t *testing.T) {
data: &struct { data: &struct {
A int32 `json:"a"` A int32 `json:"a"`
B int32 `json:"b"` B int32 `json:"b"`
}{A: 1, B: 2}, }{A: -1, B: 2},
}, },
{ {
name: "PtrHeadInt32MultiFieldsOmitEmpty", name: "PtrHeadInt32MultiFieldsOmitEmpty",
data: &struct { data: &struct {
A int32 `json:"a,omitempty"` A int32 `json:"a,omitempty"`
B int32 `json:"b,omitempty"` B int32 `json:"b,omitempty"`
}{A: 1, B: 2}, }{A: -1, B: 2},
}, },
{ {
name: "PtrHeadInt32MultiFieldsString", name: "PtrHeadInt32MultiFieldsString",
data: &struct { data: &struct {
A int32 `json:"a,string"` A int32 `json:"a,string"`
B int32 `json:"b,string"` B int32 `json:"b,string"`
}{A: 1, B: 2}, }{A: -1, B: 2},
}, },
// PtrHeadInt32PtrMultiFields // PtrHeadInt32PtrMultiFields
@ -368,21 +368,21 @@ func TestCoverInt32(t *testing.T) {
data: &struct { data: &struct {
A *int32 `json:"a"` A *int32 `json:"a"`
B *int32 `json:"b"` B *int32 `json:"b"`
}{A: int32ptr(1), B: int32ptr(2)}, }{A: int32ptr(-1), B: int32ptr(2)},
}, },
{ {
name: "PtrHeadInt32PtrMultiFieldsOmitEmpty", name: "PtrHeadInt32PtrMultiFieldsOmitEmpty",
data: &struct { data: &struct {
A *int32 `json:"a,omitempty"` A *int32 `json:"a,omitempty"`
B *int32 `json:"b,omitempty"` B *int32 `json:"b,omitempty"`
}{A: int32ptr(1), B: int32ptr(2)}, }{A: int32ptr(-1), B: int32ptr(2)},
}, },
{ {
name: "PtrHeadInt32PtrMultiFieldsString", name: "PtrHeadInt32PtrMultiFieldsString",
data: &struct { data: &struct {
A *int32 `json:"a,string"` A *int32 `json:"a,string"`
B *int32 `json:"b,string"` B *int32 `json:"b,string"`
}{A: int32ptr(1), B: int32ptr(2)}, }{A: int32ptr(-1), B: int32ptr(2)},
}, },
// PtrHeadInt32PtrNilMultiFields // PtrHeadInt32PtrNilMultiFields
@ -466,7 +466,7 @@ func TestCoverInt32(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int32 `json:"a"` A int32 `json:"a"`
}{A: 1}}, }{A: -1}},
}, },
{ {
name: "HeadInt32NotRootOmitEmpty", name: "HeadInt32NotRootOmitEmpty",
@ -476,7 +476,7 @@ func TestCoverInt32(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int32 `json:"a,omitempty"` A int32 `json:"a,omitempty"`
}{A: 1}}, }{A: -1}},
}, },
{ {
name: "HeadInt32NotRootString", name: "HeadInt32NotRootString",
@ -486,7 +486,7 @@ func TestCoverInt32(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int32 `json:"a,string"` A int32 `json:"a,string"`
}{A: 1}}, }{A: -1}},
}, },
// HeadInt32PtrNotRoot // HeadInt32PtrNotRoot
@ -498,7 +498,7 @@ func TestCoverInt32(t *testing.T) {
} }
}{A: struct { }{A: struct {
A *int32 `json:"a"` A *int32 `json:"a"`
}{int32ptr(1)}}, }{int32ptr(-1)}},
}, },
{ {
name: "HeadInt32PtrNotRootOmitEmpty", name: "HeadInt32PtrNotRootOmitEmpty",
@ -508,7 +508,7 @@ func TestCoverInt32(t *testing.T) {
} }
}{A: struct { }{A: struct {
A *int32 `json:"a,omitempty"` A *int32 `json:"a,omitempty"`
}{int32ptr(1)}}, }{int32ptr(-1)}},
}, },
{ {
name: "HeadInt32PtrNotRootString", name: "HeadInt32PtrNotRootString",
@ -518,7 +518,7 @@ func TestCoverInt32(t *testing.T) {
} }
}{A: struct { }{A: struct {
A *int32 `json:"a,string"` A *int32 `json:"a,string"`
}{int32ptr(1)}}, }{int32ptr(-1)}},
}, },
// HeadInt32PtrNilNotRoot // HeadInt32PtrNilNotRoot
@ -588,7 +588,7 @@ func TestCoverInt32(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A int32 `json:"a"` A int32 `json:"a"`
}{A: 1})}, }{A: -1})},
}, },
{ {
name: "PtrHeadInt32NotRootOmitEmpty", name: "PtrHeadInt32NotRootOmitEmpty",
@ -598,7 +598,7 @@ func TestCoverInt32(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A int32 `json:"a,omitempty"` A int32 `json:"a,omitempty"`
}{A: 1})}, }{A: -1})},
}, },
{ {
name: "PtrHeadInt32NotRootString", name: "PtrHeadInt32NotRootString",
@ -608,7 +608,7 @@ func TestCoverInt32(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A int32 `json:"a,string"` A int32 `json:"a,string"`
}{A: 1})}, }{A: -1})},
}, },
// PtrHeadInt32PtrNotRoot // PtrHeadInt32PtrNotRoot
@ -620,7 +620,7 @@ func TestCoverInt32(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A *int32 `json:"a"` A *int32 `json:"a"`
}{A: int32ptr(1)})}, }{A: int32ptr(-1)})},
}, },
{ {
name: "PtrHeadInt32PtrNotRootOmitEmpty", name: "PtrHeadInt32PtrNotRootOmitEmpty",
@ -630,7 +630,7 @@ func TestCoverInt32(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A *int32 `json:"a,omitempty"` A *int32 `json:"a,omitempty"`
}{A: int32ptr(1)})}, }{A: int32ptr(-1)})},
}, },
{ {
name: "PtrHeadInt32PtrNotRootString", name: "PtrHeadInt32PtrNotRootString",
@ -640,7 +640,7 @@ func TestCoverInt32(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A *int32 `json:"a,string"` A *int32 `json:"a,string"`
}{A: int32ptr(1)})}, }{A: int32ptr(-1)})},
}, },
// PtrHeadInt32PtrNilNotRoot // PtrHeadInt32PtrNilNotRoot
@ -748,7 +748,7 @@ func TestCoverInt32(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int32 `json:"a"` A int32 `json:"a"`
}{A: 1}, B: struct { }{A: -1}, B: struct {
B int32 `json:"b"` B int32 `json:"b"`
}{B: 2}}, }{B: 2}},
}, },
@ -763,7 +763,7 @@ func TestCoverInt32(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int32 `json:"a,omitempty"` A int32 `json:"a,omitempty"`
}{A: 1}, B: struct { }{A: -1}, B: struct {
B int32 `json:"b,omitempty"` B int32 `json:"b,omitempty"`
}{B: 2}}, }{B: 2}},
}, },
@ -778,7 +778,7 @@ func TestCoverInt32(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int32 `json:"a,string"` A int32 `json:"a,string"`
}{A: 1}, B: struct { }{A: -1}, B: struct {
B int32 `json:"b,string"` B int32 `json:"b,string"`
}{B: 2}}, }{B: 2}},
}, },
@ -795,7 +795,7 @@ func TestCoverInt32(t *testing.T) {
} }
}{A: struct { }{A: struct {
A *int32 `json:"a"` A *int32 `json:"a"`
}{A: int32ptr(1)}, B: struct { }{A: int32ptr(-1)}, B: struct {
B *int32 `json:"b"` B *int32 `json:"b"`
}{B: int32ptr(2)}}, }{B: int32ptr(2)}},
}, },
@ -810,7 +810,7 @@ func TestCoverInt32(t *testing.T) {
} }
}{A: struct { }{A: struct {
A *int32 `json:"a,omitempty"` A *int32 `json:"a,omitempty"`
}{A: int32ptr(1)}, B: struct { }{A: int32ptr(-1)}, B: struct {
B *int32 `json:"b,omitempty"` B *int32 `json:"b,omitempty"`
}{B: int32ptr(2)}}, }{B: int32ptr(2)}},
}, },
@ -825,7 +825,7 @@ func TestCoverInt32(t *testing.T) {
} }
}{A: struct { }{A: struct {
A *int32 `json:"a,string"` A *int32 `json:"a,string"`
}{A: int32ptr(1)}, B: struct { }{A: int32ptr(-1)}, B: struct {
B *int32 `json:"b,string"` B *int32 `json:"b,string"`
}{B: int32ptr(2)}}, }{B: int32ptr(2)}},
}, },
@ -924,7 +924,7 @@ func TestCoverInt32(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int32 `json:"a"` A int32 `json:"a"`
}{A: 1}, B: struct { }{A: -1}, B: struct {
B int32 `json:"b"` B int32 `json:"b"`
}{B: 2}}, }{B: 2}},
}, },
@ -939,7 +939,7 @@ func TestCoverInt32(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int32 `json:"a,omitempty"` A int32 `json:"a,omitempty"`
}{A: 1}, B: struct { }{A: -1}, B: struct {
B int32 `json:"b,omitempty"` B int32 `json:"b,omitempty"`
}{B: 2}}, }{B: 2}},
}, },
@ -954,7 +954,7 @@ func TestCoverInt32(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int32 `json:"a,string"` A int32 `json:"a,string"`
}{A: 1}, B: struct { }{A: -1}, B: struct {
B int32 `json:"b,string"` B int32 `json:"b,string"`
}{B: 2}}, }{B: 2}},
}, },
@ -971,7 +971,7 @@ func TestCoverInt32(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A *int32 `json:"a"` A *int32 `json:"a"`
}{A: int32ptr(1)}), B: &(struct { }{A: int32ptr(-1)}), B: &(struct {
B *int32 `json:"b"` B *int32 `json:"b"`
}{B: int32ptr(2)})}, }{B: int32ptr(2)})},
}, },
@ -986,7 +986,7 @@ func TestCoverInt32(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A *int32 `json:"a,omitempty"` A *int32 `json:"a,omitempty"`
}{A: int32ptr(1)}), B: &(struct { }{A: int32ptr(-1)}), B: &(struct {
B *int32 `json:"b,omitempty"` B *int32 `json:"b,omitempty"`
}{B: int32ptr(2)})}, }{B: int32ptr(2)})},
}, },
@ -1001,7 +1001,7 @@ func TestCoverInt32(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A *int32 `json:"a,string"` A *int32 `json:"a,string"`
}{A: int32ptr(1)}), B: &(struct { }{A: int32ptr(-1)}), B: &(struct {
B *int32 `json:"b,string"` B *int32 `json:"b,string"`
}{B: int32ptr(2)})}, }{B: int32ptr(2)})},
}, },
@ -1091,7 +1091,7 @@ func TestCoverInt32(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A int32 `json:"a"` A int32 `json:"a"`
B int32 `json:"b"` B int32 `json:"b"`
}{A: 1, B: 2}), B: &(struct { }{A: -1, B: 2}), B: &(struct {
A int32 `json:"a"` A int32 `json:"a"`
B int32 `json:"b"` B int32 `json:"b"`
}{A: 3, B: 4})}, }{A: 3, B: 4})},
@ -1110,7 +1110,7 @@ func TestCoverInt32(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A int32 `json:"a,omitempty"` A int32 `json:"a,omitempty"`
B int32 `json:"b,omitempty"` B int32 `json:"b,omitempty"`
}{A: 1, B: 2}), B: &(struct { }{A: -1, B: 2}), B: &(struct {
A int32 `json:"a,omitempty"` A int32 `json:"a,omitempty"`
B int32 `json:"b,omitempty"` B int32 `json:"b,omitempty"`
}{A: 3, B: 4})}, }{A: 3, B: 4})},
@ -1129,7 +1129,7 @@ func TestCoverInt32(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A int32 `json:"a,string"` A int32 `json:"a,string"`
B int32 `json:"b,string"` B int32 `json:"b,string"`
}{A: 1, B: 2}), B: &(struct { }{A: -1, B: 2}), B: &(struct {
A int32 `json:"a,string"` A int32 `json:"a,string"`
B int32 `json:"b,string"` B int32 `json:"b,string"`
}{A: 3, B: 4})}, }{A: 3, B: 4})},
@ -1232,7 +1232,7 @@ func TestCoverInt32(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A *int32 `json:"a"` A *int32 `json:"a"`
B *int32 `json:"b"` B *int32 `json:"b"`
}{A: int32ptr(1), B: int32ptr(2)}), B: &(struct { }{A: int32ptr(-1), B: int32ptr(2)}), B: &(struct {
A *int32 `json:"a"` A *int32 `json:"a"`
B *int32 `json:"b"` B *int32 `json:"b"`
}{A: int32ptr(3), B: int32ptr(4)})}, }{A: int32ptr(3), B: int32ptr(4)})},
@ -1251,7 +1251,7 @@ func TestCoverInt32(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A *int32 `json:"a,omitempty"` A *int32 `json:"a,omitempty"`
B *int32 `json:"b,omitempty"` B *int32 `json:"b,omitempty"`
}{A: int32ptr(1), B: int32ptr(2)}), B: &(struct { }{A: int32ptr(-1), B: int32ptr(2)}), B: &(struct {
A *int32 `json:"a,omitempty"` A *int32 `json:"a,omitempty"`
B *int32 `json:"b,omitempty"` B *int32 `json:"b,omitempty"`
}{A: int32ptr(3), B: int32ptr(4)})}, }{A: int32ptr(3), B: int32ptr(4)})},
@ -1270,7 +1270,7 @@ func TestCoverInt32(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A *int32 `json:"a,string"` A *int32 `json:"a,string"`
B *int32 `json:"b,string"` B *int32 `json:"b,string"`
}{A: int32ptr(1), B: int32ptr(2)}), B: &(struct { }{A: int32ptr(-1), B: int32ptr(2)}), B: &(struct {
A *int32 `json:"a,string"` A *int32 `json:"a,string"`
B *int32 `json:"b,string"` B *int32 `json:"b,string"`
}{A: int32ptr(3), B: int32ptr(4)})}, }{A: int32ptr(3), B: int32ptr(4)})},
@ -1365,7 +1365,7 @@ func TestCoverInt32(t *testing.T) {
structInt32 structInt32
B int32 `json:"b"` B int32 `json:"b"`
}{ }{
structInt32: structInt32{A: 1}, structInt32: structInt32{A: -1},
B: 2, B: 2,
}, },
}, },
@ -1375,7 +1375,7 @@ func TestCoverInt32(t *testing.T) {
structInt32OmitEmpty structInt32OmitEmpty
B int32 `json:"b,omitempty"` B int32 `json:"b,omitempty"`
}{ }{
structInt32OmitEmpty: structInt32OmitEmpty{A: 1}, structInt32OmitEmpty: structInt32OmitEmpty{A: -1},
B: 2, B: 2,
}, },
}, },
@ -1385,7 +1385,7 @@ func TestCoverInt32(t *testing.T) {
structInt32String structInt32String
B int32 `json:"b,string"` B int32 `json:"b,string"`
}{ }{
structInt32String: structInt32String{A: 1}, structInt32String: structInt32String{A: -1},
B: 2, B: 2,
}, },
}, },
@ -1397,7 +1397,7 @@ func TestCoverInt32(t *testing.T) {
*structInt32 *structInt32
B int32 `json:"b"` B int32 `json:"b"`
}{ }{
structInt32: &structInt32{A: 1}, structInt32: &structInt32{A: -1},
B: 2, B: 2,
}, },
}, },
@ -1407,7 +1407,7 @@ func TestCoverInt32(t *testing.T) {
*structInt32OmitEmpty *structInt32OmitEmpty
B int32 `json:"b,omitempty"` B int32 `json:"b,omitempty"`
}{ }{
structInt32OmitEmpty: &structInt32OmitEmpty{A: 1}, structInt32OmitEmpty: &structInt32OmitEmpty{A: -1},
B: 2, B: 2,
}, },
}, },
@ -1417,7 +1417,7 @@ func TestCoverInt32(t *testing.T) {
*structInt32String *structInt32String
B int32 `json:"b,string"` B int32 `json:"b,string"`
}{ }{
structInt32String: &structInt32String{A: 1}, structInt32String: &structInt32String{A: -1},
B: 2, B: 2,
}, },
}, },
@ -1461,7 +1461,7 @@ func TestCoverInt32(t *testing.T) {
structInt32Ptr structInt32Ptr
B *int32 `json:"b"` B *int32 `json:"b"`
}{ }{
structInt32Ptr: structInt32Ptr{A: int32ptr(1)}, structInt32Ptr: structInt32Ptr{A: int32ptr(-1)},
B: int32ptr(2), B: int32ptr(2),
}, },
}, },
@ -1471,7 +1471,7 @@ func TestCoverInt32(t *testing.T) {
structInt32PtrOmitEmpty structInt32PtrOmitEmpty
B *int32 `json:"b,omitempty"` B *int32 `json:"b,omitempty"`
}{ }{
structInt32PtrOmitEmpty: structInt32PtrOmitEmpty{A: int32ptr(1)}, structInt32PtrOmitEmpty: structInt32PtrOmitEmpty{A: int32ptr(-1)},
B: int32ptr(2), B: int32ptr(2),
}, },
}, },
@ -1481,7 +1481,7 @@ func TestCoverInt32(t *testing.T) {
structInt32PtrString structInt32PtrString
B *int32 `json:"b,string"` B *int32 `json:"b,string"`
}{ }{
structInt32PtrString: structInt32PtrString{A: int32ptr(1)}, structInt32PtrString: structInt32PtrString{A: int32ptr(-1)},
B: int32ptr(2), B: int32ptr(2),
}, },
}, },
@ -1525,7 +1525,7 @@ func TestCoverInt32(t *testing.T) {
*structInt32Ptr *structInt32Ptr
B *int32 `json:"b"` B *int32 `json:"b"`
}{ }{
structInt32Ptr: &structInt32Ptr{A: int32ptr(1)}, structInt32Ptr: &structInt32Ptr{A: int32ptr(-1)},
B: int32ptr(2), B: int32ptr(2),
}, },
}, },
@ -1535,7 +1535,7 @@ func TestCoverInt32(t *testing.T) {
*structInt32PtrOmitEmpty *structInt32PtrOmitEmpty
B *int32 `json:"b,omitempty"` B *int32 `json:"b,omitempty"`
}{ }{
structInt32PtrOmitEmpty: &structInt32PtrOmitEmpty{A: int32ptr(1)}, structInt32PtrOmitEmpty: &structInt32PtrOmitEmpty{A: int32ptr(-1)},
B: int32ptr(2), B: int32ptr(2),
}, },
}, },
@ -1545,7 +1545,7 @@ func TestCoverInt32(t *testing.T) {
*structInt32PtrString *structInt32PtrString
B *int32 `json:"b,string"` B *int32 `json:"b,string"`
}{ }{
structInt32PtrString: &structInt32PtrString{A: int32ptr(1)}, structInt32PtrString: &structInt32PtrString{A: int32ptr(-1)},
B: int32ptr(2), B: int32ptr(2),
}, },
}, },
@ -1588,7 +1588,7 @@ func TestCoverInt32(t *testing.T) {
data: struct { data: struct {
structInt32 structInt32
}{ }{
structInt32: structInt32{A: 1}, structInt32: structInt32{A: -1},
}, },
}, },
{ {
@ -1596,7 +1596,7 @@ func TestCoverInt32(t *testing.T) {
data: struct { data: struct {
structInt32OmitEmpty structInt32OmitEmpty
}{ }{
structInt32OmitEmpty: structInt32OmitEmpty{A: 1}, structInt32OmitEmpty: structInt32OmitEmpty{A: -1},
}, },
}, },
{ {
@ -1604,7 +1604,7 @@ func TestCoverInt32(t *testing.T) {
data: struct { data: struct {
structInt32String structInt32String
}{ }{
structInt32String: structInt32String{A: 1}, structInt32String: structInt32String{A: -1},
}, },
}, },
@ -1614,7 +1614,7 @@ func TestCoverInt32(t *testing.T) {
data: struct { data: struct {
*structInt32 *structInt32
}{ }{
structInt32: &structInt32{A: 1}, structInt32: &structInt32{A: -1},
}, },
}, },
{ {
@ -1622,7 +1622,7 @@ func TestCoverInt32(t *testing.T) {
data: struct { data: struct {
*structInt32OmitEmpty *structInt32OmitEmpty
}{ }{
structInt32OmitEmpty: &structInt32OmitEmpty{A: 1}, structInt32OmitEmpty: &structInt32OmitEmpty{A: -1},
}, },
}, },
{ {
@ -1630,7 +1630,7 @@ func TestCoverInt32(t *testing.T) {
data: struct { data: struct {
*structInt32String *structInt32String
}{ }{
structInt32String: &structInt32String{A: 1}, structInt32String: &structInt32String{A: -1},
}, },
}, },
@ -1666,7 +1666,7 @@ func TestCoverInt32(t *testing.T) {
data: struct { data: struct {
structInt32Ptr structInt32Ptr
}{ }{
structInt32Ptr: structInt32Ptr{A: int32ptr(1)}, structInt32Ptr: structInt32Ptr{A: int32ptr(-1)},
}, },
}, },
{ {
@ -1674,7 +1674,7 @@ func TestCoverInt32(t *testing.T) {
data: struct { data: struct {
structInt32PtrOmitEmpty structInt32PtrOmitEmpty
}{ }{
structInt32PtrOmitEmpty: structInt32PtrOmitEmpty{A: int32ptr(1)}, structInt32PtrOmitEmpty: structInt32PtrOmitEmpty{A: int32ptr(-1)},
}, },
}, },
{ {
@ -1682,7 +1682,7 @@ func TestCoverInt32(t *testing.T) {
data: struct { data: struct {
structInt32PtrString structInt32PtrString
}{ }{
structInt32PtrString: structInt32PtrString{A: int32ptr(1)}, structInt32PtrString: structInt32PtrString{A: int32ptr(-1)},
}, },
}, },
@ -1718,7 +1718,7 @@ func TestCoverInt32(t *testing.T) {
data: struct { data: struct {
*structInt32Ptr *structInt32Ptr
}{ }{
structInt32Ptr: &structInt32Ptr{A: int32ptr(1)}, structInt32Ptr: &structInt32Ptr{A: int32ptr(-1)},
}, },
}, },
{ {
@ -1726,7 +1726,7 @@ func TestCoverInt32(t *testing.T) {
data: struct { data: struct {
*structInt32PtrOmitEmpty *structInt32PtrOmitEmpty
}{ }{
structInt32PtrOmitEmpty: &structInt32PtrOmitEmpty{A: int32ptr(1)}, structInt32PtrOmitEmpty: &structInt32PtrOmitEmpty{A: int32ptr(-1)},
}, },
}, },
{ {
@ -1734,7 +1734,7 @@ func TestCoverInt32(t *testing.T) {
data: struct { data: struct {
*structInt32PtrString *structInt32PtrString
}{ }{
structInt32PtrString: &structInt32PtrString{A: int32ptr(1)}, structInt32PtrString: &structInt32PtrString{A: int32ptr(-1)},
}, },
}, },

View File

@ -57,19 +57,19 @@ func TestCoverInt64(t *testing.T) {
name: "HeadInt64", name: "HeadInt64",
data: struct { data: struct {
A int64 `json:"a"` A int64 `json:"a"`
}{A: 1}, }{A: -1},
}, },
{ {
name: "HeadInt64OmitEmpty", name: "HeadInt64OmitEmpty",
data: struct { data: struct {
A int64 `json:"a,omitempty"` A int64 `json:"a,omitempty"`
}{A: 1}, }{A: -1},
}, },
{ {
name: "HeadInt64String", name: "HeadInt64String",
data: struct { data: struct {
A int64 `json:"a,string"` A int64 `json:"a,string"`
}{A: 1}, }{A: -1},
}, },
// HeadInt64Ptr // HeadInt64Ptr
@ -77,19 +77,19 @@ func TestCoverInt64(t *testing.T) {
name: "HeadInt64Ptr", name: "HeadInt64Ptr",
data: struct { data: struct {
A *int64 `json:"a"` A *int64 `json:"a"`
}{A: int64ptr(1)}, }{A: int64ptr(-1)},
}, },
{ {
name: "HeadInt64PtrOmitEmpty", name: "HeadInt64PtrOmitEmpty",
data: struct { data: struct {
A *int64 `json:"a,omitempty"` A *int64 `json:"a,omitempty"`
}{A: int64ptr(1)}, }{A: int64ptr(-1)},
}, },
{ {
name: "HeadInt64PtrString", name: "HeadInt64PtrString",
data: struct { data: struct {
A *int64 `json:"a,string"` A *int64 `json:"a,string"`
}{A: int64ptr(1)}, }{A: int64ptr(-1)},
}, },
// HeadInt64PtrNil // HeadInt64PtrNil
@ -137,19 +137,19 @@ func TestCoverInt64(t *testing.T) {
name: "PtrHeadInt64", name: "PtrHeadInt64",
data: &struct { data: &struct {
A int64 `json:"a"` A int64 `json:"a"`
}{A: 1}, }{A: -1},
}, },
{ {
name: "PtrHeadInt64OmitEmpty", name: "PtrHeadInt64OmitEmpty",
data: &struct { data: &struct {
A int64 `json:"a,omitempty"` A int64 `json:"a,omitempty"`
}{A: 1}, }{A: -1},
}, },
{ {
name: "PtrHeadInt64String", name: "PtrHeadInt64String",
data: &struct { data: &struct {
A int64 `json:"a,string"` A int64 `json:"a,string"`
}{A: 1}, }{A: -1},
}, },
// PtrHeadInt64Ptr // PtrHeadInt64Ptr
@ -157,19 +157,19 @@ func TestCoverInt64(t *testing.T) {
name: "PtrHeadInt64Ptr", name: "PtrHeadInt64Ptr",
data: &struct { data: &struct {
A *int64 `json:"a"` A *int64 `json:"a"`
}{A: int64ptr(1)}, }{A: int64ptr(-1)},
}, },
{ {
name: "PtrHeadInt64PtrOmitEmpty", name: "PtrHeadInt64PtrOmitEmpty",
data: &struct { data: &struct {
A *int64 `json:"a,omitempty"` A *int64 `json:"a,omitempty"`
}{A: int64ptr(1)}, }{A: int64ptr(-1)},
}, },
{ {
name: "PtrHeadInt64PtrString", name: "PtrHeadInt64PtrString",
data: &struct { data: &struct {
A *int64 `json:"a,string"` A *int64 `json:"a,string"`
}{A: int64ptr(1)}, }{A: int64ptr(-1)},
}, },
// PtrHeadInt64PtrNil // PtrHeadInt64PtrNil
@ -245,7 +245,7 @@ func TestCoverInt64(t *testing.T) {
A int64 `json:"a"` A int64 `json:"a"`
B int64 `json:"b"` B int64 `json:"b"`
C int64 `json:"c"` C int64 `json:"c"`
}{A: 1, B: 2, C: 3}, }{A: -1, B: 2, C: 3},
}, },
{ {
name: "HeadInt64MultiFieldsOmitEmpty", name: "HeadInt64MultiFieldsOmitEmpty",
@ -253,7 +253,7 @@ func TestCoverInt64(t *testing.T) {
A int64 `json:"a,omitempty"` A int64 `json:"a,omitempty"`
B int64 `json:"b,omitempty"` B int64 `json:"b,omitempty"`
C int64 `json:"c,omitempty"` C int64 `json:"c,omitempty"`
}{A: 1, B: 2, C: 3}, }{A: -1, B: 2, C: 3},
}, },
{ {
name: "HeadInt64MultiFieldsString", name: "HeadInt64MultiFieldsString",
@ -261,7 +261,7 @@ func TestCoverInt64(t *testing.T) {
A int64 `json:"a,string"` A int64 `json:"a,string"`
B int64 `json:"b,string"` B int64 `json:"b,string"`
C int64 `json:"c,string"` C int64 `json:"c,string"`
}{A: 1, B: 2, C: 3}, }{A: -1, B: 2, C: 3},
}, },
// HeadInt64PtrMultiFields // HeadInt64PtrMultiFields
@ -271,7 +271,7 @@ func TestCoverInt64(t *testing.T) {
A *int64 `json:"a"` A *int64 `json:"a"`
B *int64 `json:"b"` B *int64 `json:"b"`
C *int64 `json:"c"` C *int64 `json:"c"`
}{A: int64ptr(1), B: int64ptr(2), C: int64ptr(3)}, }{A: int64ptr(-1), B: int64ptr(2), C: int64ptr(3)},
}, },
{ {
name: "HeadInt64PtrMultiFieldsOmitEmpty", name: "HeadInt64PtrMultiFieldsOmitEmpty",
@ -279,7 +279,7 @@ func TestCoverInt64(t *testing.T) {
A *int64 `json:"a,omitempty"` A *int64 `json:"a,omitempty"`
B *int64 `json:"b,omitempty"` B *int64 `json:"b,omitempty"`
C *int64 `json:"c,omitempty"` C *int64 `json:"c,omitempty"`
}{A: int64ptr(1), B: int64ptr(2), C: int64ptr(3)}, }{A: int64ptr(-1), B: int64ptr(2), C: int64ptr(3)},
}, },
{ {
name: "HeadInt64PtrMultiFieldsString", name: "HeadInt64PtrMultiFieldsString",
@ -287,7 +287,7 @@ func TestCoverInt64(t *testing.T) {
A *int64 `json:"a,string"` A *int64 `json:"a,string"`
B *int64 `json:"b,string"` B *int64 `json:"b,string"`
C *int64 `json:"c,string"` C *int64 `json:"c,string"`
}{A: int64ptr(1), B: int64ptr(2), C: int64ptr(3)}, }{A: int64ptr(-1), B: int64ptr(2), C: int64ptr(3)},
}, },
// HeadInt64PtrNilMultiFields // HeadInt64PtrNilMultiFields
@ -345,21 +345,21 @@ func TestCoverInt64(t *testing.T) {
data: &struct { data: &struct {
A int64 `json:"a"` A int64 `json:"a"`
B int64 `json:"b"` B int64 `json:"b"`
}{A: 1, B: 2}, }{A: -1, B: 2},
}, },
{ {
name: "PtrHeadInt64MultiFieldsOmitEmpty", name: "PtrHeadInt64MultiFieldsOmitEmpty",
data: &struct { data: &struct {
A int64 `json:"a,omitempty"` A int64 `json:"a,omitempty"`
B int64 `json:"b,omitempty"` B int64 `json:"b,omitempty"`
}{A: 1, B: 2}, }{A: -1, B: 2},
}, },
{ {
name: "PtrHeadInt64MultiFieldsString", name: "PtrHeadInt64MultiFieldsString",
data: &struct { data: &struct {
A int64 `json:"a,string"` A int64 `json:"a,string"`
B int64 `json:"b,string"` B int64 `json:"b,string"`
}{A: 1, B: 2}, }{A: -1, B: 2},
}, },
// PtrHeadInt64PtrMultiFields // PtrHeadInt64PtrMultiFields
@ -368,21 +368,21 @@ func TestCoverInt64(t *testing.T) {
data: &struct { data: &struct {
A *int64 `json:"a"` A *int64 `json:"a"`
B *int64 `json:"b"` B *int64 `json:"b"`
}{A: int64ptr(1), B: int64ptr(2)}, }{A: int64ptr(-1), B: int64ptr(2)},
}, },
{ {
name: "PtrHeadInt64PtrMultiFieldsOmitEmpty", name: "PtrHeadInt64PtrMultiFieldsOmitEmpty",
data: &struct { data: &struct {
A *int64 `json:"a,omitempty"` A *int64 `json:"a,omitempty"`
B *int64 `json:"b,omitempty"` B *int64 `json:"b,omitempty"`
}{A: int64ptr(1), B: int64ptr(2)}, }{A: int64ptr(-1), B: int64ptr(2)},
}, },
{ {
name: "PtrHeadInt64PtrMultiFieldsString", name: "PtrHeadInt64PtrMultiFieldsString",
data: &struct { data: &struct {
A *int64 `json:"a,string"` A *int64 `json:"a,string"`
B *int64 `json:"b,string"` B *int64 `json:"b,string"`
}{A: int64ptr(1), B: int64ptr(2)}, }{A: int64ptr(-1), B: int64ptr(2)},
}, },
// PtrHeadInt64PtrNilMultiFields // PtrHeadInt64PtrNilMultiFields
@ -466,7 +466,7 @@ func TestCoverInt64(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int64 `json:"a"` A int64 `json:"a"`
}{A: 1}}, }{A: -1}},
}, },
{ {
name: "HeadInt64NotRootOmitEmpty", name: "HeadInt64NotRootOmitEmpty",
@ -476,7 +476,7 @@ func TestCoverInt64(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int64 `json:"a,omitempty"` A int64 `json:"a,omitempty"`
}{A: 1}}, }{A: -1}},
}, },
{ {
name: "HeadInt64NotRootString", name: "HeadInt64NotRootString",
@ -486,7 +486,7 @@ func TestCoverInt64(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int64 `json:"a,string"` A int64 `json:"a,string"`
}{A: 1}}, }{A: -1}},
}, },
// HeadInt64PtrNotRoot // HeadInt64PtrNotRoot
@ -498,7 +498,7 @@ func TestCoverInt64(t *testing.T) {
} }
}{A: struct { }{A: struct {
A *int64 `json:"a"` A *int64 `json:"a"`
}{int64ptr(1)}}, }{int64ptr(-1)}},
}, },
{ {
name: "HeadInt64PtrNotRootOmitEmpty", name: "HeadInt64PtrNotRootOmitEmpty",
@ -508,7 +508,7 @@ func TestCoverInt64(t *testing.T) {
} }
}{A: struct { }{A: struct {
A *int64 `json:"a,omitempty"` A *int64 `json:"a,omitempty"`
}{int64ptr(1)}}, }{int64ptr(-1)}},
}, },
{ {
name: "HeadInt64PtrNotRootString", name: "HeadInt64PtrNotRootString",
@ -518,7 +518,7 @@ func TestCoverInt64(t *testing.T) {
} }
}{A: struct { }{A: struct {
A *int64 `json:"a,string"` A *int64 `json:"a,string"`
}{int64ptr(1)}}, }{int64ptr(-1)}},
}, },
// HeadInt64PtrNilNotRoot // HeadInt64PtrNilNotRoot
@ -588,7 +588,7 @@ func TestCoverInt64(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A int64 `json:"a"` A int64 `json:"a"`
}{A: 1})}, }{A: -1})},
}, },
{ {
name: "PtrHeadInt64NotRootOmitEmpty", name: "PtrHeadInt64NotRootOmitEmpty",
@ -598,7 +598,7 @@ func TestCoverInt64(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A int64 `json:"a,omitempty"` A int64 `json:"a,omitempty"`
}{A: 1})}, }{A: -1})},
}, },
{ {
name: "PtrHeadInt64NotRootString", name: "PtrHeadInt64NotRootString",
@ -608,7 +608,7 @@ func TestCoverInt64(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A int64 `json:"a,string"` A int64 `json:"a,string"`
}{A: 1})}, }{A: -1})},
}, },
// PtrHeadInt64PtrNotRoot // PtrHeadInt64PtrNotRoot
@ -620,7 +620,7 @@ func TestCoverInt64(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A *int64 `json:"a"` A *int64 `json:"a"`
}{A: int64ptr(1)})}, }{A: int64ptr(-1)})},
}, },
{ {
name: "PtrHeadInt64PtrNotRootOmitEmpty", name: "PtrHeadInt64PtrNotRootOmitEmpty",
@ -630,7 +630,7 @@ func TestCoverInt64(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A *int64 `json:"a,omitempty"` A *int64 `json:"a,omitempty"`
}{A: int64ptr(1)})}, }{A: int64ptr(-1)})},
}, },
{ {
name: "PtrHeadInt64PtrNotRootString", name: "PtrHeadInt64PtrNotRootString",
@ -640,7 +640,7 @@ func TestCoverInt64(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A *int64 `json:"a,string"` A *int64 `json:"a,string"`
}{A: int64ptr(1)})}, }{A: int64ptr(-1)})},
}, },
// PtrHeadInt64PtrNilNotRoot // PtrHeadInt64PtrNilNotRoot
@ -748,7 +748,7 @@ func TestCoverInt64(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int64 `json:"a"` A int64 `json:"a"`
}{A: 1}, B: struct { }{A: -1}, B: struct {
B int64 `json:"b"` B int64 `json:"b"`
}{B: 2}}, }{B: 2}},
}, },
@ -763,7 +763,7 @@ func TestCoverInt64(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int64 `json:"a,omitempty"` A int64 `json:"a,omitempty"`
}{A: 1}, B: struct { }{A: -1}, B: struct {
B int64 `json:"b,omitempty"` B int64 `json:"b,omitempty"`
}{B: 2}}, }{B: 2}},
}, },
@ -778,7 +778,7 @@ func TestCoverInt64(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int64 `json:"a,string"` A int64 `json:"a,string"`
}{A: 1}, B: struct { }{A: -1}, B: struct {
B int64 `json:"b,string"` B int64 `json:"b,string"`
}{B: 2}}, }{B: 2}},
}, },
@ -795,7 +795,7 @@ func TestCoverInt64(t *testing.T) {
} }
}{A: struct { }{A: struct {
A *int64 `json:"a"` A *int64 `json:"a"`
}{A: int64ptr(1)}, B: struct { }{A: int64ptr(-1)}, B: struct {
B *int64 `json:"b"` B *int64 `json:"b"`
}{B: int64ptr(2)}}, }{B: int64ptr(2)}},
}, },
@ -810,7 +810,7 @@ func TestCoverInt64(t *testing.T) {
} }
}{A: struct { }{A: struct {
A *int64 `json:"a,omitempty"` A *int64 `json:"a,omitempty"`
}{A: int64ptr(1)}, B: struct { }{A: int64ptr(-1)}, B: struct {
B *int64 `json:"b,omitempty"` B *int64 `json:"b,omitempty"`
}{B: int64ptr(2)}}, }{B: int64ptr(2)}},
}, },
@ -825,7 +825,7 @@ func TestCoverInt64(t *testing.T) {
} }
}{A: struct { }{A: struct {
A *int64 `json:"a,string"` A *int64 `json:"a,string"`
}{A: int64ptr(1)}, B: struct { }{A: int64ptr(-1)}, B: struct {
B *int64 `json:"b,string"` B *int64 `json:"b,string"`
}{B: int64ptr(2)}}, }{B: int64ptr(2)}},
}, },
@ -924,7 +924,7 @@ func TestCoverInt64(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int64 `json:"a"` A int64 `json:"a"`
}{A: 1}, B: struct { }{A: -1}, B: struct {
B int64 `json:"b"` B int64 `json:"b"`
}{B: 2}}, }{B: 2}},
}, },
@ -939,7 +939,7 @@ func TestCoverInt64(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int64 `json:"a,omitempty"` A int64 `json:"a,omitempty"`
}{A: 1}, B: struct { }{A: -1}, B: struct {
B int64 `json:"b,omitempty"` B int64 `json:"b,omitempty"`
}{B: 2}}, }{B: 2}},
}, },
@ -954,7 +954,7 @@ func TestCoverInt64(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int64 `json:"a,string"` A int64 `json:"a,string"`
}{A: 1}, B: struct { }{A: -1}, B: struct {
B int64 `json:"b,string"` B int64 `json:"b,string"`
}{B: 2}}, }{B: 2}},
}, },
@ -971,7 +971,7 @@ func TestCoverInt64(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A *int64 `json:"a"` A *int64 `json:"a"`
}{A: int64ptr(1)}), B: &(struct { }{A: int64ptr(-1)}), B: &(struct {
B *int64 `json:"b"` B *int64 `json:"b"`
}{B: int64ptr(2)})}, }{B: int64ptr(2)})},
}, },
@ -986,7 +986,7 @@ func TestCoverInt64(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A *int64 `json:"a,omitempty"` A *int64 `json:"a,omitempty"`
}{A: int64ptr(1)}), B: &(struct { }{A: int64ptr(-1)}), B: &(struct {
B *int64 `json:"b,omitempty"` B *int64 `json:"b,omitempty"`
}{B: int64ptr(2)})}, }{B: int64ptr(2)})},
}, },
@ -1001,7 +1001,7 @@ func TestCoverInt64(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A *int64 `json:"a,string"` A *int64 `json:"a,string"`
}{A: int64ptr(1)}), B: &(struct { }{A: int64ptr(-1)}), B: &(struct {
B *int64 `json:"b,string"` B *int64 `json:"b,string"`
}{B: int64ptr(2)})}, }{B: int64ptr(2)})},
}, },
@ -1091,7 +1091,7 @@ func TestCoverInt64(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A int64 `json:"a"` A int64 `json:"a"`
B int64 `json:"b"` B int64 `json:"b"`
}{A: 1, B: 2}), B: &(struct { }{A: -1, B: 2}), B: &(struct {
A int64 `json:"a"` A int64 `json:"a"`
B int64 `json:"b"` B int64 `json:"b"`
}{A: 3, B: 4})}, }{A: 3, B: 4})},
@ -1110,7 +1110,7 @@ func TestCoverInt64(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A int64 `json:"a,omitempty"` A int64 `json:"a,omitempty"`
B int64 `json:"b,omitempty"` B int64 `json:"b,omitempty"`
}{A: 1, B: 2}), B: &(struct { }{A: -1, B: 2}), B: &(struct {
A int64 `json:"a,omitempty"` A int64 `json:"a,omitempty"`
B int64 `json:"b,omitempty"` B int64 `json:"b,omitempty"`
}{A: 3, B: 4})}, }{A: 3, B: 4})},
@ -1129,7 +1129,7 @@ func TestCoverInt64(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A int64 `json:"a,string"` A int64 `json:"a,string"`
B int64 `json:"b,string"` B int64 `json:"b,string"`
}{A: 1, B: 2}), B: &(struct { }{A: -1, B: 2}), B: &(struct {
A int64 `json:"a,string"` A int64 `json:"a,string"`
B int64 `json:"b,string"` B int64 `json:"b,string"`
}{A: 3, B: 4})}, }{A: 3, B: 4})},
@ -1232,7 +1232,7 @@ func TestCoverInt64(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A *int64 `json:"a"` A *int64 `json:"a"`
B *int64 `json:"b"` B *int64 `json:"b"`
}{A: int64ptr(1), B: int64ptr(2)}), B: &(struct { }{A: int64ptr(-1), B: int64ptr(2)}), B: &(struct {
A *int64 `json:"a"` A *int64 `json:"a"`
B *int64 `json:"b"` B *int64 `json:"b"`
}{A: int64ptr(3), B: int64ptr(4)})}, }{A: int64ptr(3), B: int64ptr(4)})},
@ -1251,7 +1251,7 @@ func TestCoverInt64(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A *int64 `json:"a,omitempty"` A *int64 `json:"a,omitempty"`
B *int64 `json:"b,omitempty"` B *int64 `json:"b,omitempty"`
}{A: int64ptr(1), B: int64ptr(2)}), B: &(struct { }{A: int64ptr(-1), B: int64ptr(2)}), B: &(struct {
A *int64 `json:"a,omitempty"` A *int64 `json:"a,omitempty"`
B *int64 `json:"b,omitempty"` B *int64 `json:"b,omitempty"`
}{A: int64ptr(3), B: int64ptr(4)})}, }{A: int64ptr(3), B: int64ptr(4)})},
@ -1270,7 +1270,7 @@ func TestCoverInt64(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A *int64 `json:"a,string"` A *int64 `json:"a,string"`
B *int64 `json:"b,string"` B *int64 `json:"b,string"`
}{A: int64ptr(1), B: int64ptr(2)}), B: &(struct { }{A: int64ptr(-1), B: int64ptr(2)}), B: &(struct {
A *int64 `json:"a,string"` A *int64 `json:"a,string"`
B *int64 `json:"b,string"` B *int64 `json:"b,string"`
}{A: int64ptr(3), B: int64ptr(4)})}, }{A: int64ptr(3), B: int64ptr(4)})},
@ -1365,7 +1365,7 @@ func TestCoverInt64(t *testing.T) {
structInt64 structInt64
B int64 `json:"b"` B int64 `json:"b"`
}{ }{
structInt64: structInt64{A: 1}, structInt64: structInt64{A: -1},
B: 2, B: 2,
}, },
}, },
@ -1375,7 +1375,7 @@ func TestCoverInt64(t *testing.T) {
structInt64OmitEmpty structInt64OmitEmpty
B int64 `json:"b,omitempty"` B int64 `json:"b,omitempty"`
}{ }{
structInt64OmitEmpty: structInt64OmitEmpty{A: 1}, structInt64OmitEmpty: structInt64OmitEmpty{A: -1},
B: 2, B: 2,
}, },
}, },
@ -1385,7 +1385,7 @@ func TestCoverInt64(t *testing.T) {
structInt64String structInt64String
B int64 `json:"b,string"` B int64 `json:"b,string"`
}{ }{
structInt64String: structInt64String{A: 1}, structInt64String: structInt64String{A: -1},
B: 2, B: 2,
}, },
}, },
@ -1397,7 +1397,7 @@ func TestCoverInt64(t *testing.T) {
*structInt64 *structInt64
B int64 `json:"b"` B int64 `json:"b"`
}{ }{
structInt64: &structInt64{A: 1}, structInt64: &structInt64{A: -1},
B: 2, B: 2,
}, },
}, },
@ -1407,7 +1407,7 @@ func TestCoverInt64(t *testing.T) {
*structInt64OmitEmpty *structInt64OmitEmpty
B int64 `json:"b,omitempty"` B int64 `json:"b,omitempty"`
}{ }{
structInt64OmitEmpty: &structInt64OmitEmpty{A: 1}, structInt64OmitEmpty: &structInt64OmitEmpty{A: -1},
B: 2, B: 2,
}, },
}, },
@ -1417,7 +1417,7 @@ func TestCoverInt64(t *testing.T) {
*structInt64String *structInt64String
B int64 `json:"b,string"` B int64 `json:"b,string"`
}{ }{
structInt64String: &structInt64String{A: 1}, structInt64String: &structInt64String{A: -1},
B: 2, B: 2,
}, },
}, },
@ -1461,7 +1461,7 @@ func TestCoverInt64(t *testing.T) {
structInt64Ptr structInt64Ptr
B *int64 `json:"b"` B *int64 `json:"b"`
}{ }{
structInt64Ptr: structInt64Ptr{A: int64ptr(1)}, structInt64Ptr: structInt64Ptr{A: int64ptr(-1)},
B: int64ptr(2), B: int64ptr(2),
}, },
}, },
@ -1471,7 +1471,7 @@ func TestCoverInt64(t *testing.T) {
structInt64PtrOmitEmpty structInt64PtrOmitEmpty
B *int64 `json:"b,omitempty"` B *int64 `json:"b,omitempty"`
}{ }{
structInt64PtrOmitEmpty: structInt64PtrOmitEmpty{A: int64ptr(1)}, structInt64PtrOmitEmpty: structInt64PtrOmitEmpty{A: int64ptr(-1)},
B: int64ptr(2), B: int64ptr(2),
}, },
}, },
@ -1481,7 +1481,7 @@ func TestCoverInt64(t *testing.T) {
structInt64PtrString structInt64PtrString
B *int64 `json:"b,string"` B *int64 `json:"b,string"`
}{ }{
structInt64PtrString: structInt64PtrString{A: int64ptr(1)}, structInt64PtrString: structInt64PtrString{A: int64ptr(-1)},
B: int64ptr(2), B: int64ptr(2),
}, },
}, },
@ -1525,7 +1525,7 @@ func TestCoverInt64(t *testing.T) {
*structInt64Ptr *structInt64Ptr
B *int64 `json:"b"` B *int64 `json:"b"`
}{ }{
structInt64Ptr: &structInt64Ptr{A: int64ptr(1)}, structInt64Ptr: &structInt64Ptr{A: int64ptr(-1)},
B: int64ptr(2), B: int64ptr(2),
}, },
}, },
@ -1535,7 +1535,7 @@ func TestCoverInt64(t *testing.T) {
*structInt64PtrOmitEmpty *structInt64PtrOmitEmpty
B *int64 `json:"b,omitempty"` B *int64 `json:"b,omitempty"`
}{ }{
structInt64PtrOmitEmpty: &structInt64PtrOmitEmpty{A: int64ptr(1)}, structInt64PtrOmitEmpty: &structInt64PtrOmitEmpty{A: int64ptr(-1)},
B: int64ptr(2), B: int64ptr(2),
}, },
}, },
@ -1545,7 +1545,7 @@ func TestCoverInt64(t *testing.T) {
*structInt64PtrString *structInt64PtrString
B *int64 `json:"b,string"` B *int64 `json:"b,string"`
}{ }{
structInt64PtrString: &structInt64PtrString{A: int64ptr(1)}, structInt64PtrString: &structInt64PtrString{A: int64ptr(-1)},
B: int64ptr(2), B: int64ptr(2),
}, },
}, },
@ -1588,7 +1588,7 @@ func TestCoverInt64(t *testing.T) {
data: struct { data: struct {
structInt64 structInt64
}{ }{
structInt64: structInt64{A: 1}, structInt64: structInt64{A: -1},
}, },
}, },
{ {
@ -1596,7 +1596,7 @@ func TestCoverInt64(t *testing.T) {
data: struct { data: struct {
structInt64OmitEmpty structInt64OmitEmpty
}{ }{
structInt64OmitEmpty: structInt64OmitEmpty{A: 1}, structInt64OmitEmpty: structInt64OmitEmpty{A: -1},
}, },
}, },
{ {
@ -1604,7 +1604,7 @@ func TestCoverInt64(t *testing.T) {
data: struct { data: struct {
structInt64String structInt64String
}{ }{
structInt64String: structInt64String{A: 1}, structInt64String: structInt64String{A: -1},
}, },
}, },
@ -1614,7 +1614,7 @@ func TestCoverInt64(t *testing.T) {
data: struct { data: struct {
*structInt64 *structInt64
}{ }{
structInt64: &structInt64{A: 1}, structInt64: &structInt64{A: -1},
}, },
}, },
{ {
@ -1622,7 +1622,7 @@ func TestCoverInt64(t *testing.T) {
data: struct { data: struct {
*structInt64OmitEmpty *structInt64OmitEmpty
}{ }{
structInt64OmitEmpty: &structInt64OmitEmpty{A: 1}, structInt64OmitEmpty: &structInt64OmitEmpty{A: -1},
}, },
}, },
{ {
@ -1630,7 +1630,7 @@ func TestCoverInt64(t *testing.T) {
data: struct { data: struct {
*structInt64String *structInt64String
}{ }{
structInt64String: &structInt64String{A: 1}, structInt64String: &structInt64String{A: -1},
}, },
}, },
@ -1666,7 +1666,7 @@ func TestCoverInt64(t *testing.T) {
data: struct { data: struct {
structInt64Ptr structInt64Ptr
}{ }{
structInt64Ptr: structInt64Ptr{A: int64ptr(1)}, structInt64Ptr: structInt64Ptr{A: int64ptr(-1)},
}, },
}, },
{ {
@ -1674,7 +1674,7 @@ func TestCoverInt64(t *testing.T) {
data: struct { data: struct {
structInt64PtrOmitEmpty structInt64PtrOmitEmpty
}{ }{
structInt64PtrOmitEmpty: structInt64PtrOmitEmpty{A: int64ptr(1)}, structInt64PtrOmitEmpty: structInt64PtrOmitEmpty{A: int64ptr(-1)},
}, },
}, },
{ {
@ -1682,7 +1682,7 @@ func TestCoverInt64(t *testing.T) {
data: struct { data: struct {
structInt64PtrString structInt64PtrString
}{ }{
structInt64PtrString: structInt64PtrString{A: int64ptr(1)}, structInt64PtrString: structInt64PtrString{A: int64ptr(-1)},
}, },
}, },
@ -1718,7 +1718,7 @@ func TestCoverInt64(t *testing.T) {
data: struct { data: struct {
*structInt64Ptr *structInt64Ptr
}{ }{
structInt64Ptr: &structInt64Ptr{A: int64ptr(1)}, structInt64Ptr: &structInt64Ptr{A: int64ptr(-1)},
}, },
}, },
{ {
@ -1726,7 +1726,7 @@ func TestCoverInt64(t *testing.T) {
data: struct { data: struct {
*structInt64PtrOmitEmpty *structInt64PtrOmitEmpty
}{ }{
structInt64PtrOmitEmpty: &structInt64PtrOmitEmpty{A: int64ptr(1)}, structInt64PtrOmitEmpty: &structInt64PtrOmitEmpty{A: int64ptr(-1)},
}, },
}, },
{ {
@ -1734,7 +1734,7 @@ func TestCoverInt64(t *testing.T) {
data: struct { data: struct {
*structInt64PtrString *structInt64PtrString
}{ }{
structInt64PtrString: &structInt64PtrString{A: int64ptr(1)}, structInt64PtrString: &structInt64PtrString{A: int64ptr(-1)},
}, },
}, },

View File

@ -57,19 +57,19 @@ func TestCoverInt8(t *testing.T) {
name: "HeadInt8", name: "HeadInt8",
data: struct { data: struct {
A int8 `json:"a"` A int8 `json:"a"`
}{A: 1}, }{A: -1},
}, },
{ {
name: "HeadInt8OmitEmpty", name: "HeadInt8OmitEmpty",
data: struct { data: struct {
A int8 `json:"a,omitempty"` A int8 `json:"a,omitempty"`
}{A: 1}, }{A: -1},
}, },
{ {
name: "HeadInt8String", name: "HeadInt8String",
data: struct { data: struct {
A int8 `json:"a,string"` A int8 `json:"a,string"`
}{A: 1}, }{A: -1},
}, },
// HeadInt8Ptr // HeadInt8Ptr
@ -77,19 +77,19 @@ func TestCoverInt8(t *testing.T) {
name: "HeadInt8Ptr", name: "HeadInt8Ptr",
data: struct { data: struct {
A *int8 `json:"a"` A *int8 `json:"a"`
}{A: int8ptr(1)}, }{A: int8ptr(-1)},
}, },
{ {
name: "HeadInt8PtrOmitEmpty", name: "HeadInt8PtrOmitEmpty",
data: struct { data: struct {
A *int8 `json:"a,omitempty"` A *int8 `json:"a,omitempty"`
}{A: int8ptr(1)}, }{A: int8ptr(-1)},
}, },
{ {
name: "HeadInt8PtrString", name: "HeadInt8PtrString",
data: struct { data: struct {
A *int8 `json:"a,string"` A *int8 `json:"a,string"`
}{A: int8ptr(1)}, }{A: int8ptr(-1)},
}, },
// HeadInt8PtrNil // HeadInt8PtrNil
@ -137,19 +137,19 @@ func TestCoverInt8(t *testing.T) {
name: "PtrHeadInt8", name: "PtrHeadInt8",
data: &struct { data: &struct {
A int8 `json:"a"` A int8 `json:"a"`
}{A: 1}, }{A: -1},
}, },
{ {
name: "PtrHeadInt8OmitEmpty", name: "PtrHeadInt8OmitEmpty",
data: &struct { data: &struct {
A int8 `json:"a,omitempty"` A int8 `json:"a,omitempty"`
}{A: 1}, }{A: -1},
}, },
{ {
name: "PtrHeadInt8String", name: "PtrHeadInt8String",
data: &struct { data: &struct {
A int8 `json:"a,string"` A int8 `json:"a,string"`
}{A: 1}, }{A: -1},
}, },
// PtrHeadInt8Ptr // PtrHeadInt8Ptr
@ -157,19 +157,19 @@ func TestCoverInt8(t *testing.T) {
name: "PtrHeadInt8Ptr", name: "PtrHeadInt8Ptr",
data: &struct { data: &struct {
A *int8 `json:"a"` A *int8 `json:"a"`
}{A: int8ptr(1)}, }{A: int8ptr(-1)},
}, },
{ {
name: "PtrHeadInt8PtrOmitEmpty", name: "PtrHeadInt8PtrOmitEmpty",
data: &struct { data: &struct {
A *int8 `json:"a,omitempty"` A *int8 `json:"a,omitempty"`
}{A: int8ptr(1)}, }{A: int8ptr(-1)},
}, },
{ {
name: "PtrHeadInt8PtrString", name: "PtrHeadInt8PtrString",
data: &struct { data: &struct {
A *int8 `json:"a,string"` A *int8 `json:"a,string"`
}{A: int8ptr(1)}, }{A: int8ptr(-1)},
}, },
// PtrHeadInt8PtrNil // PtrHeadInt8PtrNil
@ -245,7 +245,7 @@ func TestCoverInt8(t *testing.T) {
A int8 `json:"a"` A int8 `json:"a"`
B int8 `json:"b"` B int8 `json:"b"`
C int8 `json:"c"` C int8 `json:"c"`
}{A: 1, B: 2, C: 3}, }{A: -1, B: 2, C: 3},
}, },
{ {
name: "HeadInt8MultiFieldsOmitEmpty", name: "HeadInt8MultiFieldsOmitEmpty",
@ -253,7 +253,7 @@ func TestCoverInt8(t *testing.T) {
A int8 `json:"a,omitempty"` A int8 `json:"a,omitempty"`
B int8 `json:"b,omitempty"` B int8 `json:"b,omitempty"`
C int8 `json:"c,omitempty"` C int8 `json:"c,omitempty"`
}{A: 1, B: 2, C: 3}, }{A: -1, B: 2, C: 3},
}, },
{ {
name: "HeadInt8MultiFieldsString", name: "HeadInt8MultiFieldsString",
@ -261,7 +261,7 @@ func TestCoverInt8(t *testing.T) {
A int8 `json:"a,string"` A int8 `json:"a,string"`
B int8 `json:"b,string"` B int8 `json:"b,string"`
C int8 `json:"c,string"` C int8 `json:"c,string"`
}{A: 1, B: 2, C: 3}, }{A: -1, B: 2, C: 3},
}, },
// HeadInt8PtrMultiFields // HeadInt8PtrMultiFields
@ -271,7 +271,7 @@ func TestCoverInt8(t *testing.T) {
A *int8 `json:"a"` A *int8 `json:"a"`
B *int8 `json:"b"` B *int8 `json:"b"`
C *int8 `json:"c"` C *int8 `json:"c"`
}{A: int8ptr(1), B: int8ptr(2), C: int8ptr(3)}, }{A: int8ptr(-1), B: int8ptr(2), C: int8ptr(3)},
}, },
{ {
name: "HeadInt8PtrMultiFieldsOmitEmpty", name: "HeadInt8PtrMultiFieldsOmitEmpty",
@ -279,7 +279,7 @@ func TestCoverInt8(t *testing.T) {
A *int8 `json:"a,omitempty"` A *int8 `json:"a,omitempty"`
B *int8 `json:"b,omitempty"` B *int8 `json:"b,omitempty"`
C *int8 `json:"c,omitempty"` C *int8 `json:"c,omitempty"`
}{A: int8ptr(1), B: int8ptr(2), C: int8ptr(3)}, }{A: int8ptr(-1), B: int8ptr(2), C: int8ptr(3)},
}, },
{ {
name: "HeadInt8PtrMultiFieldsString", name: "HeadInt8PtrMultiFieldsString",
@ -287,7 +287,7 @@ func TestCoverInt8(t *testing.T) {
A *int8 `json:"a,string"` A *int8 `json:"a,string"`
B *int8 `json:"b,string"` B *int8 `json:"b,string"`
C *int8 `json:"c,string"` C *int8 `json:"c,string"`
}{A: int8ptr(1), B: int8ptr(2), C: int8ptr(3)}, }{A: int8ptr(-1), B: int8ptr(2), C: int8ptr(3)},
}, },
// HeadInt8PtrNilMultiFields // HeadInt8PtrNilMultiFields
@ -345,21 +345,21 @@ func TestCoverInt8(t *testing.T) {
data: &struct { data: &struct {
A int8 `json:"a"` A int8 `json:"a"`
B int8 `json:"b"` B int8 `json:"b"`
}{A: 1, B: 2}, }{A: -1, B: 2},
}, },
{ {
name: "PtrHeadInt8MultiFieldsOmitEmpty", name: "PtrHeadInt8MultiFieldsOmitEmpty",
data: &struct { data: &struct {
A int8 `json:"a,omitempty"` A int8 `json:"a,omitempty"`
B int8 `json:"b,omitempty"` B int8 `json:"b,omitempty"`
}{A: 1, B: 2}, }{A: -1, B: 2},
}, },
{ {
name: "PtrHeadInt8MultiFieldsString", name: "PtrHeadInt8MultiFieldsString",
data: &struct { data: &struct {
A int8 `json:"a,string"` A int8 `json:"a,string"`
B int8 `json:"b,string"` B int8 `json:"b,string"`
}{A: 1, B: 2}, }{A: -1, B: 2},
}, },
// PtrHeadInt8PtrMultiFields // PtrHeadInt8PtrMultiFields
@ -368,21 +368,21 @@ func TestCoverInt8(t *testing.T) {
data: &struct { data: &struct {
A *int8 `json:"a"` A *int8 `json:"a"`
B *int8 `json:"b"` B *int8 `json:"b"`
}{A: int8ptr(1), B: int8ptr(2)}, }{A: int8ptr(-1), B: int8ptr(2)},
}, },
{ {
name: "PtrHeadInt8PtrMultiFieldsOmitEmpty", name: "PtrHeadInt8PtrMultiFieldsOmitEmpty",
data: &struct { data: &struct {
A *int8 `json:"a,omitempty"` A *int8 `json:"a,omitempty"`
B *int8 `json:"b,omitempty"` B *int8 `json:"b,omitempty"`
}{A: int8ptr(1), B: int8ptr(2)}, }{A: int8ptr(-1), B: int8ptr(2)},
}, },
{ {
name: "PtrHeadInt8PtrMultiFieldsString", name: "PtrHeadInt8PtrMultiFieldsString",
data: &struct { data: &struct {
A *int8 `json:"a,string"` A *int8 `json:"a,string"`
B *int8 `json:"b,string"` B *int8 `json:"b,string"`
}{A: int8ptr(1), B: int8ptr(2)}, }{A: int8ptr(-1), B: int8ptr(2)},
}, },
// PtrHeadInt8PtrNilMultiFields // PtrHeadInt8PtrNilMultiFields
@ -466,7 +466,7 @@ func TestCoverInt8(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int8 `json:"a"` A int8 `json:"a"`
}{A: 1}}, }{A: -1}},
}, },
{ {
name: "HeadInt8NotRootOmitEmpty", name: "HeadInt8NotRootOmitEmpty",
@ -476,7 +476,7 @@ func TestCoverInt8(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int8 `json:"a,omitempty"` A int8 `json:"a,omitempty"`
}{A: 1}}, }{A: -1}},
}, },
{ {
name: "HeadInt8NotRootString", name: "HeadInt8NotRootString",
@ -486,7 +486,7 @@ func TestCoverInt8(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int8 `json:"a,string"` A int8 `json:"a,string"`
}{A: 1}}, }{A: -1}},
}, },
// HeadInt8PtrNotRoot // HeadInt8PtrNotRoot
@ -498,7 +498,7 @@ func TestCoverInt8(t *testing.T) {
} }
}{A: struct { }{A: struct {
A *int8 `json:"a"` A *int8 `json:"a"`
}{int8ptr(1)}}, }{int8ptr(-1)}},
}, },
{ {
name: "HeadInt8PtrNotRootOmitEmpty", name: "HeadInt8PtrNotRootOmitEmpty",
@ -508,7 +508,7 @@ func TestCoverInt8(t *testing.T) {
} }
}{A: struct { }{A: struct {
A *int8 `json:"a,omitempty"` A *int8 `json:"a,omitempty"`
}{int8ptr(1)}}, }{int8ptr(-1)}},
}, },
{ {
name: "HeadInt8PtrNotRootString", name: "HeadInt8PtrNotRootString",
@ -518,7 +518,7 @@ func TestCoverInt8(t *testing.T) {
} }
}{A: struct { }{A: struct {
A *int8 `json:"a,string"` A *int8 `json:"a,string"`
}{int8ptr(1)}}, }{int8ptr(-1)}},
}, },
// HeadInt8PtrNilNotRoot // HeadInt8PtrNilNotRoot
@ -588,7 +588,7 @@ func TestCoverInt8(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A int8 `json:"a"` A int8 `json:"a"`
}{A: 1})}, }{A: -1})},
}, },
{ {
name: "PtrHeadInt8NotRootOmitEmpty", name: "PtrHeadInt8NotRootOmitEmpty",
@ -598,7 +598,7 @@ func TestCoverInt8(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A int8 `json:"a,omitempty"` A int8 `json:"a,omitempty"`
}{A: 1})}, }{A: -1})},
}, },
{ {
name: "PtrHeadInt8NotRootString", name: "PtrHeadInt8NotRootString",
@ -608,7 +608,7 @@ func TestCoverInt8(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A int8 `json:"a,string"` A int8 `json:"a,string"`
}{A: 1})}, }{A: -1})},
}, },
// PtrHeadInt8PtrNotRoot // PtrHeadInt8PtrNotRoot
@ -620,7 +620,7 @@ func TestCoverInt8(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A *int8 `json:"a"` A *int8 `json:"a"`
}{A: int8ptr(1)})}, }{A: int8ptr(-1)})},
}, },
{ {
name: "PtrHeadInt8PtrNotRootOmitEmpty", name: "PtrHeadInt8PtrNotRootOmitEmpty",
@ -630,7 +630,7 @@ func TestCoverInt8(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A *int8 `json:"a,omitempty"` A *int8 `json:"a,omitempty"`
}{A: int8ptr(1)})}, }{A: int8ptr(-1)})},
}, },
{ {
name: "PtrHeadInt8PtrNotRootString", name: "PtrHeadInt8PtrNotRootString",
@ -640,7 +640,7 @@ func TestCoverInt8(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A *int8 `json:"a,string"` A *int8 `json:"a,string"`
}{A: int8ptr(1)})}, }{A: int8ptr(-1)})},
}, },
// PtrHeadInt8PtrNilNotRoot // PtrHeadInt8PtrNilNotRoot
@ -748,7 +748,7 @@ func TestCoverInt8(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int8 `json:"a"` A int8 `json:"a"`
}{A: 1}, B: struct { }{A: -1}, B: struct {
B int8 `json:"b"` B int8 `json:"b"`
}{B: 2}}, }{B: 2}},
}, },
@ -763,7 +763,7 @@ func TestCoverInt8(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int8 `json:"a,omitempty"` A int8 `json:"a,omitempty"`
}{A: 1}, B: struct { }{A: -1}, B: struct {
B int8 `json:"b,omitempty"` B int8 `json:"b,omitempty"`
}{B: 2}}, }{B: 2}},
}, },
@ -778,7 +778,7 @@ func TestCoverInt8(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int8 `json:"a,string"` A int8 `json:"a,string"`
}{A: 1}, B: struct { }{A: -1}, B: struct {
B int8 `json:"b,string"` B int8 `json:"b,string"`
}{B: 2}}, }{B: 2}},
}, },
@ -795,7 +795,7 @@ func TestCoverInt8(t *testing.T) {
} }
}{A: struct { }{A: struct {
A *int8 `json:"a"` A *int8 `json:"a"`
}{A: int8ptr(1)}, B: struct { }{A: int8ptr(-1)}, B: struct {
B *int8 `json:"b"` B *int8 `json:"b"`
}{B: int8ptr(2)}}, }{B: int8ptr(2)}},
}, },
@ -810,7 +810,7 @@ func TestCoverInt8(t *testing.T) {
} }
}{A: struct { }{A: struct {
A *int8 `json:"a,omitempty"` A *int8 `json:"a,omitempty"`
}{A: int8ptr(1)}, B: struct { }{A: int8ptr(-1)}, B: struct {
B *int8 `json:"b,omitempty"` B *int8 `json:"b,omitempty"`
}{B: int8ptr(2)}}, }{B: int8ptr(2)}},
}, },
@ -825,7 +825,7 @@ func TestCoverInt8(t *testing.T) {
} }
}{A: struct { }{A: struct {
A *int8 `json:"a,string"` A *int8 `json:"a,string"`
}{A: int8ptr(1)}, B: struct { }{A: int8ptr(-1)}, B: struct {
B *int8 `json:"b,string"` B *int8 `json:"b,string"`
}{B: int8ptr(2)}}, }{B: int8ptr(2)}},
}, },
@ -924,7 +924,7 @@ func TestCoverInt8(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int8 `json:"a"` A int8 `json:"a"`
}{A: 1}, B: struct { }{A: -1}, B: struct {
B int8 `json:"b"` B int8 `json:"b"`
}{B: 2}}, }{B: 2}},
}, },
@ -939,7 +939,7 @@ func TestCoverInt8(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int8 `json:"a,omitempty"` A int8 `json:"a,omitempty"`
}{A: 1}, B: struct { }{A: -1}, B: struct {
B int8 `json:"b,omitempty"` B int8 `json:"b,omitempty"`
}{B: 2}}, }{B: 2}},
}, },
@ -954,7 +954,7 @@ func TestCoverInt8(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int8 `json:"a,string"` A int8 `json:"a,string"`
}{A: 1}, B: struct { }{A: -1}, B: struct {
B int8 `json:"b,string"` B int8 `json:"b,string"`
}{B: 2}}, }{B: 2}},
}, },
@ -971,7 +971,7 @@ func TestCoverInt8(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A *int8 `json:"a"` A *int8 `json:"a"`
}{A: int8ptr(1)}), B: &(struct { }{A: int8ptr(-1)}), B: &(struct {
B *int8 `json:"b"` B *int8 `json:"b"`
}{B: int8ptr(2)})}, }{B: int8ptr(2)})},
}, },
@ -986,7 +986,7 @@ func TestCoverInt8(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A *int8 `json:"a,omitempty"` A *int8 `json:"a,omitempty"`
}{A: int8ptr(1)}), B: &(struct { }{A: int8ptr(-1)}), B: &(struct {
B *int8 `json:"b,omitempty"` B *int8 `json:"b,omitempty"`
}{B: int8ptr(2)})}, }{B: int8ptr(2)})},
}, },
@ -1001,7 +1001,7 @@ func TestCoverInt8(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A *int8 `json:"a,string"` A *int8 `json:"a,string"`
}{A: int8ptr(1)}), B: &(struct { }{A: int8ptr(-1)}), B: &(struct {
B *int8 `json:"b,string"` B *int8 `json:"b,string"`
}{B: int8ptr(2)})}, }{B: int8ptr(2)})},
}, },
@ -1091,7 +1091,7 @@ func TestCoverInt8(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A int8 `json:"a"` A int8 `json:"a"`
B int8 `json:"b"` B int8 `json:"b"`
}{A: 1, B: 2}), B: &(struct { }{A: -1, B: 2}), B: &(struct {
A int8 `json:"a"` A int8 `json:"a"`
B int8 `json:"b"` B int8 `json:"b"`
}{A: 3, B: 4})}, }{A: 3, B: 4})},
@ -1110,7 +1110,7 @@ func TestCoverInt8(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A int8 `json:"a,omitempty"` A int8 `json:"a,omitempty"`
B int8 `json:"b,omitempty"` B int8 `json:"b,omitempty"`
}{A: 1, B: 2}), B: &(struct { }{A: -1, B: 2}), B: &(struct {
A int8 `json:"a,omitempty"` A int8 `json:"a,omitempty"`
B int8 `json:"b,omitempty"` B int8 `json:"b,omitempty"`
}{A: 3, B: 4})}, }{A: 3, B: 4})},
@ -1129,7 +1129,7 @@ func TestCoverInt8(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A int8 `json:"a,string"` A int8 `json:"a,string"`
B int8 `json:"b,string"` B int8 `json:"b,string"`
}{A: 1, B: 2}), B: &(struct { }{A: -1, B: 2}), B: &(struct {
A int8 `json:"a,string"` A int8 `json:"a,string"`
B int8 `json:"b,string"` B int8 `json:"b,string"`
}{A: 3, B: 4})}, }{A: 3, B: 4})},
@ -1232,7 +1232,7 @@ func TestCoverInt8(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A *int8 `json:"a"` A *int8 `json:"a"`
B *int8 `json:"b"` B *int8 `json:"b"`
}{A: int8ptr(1), B: int8ptr(2)}), B: &(struct { }{A: int8ptr(-1), B: int8ptr(2)}), B: &(struct {
A *int8 `json:"a"` A *int8 `json:"a"`
B *int8 `json:"b"` B *int8 `json:"b"`
}{A: int8ptr(3), B: int8ptr(4)})}, }{A: int8ptr(3), B: int8ptr(4)})},
@ -1251,7 +1251,7 @@ func TestCoverInt8(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A *int8 `json:"a,omitempty"` A *int8 `json:"a,omitempty"`
B *int8 `json:"b,omitempty"` B *int8 `json:"b,omitempty"`
}{A: int8ptr(1), B: int8ptr(2)}), B: &(struct { }{A: int8ptr(-1), B: int8ptr(2)}), B: &(struct {
A *int8 `json:"a,omitempty"` A *int8 `json:"a,omitempty"`
B *int8 `json:"b,omitempty"` B *int8 `json:"b,omitempty"`
}{A: int8ptr(3), B: int8ptr(4)})}, }{A: int8ptr(3), B: int8ptr(4)})},
@ -1270,7 +1270,7 @@ func TestCoverInt8(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A *int8 `json:"a,string"` A *int8 `json:"a,string"`
B *int8 `json:"b,string"` B *int8 `json:"b,string"`
}{A: int8ptr(1), B: int8ptr(2)}), B: &(struct { }{A: int8ptr(-1), B: int8ptr(2)}), B: &(struct {
A *int8 `json:"a,string"` A *int8 `json:"a,string"`
B *int8 `json:"b,string"` B *int8 `json:"b,string"`
}{A: int8ptr(3), B: int8ptr(4)})}, }{A: int8ptr(3), B: int8ptr(4)})},
@ -1365,7 +1365,7 @@ func TestCoverInt8(t *testing.T) {
structInt8 structInt8
B int8 `json:"b"` B int8 `json:"b"`
}{ }{
structInt8: structInt8{A: 1}, structInt8: structInt8{A: -1},
B: 2, B: 2,
}, },
}, },
@ -1375,7 +1375,7 @@ func TestCoverInt8(t *testing.T) {
structInt8OmitEmpty structInt8OmitEmpty
B int8 `json:"b,omitempty"` B int8 `json:"b,omitempty"`
}{ }{
structInt8OmitEmpty: structInt8OmitEmpty{A: 1}, structInt8OmitEmpty: structInt8OmitEmpty{A: -1},
B: 2, B: 2,
}, },
}, },
@ -1385,7 +1385,7 @@ func TestCoverInt8(t *testing.T) {
structInt8String structInt8String
B int8 `json:"b,string"` B int8 `json:"b,string"`
}{ }{
structInt8String: structInt8String{A: 1}, structInt8String: structInt8String{A: -1},
B: 2, B: 2,
}, },
}, },
@ -1397,7 +1397,7 @@ func TestCoverInt8(t *testing.T) {
*structInt8 *structInt8
B int8 `json:"b"` B int8 `json:"b"`
}{ }{
structInt8: &structInt8{A: 1}, structInt8: &structInt8{A: -1},
B: 2, B: 2,
}, },
}, },
@ -1407,7 +1407,7 @@ func TestCoverInt8(t *testing.T) {
*structInt8OmitEmpty *structInt8OmitEmpty
B int8 `json:"b,omitempty"` B int8 `json:"b,omitempty"`
}{ }{
structInt8OmitEmpty: &structInt8OmitEmpty{A: 1}, structInt8OmitEmpty: &structInt8OmitEmpty{A: -1},
B: 2, B: 2,
}, },
}, },
@ -1417,7 +1417,7 @@ func TestCoverInt8(t *testing.T) {
*structInt8String *structInt8String
B int8 `json:"b,string"` B int8 `json:"b,string"`
}{ }{
structInt8String: &structInt8String{A: 1}, structInt8String: &structInt8String{A: -1},
B: 2, B: 2,
}, },
}, },
@ -1461,7 +1461,7 @@ func TestCoverInt8(t *testing.T) {
structInt8Ptr structInt8Ptr
B *int8 `json:"b"` B *int8 `json:"b"`
}{ }{
structInt8Ptr: structInt8Ptr{A: int8ptr(1)}, structInt8Ptr: structInt8Ptr{A: int8ptr(-1)},
B: int8ptr(2), B: int8ptr(2),
}, },
}, },
@ -1471,7 +1471,7 @@ func TestCoverInt8(t *testing.T) {
structInt8PtrOmitEmpty structInt8PtrOmitEmpty
B *int8 `json:"b,omitempty"` B *int8 `json:"b,omitempty"`
}{ }{
structInt8PtrOmitEmpty: structInt8PtrOmitEmpty{A: int8ptr(1)}, structInt8PtrOmitEmpty: structInt8PtrOmitEmpty{A: int8ptr(-1)},
B: int8ptr(2), B: int8ptr(2),
}, },
}, },
@ -1481,7 +1481,7 @@ func TestCoverInt8(t *testing.T) {
structInt8PtrString structInt8PtrString
B *int8 `json:"b,string"` B *int8 `json:"b,string"`
}{ }{
structInt8PtrString: structInt8PtrString{A: int8ptr(1)}, structInt8PtrString: structInt8PtrString{A: int8ptr(-1)},
B: int8ptr(2), B: int8ptr(2),
}, },
}, },
@ -1525,7 +1525,7 @@ func TestCoverInt8(t *testing.T) {
*structInt8Ptr *structInt8Ptr
B *int8 `json:"b"` B *int8 `json:"b"`
}{ }{
structInt8Ptr: &structInt8Ptr{A: int8ptr(1)}, structInt8Ptr: &structInt8Ptr{A: int8ptr(-1)},
B: int8ptr(2), B: int8ptr(2),
}, },
}, },
@ -1535,7 +1535,7 @@ func TestCoverInt8(t *testing.T) {
*structInt8PtrOmitEmpty *structInt8PtrOmitEmpty
B *int8 `json:"b,omitempty"` B *int8 `json:"b,omitempty"`
}{ }{
structInt8PtrOmitEmpty: &structInt8PtrOmitEmpty{A: int8ptr(1)}, structInt8PtrOmitEmpty: &structInt8PtrOmitEmpty{A: int8ptr(-1)},
B: int8ptr(2), B: int8ptr(2),
}, },
}, },
@ -1545,7 +1545,7 @@ func TestCoverInt8(t *testing.T) {
*structInt8PtrString *structInt8PtrString
B *int8 `json:"b,string"` B *int8 `json:"b,string"`
}{ }{
structInt8PtrString: &structInt8PtrString{A: int8ptr(1)}, structInt8PtrString: &structInt8PtrString{A: int8ptr(-1)},
B: int8ptr(2), B: int8ptr(2),
}, },
}, },
@ -1588,7 +1588,7 @@ func TestCoverInt8(t *testing.T) {
data: struct { data: struct {
structInt8 structInt8
}{ }{
structInt8: structInt8{A: 1}, structInt8: structInt8{A: -1},
}, },
}, },
{ {
@ -1596,7 +1596,7 @@ func TestCoverInt8(t *testing.T) {
data: struct { data: struct {
structInt8OmitEmpty structInt8OmitEmpty
}{ }{
structInt8OmitEmpty: structInt8OmitEmpty{A: 1}, structInt8OmitEmpty: structInt8OmitEmpty{A: -1},
}, },
}, },
{ {
@ -1604,7 +1604,7 @@ func TestCoverInt8(t *testing.T) {
data: struct { data: struct {
structInt8String structInt8String
}{ }{
structInt8String: structInt8String{A: 1}, structInt8String: structInt8String{A: -1},
}, },
}, },
@ -1614,7 +1614,7 @@ func TestCoverInt8(t *testing.T) {
data: struct { data: struct {
*structInt8 *structInt8
}{ }{
structInt8: &structInt8{A: 1}, structInt8: &structInt8{A: -1},
}, },
}, },
{ {
@ -1622,7 +1622,7 @@ func TestCoverInt8(t *testing.T) {
data: struct { data: struct {
*structInt8OmitEmpty *structInt8OmitEmpty
}{ }{
structInt8OmitEmpty: &structInt8OmitEmpty{A: 1}, structInt8OmitEmpty: &structInt8OmitEmpty{A: -1},
}, },
}, },
{ {
@ -1630,7 +1630,7 @@ func TestCoverInt8(t *testing.T) {
data: struct { data: struct {
*structInt8String *structInt8String
}{ }{
structInt8String: &structInt8String{A: 1}, structInt8String: &structInt8String{A: -1},
}, },
}, },
@ -1666,7 +1666,7 @@ func TestCoverInt8(t *testing.T) {
data: struct { data: struct {
structInt8Ptr structInt8Ptr
}{ }{
structInt8Ptr: structInt8Ptr{A: int8ptr(1)}, structInt8Ptr: structInt8Ptr{A: int8ptr(-1)},
}, },
}, },
{ {
@ -1674,7 +1674,7 @@ func TestCoverInt8(t *testing.T) {
data: struct { data: struct {
structInt8PtrOmitEmpty structInt8PtrOmitEmpty
}{ }{
structInt8PtrOmitEmpty: structInt8PtrOmitEmpty{A: int8ptr(1)}, structInt8PtrOmitEmpty: structInt8PtrOmitEmpty{A: int8ptr(-1)},
}, },
}, },
{ {
@ -1682,7 +1682,7 @@ func TestCoverInt8(t *testing.T) {
data: struct { data: struct {
structInt8PtrString structInt8PtrString
}{ }{
structInt8PtrString: structInt8PtrString{A: int8ptr(1)}, structInt8PtrString: structInt8PtrString{A: int8ptr(-1)},
}, },
}, },
@ -1718,7 +1718,7 @@ func TestCoverInt8(t *testing.T) {
data: struct { data: struct {
*structInt8Ptr *structInt8Ptr
}{ }{
structInt8Ptr: &structInt8Ptr{A: int8ptr(1)}, structInt8Ptr: &structInt8Ptr{A: int8ptr(-1)},
}, },
}, },
{ {
@ -1726,7 +1726,7 @@ func TestCoverInt8(t *testing.T) {
data: struct { data: struct {
*structInt8PtrOmitEmpty *structInt8PtrOmitEmpty
}{ }{
structInt8PtrOmitEmpty: &structInt8PtrOmitEmpty{A: int8ptr(1)}, structInt8PtrOmitEmpty: &structInt8PtrOmitEmpty{A: int8ptr(-1)},
}, },
}, },
{ {
@ -1734,7 +1734,7 @@ func TestCoverInt8(t *testing.T) {
data: struct { data: struct {
*structInt8PtrString *structInt8PtrString
}{ }{
structInt8PtrString: &structInt8PtrString{A: int8ptr(1)}, structInt8PtrString: &structInt8PtrString{A: int8ptr(-1)},
}, },
}, },

View File

@ -57,19 +57,19 @@ func TestCoverInt(t *testing.T) {
name: "HeadInt", name: "HeadInt",
data: struct { data: struct {
A int `json:"a"` A int `json:"a"`
}{A: 1}, }{A: -1},
}, },
{ {
name: "HeadIntOmitEmpty", name: "HeadIntOmitEmpty",
data: struct { data: struct {
A int `json:"a,omitempty"` A int `json:"a,omitempty"`
}{A: 1}, }{A: -1},
}, },
{ {
name: "HeadIntString", name: "HeadIntString",
data: struct { data: struct {
A int `json:"a,string"` A int `json:"a,string"`
}{A: 1}, }{A: -1},
}, },
// HeadIntPtr // HeadIntPtr
@ -77,19 +77,19 @@ func TestCoverInt(t *testing.T) {
name: "HeadIntPtr", name: "HeadIntPtr",
data: struct { data: struct {
A *int `json:"a"` A *int `json:"a"`
}{A: intptr(1)}, }{A: intptr(-1)},
}, },
{ {
name: "HeadIntPtrOmitEmpty", name: "HeadIntPtrOmitEmpty",
data: struct { data: struct {
A *int `json:"a,omitempty"` A *int `json:"a,omitempty"`
}{A: intptr(1)}, }{A: intptr(-1)},
}, },
{ {
name: "HeadIntPtrString", name: "HeadIntPtrString",
data: struct { data: struct {
A *int `json:"a,string"` A *int `json:"a,string"`
}{A: intptr(1)}, }{A: intptr(-1)},
}, },
// HeadIntPtrNil // HeadIntPtrNil
@ -137,19 +137,19 @@ func TestCoverInt(t *testing.T) {
name: "PtrHeadInt", name: "PtrHeadInt",
data: &struct { data: &struct {
A int `json:"a"` A int `json:"a"`
}{A: 1}, }{A: -1},
}, },
{ {
name: "PtrHeadIntOmitEmpty", name: "PtrHeadIntOmitEmpty",
data: &struct { data: &struct {
A int `json:"a,omitempty"` A int `json:"a,omitempty"`
}{A: 1}, }{A: -1},
}, },
{ {
name: "PtrHeadIntString", name: "PtrHeadIntString",
data: &struct { data: &struct {
A int `json:"a,string"` A int `json:"a,string"`
}{A: 1}, }{A: -1},
}, },
// PtrHeadIntPtr // PtrHeadIntPtr
@ -157,19 +157,19 @@ func TestCoverInt(t *testing.T) {
name: "PtrHeadIntPtr", name: "PtrHeadIntPtr",
data: &struct { data: &struct {
A *int `json:"a"` A *int `json:"a"`
}{A: intptr(1)}, }{A: intptr(-1)},
}, },
{ {
name: "PtrHeadIntPtrOmitEmpty", name: "PtrHeadIntPtrOmitEmpty",
data: &struct { data: &struct {
A *int `json:"a,omitempty"` A *int `json:"a,omitempty"`
}{A: intptr(1)}, }{A: intptr(-1)},
}, },
{ {
name: "PtrHeadIntPtrString", name: "PtrHeadIntPtrString",
data: &struct { data: &struct {
A *int `json:"a,string"` A *int `json:"a,string"`
}{A: intptr(1)}, }{A: intptr(-1)},
}, },
// PtrHeadIntPtrNil // PtrHeadIntPtrNil
@ -245,7 +245,7 @@ func TestCoverInt(t *testing.T) {
A int `json:"a"` A int `json:"a"`
B int `json:"b"` B int `json:"b"`
C int `json:"c"` C int `json:"c"`
}{A: 1, B: 2, C: 3}, }{A: -1, B: 2, C: 3},
}, },
{ {
name: "HeadIntMultiFieldsOmitEmpty", name: "HeadIntMultiFieldsOmitEmpty",
@ -253,7 +253,7 @@ func TestCoverInt(t *testing.T) {
A int `json:"a,omitempty"` A int `json:"a,omitempty"`
B int `json:"b,omitempty"` B int `json:"b,omitempty"`
C int `json:"c,omitempty"` C int `json:"c,omitempty"`
}{A: 1, B: 2, C: 3}, }{A: -1, B: 2, C: 3},
}, },
{ {
name: "HeadIntMultiFieldsString", name: "HeadIntMultiFieldsString",
@ -261,7 +261,7 @@ func TestCoverInt(t *testing.T) {
A int `json:"a,string"` A int `json:"a,string"`
B int `json:"b,string"` B int `json:"b,string"`
C int `json:"c,string"` C int `json:"c,string"`
}{A: 1, B: 2, C: 3}, }{A: -1, B: 2, C: 3},
}, },
// HeadIntPtrMultiFields // HeadIntPtrMultiFields
@ -271,7 +271,7 @@ func TestCoverInt(t *testing.T) {
A *int `json:"a"` A *int `json:"a"`
B *int `json:"b"` B *int `json:"b"`
C *int `json:"c"` C *int `json:"c"`
}{A: intptr(1), B: intptr(2), C: intptr(3)}, }{A: intptr(-1), B: intptr(2), C: intptr(3)},
}, },
{ {
name: "HeadIntPtrMultiFieldsOmitEmpty", name: "HeadIntPtrMultiFieldsOmitEmpty",
@ -279,7 +279,7 @@ func TestCoverInt(t *testing.T) {
A *int `json:"a,omitempty"` A *int `json:"a,omitempty"`
B *int `json:"b,omitempty"` B *int `json:"b,omitempty"`
C *int `json:"c,omitempty"` C *int `json:"c,omitempty"`
}{A: intptr(1), B: intptr(2), C: intptr(3)}, }{A: intptr(-1), B: intptr(2), C: intptr(3)},
}, },
{ {
name: "HeadIntPtrMultiFieldsString", name: "HeadIntPtrMultiFieldsString",
@ -287,7 +287,7 @@ func TestCoverInt(t *testing.T) {
A *int `json:"a,string"` A *int `json:"a,string"`
B *int `json:"b,string"` B *int `json:"b,string"`
C *int `json:"c,string"` C *int `json:"c,string"`
}{A: intptr(1), B: intptr(2), C: intptr(3)}, }{A: intptr(-1), B: intptr(2), C: intptr(3)},
}, },
// HeadIntPtrNilMultiFields // HeadIntPtrNilMultiFields
@ -345,21 +345,21 @@ func TestCoverInt(t *testing.T) {
data: &struct { data: &struct {
A int `json:"a"` A int `json:"a"`
B int `json:"b"` B int `json:"b"`
}{A: 1, B: 2}, }{A: -1, B: 2},
}, },
{ {
name: "PtrHeadIntMultiFieldsOmitEmpty", name: "PtrHeadIntMultiFieldsOmitEmpty",
data: &struct { data: &struct {
A int `json:"a,omitempty"` A int `json:"a,omitempty"`
B int `json:"b,omitempty"` B int `json:"b,omitempty"`
}{A: 1, B: 2}, }{A: -1, B: 2},
}, },
{ {
name: "PtrHeadIntMultiFieldsString", name: "PtrHeadIntMultiFieldsString",
data: &struct { data: &struct {
A int `json:"a,string"` A int `json:"a,string"`
B int `json:"b,string"` B int `json:"b,string"`
}{A: 1, B: 2}, }{A: -1, B: 2},
}, },
// PtrHeadIntPtrMultiFields // PtrHeadIntPtrMultiFields
@ -368,21 +368,21 @@ func TestCoverInt(t *testing.T) {
data: &struct { data: &struct {
A *int `json:"a"` A *int `json:"a"`
B *int `json:"b"` B *int `json:"b"`
}{A: intptr(1), B: intptr(2)}, }{A: intptr(-1), B: intptr(2)},
}, },
{ {
name: "PtrHeadIntPtrMultiFieldsOmitEmpty", name: "PtrHeadIntPtrMultiFieldsOmitEmpty",
data: &struct { data: &struct {
A *int `json:"a,omitempty"` A *int `json:"a,omitempty"`
B *int `json:"b,omitempty"` B *int `json:"b,omitempty"`
}{A: intptr(1), B: intptr(2)}, }{A: intptr(-1), B: intptr(2)},
}, },
{ {
name: "PtrHeadIntPtrMultiFieldsString", name: "PtrHeadIntPtrMultiFieldsString",
data: &struct { data: &struct {
A *int `json:"a,string"` A *int `json:"a,string"`
B *int `json:"b,string"` B *int `json:"b,string"`
}{A: intptr(1), B: intptr(2)}, }{A: intptr(-1), B: intptr(2)},
}, },
// PtrHeadIntPtrNilMultiFields // PtrHeadIntPtrNilMultiFields
@ -466,7 +466,7 @@ func TestCoverInt(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int `json:"a"` A int `json:"a"`
}{A: 1}}, }{A: -1}},
}, },
{ {
name: "HeadIntNotRootOmitEmpty", name: "HeadIntNotRootOmitEmpty",
@ -476,7 +476,7 @@ func TestCoverInt(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int `json:"a,omitempty"` A int `json:"a,omitempty"`
}{A: 1}}, }{A: -1}},
}, },
{ {
name: "HeadIntNotRootString", name: "HeadIntNotRootString",
@ -486,7 +486,7 @@ func TestCoverInt(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int `json:"a,string"` A int `json:"a,string"`
}{A: 1}}, }{A: -1}},
}, },
// HeadIntPtrNotRoot // HeadIntPtrNotRoot
@ -498,7 +498,7 @@ func TestCoverInt(t *testing.T) {
} }
}{A: struct { }{A: struct {
A *int `json:"a"` A *int `json:"a"`
}{intptr(1)}}, }{intptr(-1)}},
}, },
{ {
name: "HeadIntPtrNotRootOmitEmpty", name: "HeadIntPtrNotRootOmitEmpty",
@ -508,7 +508,7 @@ func TestCoverInt(t *testing.T) {
} }
}{A: struct { }{A: struct {
A *int `json:"a,omitempty"` A *int `json:"a,omitempty"`
}{intptr(1)}}, }{intptr(-1)}},
}, },
{ {
name: "HeadIntPtrNotRootString", name: "HeadIntPtrNotRootString",
@ -518,7 +518,7 @@ func TestCoverInt(t *testing.T) {
} }
}{A: struct { }{A: struct {
A *int `json:"a,string"` A *int `json:"a,string"`
}{intptr(1)}}, }{intptr(-1)}},
}, },
// HeadIntPtrNilNotRoot // HeadIntPtrNilNotRoot
@ -588,7 +588,7 @@ func TestCoverInt(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A int `json:"a"` A int `json:"a"`
}{A: 1})}, }{A: -1})},
}, },
{ {
name: "PtrHeadIntNotRootOmitEmpty", name: "PtrHeadIntNotRootOmitEmpty",
@ -598,7 +598,7 @@ func TestCoverInt(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A int `json:"a,omitempty"` A int `json:"a,omitempty"`
}{A: 1})}, }{A: -1})},
}, },
{ {
name: "PtrHeadIntNotRootString", name: "PtrHeadIntNotRootString",
@ -608,7 +608,7 @@ func TestCoverInt(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A int `json:"a,string"` A int `json:"a,string"`
}{A: 1})}, }{A: -1})},
}, },
// PtrHeadIntPtrNotRoot // PtrHeadIntPtrNotRoot
@ -620,7 +620,7 @@ func TestCoverInt(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A *int `json:"a"` A *int `json:"a"`
}{A: intptr(1)})}, }{A: intptr(-1)})},
}, },
{ {
name: "PtrHeadIntPtrNotRootOmitEmpty", name: "PtrHeadIntPtrNotRootOmitEmpty",
@ -630,7 +630,7 @@ func TestCoverInt(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A *int `json:"a,omitempty"` A *int `json:"a,omitempty"`
}{A: intptr(1)})}, }{A: intptr(-1)})},
}, },
{ {
name: "PtrHeadIntPtrNotRootString", name: "PtrHeadIntPtrNotRootString",
@ -640,7 +640,7 @@ func TestCoverInt(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A *int `json:"a,string"` A *int `json:"a,string"`
}{A: intptr(1)})}, }{A: intptr(-1)})},
}, },
// PtrHeadIntPtrNilNotRoot // PtrHeadIntPtrNilNotRoot
@ -748,7 +748,7 @@ func TestCoverInt(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int `json:"a"` A int `json:"a"`
}{A: 1}, B: struct { }{A: -1}, B: struct {
B int `json:"b"` B int `json:"b"`
}{B: 2}}, }{B: 2}},
}, },
@ -763,7 +763,7 @@ func TestCoverInt(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int `json:"a,omitempty"` A int `json:"a,omitempty"`
}{A: 1}, B: struct { }{A: -1}, B: struct {
B int `json:"b,omitempty"` B int `json:"b,omitempty"`
}{B: 2}}, }{B: 2}},
}, },
@ -778,7 +778,7 @@ func TestCoverInt(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int `json:"a,string"` A int `json:"a,string"`
}{A: 1}, B: struct { }{A: -1}, B: struct {
B int `json:"b,string"` B int `json:"b,string"`
}{B: 2}}, }{B: 2}},
}, },
@ -795,7 +795,7 @@ func TestCoverInt(t *testing.T) {
} }
}{A: struct { }{A: struct {
A *int `json:"a"` A *int `json:"a"`
}{A: intptr(1)}, B: struct { }{A: intptr(-1)}, B: struct {
B *int `json:"b"` B *int `json:"b"`
}{B: intptr(2)}}, }{B: intptr(2)}},
}, },
@ -810,7 +810,7 @@ func TestCoverInt(t *testing.T) {
} }
}{A: struct { }{A: struct {
A *int `json:"a,omitempty"` A *int `json:"a,omitempty"`
}{A: intptr(1)}, B: struct { }{A: intptr(-1)}, B: struct {
B *int `json:"b,omitempty"` B *int `json:"b,omitempty"`
}{B: intptr(2)}}, }{B: intptr(2)}},
}, },
@ -825,7 +825,7 @@ func TestCoverInt(t *testing.T) {
} }
}{A: struct { }{A: struct {
A *int `json:"a,string"` A *int `json:"a,string"`
}{A: intptr(1)}, B: struct { }{A: intptr(-1)}, B: struct {
B *int `json:"b,string"` B *int `json:"b,string"`
}{B: intptr(2)}}, }{B: intptr(2)}},
}, },
@ -924,7 +924,7 @@ func TestCoverInt(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int `json:"a"` A int `json:"a"`
}{A: 1}, B: struct { }{A: -1}, B: struct {
B int `json:"b"` B int `json:"b"`
}{B: 2}}, }{B: 2}},
}, },
@ -939,7 +939,7 @@ func TestCoverInt(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int `json:"a,omitempty"` A int `json:"a,omitempty"`
}{A: 1}, B: struct { }{A: -1}, B: struct {
B int `json:"b,omitempty"` B int `json:"b,omitempty"`
}{B: 2}}, }{B: 2}},
}, },
@ -954,7 +954,7 @@ func TestCoverInt(t *testing.T) {
} }
}{A: struct { }{A: struct {
A int `json:"a,string"` A int `json:"a,string"`
}{A: 1}, B: struct { }{A: -1}, B: struct {
B int `json:"b,string"` B int `json:"b,string"`
}{B: 2}}, }{B: 2}},
}, },
@ -971,7 +971,7 @@ func TestCoverInt(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A *int `json:"a"` A *int `json:"a"`
}{A: intptr(1)}), B: &(struct { }{A: intptr(-1)}), B: &(struct {
B *int `json:"b"` B *int `json:"b"`
}{B: intptr(2)})}, }{B: intptr(2)})},
}, },
@ -986,7 +986,7 @@ func TestCoverInt(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A *int `json:"a,omitempty"` A *int `json:"a,omitempty"`
}{A: intptr(1)}), B: &(struct { }{A: intptr(-1)}), B: &(struct {
B *int `json:"b,omitempty"` B *int `json:"b,omitempty"`
}{B: intptr(2)})}, }{B: intptr(2)})},
}, },
@ -1001,7 +1001,7 @@ func TestCoverInt(t *testing.T) {
} }
}{A: &(struct { }{A: &(struct {
A *int `json:"a,string"` A *int `json:"a,string"`
}{A: intptr(1)}), B: &(struct { }{A: intptr(-1)}), B: &(struct {
B *int `json:"b,string"` B *int `json:"b,string"`
}{B: intptr(2)})}, }{B: intptr(2)})},
}, },
@ -1091,7 +1091,7 @@ func TestCoverInt(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A int `json:"a"` A int `json:"a"`
B int `json:"b"` B int `json:"b"`
}{A: 1, B: 2}), B: &(struct { }{A: -1, B: 2}), B: &(struct {
A int `json:"a"` A int `json:"a"`
B int `json:"b"` B int `json:"b"`
}{A: 3, B: 4})}, }{A: 3, B: 4})},
@ -1110,7 +1110,7 @@ func TestCoverInt(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A int `json:"a,omitempty"` A int `json:"a,omitempty"`
B int `json:"b,omitempty"` B int `json:"b,omitempty"`
}{A: 1, B: 2}), B: &(struct { }{A: -1, B: 2}), B: &(struct {
A int `json:"a,omitempty"` A int `json:"a,omitempty"`
B int `json:"b,omitempty"` B int `json:"b,omitempty"`
}{A: 3, B: 4})}, }{A: 3, B: 4})},
@ -1129,7 +1129,7 @@ func TestCoverInt(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A int `json:"a,string"` A int `json:"a,string"`
B int `json:"b,string"` B int `json:"b,string"`
}{A: 1, B: 2}), B: &(struct { }{A: -1, B: 2}), B: &(struct {
A int `json:"a,string"` A int `json:"a,string"`
B int `json:"b,string"` B int `json:"b,string"`
}{A: 3, B: 4})}, }{A: 3, B: 4})},
@ -1232,7 +1232,7 @@ func TestCoverInt(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A *int `json:"a"` A *int `json:"a"`
B *int `json:"b"` B *int `json:"b"`
}{A: intptr(1), B: intptr(2)}), B: &(struct { }{A: intptr(-1), B: intptr(2)}), B: &(struct {
A *int `json:"a"` A *int `json:"a"`
B *int `json:"b"` B *int `json:"b"`
}{A: intptr(3), B: intptr(4)})}, }{A: intptr(3), B: intptr(4)})},
@ -1251,7 +1251,7 @@ func TestCoverInt(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A *int `json:"a,omitempty"` A *int `json:"a,omitempty"`
B *int `json:"b,omitempty"` B *int `json:"b,omitempty"`
}{A: intptr(1), B: intptr(2)}), B: &(struct { }{A: intptr(-1), B: intptr(2)}), B: &(struct {
A *int `json:"a,omitempty"` A *int `json:"a,omitempty"`
B *int `json:"b,omitempty"` B *int `json:"b,omitempty"`
}{A: intptr(3), B: intptr(4)})}, }{A: intptr(3), B: intptr(4)})},
@ -1270,7 +1270,7 @@ func TestCoverInt(t *testing.T) {
}{A: &(struct { }{A: &(struct {
A *int `json:"a,string"` A *int `json:"a,string"`
B *int `json:"b,string"` B *int `json:"b,string"`
}{A: intptr(1), B: intptr(2)}), B: &(struct { }{A: intptr(-1), B: intptr(2)}), B: &(struct {
A *int `json:"a,string"` A *int `json:"a,string"`
B *int `json:"b,string"` B *int `json:"b,string"`
}{A: intptr(3), B: intptr(4)})}, }{A: intptr(3), B: intptr(4)})},
@ -1365,7 +1365,7 @@ func TestCoverInt(t *testing.T) {
structInt structInt
B int `json:"b"` B int `json:"b"`
}{ }{
structInt: structInt{A: 1}, structInt: structInt{A: -1},
B: 2, B: 2,
}, },
}, },
@ -1375,7 +1375,7 @@ func TestCoverInt(t *testing.T) {
structIntOmitEmpty structIntOmitEmpty
B int `json:"b,omitempty"` B int `json:"b,omitempty"`
}{ }{
structIntOmitEmpty: structIntOmitEmpty{A: 1}, structIntOmitEmpty: structIntOmitEmpty{A: -1},
B: 2, B: 2,
}, },
}, },
@ -1385,7 +1385,7 @@ func TestCoverInt(t *testing.T) {
structIntString structIntString
B int `json:"b,string"` B int `json:"b,string"`
}{ }{
structIntString: structIntString{A: 1}, structIntString: structIntString{A: -1},
B: 2, B: 2,
}, },
}, },
@ -1397,7 +1397,7 @@ func TestCoverInt(t *testing.T) {
*structInt *structInt
B int `json:"b"` B int `json:"b"`
}{ }{
structInt: &structInt{A: 1}, structInt: &structInt{A: -1},
B: 2, B: 2,
}, },
}, },
@ -1407,7 +1407,7 @@ func TestCoverInt(t *testing.T) {
*structIntOmitEmpty *structIntOmitEmpty
B int `json:"b,omitempty"` B int `json:"b,omitempty"`
}{ }{
structIntOmitEmpty: &structIntOmitEmpty{A: 1}, structIntOmitEmpty: &structIntOmitEmpty{A: -1},
B: 2, B: 2,
}, },
}, },
@ -1417,7 +1417,7 @@ func TestCoverInt(t *testing.T) {
*structIntString *structIntString
B int `json:"b,string"` B int `json:"b,string"`
}{ }{
structIntString: &structIntString{A: 1}, structIntString: &structIntString{A: -1},
B: 2, B: 2,
}, },
}, },
@ -1461,7 +1461,7 @@ func TestCoverInt(t *testing.T) {
structIntPtr structIntPtr
B *int `json:"b"` B *int `json:"b"`
}{ }{
structIntPtr: structIntPtr{A: intptr(1)}, structIntPtr: structIntPtr{A: intptr(-1)},
B: intptr(2), B: intptr(2),
}, },
}, },
@ -1471,7 +1471,7 @@ func TestCoverInt(t *testing.T) {
structIntPtrOmitEmpty structIntPtrOmitEmpty
B *int `json:"b,omitempty"` B *int `json:"b,omitempty"`
}{ }{
structIntPtrOmitEmpty: structIntPtrOmitEmpty{A: intptr(1)}, structIntPtrOmitEmpty: structIntPtrOmitEmpty{A: intptr(-1)},
B: intptr(2), B: intptr(2),
}, },
}, },
@ -1481,7 +1481,7 @@ func TestCoverInt(t *testing.T) {
structIntPtrString structIntPtrString
B *int `json:"b,string"` B *int `json:"b,string"`
}{ }{
structIntPtrString: structIntPtrString{A: intptr(1)}, structIntPtrString: structIntPtrString{A: intptr(-1)},
B: intptr(2), B: intptr(2),
}, },
}, },
@ -1525,7 +1525,7 @@ func TestCoverInt(t *testing.T) {
*structIntPtr *structIntPtr
B *int `json:"b"` B *int `json:"b"`
}{ }{
structIntPtr: &structIntPtr{A: intptr(1)}, structIntPtr: &structIntPtr{A: intptr(-1)},
B: intptr(2), B: intptr(2),
}, },
}, },
@ -1535,7 +1535,7 @@ func TestCoverInt(t *testing.T) {
*structIntPtrOmitEmpty *structIntPtrOmitEmpty
B *int `json:"b,omitempty"` B *int `json:"b,omitempty"`
}{ }{
structIntPtrOmitEmpty: &structIntPtrOmitEmpty{A: intptr(1)}, structIntPtrOmitEmpty: &structIntPtrOmitEmpty{A: intptr(-1)},
B: intptr(2), B: intptr(2),
}, },
}, },
@ -1545,7 +1545,7 @@ func TestCoverInt(t *testing.T) {
*structIntPtrString *structIntPtrString
B *int `json:"b,string"` B *int `json:"b,string"`
}{ }{
structIntPtrString: &structIntPtrString{A: intptr(1)}, structIntPtrString: &structIntPtrString{A: intptr(-1)},
B: intptr(2), B: intptr(2),
}, },
}, },
@ -1588,7 +1588,7 @@ func TestCoverInt(t *testing.T) {
data: struct { data: struct {
structInt structInt
}{ }{
structInt: structInt{A: 1}, structInt: structInt{A: -1},
}, },
}, },
{ {
@ -1596,7 +1596,7 @@ func TestCoverInt(t *testing.T) {
data: struct { data: struct {
structIntOmitEmpty structIntOmitEmpty
}{ }{
structIntOmitEmpty: structIntOmitEmpty{A: 1}, structIntOmitEmpty: structIntOmitEmpty{A: -1},
}, },
}, },
{ {
@ -1604,7 +1604,7 @@ func TestCoverInt(t *testing.T) {
data: struct { data: struct {
structIntString structIntString
}{ }{
structIntString: structIntString{A: 1}, structIntString: structIntString{A: -1},
}, },
}, },
@ -1614,7 +1614,7 @@ func TestCoverInt(t *testing.T) {
data: struct { data: struct {
*structInt *structInt
}{ }{
structInt: &structInt{A: 1}, structInt: &structInt{A: -1},
}, },
}, },
{ {
@ -1622,7 +1622,7 @@ func TestCoverInt(t *testing.T) {
data: struct { data: struct {
*structIntOmitEmpty *structIntOmitEmpty
}{ }{
structIntOmitEmpty: &structIntOmitEmpty{A: 1}, structIntOmitEmpty: &structIntOmitEmpty{A: -1},
}, },
}, },
{ {
@ -1630,7 +1630,7 @@ func TestCoverInt(t *testing.T) {
data: struct { data: struct {
*structIntString *structIntString
}{ }{
structIntString: &structIntString{A: 1}, structIntString: &structIntString{A: -1},
}, },
}, },
@ -1666,7 +1666,7 @@ func TestCoverInt(t *testing.T) {
data: struct { data: struct {
structIntPtr structIntPtr
}{ }{
structIntPtr: structIntPtr{A: intptr(1)}, structIntPtr: structIntPtr{A: intptr(-1)},
}, },
}, },
{ {
@ -1674,7 +1674,7 @@ func TestCoverInt(t *testing.T) {
data: struct { data: struct {
structIntPtrOmitEmpty structIntPtrOmitEmpty
}{ }{
structIntPtrOmitEmpty: structIntPtrOmitEmpty{A: intptr(1)}, structIntPtrOmitEmpty: structIntPtrOmitEmpty{A: intptr(-1)},
}, },
}, },
{ {
@ -1682,7 +1682,7 @@ func TestCoverInt(t *testing.T) {
data: struct { data: struct {
structIntPtrString structIntPtrString
}{ }{
structIntPtrString: structIntPtrString{A: intptr(1)}, structIntPtrString: structIntPtrString{A: intptr(-1)},
}, },
}, },
@ -1718,7 +1718,7 @@ func TestCoverInt(t *testing.T) {
data: struct { data: struct {
*structIntPtr *structIntPtr
}{ }{
structIntPtr: &structIntPtr{A: intptr(1)}, structIntPtr: &structIntPtr{A: intptr(-1)},
}, },
}, },
{ {
@ -1726,7 +1726,7 @@ func TestCoverInt(t *testing.T) {
data: struct { data: struct {
*structIntPtrOmitEmpty *structIntPtrOmitEmpty
}{ }{
structIntPtrOmitEmpty: &structIntPtrOmitEmpty{A: intptr(1)}, structIntPtrOmitEmpty: &structIntPtrOmitEmpty{A: intptr(-1)},
}, },
}, },
{ {
@ -1734,7 +1734,7 @@ func TestCoverInt(t *testing.T) {
data: struct { data: struct {
*structIntPtrString *structIntPtrString
}{ }{
structIntPtrString: &structIntPtrString{A: intptr(1)}, structIntPtrString: &structIntPtrString{A: intptr(-1)},
}, },
}, },

View File

@ -3,6 +3,7 @@ package json
import ( import (
"encoding" "encoding"
"fmt" "fmt"
"math"
"reflect" "reflect"
"strings" "strings"
"unsafe" "unsafe"
@ -52,6 +53,24 @@ func encodeCompileToGetCodeSetSlowPath(typeptr uintptr) (*opcodeSet, error) {
return codeSet, nil return codeSet, nil
} }
func isIntOrUintType(typ *rtype) bool {
switch typ.Kind() {
case reflect.Int,
reflect.Int8,
reflect.Int16,
reflect.Int32,
reflect.Int64,
reflect.Uint,
reflect.Uint8,
reflect.Uint16,
reflect.Uint32,
reflect.Uint64,
reflect.Uintptr:
return true
}
return false
}
func encodeCompileHead(ctx *encodeCompileContext) (*opcode, error) { func encodeCompileHead(ctx *encodeCompileContext) (*opcode, error) {
typ := ctx.typ typ := ctx.typ
switch { switch {
@ -219,6 +238,9 @@ func encodeConvertHeadOnlyCode(c *opcode, isPtrHead bool) {
if strings.Contains(c.op.String(), "Map") { if strings.Contains(c.op.String(), "Map") {
return return
} }
if strings.Contains(c.op.String(), "EmptyStruct") {
return
}
isPtrOp := strings.Contains(c.op.String(), "Ptr") isPtrOp := strings.Contains(c.op.String(), "Ptr")
if isPtrOp && !isPtrHead { if isPtrOp && !isPtrHead {
@ -393,122 +415,188 @@ func encodeCompileMarshalTextPtr(ctx *encodeCompileContext) (*opcode, error) {
return code, nil return code, nil
} }
const intSize = 32 << (^uint(0) >> 63)
func encodeCompileInt(ctx *encodeCompileContext) (*opcode, error) { func encodeCompileInt(ctx *encodeCompileContext) (*opcode, error) {
code := newOpCode(ctx, opInt) code := newOpCode(ctx, opInt)
switch intSize {
case 32:
code.mask = math.MaxUint32
code.rshiftNum = 31
default:
code.mask = math.MaxUint64
code.rshiftNum = 63
}
ctx.incIndex() ctx.incIndex()
return code, nil return code, nil
} }
func encodeCompileInt8(ctx *encodeCompileContext) (*opcode, error) { func encodeCompileInt8(ctx *encodeCompileContext) (*opcode, error) {
code := newOpCode(ctx, opInt8) code := newOpCode(ctx, opInt)
code.mask = math.MaxUint8
code.rshiftNum = 7
ctx.incIndex() ctx.incIndex()
return code, nil return code, nil
} }
func encodeCompileInt16(ctx *encodeCompileContext) (*opcode, error) { func encodeCompileInt16(ctx *encodeCompileContext) (*opcode, error) {
code := newOpCode(ctx, opInt16) code := newOpCode(ctx, opInt)
code.mask = math.MaxUint16
code.rshiftNum = 15
ctx.incIndex() ctx.incIndex()
return code, nil return code, nil
} }
func encodeCompileInt32(ctx *encodeCompileContext) (*opcode, error) { func encodeCompileInt32(ctx *encodeCompileContext) (*opcode, error) {
code := newOpCode(ctx, opInt32) code := newOpCode(ctx, opInt)
code.mask = math.MaxUint32
code.rshiftNum = 31
ctx.incIndex() ctx.incIndex()
return code, nil return code, nil
} }
func encodeCompileInt64(ctx *encodeCompileContext) (*opcode, error) { func encodeCompileInt64(ctx *encodeCompileContext) (*opcode, error) {
code := newOpCode(ctx, opInt64) code := newOpCode(ctx, opInt)
code.mask = math.MaxUint64
code.rshiftNum = 63
ctx.incIndex() ctx.incIndex()
return code, nil return code, nil
} }
func encodeCompileUint(ctx *encodeCompileContext) (*opcode, error) { func encodeCompileUint(ctx *encodeCompileContext) (*opcode, error) {
code := newOpCode(ctx, opUint) code := newOpCode(ctx, opUint)
switch intSize {
case 32:
code.mask = math.MaxUint32
code.rshiftNum = 31
default:
code.mask = math.MaxUint64
code.rshiftNum = 63
}
ctx.incIndex() ctx.incIndex()
return code, nil return code, nil
} }
func encodeCompileUint8(ctx *encodeCompileContext) (*opcode, error) { func encodeCompileUint8(ctx *encodeCompileContext) (*opcode, error) {
code := newOpCode(ctx, opUint8) code := newOpCode(ctx, opUint)
code.mask = math.MaxUint8
code.rshiftNum = 7
ctx.incIndex() ctx.incIndex()
return code, nil return code, nil
} }
func encodeCompileUint16(ctx *encodeCompileContext) (*opcode, error) { func encodeCompileUint16(ctx *encodeCompileContext) (*opcode, error) {
code := newOpCode(ctx, opUint16) code := newOpCode(ctx, opUint)
code.mask = math.MaxUint16
code.rshiftNum = 15
ctx.incIndex() ctx.incIndex()
return code, nil return code, nil
} }
func encodeCompileUint32(ctx *encodeCompileContext) (*opcode, error) { func encodeCompileUint32(ctx *encodeCompileContext) (*opcode, error) {
code := newOpCode(ctx, opUint32) code := newOpCode(ctx, opUint)
code.mask = math.MaxUint32
code.rshiftNum = 31
ctx.incIndex() ctx.incIndex()
return code, nil return code, nil
} }
func encodeCompileUint64(ctx *encodeCompileContext) (*opcode, error) { func encodeCompileUint64(ctx *encodeCompileContext) (*opcode, error) {
code := newOpCode(ctx, opUint64) code := newOpCode(ctx, opUint)
code.mask = math.MaxUint64
code.rshiftNum = 63
ctx.incIndex() ctx.incIndex()
return code, nil return code, nil
} }
func encodeCompileIntString(ctx *encodeCompileContext) (*opcode, error) { func encodeCompileIntString(ctx *encodeCompileContext) (*opcode, error) {
code := newOpCode(ctx, opIntString) code := newOpCode(ctx, opIntString)
switch intSize {
case 32:
code.mask = math.MaxUint32
code.rshiftNum = 31
default:
code.mask = math.MaxUint64
code.rshiftNum = 63
}
ctx.incIndex() ctx.incIndex()
return code, nil return code, nil
} }
func encodeCompileInt8String(ctx *encodeCompileContext) (*opcode, error) { func encodeCompileInt8String(ctx *encodeCompileContext) (*opcode, error) {
code := newOpCode(ctx, opInt8String) code := newOpCode(ctx, opIntString)
code.mask = math.MaxUint8
code.rshiftNum = 7
ctx.incIndex() ctx.incIndex()
return code, nil return code, nil
} }
func encodeCompileInt16String(ctx *encodeCompileContext) (*opcode, error) { func encodeCompileInt16String(ctx *encodeCompileContext) (*opcode, error) {
code := newOpCode(ctx, opInt16String) code := newOpCode(ctx, opIntString)
code.mask = math.MaxUint16
code.rshiftNum = 15
ctx.incIndex() ctx.incIndex()
return code, nil return code, nil
} }
func encodeCompileInt32String(ctx *encodeCompileContext) (*opcode, error) { func encodeCompileInt32String(ctx *encodeCompileContext) (*opcode, error) {
code := newOpCode(ctx, opInt32String) code := newOpCode(ctx, opIntString)
code.mask = math.MaxUint32
code.rshiftNum = 31
ctx.incIndex() ctx.incIndex()
return code, nil return code, nil
} }
func encodeCompileInt64String(ctx *encodeCompileContext) (*opcode, error) { func encodeCompileInt64String(ctx *encodeCompileContext) (*opcode, error) {
code := newOpCode(ctx, opInt64String) code := newOpCode(ctx, opIntString)
code.mask = math.MaxUint64
code.rshiftNum = 63
ctx.incIndex() ctx.incIndex()
return code, nil return code, nil
} }
func encodeCompileUintString(ctx *encodeCompileContext) (*opcode, error) { func encodeCompileUintString(ctx *encodeCompileContext) (*opcode, error) {
code := newOpCode(ctx, opUintString) code := newOpCode(ctx, opUintString)
switch intSize {
case 32:
code.mask = math.MaxUint32
code.rshiftNum = 31
default:
code.mask = math.MaxUint64
code.rshiftNum = 63
}
ctx.incIndex() ctx.incIndex()
return code, nil return code, nil
} }
func encodeCompileUint8String(ctx *encodeCompileContext) (*opcode, error) { func encodeCompileUint8String(ctx *encodeCompileContext) (*opcode, error) {
code := newOpCode(ctx, opUint8String) code := newOpCode(ctx, opUintString)
code.mask = math.MaxUint8
code.rshiftNum = 7
ctx.incIndex() ctx.incIndex()
return code, nil return code, nil
} }
func encodeCompileUint16String(ctx *encodeCompileContext) (*opcode, error) { func encodeCompileUint16String(ctx *encodeCompileContext) (*opcode, error) {
code := newOpCode(ctx, opUint16String) code := newOpCode(ctx, opUintString)
code.mask = math.MaxUint16
code.rshiftNum = 15
ctx.incIndex() ctx.incIndex()
return code, nil return code, nil
} }
func encodeCompileUint32String(ctx *encodeCompileContext) (*opcode, error) { func encodeCompileUint32String(ctx *encodeCompileContext) (*opcode, error) {
code := newOpCode(ctx, opUint32String) code := newOpCode(ctx, opUintString)
code.mask = math.MaxUint32
code.rshiftNum = 31
ctx.incIndex() ctx.incIndex()
return code, nil return code, nil
} }
func encodeCompileUint64String(ctx *encodeCompileContext) (*opcode, error) { func encodeCompileUint64String(ctx *encodeCompileContext) (*opcode, error) {
code := newOpCode(ctx, opUint64String) code := newOpCode(ctx, opUintString)
code.mask = math.MaxUint64
code.rshiftNum = 63
ctx.incIndex() ctx.incIndex()
return code, nil return code, nil
} }
@ -543,6 +631,12 @@ func encodeCompileBytes(ctx *encodeCompileContext) (*opcode, error) {
return code, nil return code, nil
} }
func encodeCompileEmptyStruct(ctx *encodeCompileContext) (*opcode, error) {
code := newOpCode(ctx, opEmptyStruct)
ctx.incIndex()
return code, nil
}
func encodeCompileInterface(ctx *encodeCompileContext) (*opcode, error) { func encodeCompileInterface(ctx *encodeCompileContext) (*opcode, error) {
code := newInterfaceCode(ctx) code := newInterfaceCode(ctx)
ctx.incIndex() ctx.incIndex()
@ -697,25 +791,12 @@ func encodeTypeToHeaderType(ctx *encodeCompileContext, code *opcode) opType {
if ptrNum > 1 { if ptrNum > 1 {
switch code.next.op { switch code.next.op {
case opInt: case opInt:
c.mask = code.next.mask
c.rshiftNum = code.next.rshiftNum
return opStructFieldHeadIntNPtr return opStructFieldHeadIntNPtr
case opInt8:
return opStructFieldHeadInt8NPtr
case opInt16:
return opStructFieldHeadInt16NPtr
case opInt32:
return opStructFieldHeadInt32NPtr
case opInt64:
return opStructFieldHeadInt64NPtr
case opUint: case opUint:
c.mask = code.next.mask
return opStructFieldHeadUintNPtr return opStructFieldHeadUintNPtr
case opUint8:
return opStructFieldHeadUint8NPtr
case opUint16:
return opStructFieldHeadUint16NPtr
case opUint32:
return opStructFieldHeadUint32NPtr
case opUint64:
return opStructFieldHeadUint64NPtr
case opFloat32: case opFloat32:
return opStructFieldHeadFloat32NPtr return opStructFieldHeadFloat32NPtr
case opFloat64: case opFloat64:
@ -728,25 +809,12 @@ func encodeTypeToHeaderType(ctx *encodeCompileContext, code *opcode) opType {
} else { } else {
switch code.next.op { switch code.next.op {
case opInt: case opInt:
c.mask = code.next.mask
c.rshiftNum = code.next.rshiftNum
return opStructFieldHeadIntPtr return opStructFieldHeadIntPtr
case opInt8:
return opStructFieldHeadInt8Ptr
case opInt16:
return opStructFieldHeadInt16Ptr
case opInt32:
return opStructFieldHeadInt32Ptr
case opInt64:
return opStructFieldHeadInt64Ptr
case opUint: case opUint:
c.mask = code.next.mask
return opStructFieldHeadUintPtr return opStructFieldHeadUintPtr
case opUint8:
return opStructFieldHeadUint8Ptr
case opUint16:
return opStructFieldHeadUint16Ptr
case opUint32:
return opStructFieldHeadUint32Ptr
case opUint64:
return opStructFieldHeadUint64Ptr
case opFloat32: case opFloat32:
return opStructFieldHeadFloat32Ptr return opStructFieldHeadFloat32Ptr
case opFloat64: case opFloat64:
@ -755,28 +823,14 @@ func encodeTypeToHeaderType(ctx *encodeCompileContext, code *opcode) opType {
return opStructFieldHeadStringPtr return opStructFieldHeadStringPtr
case opBool: case opBool:
return opStructFieldHeadBoolPtr return opStructFieldHeadBoolPtr
case opEmptyStruct:
return opStructFieldHeadEmptyStructPtr
} }
} }
case opInt: case opInt:
return opStructFieldHeadInt return opStructFieldHeadInt
case opInt8:
return opStructFieldHeadInt8
case opInt16:
return opStructFieldHeadInt16
case opInt32:
return opStructFieldHeadInt32
case opInt64:
return opStructFieldHeadInt64
case opUint: case opUint:
return opStructFieldHeadUint return opStructFieldHeadUint
case opUint8:
return opStructFieldHeadUint8
case opUint16:
return opStructFieldHeadUint16
case opUint32:
return opStructFieldHeadUint32
case opUint64:
return opStructFieldHeadUint64
case opFloat32: case opFloat32:
return opStructFieldHeadFloat32 return opStructFieldHeadFloat32
case opFloat64: case opFloat64:
@ -785,6 +839,8 @@ func encodeTypeToHeaderType(ctx *encodeCompileContext, code *opcode) opType {
return opStructFieldHeadString return opStructFieldHeadString
case opBool: case opBool:
return opStructFieldHeadBool return opStructFieldHeadBool
case opEmptyStruct:
return opStructFieldHeadEmptyStruct
case opMapHead: case opMapHead:
return opStructFieldHeadMap return opStructFieldHeadMap
case opMapHeadLoad: case opMapHeadLoad:
@ -793,8 +849,6 @@ func encodeTypeToHeaderType(ctx *encodeCompileContext, code *opcode) opType {
return opStructFieldHeadArray return opStructFieldHeadArray
case opSliceHead: case opSliceHead:
return opStructFieldHeadSlice return opStructFieldHeadSlice
case opStructFieldHead:
return opStructFieldHeadStruct
case opMarshalJSON: case opMarshalJSON:
return opStructFieldHeadMarshalJSON return opStructFieldHeadMarshalJSON
case opMarshalText: case opMarshalText:
@ -822,25 +876,12 @@ func encodeTypeToFieldType(ctx *encodeCompileContext, code *opcode) opType {
if ptrNum > 1 { if ptrNum > 1 {
switch code.next.op { switch code.next.op {
case opInt: case opInt:
c.mask = code.next.mask
c.rshiftNum = code.next.rshiftNum
return opStructFieldIntNPtr return opStructFieldIntNPtr
case opInt8:
return opStructFieldInt8NPtr
case opInt16:
return opStructFieldInt16NPtr
case opInt32:
return opStructFieldInt32NPtr
case opInt64:
return opStructFieldInt64NPtr
case opUint: case opUint:
c.mask = code.next.mask
return opStructFieldUintNPtr return opStructFieldUintNPtr
case opUint8:
return opStructFieldUint8NPtr
case opUint16:
return opStructFieldUint16NPtr
case opUint32:
return opStructFieldUint32NPtr
case opUint64:
return opStructFieldUint64NPtr
case opFloat32: case opFloat32:
return opStructFieldFloat32NPtr return opStructFieldFloat32NPtr
case opFloat64: case opFloat64:
@ -853,25 +894,12 @@ func encodeTypeToFieldType(ctx *encodeCompileContext, code *opcode) opType {
} else { } else {
switch code.next.op { switch code.next.op {
case opInt: case opInt:
c.mask = code.next.mask
c.rshiftNum = code.next.rshiftNum
return opStructFieldIntPtr return opStructFieldIntPtr
case opInt8:
return opStructFieldInt8Ptr
case opInt16:
return opStructFieldInt16Ptr
case opInt32:
return opStructFieldInt32Ptr
case opInt64:
return opStructFieldInt64Ptr
case opUint: case opUint:
c.mask = code.next.mask
return opStructFieldUintPtr return opStructFieldUintPtr
case opUint8:
return opStructFieldUint8Ptr
case opUint16:
return opStructFieldUint16Ptr
case opUint32:
return opStructFieldUint32Ptr
case opUint64:
return opStructFieldUint64Ptr
case opFloat32: case opFloat32:
return opStructFieldFloat32Ptr return opStructFieldFloat32Ptr
case opFloat64: case opFloat64:
@ -880,28 +908,14 @@ func encodeTypeToFieldType(ctx *encodeCompileContext, code *opcode) opType {
return opStructFieldStringPtr return opStructFieldStringPtr
case opBool: case opBool:
return opStructFieldBoolPtr return opStructFieldBoolPtr
case opEmptyStruct:
return opStructFieldEmptyStructPtr
} }
} }
case opInt: case opInt:
return opStructFieldInt return opStructFieldInt
case opInt8:
return opStructFieldInt8
case opInt16:
return opStructFieldInt16
case opInt32:
return opStructFieldInt32
case opInt64:
return opStructFieldInt64
case opUint: case opUint:
return opStructFieldUint return opStructFieldUint
case opUint8:
return opStructFieldUint8
case opUint16:
return opStructFieldUint16
case opUint32:
return opStructFieldUint32
case opUint64:
return opStructFieldUint64
case opFloat32: case opFloat32:
return opStructFieldFloat32 return opStructFieldFloat32
case opFloat64: case opFloat64:
@ -910,6 +924,8 @@ func encodeTypeToFieldType(ctx *encodeCompileContext, code *opcode) opType {
return opStructFieldString return opStructFieldString
case opBool: case opBool:
return opStructFieldBool return opStructFieldBool
case opEmptyStruct:
return opStructFieldEmptyStruct
case opMapHead: case opMapHead:
return opStructFieldMap return opStructFieldMap
case opMapHeadLoad: case opMapHeadLoad:
@ -918,8 +934,6 @@ func encodeTypeToFieldType(ctx *encodeCompileContext, code *opcode) opType {
return opStructFieldArray return opStructFieldArray
case opSliceHead: case opSliceHead:
return opStructFieldSlice return opStructFieldSlice
case opStructFieldHead:
return opStructFieldStruct
case opMarshalJSON: case opMarshalJSON:
return opStructFieldMarshalJSON return opStructFieldMarshalJSON
case opMarshalText: case opMarshalText:
@ -969,6 +983,8 @@ func encodeStructHeader(ctx *encodeCompileContext, fieldCode *opcode, valueCode
fieldCode.indent-- fieldCode.indent--
op := encodeOptimizeStructHeader(ctx, valueCode, tag) op := encodeOptimizeStructHeader(ctx, valueCode, tag)
fieldCode.op = op fieldCode.op = op
fieldCode.mask = valueCode.mask
fieldCode.rshiftNum = valueCode.rshiftNum
fieldCode.ptrNum = valueCode.ptrNum fieldCode.ptrNum = valueCode.ptrNum
switch op { switch op {
case opStructFieldHead, case opStructFieldHead,
@ -995,6 +1011,8 @@ func encodeStructField(ctx *encodeCompileContext, fieldCode *opcode, valueCode *
op := encodeOptimizeStructField(ctx, valueCode, tag) op := encodeOptimizeStructField(ctx, valueCode, tag)
fieldCode.op = op fieldCode.op = op
fieldCode.ptrNum = valueCode.ptrNum fieldCode.ptrNum = valueCode.ptrNum
fieldCode.mask = valueCode.mask
fieldCode.rshiftNum = valueCode.rshiftNum
switch op { switch op {
case opStructField, case opStructField,
opStructFieldSlice, opStructFieldSlice,
@ -1215,13 +1233,16 @@ func encodeCompileStruct(ctx *encodeCompileContext, isPtr bool) (*opcode, error)
return code, nil return code, nil
} }
typ := ctx.typ typ := ctx.typ
fieldNum := typ.NumField()
if fieldNum == 0 {
return encodeCompileEmptyStruct(ctx)
}
typeptr := uintptr(unsafe.Pointer(typ)) typeptr := uintptr(unsafe.Pointer(typ))
compiled := &compiledCode{} compiled := &compiledCode{}
ctx.structTypeToCompiledCode[typeptr] = compiled ctx.structTypeToCompiledCode[typeptr] = compiled
// header => code => structField => code => end // header => code => structField => code => end
// ^ | // ^ |
// |__________| // |__________|
fieldNum := typ.NumField()
fieldIdx := 0 fieldIdx := 0
var ( var (
head *opcode head *opcode

View File

@ -49,15 +49,9 @@ var intBELookup = [100]uint16{
var intLookup = [2]*[100]uint16{&intLELookup, &intBELookup} var intLookup = [2]*[100]uint16{&intLELookup, &intBELookup}
func appendInt(b []byte, n int64) []byte { func appendInt(out []byte, u64 uint64, code *opcode) []byte {
return formatInteger(b, uint64(n), n < 0) n := u64 & code.mask
} negative := (u64>>code.rshiftNum)&1 == 1
func appendUint(b []byte, n uint64) []byte {
return formatInteger(b, n, false)
}
func formatInteger(out []byte, n uint64, negative bool) []byte {
if !negative { if !negative {
if n < 10 { if n < 10 {
return append(out, byte(n+'0')) return append(out, byte(n+'0'))
@ -66,7 +60,7 @@ func formatInteger(out []byte, n uint64, negative bool) []byte {
return append(out, byte(u), byte(u>>8)) return append(out, byte(u), byte(u>>8))
} }
} else { } else {
n = -n n = -n & code.mask
} }
lookup := intLookup[endianness] lookup := intLookup[endianness]
@ -96,3 +90,35 @@ func formatInteger(out []byte, n uint64, negative bool) []byte {
return append(out, b[i:]...) return append(out, b[i:]...)
} }
func appendUint(out []byte, u64 uint64, code *opcode) []byte {
n := u64 & code.mask
if n < 10 {
return append(out, byte(n+'0'))
} else if n < 100 {
u := intLELookup[n]
return append(out, byte(u), byte(u>>8))
}
lookup := intLookup[endianness]
var b [22]byte
u := (*[11]uint16)(unsafe.Pointer(&b))
i := 11
for n >= 100 {
j := n % 100
n /= 100
i--
u[i] = lookup[j]
}
i--
u[i] = lookup[n]
i *= 2 // convert to byte index
if n < 10 {
i++ // remove leading zero
}
return append(out, b[i:]...)
}

View File

@ -20,6 +20,8 @@ type opcode struct {
anonymousKey bool // whether anonymous key anonymousKey bool // whether anonymous key
root bool // whether root root bool // whether root
indent int // indent number indent int // indent number
rshiftNum uint8 // use to take bit for judging whether negative integer or not
mask uint64 // mask for number
idx uintptr // offset to access ptr idx uintptr // offset to access ptr
headIdx uintptr // offset to access slice/struct head headIdx uintptr // offset to access slice/struct head
@ -84,6 +86,8 @@ func (c *opcode) copy(codeMap map[uintptr]*opcode) *opcode {
escapedKey: c.escapedKey, escapedKey: c.escapedKey,
displayKey: c.displayKey, displayKey: c.displayKey,
ptrNum: c.ptrNum, ptrNum: c.ptrNum,
mask: c.mask,
rshiftNum: c.rshiftNum,
isTaggedKey: c.isTaggedKey, isTaggedKey: c.isTaggedKey,
anonymousKey: c.anonymousKey, anonymousKey: c.anonymousKey,
root: c.root, root: c.root,

File diff suppressed because it is too large Load Diff

View File

@ -1674,3 +1674,27 @@ func TestOmitEmpty(t *testing.T) {
t.Errorf(" got: %s\nwant: %s\n", got, optionalsExpected) t.Errorf(" got: %s\nwant: %s\n", got, optionalsExpected)
} }
} }
func TestIssue104(t *testing.T) {
type T struct {
ID uint `json:"id"`
TYPE string `json:"type"`
}
type U struct {
A uint `json:"a"`
Start time.Time `json:"start"`
End time.Time `json:"end"`
T T `json:"t,omitempty"`
}
var u U
bytes, err := json.Marshal(u)
if err != nil {
t.Fatal(err)
}
got := string(bytes)
want := `{"a":0,"start":"0001-01-01T00:00:00Z","end":"0001-01-01T00:00:00Z"}`
if got != want {
t.Errorf(" got: %s\nwant: %s\n", got, want)
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff