summaryrefslogtreecommitdiff
path: root/src/ht.erl
diff options
context:
space:
mode:
authorLinus Nordberg <linus@nordu.net>2014-04-26 14:24:53 +0200
committerLinus Nordberg <linus@nordu.net>2014-04-26 14:24:53 +0200
commitd87227c82699ec3eefed4708a7c38df2c6e877cd (patch)
tree40741bcbb5859730bc85652fec3270f90245d8d1 /src/ht.erl
parent70d1c41ee4d44ee5ff76f2f290db87981974cac5 (diff)
Rearrange tests.
Also, don't build 1024 trees.
Diffstat (limited to 'src/ht.erl')
-rw-r--r--src/ht.erl73
1 files changed, 37 insertions, 36 deletions
diff --git a/src/ht.erl b/src/ht.erl
index 3d7c02e..5cd262f 100644
--- a/src/ht.erl
+++ b/src/ht.erl
@@ -166,43 +166,9 @@ 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>>]).
-basic_tree_test_() ->
- TestVectorTree = #leaf{hash = hd(?TEST_VECTOR_TREES)},
- [?_assertEqual(#head{version = 0, tree = undefined},
- create()),
- ?_assertEqual(#head{version = 1, tree = TestVectorTree},
- create("a foo is a bar"))].
-
%% Test vectors from certificate-transparency/src/python/ct/crypto/merkle_test.py.
-define(EMPTY_HASH, "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855").
-define(TEST_VECTOR_LEAVES, ["", "\x00", "\x10", " !", "01", "@ABC", "PQRSTUVW", "`abcdefghijklmno"]).
@@ -215,6 +181,16 @@ basic_tree_test_() ->
"ddb89be403809e325750d3d263cd78929c2942b7942a34b77e122c9594a74c8c",
"5dc9da79a70659a9ad559cb701ded9a2ab9d823aad2f4960cfe370eff4604328"]).
+basic_helpers_test_() ->
+ [test_bitcount()].
+
+basic_tree_test_() ->
+ TestVectorTree = #leaf{hash = hd(?TEST_VECTOR_TREES)},
+ [?_assertEqual(#head{version = 0, tree = undefined},
+ create()),
+ ?_assertEqual(#head{version = 1, tree = TestVectorTree},
+ create("a foo is a bar"))].
+
empty_hash_test_() ->
[?_assertEqual(hex:hexstr_to_bin(?EMPTY_HASH), mth([]))].
@@ -226,7 +202,6 @@ mth_test() ->
end,
lists:seq(1, length(?TEST_VECTOR_LEAVES))).
-
%% @doc Build trees using append/2 and mth/2 and compare the resulting
%% tree hashes.
append_test() ->
@@ -246,9 +221,12 @@ mkhead_from_list_test() ->
mkhead(L)).
append_eq_mth_test() ->
- L = [<<X:16>> || X <- lists:seq(0, 1024)],
+ Count = 300,
+ L = [<<X:16>> || X <- lists:seq(0, Count)],
?assertEqual(gethash((mkhead(L))#head.tree), mth(L)).
+sth_test_() ->
+ [].
%% Test helpers.
%% @doc Calculate a Merkle Tree Hash from an ordered list as specified
@@ -260,6 +238,29 @@ append_eq_mth_test() ->
%% The way we calculate K is to let N be the number of entries, find
%% the most significant bit in N-1 and raise two to that number. This
%% is K.
+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].
+
-spec mth(list()) -> binary().
mth([]) ->
hashfun(<<"">>);