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  }