github.com/gogf/gf@v1.16.9/util/gutil/gutil_z_unit_map_test.go (about) 1 // Copyright GoFrame Author(https://goframe.org). All Rights Reserved. 2 // 3 // This Source Code Form is subject to the terms of the MIT License. 4 // If a copy of the MIT was not distributed with this file, 5 // You can obtain one at https://github.com/gogf/gf. 6 7 package gutil_test 8 9 import ( 10 "github.com/gogf/gf/frame/g" 11 "testing" 12 13 "github.com/gogf/gf/test/gtest" 14 "github.com/gogf/gf/util/gutil" 15 ) 16 17 func Test_MapCopy(t *testing.T) { 18 gtest.C(t, func(t *gtest.T) { 19 m1 := g.Map{ 20 "k1": "v1", 21 } 22 m2 := gutil.MapCopy(m1) 23 m2["k2"] = "v2" 24 25 t.Assert(m1["k1"], "v1") 26 t.Assert(m1["k2"], nil) 27 t.Assert(m2["k1"], "v1") 28 t.Assert(m2["k2"], "v2") 29 }) 30 } 31 32 func Test_MapContains(t *testing.T) { 33 gtest.C(t, func(t *gtest.T) { 34 m1 := g.Map{ 35 "k1": "v1", 36 } 37 t.Assert(gutil.MapContains(m1, "k1"), true) 38 t.Assert(gutil.MapContains(m1, "K1"), false) 39 t.Assert(gutil.MapContains(m1, "k2"), false) 40 }) 41 } 42 43 func Test_MapMerge(t *testing.T) { 44 gtest.C(t, func(t *gtest.T) { 45 m1 := g.Map{ 46 "k1": "v1", 47 } 48 m2 := g.Map{ 49 "k2": "v2", 50 } 51 m3 := g.Map{ 52 "k3": "v3", 53 } 54 gutil.MapMerge(m1, m2, m3, nil) 55 t.Assert(m1["k1"], "v1") 56 t.Assert(m1["k2"], "v2") 57 t.Assert(m1["k3"], "v3") 58 t.Assert(m2["k1"], nil) 59 t.Assert(m3["k1"], nil) 60 }) 61 } 62 63 func Test_MapMergeCopy(t *testing.T) { 64 gtest.C(t, func(t *gtest.T) { 65 m1 := g.Map{ 66 "k1": "v1", 67 } 68 m2 := g.Map{ 69 "k2": "v2", 70 } 71 m3 := g.Map{ 72 "k3": "v3", 73 } 74 m := gutil.MapMergeCopy(m1, m2, m3, nil) 75 t.Assert(m["k1"], "v1") 76 t.Assert(m["k2"], "v2") 77 t.Assert(m["k3"], "v3") 78 t.Assert(m1["k1"], "v1") 79 t.Assert(m1["k2"], nil) 80 t.Assert(m2["k1"], nil) 81 t.Assert(m3["k1"], nil) 82 }) 83 } 84 85 func Test_MapPossibleItemByKey(t *testing.T) { 86 gtest.C(t, func(t *gtest.T) { 87 m := g.Map{ 88 "name": "guo", 89 "NickName": "john", 90 } 91 k, v := gutil.MapPossibleItemByKey(m, "NAME") 92 t.Assert(k, "name") 93 t.Assert(v, "guo") 94 95 k, v = gutil.MapPossibleItemByKey(m, "nick name") 96 t.Assert(k, "NickName") 97 t.Assert(v, "john") 98 99 k, v = gutil.MapPossibleItemByKey(m, "none") 100 t.Assert(k, "") 101 t.Assert(v, nil) 102 }) 103 } 104 105 func Test_MapContainsPossibleKey(t *testing.T) { 106 gtest.C(t, func(t *gtest.T) { 107 m := g.Map{ 108 "name": "guo", 109 "NickName": "john", 110 } 111 t.Assert(gutil.MapContainsPossibleKey(m, "name"), true) 112 t.Assert(gutil.MapContainsPossibleKey(m, "NAME"), true) 113 t.Assert(gutil.MapContainsPossibleKey(m, "nickname"), true) 114 t.Assert(gutil.MapContainsPossibleKey(m, "nick name"), true) 115 t.Assert(gutil.MapContainsPossibleKey(m, "nick_name"), true) 116 t.Assert(gutil.MapContainsPossibleKey(m, "nick-name"), true) 117 t.Assert(gutil.MapContainsPossibleKey(m, "nick.name"), true) 118 t.Assert(gutil.MapContainsPossibleKey(m, "none"), false) 119 }) 120 } 121 122 func Test_MapOmitEmpty(t *testing.T) { 123 gtest.C(t, func(t *gtest.T) { 124 m := g.Map{ 125 "k1": "john", 126 "e1": "", 127 "e2": 0, 128 "e3": nil, 129 "k2": "smith", 130 } 131 gutil.MapOmitEmpty(m) 132 t.Assert(len(m), 2) 133 t.AssertNE(m["k1"], nil) 134 t.AssertNE(m["k2"], nil) 135 }) 136 } 137 138 func Test_MapToSlice(t *testing.T) { 139 gtest.C(t, func(t *gtest.T) { 140 m := g.Map{ 141 "k1": "v1", 142 "k2": "v2", 143 } 144 s := gutil.MapToSlice(m) 145 t.Assert(len(s), 4) 146 t.AssertIN(s[0], g.Slice{"k1", "k2", "v1", "v2"}) 147 t.AssertIN(s[1], g.Slice{"k1", "k2", "v1", "v2"}) 148 t.AssertIN(s[2], g.Slice{"k1", "k2", "v1", "v2"}) 149 t.AssertIN(s[3], g.Slice{"k1", "k2", "v1", "v2"}) 150 }) 151 gtest.C(t, func(t *gtest.T) { 152 m := g.MapStrStr{ 153 "k1": "v1", 154 "k2": "v2", 155 } 156 s := gutil.MapToSlice(m) 157 t.Assert(len(s), 4) 158 t.AssertIN(s[0], g.Slice{"k1", "k2", "v1", "v2"}) 159 t.AssertIN(s[1], g.Slice{"k1", "k2", "v1", "v2"}) 160 t.AssertIN(s[2], g.Slice{"k1", "k2", "v1", "v2"}) 161 t.AssertIN(s[3], g.Slice{"k1", "k2", "v1", "v2"}) 162 }) 163 gtest.C(t, func(t *gtest.T) { 164 m := g.MapStrStr{} 165 s := gutil.MapToSlice(m) 166 t.Assert(len(s), 0) 167 }) 168 gtest.C(t, func(t *gtest.T) { 169 s := gutil.MapToSlice(1) 170 t.Assert(s, nil) 171 }) 172 }