@@ -208,3 +208,54 @@ func TestToMap(t *testing.T) {
208208 assert .Equal (t , c .result , result )
209209 }
210210}
211+
212+ func TestMerge (t * testing.T ) {
213+ input1 := []map [int ]int {
214+ {1 : 1 , 2 : 2 },
215+ {3 : 3 , 4 : 4 },
216+ }
217+ want1 := map [int ]int {
218+ 1 : 1 , 2 : 2 , 3 : 3 , 4 : 4 ,
219+ }
220+ got := Merge (input1 ... )
221+ assert .Equal (t , want1 , got )
222+
223+ input2 := []map [int ]int {
224+ {1 : 1 , 2 : 2 },
225+ {3 : 3 , 4 : 4 },
226+ {2 : 3 , 4 : 5 },
227+ }
228+ want2 := map [int ]int {
229+ 1 : 1 , 2 : 3 , 3 : 3 , 4 : 5 ,
230+ }
231+ got = Merge (input2 ... )
232+ assert .Equal (t , want2 , got )
233+ }
234+
235+ func TestMergeFunc (t * testing.T ) {
236+ input1 := []map [int ]int {
237+ {1 : 1 , 2 : 2 },
238+ {1 : 3 , 2 : 4 },
239+ {3 : 3 , 4 : 4 },
240+ }
241+ want1 := map [int ]int {
242+ 1 : 4 , 2 : 6 , 3 : 3 , 4 : 4 ,
243+ }
244+ got := MergeFunc (func (val1 , val2 int ) int {
245+ return val1 + val2
246+ }, input1 ... )
247+ assert .Equal (t , want1 , got )
248+
249+ input2 := []map [int ]int {
250+ {1 : 1 , 2 : 2 },
251+ {1 : 3 , 2 : 4 },
252+ {3 : 3 , 4 : 4 },
253+ }
254+ want2 := map [int ]int {
255+ 1 : 3 , 2 : 8 , 3 : 3 , 4 : 4 ,
256+ }
257+ got = MergeFunc (func (val1 , val2 int ) int {
258+ return val1 * val2
259+ }, input2 ... )
260+ assert .Equal (t , want2 , got )
261+ }
0 commit comments