mirror of https://github.com/goccy/go-json.git
test: add tests
test: draft for omitempty on pointer receiver for MarshalJSON test: move new test onto omitempty marshaling tests
This commit is contained in:
parent
92e091e9bb
commit
38a0a5163d
|
@ -21,6 +21,18 @@ import (
|
||||||
"github.com/goccy/go-json"
|
"github.com/goccy/go-json"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type stringAlias string
|
||||||
|
|
||||||
|
func (d *stringAlias) MarshalJSON() ([]byte, error) {
|
||||||
|
return []byte(fmt.Sprintf("\"%s\"", *d)), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type intAlias int
|
||||||
|
|
||||||
|
func (d *intAlias) MarshalJSON() ([]byte, error) {
|
||||||
|
return []byte(fmt.Sprintf("%d", *d)), nil
|
||||||
|
}
|
||||||
|
|
||||||
type recursiveT struct {
|
type recursiveT struct {
|
||||||
A *recursiveT `json:"a,omitempty"`
|
A *recursiveT `json:"a,omitempty"`
|
||||||
B *recursiveU `json:"b,omitempty"`
|
B *recursiveU `json:"b,omitempty"`
|
||||||
|
@ -383,6 +395,18 @@ func Test_Marshal(t *testing.T) {
|
||||||
assertErr(t, err)
|
assertErr(t, err)
|
||||||
assertEq(t, "array", `{"b":{"c":1}}`, string(bytes))
|
assertEq(t, "array", `{"b":{"c":1}}`, string(bytes))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("custom type with MarshalJSON implementation with pointer receiver", func(t *testing.T) {
|
||||||
|
type withOmit struct {
|
||||||
|
A string `json:"a,omitempty"`
|
||||||
|
B stringAlias `json:"b,omitempty"`
|
||||||
|
C intAlias `json:"c,omitempty"`
|
||||||
|
}
|
||||||
|
w := withOmit{}
|
||||||
|
bytes, err := json.Marshal(&w)
|
||||||
|
assertErr(t, err)
|
||||||
|
assertEq(t, "custom type with MarshalJSON implementation with pointer receiver", `{}`, string(bytes))
|
||||||
|
})
|
||||||
})
|
})
|
||||||
t.Run("head_omitempty", func(t *testing.T) {
|
t.Run("head_omitempty", func(t *testing.T) {
|
||||||
type T struct {
|
type T struct {
|
||||||
|
|
Loading…
Reference in New Issue