[btree_t] add failing clone test
This commit is contained in:
parent
5f778db322
commit
76bbfcb891
@ -155,4 +155,68 @@ TEST(BtreeTests, insert_does_not_insert_imaginary_values)
|
|||||||
check_constraints(tree);
|
check_constraints(tree);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(BtreeTests, clone)
|
||||||
|
{
|
||||||
|
typedef btree<1, uint64_traits> tree64;
|
||||||
|
|
||||||
|
unsigned const COUNT = 1000;
|
||||||
|
|
||||||
|
tree64::maybe_value l;
|
||||||
|
tree64::ptr tree = create_btree();
|
||||||
|
for (uint64_t i = 0; i < COUNT; i++) {
|
||||||
|
uint64_t key[1] = {i};
|
||||||
|
uint64_t value = i * 7;
|
||||||
|
|
||||||
|
tree->insert(key, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (uint64_t i = 0; i < COUNT; i++) {
|
||||||
|
uint64_t key[1] = {i};
|
||||||
|
uint64_t value = i * 7;
|
||||||
|
|
||||||
|
l = tree->lookup(key);
|
||||||
|
ASSERT_TRUE(l);
|
||||||
|
ASSERT_THAT(*l, Eq(value));
|
||||||
|
}
|
||||||
|
|
||||||
|
cerr << "tree root: " << tree->get_root() << endl;
|
||||||
|
tree64::ptr copy = tree->clone();
|
||||||
|
cerr << "copy root: " << copy->get_root() << endl;
|
||||||
|
for (uint64_t i = 0; i < COUNT; i++) {
|
||||||
|
uint64_t key[1] = {i + COUNT};
|
||||||
|
uint64_t value = (i + COUNT) * 7;
|
||||||
|
|
||||||
|
copy->insert(key, value);
|
||||||
|
}
|
||||||
|
cerr << "copy root (after inserts): " << copy->get_root() << endl;
|
||||||
|
cerr << "tree root (after inserts): " << tree->get_root() << endl;
|
||||||
|
|
||||||
|
for (uint64_t i = 0; i < COUNT; i++) {
|
||||||
|
uint64_t key[1] = {i};
|
||||||
|
uint64_t value = i * 7;
|
||||||
|
|
||||||
|
l = tree->lookup(key);
|
||||||
|
ASSERT_TRUE(l);
|
||||||
|
ASSERT_THAT(*l, Eq(value));
|
||||||
|
|
||||||
|
l = copy->lookup(key);
|
||||||
|
ASSERT_TRUE(l);
|
||||||
|
ASSERT_THAT(*l, Eq(value));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (uint64_t i = 0; i < COUNT; i++) {
|
||||||
|
uint64_t key[1] = {i + COUNT};
|
||||||
|
uint64_t value = (i + COUNT) * 7;
|
||||||
|
|
||||||
|
l = tree->lookup(key);
|
||||||
|
ASSERT_FALSE(l);
|
||||||
|
|
||||||
|
l = copy->lookup(key);
|
||||||
|
ASSERT_TRUE(l);
|
||||||
|
ASSERT_THAT(*l, Eq(value));
|
||||||
|
}
|
||||||
|
|
||||||
|
check_constraints(tree);
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------
|
//----------------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user