@@ -1166,6 +1166,7 @@ defmodule EnumTest do
1166
1166
assert [ 1 , 2 , 3 ] |> Stream . cycle ( ) |> Enum . slice ( 0 .. 4 ) == [ 1 , 2 , 3 , 1 , 2 ]
1167
1167
assert [ 1 , 2 , 3 ] |> Stream . cycle ( ) |> Enum . slice ( 0 .. 4 // 2 ) == [ 1 , 3 , 2 ]
1168
1168
assert [ 1 , 2 , 3 ] |> Stream . cycle ( ) |> Enum . slice ( 0 .. 5 // 2 ) == [ 1 , 3 , 2 ]
1169
+ assert [ 1 , 2 , 3 ] |> Stream . cycle ( ) |> Enum . slice ( 1 .. 6 // 2 ) == [ 2 , 1 , 3 ]
1169
1170
end
1170
1171
1171
1172
test "slice on pruned infinite streams" do
@@ -1206,6 +1207,13 @@ defmodule EnumTest do
1206
1207
assert Enum . sort ( [ 5 , 3 , 2 , 4 , 1 ] , & ( & 1 >= & 2 ) ) == [ 5 , 4 , 3 , 2 , 1 ]
1207
1208
assert Enum . sort ( [ 5 , 3 , 2 , 4 , 1 ] , :asc ) == [ 1 , 2 , 3 , 4 , 5 ]
1208
1209
assert Enum . sort ( [ 5 , 3 , 2 , 4 , 1 ] , :desc ) == [ 5 , 4 , 3 , 2 , 1 ]
1210
+
1211
+ assert Enum . sort ( [ 3 , 2 , 1 , 3 , 2 , 3 ] , :asc ) == [ 1 , 2 , 2 , 3 , 3 , 3 ]
1212
+ assert Enum . sort ( [ 3 , 2 , 1 , 3 , 2 , 3 ] , :desc ) == [ 3 , 3 , 3 , 2 , 2 , 1 ]
1213
+
1214
+ shuffled = Enum . shuffle ( 1 .. 100 )
1215
+ assert Enum . sort ( shuffled , :asc ) == Enum . to_list ( 1 .. 100 )
1216
+ assert Enum . sort ( shuffled , :desc ) == Enum . reverse ( 1 .. 100 )
1209
1217
end
1210
1218
1211
1219
test "sort/2 with module" do
@@ -1219,6 +1227,21 @@ defmodule EnumTest do
1219
1227
[ ~D[ 2020-01-01] , ~D[ 2019-01-01] , ~D[ 2018-01-01] ]
1220
1228
end
1221
1229
1230
+ test "sort/2 with streams" do
1231
+ sort_stream = fn list , sorter -> list |> Stream . map ( & & 1 ) |> Enum . sort ( sorter ) end
1232
+
1233
+ assert sort_stream . ( [ 5 , 3 , 2 , 4 , 1 ] , & ( & 1 >= & 2 ) ) == [ 5 , 4 , 3 , 2 , 1 ]
1234
+ assert sort_stream . ( [ 5 , 3 , 2 , 4 , 1 ] , :asc ) == [ 1 , 2 , 3 , 4 , 5 ]
1235
+ assert sort_stream . ( [ 5 , 3 , 2 , 4 , 1 ] , :desc ) == [ 5 , 4 , 3 , 2 , 1 ]
1236
+
1237
+ assert sort_stream . ( [ 3 , 2 , 1 , 3 , 2 , 3 ] , :asc ) == [ 1 , 2 , 2 , 3 , 3 , 3 ]
1238
+ assert sort_stream . ( [ 3 , 2 , 1 , 3 , 2 , 3 ] , :desc ) == [ 3 , 3 , 3 , 2 , 2 , 1 ]
1239
+
1240
+ shuffled = Enum . shuffle ( 1 .. 100 )
1241
+ assert sort_stream . ( shuffled , :asc ) == Enum . to_list ( 1 .. 100 )
1242
+ assert sort_stream . ( shuffled , :desc ) == Enum . reverse ( 1 .. 100 )
1243
+ end
1244
+
1222
1245
test "sort_by/3" do
1223
1246
collection = [
1224
1247
[ sorted_data: 4 ] ,
0 commit comments