json_test.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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 TestUnmarshal(t *testing.T) {
  20. const s = `{"name":"John","age":30}`
  21. var v struct {
  22. Name string `json:"name"`
  23. Age int `json:"age"`
  24. }
  25. err := Unmarshal([]byte(s), &v)
  26. assert.Nil(t, err)
  27. assert.Equal(t, "John", v.Name)
  28. assert.Equal(t, 30, v.Age)
  29. }
  30. func TestUnmarshalError(t *testing.T) {
  31. const s = `{"name":"John","age":30`
  32. var v struct {
  33. Name string `json:"name"`
  34. Age int `json:"age"`
  35. }
  36. err := Unmarshal([]byte(s), &v)
  37. assert.NotNil(t, err)
  38. }
  39. func TestUnmarshalFromString(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 := UnmarshalFromString(s, &v)
  46. assert.Nil(t, err)
  47. assert.Equal(t, "John", v.Name)
  48. assert.Equal(t, 30, v.Age)
  49. }
  50. func TestUnmarshalFromStringError(t *testing.T) {
  51. const s = `{"name":"John","age":30`
  52. var v struct {
  53. Name string `json:"name"`
  54. Age int `json:"age"`
  55. }
  56. err := UnmarshalFromString(s, &v)
  57. assert.NotNil(t, err)
  58. }
  59. func TestUnmarshalFromRead(t *testing.T) {
  60. const s = `{"name":"John","age":30}`
  61. var v struct {
  62. Name string `json:"name"`
  63. Age int `json:"age"`
  64. }
  65. err := UnmarshalFromReader(strings.NewReader(s), &v)
  66. assert.Nil(t, err)
  67. assert.Equal(t, "John", v.Name)
  68. assert.Equal(t, 30, v.Age)
  69. }
  70. func TestUnmarshalFromReaderError(t *testing.T) {
  71. const s = `{"name":"John","age":30`
  72. var v struct {
  73. Name string `json:"name"`
  74. Age int `json:"age"`
  75. }
  76. err := UnmarshalFromReader(strings.NewReader(s), &v)
  77. assert.NotNil(t, err)
  78. }
  79. func TestMarshalToString(t *testing.T) {
  80. var v = struct {
  81. Name string `json:"name"`
  82. Age int `json:"age"`
  83. }{
  84. Name: "John",
  85. Age: 30,
  86. }
  87. toString, err := MarshalToString(v)
  88. assert.Nil(t, err)
  89. assert.Equal(t, `{"name":"John","age":30}`, toString)
  90. }