summaryrefslogtreecommitdiff
path: root/lib/stdlib/test/maps_SUITE.erl
diff options
context:
space:
mode:
authorGian Lorenzo Meocci <glmeocci@gmail.com>2022-01-06 15:23:32 +0100
committerGian Lorenzo Meocci <gianlorenzo.meocci@athonet.com>2022-03-08 12:09:25 +0100
commit306f8bd8dbba91632d1bec536d7a0288fd1b8ee4 (patch)
treef895d6d5562366643029dbde33bef5dc2e003874 /lib/stdlib/test/maps_SUITE.erl
parentf1daf312ac1265a6e94fd3a60b5c26ff03cc7e78 (diff)
downloaderlang-306f8bd8dbba91632d1bec536d7a0288fd1b8ee4.tar.gz
Add maps:groups_from_list
Diffstat (limited to 'lib/stdlib/test/maps_SUITE.erl')
-rw-r--r--lib/stdlib/test/maps_SUITE.erl23
1 files changed, 21 insertions, 2 deletions
diff --git a/lib/stdlib/test/maps_SUITE.erl b/lib/stdlib/test/maps_SUITE.erl
index 28895c4efe..2492130cf1 100644
--- a/lib/stdlib/test/maps_SUITE.erl
+++ b/lib/stdlib/test/maps_SUITE.erl
@@ -42,7 +42,8 @@
t_from_list_check_trapping/1,
t_from_keys_check_trapping/1,
t_keys_trapping/1,
- t_values_trapping/1]).
+ t_values_trapping/1,
+ t_groups_from_list/1]).
-define(badmap(V,F,Args), {'EXIT', {{badmap,V}, [{maps,F,Args,_}|_]}}).
-define(badkey(K,F,Args), {'EXIT', {{badkey,K}, [{maps,F,Args,_}|_]}}).
@@ -68,7 +69,8 @@ all() ->
t_from_list_check_trapping,
t_from_keys_check_trapping,
t_keys_trapping,
- t_values_trapping].
+ t_values_trapping,
+ t_groups_from_list].
t_from_list_kill_process(Config) when is_list(Config) ->
Killer = self(),
@@ -770,6 +772,16 @@ t_size_1(Config) when is_list(Config) ->
{'EXIT', {{badmap,<<>>}, _}} = (catch maps:size(id(<<>>))),
ok.
+t_groups_from_list(_Config) ->
+ #{} = maps:groups_from_list(fun erlang:length/1, []),
+ #{3 := ["tna","tac"], 5 := ["ognid"], 7 := ["olaffub"]} =
+ maps:groups_from_list(
+ fun erlang:length/1,
+ fun lists:reverse/1,
+ ["ant", "buffalo", "cat", "dingo"]
+ ),
+ #{0 := [2], 1 := [1, 3]} = maps:groups_from_list(fun(X) -> X rem 2 end, [1, 2, 3]).
+
error_info(_Config) ->
BadIterator = [-1|#{}],
GoodIterator = maps:iterator(#{}),
@@ -806,6 +818,13 @@ error_info(_Config) ->
{get, [key, {no,map}]},
{get, [key, {no,map}, default]},
+ {groups_from_list, [not_a_fun, []]},
+ {groups_from_list, [fun hd/1, not_a_list]},
+
+ {groups_from_list, [not_a_fun, fun(_) -> ok end, []]},
+ {groups_from_list, [fun(_) -> ok end, not_a_fun, []]},
+ {groups_from_list, [fun(_) -> ok end, fun(_) -> ok end, not_a_list]},
+
{intersect, [#{a => b}, y]},
{intersect, [x, #{a => b}]},
{intersect, [x, y],[{1,".*"},{2,".*"}]},