diff options
-rw-r--r-- | src/ht.erl | 29 |
1 files changed, 27 insertions, 2 deletions
@@ -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)). |