Files
sponge/pkg/encoding/json/json_test.go
zhuyasen 891af10cb6 add test
2022-09-25 19:06:27 +08:00

80 lines
1.4 KiB
Go

package json
import (
"google.golang.org/protobuf/compiler/protogen"
"google.golang.org/protobuf/reflect/protoreflect"
"google.golang.org/protobuf/types/pluginpb"
"testing"
"github.com/stretchr/testify/assert"
)
type obj struct {
ID uint64 `json:"id"`
Name string `json:"name"`
}
func TestJSON(t *testing.T) {
c := codec{}
name := c.Name()
assert.Equal(t, Name, name)
data, err := c.Marshal(&obj{ID: 1, Name: "foo"})
if err != nil {
t.Fatal(err)
}
assert.NotNil(t, data)
o := new(obj)
err = c.Unmarshal(data, o)
assert.NoError(t, err)
assert.Equal(t, "foo", o.Name)
}
type obj2 struct {
ID uint64 `json:"id"`
Name string `json:"name"`
}
func (o obj2) MarshalJSON() ([]byte, error) {
return []byte("test data"), nil
}
func TestJSON2(t *testing.T) {
c := codec{}
b, err := c.Marshal(&obj2{})
if err != nil {
t.Fatal(err)
}
assert.NotNil(t, b)
err = c.Unmarshal(b, &obj2{})
assert.NotNil(t, err)
}
type obj3 struct {
ID uint64 `json:"id"`
Name string `json:"name"`
}
func (o obj3) ProtoReflect() protoreflect.Message {
req := &pluginpb.CodeGeneratorRequest{}
opts := protogen.Options{}
gen, _ := opts.New(req)
return gen.Response().ProtoReflect()
}
func TestJSON3(t *testing.T) {
c := codec{}
b, err := c.Marshal(&obj3{})
if err != nil {
t.Fatal(err)
}
assert.NotNil(t, b)
err = c.Unmarshal(b, &obj3{})
assert.NoError(t, err)
}