File tree 2 files changed +16
-4
lines changed 2 files changed +16
-4
lines changed Original file line number Diff line number Diff line change @@ -87,13 +87,17 @@ defmodule Faker.Util do
87
87
iex> Faker.Util.list(3, &(to_string(&1)))
88
88
["0", "1", "2"]
89
89
"""
90
- @ spec list ( integer , ( integer -> any ) ) :: [ any ]
91
- def list ( n , fun ) when is_function ( fun , 1 ) do
90
+ @ spec list ( non_neg_integer , ( integer -> any ) ) :: [ any ]
91
+ def list ( 0 , _ ) do
92
+ [ ]
93
+ end
94
+
95
+ def list ( n , fun ) when is_function ( fun , 1 ) and n > 0 do
92
96
Enum . map ( 0 .. ( n - 1 ) , & fun . ( & 1 ) )
93
97
end
94
98
95
- @ spec list ( integer , ( -> any ) ) :: [ any ]
96
- def list ( n , fun ) when is_function ( fun , 0 ) do
99
+ @ spec list ( non_neg_integer , ( -> any ) ) :: [ any ]
100
+ def list ( n , fun ) when is_function ( fun , 0 ) and n > 0 do
97
101
Enum . map ( 0 .. ( n - 1 ) , fn _ -> fun . ( ) end )
98
102
end
99
103
Original file line number Diff line number Diff line change @@ -51,4 +51,12 @@ defmodule Faker.UtilTest do
51
51
assert Enum . sort ( generated_value ) == list
52
52
end )
53
53
end
54
+
55
+ test "list/2" do
56
+ assert [ 0 , 1 , 2 ] = Faker.Util . list ( 3 , & & 1 )
57
+ end
58
+
59
+ test "emtpty list/2" do
60
+ assert [ ] = Faker.Util . list ( 0 , & & 1 )
61
+ end
54
62
end
You can’t perform that action at this time.
0 commit comments