json_test.go 2.1 KB

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