maputils_test.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package maputils
  2. import (
  3. "sort"
  4. "strconv"
  5. "testing"
  6. )
  7. func TestGetValueByPath(t *testing.T) {
  8. testMap := map[string]any{
  9. "foo1": map[string]any{
  10. "foo1_sub": []any{
  11. "value1", 2,
  12. },
  13. },
  14. }
  15. value, err := GetValueByPath(testMap, "foo1.foo1_sub.[0]")
  16. if err != nil {
  17. t.Fatal(err)
  18. }
  19. if value.(string) != "value1" {
  20. t.Fatal("值不一致")
  21. }
  22. value, err = GetValueByPath(testMap, "foo1.foo1_sub.[1]")
  23. if err != nil {
  24. t.Fatal(err)
  25. }
  26. if value.(int) != 2 {
  27. t.Fatal("值不一致")
  28. }
  29. }
  30. func TestGetValueByKey(t *testing.T) {
  31. testMap := map[string]any{
  32. "foo1": map[string]any{
  33. "foo1_sub": []any{
  34. "value1", 2,
  35. },
  36. },
  37. }
  38. foo1Map, ok := GetValueByKey[string, map[string]any](testMap, "foo1")
  39. if !ok {
  40. t.Fatal("取foo1值失败")
  41. }
  42. foo1Sub, ok := GetValueByKey[string, []any](foo1Map, "foo1_sub")
  43. if !ok {
  44. t.Fatal("取foo1Sub值失败")
  45. }
  46. if foo1Sub[0].(string) != "value1" {
  47. t.Fatal("值不一致")
  48. }
  49. if foo1Sub[1].(int) != 2 {
  50. t.Fatal("值不一致")
  51. }
  52. }
  53. func TestSort(t *testing.T) {
  54. testMap := map[int]any{
  55. 1: "test1",
  56. 2: "test2",
  57. 3: "test3",
  58. 4: "test4",
  59. 5: "test5",
  60. 6: "test6",
  61. 7: "test7",
  62. 8: "test8",
  63. 9: "test9",
  64. }
  65. Sort(testMap, func(keys []int) {
  66. sort.Sort(sort.IntSlice(keys))
  67. }).Range(func(index int, key int, value any) {
  68. if index != key-1 {
  69. t.Fatal("key顺序错误")
  70. }
  71. if value != "test"+strconv.Itoa(key) {
  72. t.Fatal("key对应的value不正确")
  73. }
  74. })
  75. }