summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nordberg <linus@nordu.net>2014-04-25 16:11:15 +0200
committerLinus Nordberg <linus@nordu.net>2014-04-25 16:11:15 +0200
commite9e6b603b722cf8f4d8978dfb696b00e10096d2b (patch)
treecfca395d3fff15fac1854eeb5451ba85a5ccfa68
parent5904738b98e9756e362ed9a81f2d831621493311 (diff)
Add some more internal tests to ht.
-rw-r--r--src/ht.erl29
1 files changed, 27 insertions, 2 deletions
diff --git a/src/ht.erl b/src/ht.erl
index 5f41991..1fb4dd5 100644
--- a/src/ht.erl
+++ b/src/ht.erl
@@ -164,6 +164,32 @@ rightbranchdepth(Tree, Acc) ->
%%%%%%%%%%%%%%%%%%%%
%% Internal tests.
+basic_helpers_test_() ->
+ [test_bitcount()].
+
+test_bitcount() ->
+ L = [1, 2, 3, 255, 256, 511, 512, 32767, 32768, 65535, 65536,
+ 2147483648, 4294967296, 8589934591, 8589934592, 18446744073709551616],
+ [[?_assertEqual(lists:nth(1, tv_bitcount(X)), ffs(X)) || X <- L],
+ [?_assertEqual(lists:nth(2, tv_bitcount(X)), fls(X)) || X <- L]].
+
+tv_bitcount(1) -> [0, 0];
+tv_bitcount(2) -> [1, 1];
+tv_bitcount(3) -> [1, 0];
+tv_bitcount(255) -> [7, 0];
+tv_bitcount(256) -> [8, 8];
+tv_bitcount(511) -> [8, 0];
+tv_bitcount(512) -> [9, 9];
+tv_bitcount(32767) -> [14, 0];
+tv_bitcount(32768) -> [15, 15];
+tv_bitcount(65535) -> [15, 0];
+tv_bitcount(65536) -> [16, 16];
+tv_bitcount(2147483648) -> [31, 31];
+tv_bitcount(4294967296) -> [32, 32];
+tv_bitcount(8589934591) -> [32, 0];
+tv_bitcount(8589934592) -> [33, 33];
+tv_bitcount(18446744073709551616) -> [64, 64].
+
-define(TEST_VECTOR_TREES,
[<<148,242,40,0,3,172,180,106,111,230,146,161,32,40,128,38,103,8,194,
102,72,68, 126,70,108,47,8,216,208,146,178,107>>]).
@@ -217,8 +243,7 @@ mkhead_from_list_test() ->
mkhead(L)).
append_eq_mth_test() ->
- %% FIXME: Make larger trees once we've fixed That Bug.
- L = lists:seq(1, 255),
+ L = [<<X:16>> || X <- lists:seq(0, 1024)],
?assertEqual(gethash((mkhead(L))#head.tree), mth(L)).