2021-04-12 16:54:00 +03:00
|
|
|
package json
|
|
|
|
|
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
"testing"
|
2021-09-24 00:00:41 +03:00
|
|
|
|
2023-04-30 11:00:37 +03:00
|
|
|
"go.unistack.org/micro/v4/codec"
|
2021-04-12 16:54:00 +03:00
|
|
|
)
|
|
|
|
|
2021-09-24 00:00:41 +03:00
|
|
|
func TestFrame(t *testing.T) {
|
|
|
|
s := &codec.Frame{Data: []byte("test")}
|
|
|
|
|
|
|
|
buf, err := NewCodec().Marshal(s)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
if !bytes.Equal(buf, []byte(`test`)) {
|
|
|
|
t.Fatalf("bytes not equal %s != %s", buf, `test`)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestFrameFlatten(t *testing.T) {
|
|
|
|
s := &struct {
|
|
|
|
One string
|
|
|
|
Name *codec.Frame `json:"name" codec:"flatten"`
|
|
|
|
}{
|
|
|
|
One: "xx",
|
|
|
|
Name: &codec.Frame{Data: []byte("test")},
|
|
|
|
}
|
|
|
|
|
|
|
|
buf, err := NewCodec().Marshal(s)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
if !bytes.Equal(buf, []byte(`test`)) {
|
|
|
|
t.Fatalf("bytes not equal %s != %s", buf, `test`)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-05-25 22:46:40 +03:00
|
|
|
func TestStructByTag(t *testing.T) {
|
|
|
|
type Str struct {
|
|
|
|
Name []string `json:"name" codec:"flatten"`
|
|
|
|
}
|
|
|
|
|
|
|
|
val := &Str{Name: []string{"first", "second"}}
|
|
|
|
|
|
|
|
c := NewCodec()
|
|
|
|
buf, err := c.Marshal(val)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
if !bytes.Equal(buf, []byte(`["first","second"]`)) {
|
2021-09-22 02:05:09 +03:00
|
|
|
t.Fatalf("invalid marshal: %v != %v", buf, []byte(`["first","second"]`))
|
2021-05-25 22:46:40 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
err = c.Unmarshal([]byte(`["1","2"]`), val)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if len(val.Name) != 2 {
|
|
|
|
t.Fatalf("invalid unmarshal: %v", val)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-04-12 16:54:00 +03:00
|
|
|
func TestReadBody(t *testing.T) {
|
|
|
|
s := &struct {
|
|
|
|
Name string
|
|
|
|
}{}
|
|
|
|
c := NewCodec()
|
|
|
|
b := bytes.NewReader(nil)
|
|
|
|
err := c.ReadBody(b, s)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
}
|