@@ -304,6 +304,85 @@ StdMapTestSuite.test("UnorderedMap.subscript(:default:)") {
304304 expectEqual ( m [ - 5 , default: 555 ] , 555 )
305305}
306306
307+ StdMapTestSuite . test ( " Map.mapValues " ) {
308+ let m = initMap ( )
309+ let n = m. mapValues { v in v * 2 }
310+ expectEqual ( n [ 1 ] , 6 )
311+ expectEqual ( n [ 2 ] , 4 )
312+ expectEqual ( n [ 3 ] , 6 )
313+
314+ let n2 : MapIntString = m. mapValues { v in std. string ( " \( v * 3 ) " ) }
315+ expectEqual ( n2 [ 1 ] , std. string ( " 9 " ) )
316+ expectEqual ( n2 [ 2 ] , std. string ( " 6 " ) )
317+ expectEqual ( n2 [ 3 ] , std. string ( " 9 " ) )
318+
319+ let n3 : UnorderedMap = m. mapValues { v in v * 4 }
320+ expectEqual ( n3 [ 1 ] , 12 )
321+ expectEqual ( n3 [ 2 ] , 8 )
322+ expectEqual ( n3 [ 3 ] , 12 )
323+ }
324+
325+ StdMapTestSuite . test ( " UnorderedMap.mapValues " ) {
326+ let m = initUnorderedMap ( )
327+ let n = m. mapValues { v in v * 2 }
328+ expectEqual ( n [ 1 ] , 6 )
329+ expectEqual ( n [ 2 ] , 4 )
330+ expectEqual ( n [ 3 ] , 6 )
331+
332+ let n2 : UnorderedIntString = m. mapValues { v in std. string ( " \( v * 3 ) " ) }
333+ expectEqual ( n2 [ 1 ] , std. string ( " 9 " ) )
334+ expectEqual ( n2 [ 2 ] , std. string ( " 6 " ) )
335+ expectEqual ( n2 [ 3 ] , std. string ( " 9 " ) )
336+
337+ let n3 : Map = m. mapValues { v in v * 4 }
338+ expectEqual ( n3 [ 1 ] , 12 )
339+ expectEqual ( n3 [ 2 ] , 8 )
340+ expectEqual ( n3 [ 3 ] , 12 )
341+ }
342+
343+ StdMapTestSuite . test ( " Map.compactMapValues " ) {
344+ let m = Map ( [ 1 : 1 , 2 : 2 , 3 : 3 , 4 : 4 ] )
345+ let n = m. compactMapValues { v in v % 2 == 0 ? nil : v * 2 }
346+ expectEqual ( n [ 1 ] , 2 )
347+ expectNil ( n [ 2 ] )
348+ expectEqual ( n [ 3 ] , 6 )
349+ expectNil ( n [ 4 ] )
350+
351+ let n2 : MapIntString = m. compactMapValues { v in v % 2 == 0 ? nil : std. string ( " \( v * 3 ) " ) }
352+ expectEqual ( n2 [ 1 ] , std. string ( " 3 " ) )
353+ expectNil ( n2 [ 2 ] )
354+ expectEqual ( n2 [ 3 ] , std. string ( " 9 " ) )
355+ expectNil ( n2 [ 4 ] )
356+
357+ let n3 : UnorderedMap = m. compactMapValues { v in v % 2 == 0 ? nil : v * 4 }
358+ expectEqual ( n3 [ 1 ] , 4 )
359+ expectNil ( n3 [ 2 ] )
360+ expectEqual ( n3 [ 3 ] , 12 )
361+ expectNil ( n3 [ 4 ] )
362+ }
363+
364+ StdMapTestSuite . test ( " UnorderedMap.compactMapValues " ) {
365+ let m = UnorderedMap ( [ 1 : 1 , 2 : 2 , 3 : 3 , 4 : 4 ] )
366+
367+ let n = m. compactMapValues { v in v % 2 == 0 ? nil : v * 2 }
368+ expectEqual ( n [ 1 ] , 2 )
369+ expectNil ( n [ 2 ] )
370+ expectEqual ( n [ 3 ] , 6 )
371+ expectNil ( n [ 4 ] )
372+
373+ let n2 : UnorderedIntString = m. compactMapValues { v in v % 2 == 0 ? nil : std. string ( " \( v * 3 ) " ) }
374+ expectEqual ( n2 [ 1 ] , std. string ( " 3 " ) )
375+ expectNil ( n2 [ 2 ] )
376+ expectEqual ( n2 [ 3 ] , std. string ( " 9 " ) )
377+ expectNil ( n2 [ 4 ] )
378+
379+ let n3 : Map = m. compactMapValues { v in v % 2 == 0 ? nil : v * 4 }
380+ expectEqual ( n3 [ 1 ] , 4 )
381+ expectNil ( n3 [ 2 ] )
382+ expectEqual ( n3 [ 3 ] , 12 )
383+ expectNil ( n3 [ 4 ] )
384+ }
385+
307386StdMapTestSuite . test ( " Map.filter " ) {
308387 var m = initMap ( )
309388 var n = initEmptyMap ( )
0 commit comments