@@ -735,11 +735,11 @@ defmodule EnumTest do
735
735
736
736
assert Enum . split_with ( % { } , fn x -> rem ( x , 2 ) == 0 end ) == { [ ] , [ ] }
737
737
738
- assert Enum . split_with ( % { a: 1 , b: 2 , c: 3 } , fn { _k , v } -> rem ( v , 2 ) == 0 end ) ==
739
- { [ b: 2 ] , [ a: 1 , c: 3 ] }
738
+ assert Enum . split_with ( % { a: 1 , b: 2 } , fn { _k , v } -> rem ( v , 2 ) == 0 end ) ==
739
+ { [ b: 2 ] , [ a: 1 ] }
740
740
741
741
assert Enum . split_with ( % { b: 2 , d: 4 , f: 6 } , fn { _k , v } -> rem ( v , 2 ) == 0 end ) ==
742
- { [ b: 2 , d: 4 , f: 6 ] , [ ] }
742
+ { Map . to_list ( % { b: 2 , d: 4 , f: 6 } ) , [ ] }
743
743
end
744
744
745
745
test "random/1" do
@@ -1503,23 +1503,22 @@ defmodule EnumTest do
1503
1503
assert result == [ 2 , 4 , 6 , 8 , 10 ]
1504
1504
1505
1505
# Maps
1506
- result = Enum . zip_with ( % { a: 7 , c: 9 } , 3 .. 4 , fn { key , value } , b -> { key , value + b } end )
1507
- assert result == [ a: 10 , c: 13 ]
1506
+ result = Enum . zip_with ( % { a: 7 } , 3 .. 4 , fn { key , value } , b -> { key , value + b } end )
1507
+ assert result == [ a: 10 ]
1508
1508
1509
- colour_1 = % { r: 176 , g: 175 , b: 255 }
1510
- colour_2 = % { r: 12 , g: 176 , b: 176 }
1511
-
1512
- result = Enum . zip_with ( colour_1 , colour_2 , fn { k , left } , { k , right } -> { k , left + right } end )
1513
- assert result == [ b: 431 , g: 351 , r: 188 ]
1509
+ result = Enum . zip_with ( 3 .. 4 , % { a: 7 } , fn a , { key , value } -> { key , value + a } end )
1510
+ assert result == [ a: 10 ]
1514
1511
end
1515
1512
1516
1513
test "zip_with/2" do
1517
1514
zip_fun = fn items -> List . to_tuple ( items ) end
1518
1515
result = Enum . zip_with ( [ [ :a , :b ] , [ 1 , 2 ] , [ "foo" , "bar" ] ] , zip_fun )
1519
1516
assert result == [ { :a , 1 , "foo" } , { :b , 2 , "bar" } ]
1520
1517
1521
- lots = Enum . zip_with ( [ [ :a , :b ] , [ 1 , 2 ] , [ "foo" , "bar" ] , % { a: :b , c: :d } ] , zip_fun )
1522
- assert lots == [ { :a , 1 , "foo" , { :a , :b } } , { :b , 2 , "bar" , { :c , :d } } ]
1518
+ map = % { a: :b , c: :d }
1519
+ [ x1 , x2 ] = Map . to_list ( map )
1520
+ lots = Enum . zip_with ( [ [ :a , :b ] , [ 1 , 2 ] , [ "foo" , "bar" ] , map ] , zip_fun )
1521
+ assert lots == [ { :a , 1 , "foo" , x1 } , { :b , 2 , "bar" , x2 } ]
1523
1522
1524
1523
assert Enum . zip_with ( [ [ :a , :b ] , [ 1 , 2 , 3 , 4 ] , [ "foo" , "bar" , "baz" , "qux" ] ] , zip_fun ) ==
1525
1524
[ { :a , 1 , "foo" } , { :b , 2 , "bar" } ]
@@ -1556,21 +1555,11 @@ defmodule EnumTest do
1556
1555
assert result == [ 2 , 4 , 6 , 8 , 10 ]
1557
1556
1558
1557
# Maps
1559
- result = Enum . zip_with ( [ % { a: 7 , c: 9 } , 3 .. 4 ] , fn [ { key , value } , b ] -> { key , value + b } end )
1560
- assert result == [ a: 10 , c: 13 ]
1561
-
1562
- colour_1 = % { r: 176 , g: 175 , b: 255 }
1563
- colour_2 = % { r: 12 , g: 176 , b: 176 }
1564
-
1565
- result =
1566
- Enum . zip_with ( [ colour_1 , colour_2 ] , fn [ { k , left } , { k , right } ] -> { k , left + right } end )
1567
-
1568
- assert result == [ b: 431 , g: 351 , r: 188 ]
1558
+ result = Enum . zip_with ( [ % { a: 7 } , 3 .. 4 ] , fn [ { key , value } , b ] -> { key , value + b } end )
1559
+ assert result == [ a: 10 ]
1569
1560
1570
- assert Enum . zip_with ( [ % { a: :b , c: :d } , % { e: :f , g: :h } ] , & & 1 ) == [
1571
- [ a: :b , e: :f ] ,
1572
- [ c: :d , g: :h ]
1573
- ]
1561
+ result = Enum . zip_with ( [ % { a: 7 } , 3 .. 4 ] , fn [ { key , value } , b ] -> { key , value + b } end )
1562
+ assert result == [ a: 10 ]
1574
1563
end
1575
1564
end
1576
1565
@@ -2396,16 +2385,17 @@ defmodule EnumTest.Map do
2396
2385
2397
2386
test "random/1" do
2398
2387
map = % { a: 1 , b: 2 , c: 3 }
2388
+ [ x1 , x2 , x3 ] = Map . to_list ( map )
2399
2389
seed1 = { 1406 , 407_414 , 139_258 }
2400
2390
seed2 = { 1406 , 421_106 , 567_597 }
2401
2391
:rand . seed ( :exsss , seed1 )
2402
- assert Enum . random ( map ) == { :c , 3 }
2403
- assert Enum . random ( map ) == { :a , 1 }
2404
- assert Enum . random ( map ) == { :b , 2 }
2392
+ assert Enum . random ( map ) == x3
2393
+ assert Enum . random ( map ) == x1
2394
+ assert Enum . random ( map ) == x2
2405
2395
2406
2396
:rand . seed ( :exsss , seed2 )
2407
- assert Enum . random ( map ) == { :c , 3 }
2408
- assert Enum . random ( map ) == { :b , 2 }
2397
+ assert Enum . random ( map ) == x3
2398
+ assert Enum . random ( map ) == x2
2409
2399
end
2410
2400
2411
2401
test "take_random/2" do
@@ -2418,35 +2408,37 @@ defmodule EnumTest.Map do
2418
2408
# set a fixed seed so the test can be deterministic
2419
2409
# please note the order of following assertions is important
2420
2410
map = % { a: 1 , b: 2 , c: 3 }
2411
+ [ x1 , x2 , x3 ] = Map . to_list ( map )
2421
2412
seed1 = { 1406 , 407_414 , 139_258 }
2422
2413
seed2 = { 1406 , 421_106 , 567_597 }
2423
2414
:rand . seed ( :exsss , seed1 )
2424
- assert Enum . take_random ( map , 1 ) == [ c: 3 ]
2415
+ assert Enum . take_random ( map , 1 ) == [ x3 ]
2425
2416
:rand . seed ( :exsss , seed1 )
2426
- assert Enum . take_random ( map , 2 ) == [ c: 3 , a: 1 ]
2417
+ assert Enum . take_random ( map , 2 ) == [ x3 , x1 ]
2427
2418
:rand . seed ( :exsss , seed1 )
2428
- assert Enum . take_random ( map , 3 ) == [ c: 3 , a: 1 , b: 2 ]
2419
+ assert Enum . take_random ( map , 3 ) == [ x3 , x1 , x2 ]
2429
2420
:rand . seed ( :exsss , seed1 )
2430
- assert Enum . take_random ( map , 4 ) == [ c: 3 , a: 1 , b: 2 ]
2421
+ assert Enum . take_random ( map , 4 ) == [ x3 , x1 , x2 ]
2431
2422
:rand . seed ( :exsss , seed2 )
2432
- assert Enum . take_random ( map , 1 ) == [ a: 1 ]
2423
+ assert Enum . take_random ( map , 1 ) == [ x1 ]
2433
2424
:rand . seed ( :exsss , seed2 )
2434
- assert Enum . take_random ( map , 2 ) == [ a: 1 , c: 3 ]
2425
+ assert Enum . take_random ( map , 2 ) == [ x1 , x3 ]
2435
2426
:rand . seed ( :exsss , seed2 )
2436
- assert Enum . take_random ( map , 3 ) == [ a: 1 , c: 3 , b: 2 ]
2427
+ assert Enum . take_random ( map , 3 ) == [ x1 , x3 , x2 ]
2437
2428
:rand . seed ( :exsss , seed2 )
2438
- assert Enum . take_random ( map , 4 ) == [ a: 1 , c: 3 , b: 2 ]
2429
+ assert Enum . take_random ( map , 4 ) == [ x1 , x3 , x2 ]
2439
2430
end
2440
2431
2441
2432
test "reverse/1" do
2442
2433
assert Enum . reverse ( % { } ) == [ ]
2443
2434
assert Enum . reverse ( MapSet . new ( ) ) == [ ]
2444
- assert Enum . reverse ( % { a: 1 , b: 2 , c: 3 } ) == [ c: 3 , b: 2 , a: 1 ]
2435
+
2436
+ map = % { a: 1 , b: 2 , c: 3 }
2437
+ assert Enum . reverse ( map ) == Map . to_list ( map ) |> Enum . reverse ( )
2445
2438
end
2446
2439
2447
2440
test "reverse/2" do
2448
- assert Enum . reverse ( [ a: 1 , b: 2 , c: 3 , a: 1 ] , % { x: 1 , y: 2 , z: 3 } ) ==
2449
- [ a: 1 , c: 3 , b: 2 , a: 1 , x: 1 , y: 2 , z: 3 ]
2441
+ assert Enum . reverse ( [ a: 1 , b: 2 , c: 3 , a: 1 ] , % { x: 1 } ) == [ a: 1 , c: 3 , b: 2 , a: 1 , x: 1 ]
2450
2442
2451
2443
assert Enum . reverse ( [ ] , % { a: 1 } ) == [ a: 1 ]
2452
2444
assert Enum . reverse ( [ ] , % { } ) == [ ]
@@ -2456,44 +2448,49 @@ defmodule EnumTest.Map do
2456
2448
2457
2449
test "fetch/2" do
2458
2450
map = % { a: 1 , b: 2 , c: 3 , d: 4 , e: 5 }
2459
- assert Enum . fetch ( map , 0 ) == { :ok , { :a , 1 } }
2460
- assert Enum . fetch ( map , - 2 ) == { :ok , { :d , 4 } }
2451
+ [ x1 , _x2 , _x3 , x4 , x5 ] = Map . to_list ( map )
2452
+ assert Enum . fetch ( map , 0 ) == { :ok , x1 }
2453
+ assert Enum . fetch ( map , - 2 ) == { :ok , x4 }
2461
2454
assert Enum . fetch ( map , - 6 ) == :error
2462
2455
assert Enum . fetch ( map , 5 ) == :error
2463
2456
assert Enum . fetch ( % { } , 0 ) == :error
2464
2457
2465
2458
assert Stream . take ( map , 3 ) |> Enum . fetch ( 3 ) == :error
2466
- assert Stream . take ( map , 5 ) |> Enum . fetch ( 4 ) == { :ok , { :e , 5 } }
2459
+ assert Stream . take ( map , 5 ) |> Enum . fetch ( 4 ) == { :ok , x5 }
2467
2460
end
2468
2461
2469
2462
test "map_intersperse/3" do
2470
2463
assert Enum . map_intersperse ( % { } , :a , & & 1 ) == [ ]
2471
2464
assert Enum . map_intersperse ( % { foo: :bar } , :a , & & 1 ) == [ { :foo , :bar } ]
2472
2465
2473
- assert Enum . map_intersperse ( % { foo: :bar , baz: :bat } , :a , & & 1 ) ==
2474
- [ { :baz , :bat } , :a , { :foo , :bar } ]
2466
+ map = % { foo: :bar , baz: :bat }
2467
+ [ x1 , x2 ] = Map . to_list ( map )
2468
+
2469
+ assert Enum . map_intersperse ( map , :a , & & 1 ) == [ x1 , :a , x2 ]
2475
2470
end
2476
2471
2477
2472
test "slice/2" do
2478
2473
map = % { a: 1 , b: 2 , c: 3 , d: 4 , e: 5 }
2479
- assert Enum . slice ( map , 0 .. 0 ) == [ a: 1 ]
2480
- assert Enum . slice ( map , 0 .. 1 ) == [ a: 1 , b: 2 ]
2481
- assert Enum . slice ( map , 0 .. 2 ) == [ a: 1 , b: 2 , c: 3 ]
2474
+ [ x1 , x2 , x3 | _ ] = Map . to_list ( map )
2475
+ assert Enum . slice ( map , 0 .. 0 ) == [ x1 ]
2476
+ assert Enum . slice ( map , 0 .. 1 ) == [ x1 , x2 ]
2477
+ assert Enum . slice ( map , 0 .. 2 ) == [ x1 , x2 , x3 ]
2482
2478
end
2483
2479
2484
2480
test "slice/3" do
2485
2481
map = % { a: 1 , b: 2 , c: 3 , d: 4 , e: 5 }
2486
- assert Enum . slice ( map , 1 , 2 ) == [ b: 2 , c: 3 ]
2482
+ [ x1 , x2 , x3 , x4 , x5 ] = Map . to_list ( map )
2483
+ assert Enum . slice ( map , 1 , 2 ) == [ x2 , x3 ]
2487
2484
assert Enum . slice ( map , 1 , 0 ) == [ ]
2488
- assert Enum . slice ( map , 2 , 5 ) == [ c: 3 , d: 4 , e: 5 ]
2489
- assert Enum . slice ( map , 2 , 6 ) == [ c: 3 , d: 4 , e: 5 ]
2485
+ assert Enum . slice ( map , 2 , 5 ) == [ x3 , x4 , x5 ]
2486
+ assert Enum . slice ( map , 2 , 6 ) == [ x3 , x4 , x5 ]
2490
2487
assert Enum . slice ( map , 5 , 5 ) == [ ]
2491
2488
assert Enum . slice ( map , 6 , 5 ) == [ ]
2492
2489
assert Enum . slice ( map , 6 , 0 ) == [ ]
2493
2490
assert Enum . slice ( map , - 6 , 0 ) == [ ]
2494
- assert Enum . slice ( map , - 6 , 5 ) == [ a: 1 , b: 2 , c: 3 , d: 4 , e: 5 ]
2495
- assert Enum . slice ( map , - 2 , 5 ) == [ d: 4 , e: 5 ]
2496
- assert Enum . slice ( map , - 3 , 1 ) == [ c: 3 ]
2491
+ assert Enum . slice ( map , - 6 , 5 ) == [ x1 , x2 , x3 , x4 , x5 ]
2492
+ assert Enum . slice ( map , - 2 , 5 ) == [ x4 , x5 ]
2493
+ assert Enum . slice ( map , - 3 , 1 ) == [ x3 ]
2497
2494
2498
2495
assert_raise FunctionClauseError , fn ->
2499
2496
Enum . slice ( map , 0 , - 1 )
@@ -2508,19 +2505,19 @@ defmodule EnumTest.Map do
2508
2505
end
2509
2506
2510
2507
assert Enum . slice ( map , 0 , 0 ) == [ ]
2511
- assert Enum . slice ( map , 0 , 1 ) == [ a: 1 ]
2512
- assert Enum . slice ( map , 0 , 2 ) == [ a: 1 , b: 2 ]
2513
- assert Enum . slice ( map , 1 , 2 ) == [ b: 2 , c: 3 ]
2508
+ assert Enum . slice ( map , 0 , 1 ) == [ x1 ]
2509
+ assert Enum . slice ( map , 0 , 2 ) == [ x1 , x2 ]
2510
+ assert Enum . slice ( map , 1 , 2 ) == [ x2 , x3 ]
2514
2511
assert Enum . slice ( map , 1 , 0 ) == [ ]
2515
- assert Enum . slice ( map , 2 , 5 ) == [ c: 3 , d: 4 , e: 5 ]
2516
- assert Enum . slice ( map , 2 , 6 ) == [ c: 3 , d: 4 , e: 5 ]
2512
+ assert Enum . slice ( map , 2 , 5 ) == [ x3 , x4 , x5 ]
2513
+ assert Enum . slice ( map , 2 , 6 ) == [ x3 , x4 , x5 ]
2517
2514
assert Enum . slice ( map , 5 , 5 ) == [ ]
2518
2515
assert Enum . slice ( map , 6 , 5 ) == [ ]
2519
2516
assert Enum . slice ( map , 6 , 0 ) == [ ]
2520
2517
assert Enum . slice ( map , - 6 , 0 ) == [ ]
2521
- assert Enum . slice ( map , - 6 , 5 ) == [ a: 1 , b: 2 , c: 3 , d: 4 , e: 5 ]
2522
- assert Enum . slice ( map , - 2 , 5 ) == [ d: 4 , e: 5 ]
2523
- assert Enum . slice ( map , - 3 , 1 ) == [ c: 3 ]
2518
+ assert Enum . slice ( map , - 6 , 5 ) == [ x1 , x2 , x3 , x4 , x5 ]
2519
+ assert Enum . slice ( map , - 2 , 5 ) == [ x4 , x5 ]
2520
+ assert Enum . slice ( map , - 3 , 1 ) == [ x3 ]
2524
2521
2525
2522
assert_raise FunctionClauseError , fn ->
2526
2523
Enum . slice ( map , 0 , - 1 )
0 commit comments