29TEST(crypto_merkle_tree, test_kv_memory_vs_memory_consistency)
31 constexpr size_t depth = 10;
37 std::vector<size_t> indicies(1 << depth);
38 std::iota(indicies.begin(), indicies.end(), 0);
43 for (
size_t i = 0; i < indicies.size(); ++i) {
44 size_t idx = indicies[i];
49 for (
size_t i = 0; i < indicies.size(); ++i) {
50 size_t idx = indicies[i];
57TEST(crypto_merkle_tree, test_size)
62 EXPECT_EQ(db.size(), 0ULL);
65 db.update_element(0, VALUES[1]);
66 EXPECT_EQ(db.size(), 1ULL);
69 db.update_element(1, VALUES[2]);
70 EXPECT_EQ(db.size(), 2ULL);
73 db.update_element(1, VALUES[2]);
74 EXPECT_EQ(db.size(), 2ULL);
77 db.update_element(1, VALUES[3]);
78 EXPECT_EQ(db.size(), 2ULL);
81 db.update_element(2, VALUES[4]);
82 EXPECT_EQ(db.size(), 3ULL);
85TEST(crypto_merkle_tree, test_get_hash_path)
95 db.update_element(512, VALUES[512]);
99 for (
size_t i = 0; i < 1024; ++i) {
101 db.update_element(i, VALUES[i]);
107TEST(crypto_merkle_tree, test_get_sibling_path)
117 db.update_element(512, VALUES[512]);
121 for (
size_t i = 0; i < 1024; ++i) {
123 db.update_element(i, VALUES[i]);
129TEST(crypto_merkle_tree, test_get_hash_path_layers)
135 auto before = db.get_hash_path(1);
136 db.update_element(0, VALUES[1]);
137 auto after = db.get_hash_path(1);
139 EXPECT_NE(before[0], after[0]);
140 EXPECT_NE(before[1], after[1]);
141 EXPECT_NE(before[2], after[2]);
148 auto before = db.get_hash_path(7);
149 db.update_element(0x0, VALUES[1]);
150 auto after = db.get_hash_path(7);
152 EXPECT_EQ(before[0], after[0]);
153 EXPECT_EQ(before[1], after[1]);
154 EXPECT_NE(before[2], after[2]);
158TEST(crypto_merkle_tree, test_get_sibling_path_layers)
164 auto before = db.get_sibling_path(1);
165 db.update_element(0, VALUES[1]);
166 auto after = db.get_sibling_path(1);
168 EXPECT_NE(before[0], after[0]);
169 EXPECT_EQ(before[1], after[1]);
170 EXPECT_EQ(before[2], after[2]);
177 auto before = db.get_sibling_path(7);
178 db.update_element(0x0, VALUES[1]);
179 auto after = db.get_sibling_path(7);
181 EXPECT_EQ(before[0], after[0]);
182 EXPECT_EQ(before[1], after[1]);
183 EXPECT_NE(before[2], after[2]);
void g(field_t< Builder > state[BLAKE_STATE_SIZE], size_t a, size_t b, size_t c, size_t d, field_t< Builder > x, field_t< Builder > y, const bool last_update=false)