github.com/bingoohuang/gg@v0.0.0-20240325092523-45da7dee9335/pkg/mapp/map_test.go (about) 1 package mapp 2 3 import ( 4 "fmt" 5 "sort" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestMapKeys(t *testing.T) { 12 m := map[string]string{"k1": "v1", "k2": "v2"} 13 keys := Keys(m) 14 sort.Strings(keys) 15 assert.Equal(t, []string{"k1", "k2"}, keys) 16 } 17 18 func TestMapKeysSorted(t *testing.T) { 19 m := map[int]int{1: 11, 2: 22, 3: 33} 20 keys := KeysSortedX(m).([]int) 21 assert.Equal(t, []int{1, 2, 3}, keys) 22 } 23 24 func TestMapGetOr(t *testing.T) { 25 a := assert.New(t) 26 27 m := map[int]int{1: 11} 28 29 a.Equal(11, GetOr(m, 1, 100)) 30 a.Equal(22, GetOr(m, 2, 22)) 31 32 m2 := map[string]string{"1": "11"} 33 34 a.Equal("11", GetOr(m2, "1", "100")) 35 a.Equal("22", GetOr(m2, "2", "22")) 36 } 37 38 func TestWalkMapInt(t *testing.T) { 39 a := assert.New(t) 40 41 m := map[int]int{1: 11, 2: 22, 3: 33} 42 ks := "" 43 vs := "" 44 45 WalkMap(m, func(k, v int) { 46 ks += fmt.Sprintf("%d", k) 47 vs += fmt.Sprintf("%d", v) 48 }) 49 a.Equal("123", ks) 50 a.Equal("112233", vs) 51 } 52 53 func TestWalkMapString(t *testing.T) { 54 a := assert.New(t) 55 56 m := map[string]int{"1": 11, "2": 22, "3": 33} 57 ks := "" 58 vs := "" 59 60 WalkMap(m, func(k string, v int) { 61 ks += k 62 vs += fmt.Sprintf("%v", v) 63 }) 64 a.Equal("123", ks) 65 a.Equal("112233", vs) 66 } 67 68 func TestWalkMapFloat64(t *testing.T) { 69 a := assert.New(t) 70 71 m := map[float64]int{1.1: 11, 2.2: 22, 3.3: 33} 72 ks := "" 73 vs := "" 74 75 WalkMap(m, func(k float64, v int) { 76 ks += fmt.Sprintf("%.1f", k) 77 vs += fmt.Sprintf("%v", v) 78 }) 79 a.Equal("1.12.23.3", ks) 80 a.Equal("112233", vs) 81 } 82 83 func TestWalkMapOther(t *testing.T) { 84 a := assert.New(t) 85 86 m := map[float32]int{1.1: 11, 2.2: 22, 3.3: 33} 87 ks := "" 88 vs := "" 89 90 WalkMap(m, func(k float32, v int) { 91 ks += fmt.Sprintf("%.1f", k) 92 vs += fmt.Sprintf("%v", v) 93 }) 94 a.Equal("1.12.23.3", ks) 95 a.Equal("112233", vs) 96 }