jsoniter_map_test.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package jsoniter
  2. import (
  3. "fmt"
  4. "reflect"
  5. "testing"
  6. "github.com/json-iterator/go/require"
  7. )
  8. func Test_read_map(t *testing.T) {
  9. should := require.New(t)
  10. iter := ParseString(`{"hello": "world"}`)
  11. m := map[string]string{"1": "2"}
  12. iter.ReadVal(&m)
  13. copy(iter.buf, []byte{0, 0, 0, 0, 0, 0})
  14. should.Equal(map[string]string{"1": "2", "hello": "world"}, m)
  15. }
  16. func Test_read_map_of_interface(t *testing.T) {
  17. should := require.New(t)
  18. iter := ParseString(`{"hello": "world"}`)
  19. m := map[string]interface{}{"1": "2"}
  20. iter.ReadVal(&m)
  21. should.Equal(map[string]interface{}{"1": "2", "hello": "world"}, m)
  22. iter = ParseString(`{"hello": "world"}`)
  23. should.Equal(map[string]interface{}{"hello": "world"}, iter.Read())
  24. }
  25. func Test_read_map_of_any(t *testing.T) {
  26. iter := ParseString(`{"hello": "world"}`)
  27. m := map[string]Any{"1": *MakeAny("2")}
  28. iter.ReadVal(&m)
  29. if !reflect.DeepEqual(map[string]Any{"1": *MakeAny("2"), "hello": *MakeAny("world")}, m) {
  30. fmt.Println(iter.Error)
  31. t.Fatal(m)
  32. }
  33. }
  34. func Test_write_val_map(t *testing.T) {
  35. should := require.New(t)
  36. val := map[string]string{"1": "2"}
  37. str, err := MarshalToString(val)
  38. should.Nil(err)
  39. should.Equal(`{"1":"2"}`, str)
  40. }