@@ -267,6 +267,85 @@ StdMapTestSuite.test("UnorderedMap.subscript(:default:)") {
267267 expectEqual ( m [ - 5 , default: 555 ] , 555 )
268268}
269269
270+ StdMapTestSuite . test ( " Map.mapValues " ) {
271+ let m = initMap ( )
272+ let n = m. mapValues { v in v * 2 }
273+ expectEqual ( n [ 1 ] , 6 )
274+ expectEqual ( n [ 2 ] , 4 )
275+ expectEqual ( n [ 3 ] , 6 )
276+
277+ let n2 : MapIntString = m. mapValues { v in std. string ( " \( v * 3 ) " ) }
278+ expectEqual ( n2 [ 1 ] , std. string ( " 9 " ) )
279+ expectEqual ( n2 [ 2 ] , std. string ( " 6 " ) )
280+ expectEqual ( n2 [ 3 ] , std. string ( " 9 " ) )
281+
282+ let n3 : UnorderedMap = m. mapValues { v in v * 4 }
283+ expectEqual ( n3 [ 1 ] , 12 )
284+ expectEqual ( n3 [ 2 ] , 8 )
285+ expectEqual ( n3 [ 3 ] , 12 )
286+ }
287+
288+ StdMapTestSuite . test ( " UnorderedMap.mapValues " ) {
289+ let m = initUnorderedMap ( )
290+ let n = m. mapValues { v in v * 2 }
291+ expectEqual ( n [ 1 ] , 6 )
292+ expectEqual ( n [ 2 ] , 4 )
293+ expectEqual ( n [ 3 ] , 6 )
294+
295+ let n2 : UnorderedIntString = m. mapValues { v in std. string ( " \( v * 3 ) " ) }
296+ expectEqual ( n2 [ 1 ] , std. string ( " 9 " ) )
297+ expectEqual ( n2 [ 2 ] , std. string ( " 6 " ) )
298+ expectEqual ( n2 [ 3 ] , std. string ( " 9 " ) )
299+
300+ let n3 : Map = m. mapValues { v in v * 4 }
301+ expectEqual ( n3 [ 1 ] , 12 )
302+ expectEqual ( n3 [ 2 ] , 8 )
303+ expectEqual ( n3 [ 3 ] , 12 )
304+ }
305+
306+ StdMapTestSuite . test ( " Map.compactMapValues " ) {
307+ let m = Map ( [ 1 : 1 , 2 : 2 , 3 : 3 , 4 : 4 ] )
308+ let n = m. compactMapValues { v in v % 2 == 0 ? nil : v * 2 }
309+ expectEqual ( n [ 1 ] , 2 )
310+ expectNil ( n [ 2 ] )
311+ expectEqual ( n [ 3 ] , 6 )
312+ expectNil ( n [ 4 ] )
313+
314+ let n2 : MapIntString = m. compactMapValues { v in v % 2 == 0 ? nil : std. string ( " \( v * 3 ) " ) }
315+ expectEqual ( n2 [ 1 ] , std. string ( " 3 " ) )
316+ expectNil ( n2 [ 2 ] )
317+ expectEqual ( n2 [ 3 ] , std. string ( " 9 " ) )
318+ expectNil ( n2 [ 4 ] )
319+
320+ let n3 : UnorderedMap = m. compactMapValues { v in v % 2 == 0 ? nil : v * 4 }
321+ expectEqual ( n3 [ 1 ] , 4 )
322+ expectNil ( n3 [ 2 ] )
323+ expectEqual ( n3 [ 3 ] , 12 )
324+ expectNil ( n3 [ 4 ] )
325+ }
326+
327+ StdMapTestSuite . test ( " UnorderedMap.compactMapValues " ) {
328+ let m = UnorderedMap ( [ 1 : 1 , 2 : 2 , 3 : 3 , 4 : 4 ] )
329+
330+ let n = m. compactMapValues { v in v % 2 == 0 ? nil : v * 2 }
331+ expectEqual ( n [ 1 ] , 2 )
332+ expectNil ( n [ 2 ] )
333+ expectEqual ( n [ 3 ] , 6 )
334+ expectNil ( n [ 4 ] )
335+
336+ let n2 : UnorderedIntString = m. compactMapValues { v in v % 2 == 0 ? nil : std. string ( " \( v * 3 ) " ) }
337+ expectEqual ( n2 [ 1 ] , std. string ( " 3 " ) )
338+ expectNil ( n2 [ 2 ] )
339+ expectEqual ( n2 [ 3 ] , std. string ( " 9 " ) )
340+ expectNil ( n2 [ 4 ] )
341+
342+ let n3 : Map = m. compactMapValues { v in v % 2 == 0 ? nil : v * 4 }
343+ expectEqual ( n3 [ 1 ] , 4 )
344+ expectNil ( n3 [ 2 ] )
345+ expectEqual ( n3 [ 3 ] , 12 )
346+ expectNil ( n3 [ 4 ] )
347+ }
348+
270349StdMapTestSuite . test ( " Map.filter " ) {
271350 var m = initMap ( )
272351 var n = initEmptyMap ( )
0 commit comments