converts_test.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package mapping
  2. import (
  3. "encoding/json"
  4. "reflect"
  5. "testing"
  6. )
  7. func TestConvertAnyMap(t *testing.T) {
  8. src := map[any]any{
  9. "a": 1,
  10. "b": 2,
  11. "c": map[any]any{
  12. "d": 3,
  13. "e": 4,
  14. "f": []any{
  15. 1,
  16. 2,
  17. 3,
  18. },
  19. },
  20. }
  21. dst := ConvertAnyMap(src).(map[string]any)
  22. // use reflect to check key is string
  23. keys := reflect.ValueOf(dst).MapKeys()
  24. for _, key := range keys {
  25. if key.Kind() != reflect.String {
  26. t.Errorf("key is not string: %v", key)
  27. }
  28. }
  29. c := dst["c"]
  30. keys = reflect.ValueOf(c).MapKeys()
  31. for _, key := range keys {
  32. if key.Kind() != reflect.String {
  33. t.Errorf("key is not string: %v", key)
  34. }
  35. }
  36. f := dst["c"].(map[string]any)["f"]
  37. if _, ok := f.([]any); !ok {
  38. t.Errorf("f is not []any: %v", f)
  39. }
  40. if len(f.([]any)) != 3 {
  41. t.Errorf("f is not 3: %v", f)
  42. }
  43. if f.([]any)[0] != 1 {
  44. t.Errorf("f[0] is not 1: %v", f)
  45. }
  46. }
  47. func TestConvertAnyMap_JsonMarshal(t *testing.T) {
  48. src := map[any]any{
  49. "a": 1,
  50. "b": 2,
  51. "c": map[any]any{
  52. "d": 3,
  53. "e": 4,
  54. "f": []any{
  55. 1,
  56. 2,
  57. 3,
  58. },
  59. },
  60. }
  61. dst := ConvertAnyMap(src).(map[string]any)
  62. _, err := json.Marshal(dst)
  63. if err != nil {
  64. t.Errorf("json.Marshal error: %v", err)
  65. }
  66. }