github.com/lingyao2333/mo-zero@v1.4.1/core/jsonx/json_test.go (about) 1 package jsonx 2 3 import ( 4 "strings" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestMarshal(t *testing.T) { 11 var v = struct { 12 Name string `json:"name"` 13 Age int `json:"age"` 14 }{ 15 Name: "John", 16 Age: 30, 17 } 18 bs, err := Marshal(v) 19 assert.Nil(t, err) 20 assert.Equal(t, `{"name":"John","age":30}`, string(bs)) 21 } 22 23 func TestMarshalToString(t *testing.T) { 24 var v = struct { 25 Name string `json:"name"` 26 Age int `json:"age"` 27 }{ 28 Name: "John", 29 Age: 30, 30 } 31 toString, err := MarshalToString(v) 32 assert.Nil(t, err) 33 assert.Equal(t, `{"name":"John","age":30}`, toString) 34 35 _, err = MarshalToString(make(chan int)) 36 assert.NotNil(t, err) 37 } 38 39 func TestUnmarshal(t *testing.T) { 40 const s = `{"name":"John","age":30}` 41 var v struct { 42 Name string `json:"name"` 43 Age int `json:"age"` 44 } 45 err := Unmarshal([]byte(s), &v) 46 assert.Nil(t, err) 47 assert.Equal(t, "John", v.Name) 48 assert.Equal(t, 30, v.Age) 49 } 50 51 func TestUnmarshalError(t *testing.T) { 52 const s = `{"name":"John","age":30` 53 var v struct { 54 Name string `json:"name"` 55 Age int `json:"age"` 56 } 57 err := Unmarshal([]byte(s), &v) 58 assert.NotNil(t, err) 59 } 60 61 func TestUnmarshalFromString(t *testing.T) { 62 const s = `{"name":"John","age":30}` 63 var v struct { 64 Name string `json:"name"` 65 Age int `json:"age"` 66 } 67 err := UnmarshalFromString(s, &v) 68 assert.Nil(t, err) 69 assert.Equal(t, "John", v.Name) 70 assert.Equal(t, 30, v.Age) 71 } 72 73 func TestUnmarshalFromStringError(t *testing.T) { 74 const s = `{"name":"John","age":30` 75 var v struct { 76 Name string `json:"name"` 77 Age int `json:"age"` 78 } 79 err := UnmarshalFromString(s, &v) 80 assert.NotNil(t, err) 81 } 82 83 func TestUnmarshalFromRead(t *testing.T) { 84 const s = `{"name":"John","age":30}` 85 var v struct { 86 Name string `json:"name"` 87 Age int `json:"age"` 88 } 89 err := UnmarshalFromReader(strings.NewReader(s), &v) 90 assert.Nil(t, err) 91 assert.Equal(t, "John", v.Name) 92 assert.Equal(t, 30, v.Age) 93 } 94 95 func TestUnmarshalFromReaderError(t *testing.T) { 96 const s = `{"name":"John","age":30` 97 var v struct { 98 Name string `json:"name"` 99 Age int `json:"age"` 100 } 101 err := UnmarshalFromReader(strings.NewReader(s), &v) 102 assert.NotNil(t, err) 103 }