Skip to content

Instantly share code, notes, and snippets.

@neeraj9
Created May 23, 2019 05:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save neeraj9/cf8639cce5de2c3a6a0cf9c9ffa4383b to your computer and use it in GitHub Desktop.
Save neeraj9/cf8639cce5de2c3a6a0cf9c9ffa4383b to your computer and use it in GitHub Desktop.
Erlang Maps Traversal Order Test
#!/usr/bin/env escript
%%% @author neerajsharma
%%% @copyright (C) 2019, Neeraj Sharma <neerajsharma.9@outlook.com>
%%% @doc
%%%
%%% @end
-module(test_maps_order).
%% -*- erlang -*-
%%
main(Args) when is_list(Args) ->
EmulatorVersion = erlang:system_info(version),
OtpRelease = erlang:system_info(otp_release),
io:format("Emulator ~p, OTP Release is ~p~n",
[EmulatorVersion, OtpRelease]),
run_map_traversal_test(10),
run_map_traversal_test(32),
run_map_traversal_test(34).
run_map_traversal_test(Size) when is_integer(Size) ->
L = [{C, C} || C <- lists:seq(1, Size)],
M = maps:from_list(L),
Equality = maps:keys(M) =:=
maps:fold(fun(K, _, AccIn) -> [K | AccIn] end, [], M),
ReverseEquality = lists:reverse(maps:keys(M)) =:=
maps:fold(fun(K, _, AccIn) -> [K | AccIn] end, [], M),
io:format("size=~p, Equality=~p, ReverEquality=~p~n",
[Size, Equality, ReverseEquality]).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment