aboutsummaryrefslogtreecommitdiffstats
path: root/lib/hipe/test/maps_SUITE_data/maps_map_size.erl
diff options
context:
space:
mode:
authorBjörn-Egil Dahlberg <[email protected]>2014-05-09 17:59:12 +0200
committerBjörn-Egil Dahlberg <[email protected]>2014-05-09 17:59:12 +0200
commit1c817ecd054780551bcbe8b5a0e30bea2b3da04e (patch)
treee1a57c1592b3662cc785f4770e210140593a9986 /lib/hipe/test/maps_SUITE_data/maps_map_size.erl
parent659213c7facb71410fe990d5099abf3019c58b3e (diff)
parentf6d5234c391a0ba834337c3e92ee5fb377834a32 (diff)
downloadotp-1c817ecd054780551bcbe8b5a0e30bea2b3da04e.tar.gz
otp-1c817ecd054780551bcbe8b5a0e30bea2b3da04e.tar.bz2
otp-1c817ecd054780551bcbe8b5a0e30bea2b3da04e.zip
Merge branch 'ks/hipe-map-support/OTP-11900' into maint
* ks/hipe-map-support/OTP-11900: Add five new test files for maps in the HiPE test suite Copy the tests for maps from the compiler application to a new HiPE test suite Translate the put_map_assoc and put_map_exact BEAM instructions to ICode Translate the has_map_fields and get_map_elements BEAM instructions to ICode
Diffstat (limited to 'lib/hipe/test/maps_SUITE_data/maps_map_size.erl')
-rw-r--r--lib/hipe/test/maps_SUITE_data/maps_map_size.erl29
1 files changed, 29 insertions, 0 deletions
diff --git a/lib/hipe/test/maps_SUITE_data/maps_map_size.erl b/lib/hipe/test/maps_SUITE_data/maps_map_size.erl
new file mode 100644
index 0000000000..25c8e5d4c7
--- /dev/null
+++ b/lib/hipe/test/maps_SUITE_data/maps_map_size.erl
@@ -0,0 +1,29 @@
+-module(maps_map_size).
+-export([test/0]).
+
+test() ->
+ 0 = map_size(id(#{})),
+ 1 = map_size(id(#{a=>1})),
+ 1 = map_size(id(#{a=>"wat"})),
+ 2 = map_size(id(#{a=>1, b=>2})),
+ 3 = map_size(id(#{a=>1, b=>2, b=>"3","33"=><<"n">>})),
+
+ true = map_is_size(#{a=>1}, 1),
+ true = map_is_size(#{a=>1, a=>2}, 1),
+ M = #{ "a" => 1, "b" => 2},
+ true = map_is_size(M, 2),
+ false = map_is_size(M, 3),
+ true = map_is_size(M#{ "a" => 2}, 2),
+ false = map_is_size(M#{ "c" => 2}, 2),
+
+ %% Error cases.
+ {'EXIT',{badarg,_}} = (catch map_size([])),
+ {'EXIT',{badarg,_}} = (catch map_size(<<1,2,3>>)),
+ {'EXIT',{badarg,_}} = (catch map_size(1)),
+ ok.
+
+map_is_size(M,N) when map_size(M) =:= N -> true;
+map_is_size(_,_) -> false.
+
+%% Use this function to avoid compile-time evaluation of an expression.
+id(I) -> I.