2015-02-20 20:01:47 +01:00
|
|
|
#include "testutils/DataTreeGrowingTest.h"
|
|
|
|
|
|
|
|
using blockstore::Key;
|
|
|
|
|
|
|
|
class DataTreeGrowingTest_DepthFlags: public DataTreeGrowingTest {
|
|
|
|
public:
|
|
|
|
void CHECK_DEPTH(int depth, const Key &key) {
|
|
|
|
auto node = LoadInnerNode(key);
|
|
|
|
EXPECT_EQ(depth, node->depth());
|
|
|
|
if (depth > 1) {
|
|
|
|
for (int i = 0; i < node->numChildren(); ++i) {
|
|
|
|
CHECK_DEPTH(depth-1, node->getChild(i)->key());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
TEST_F(DataTreeGrowingTest_DepthFlags, GrowAOneNodeTree) {
|
|
|
|
auto key = CreateTreeAddOneLeafReturnRootKey();
|
|
|
|
CHECK_DEPTH(1, key);
|
|
|
|
}
|
|
|
|
|
|
|
|
TEST_F(DataTreeGrowingTest_DepthFlags, GrowATwoNodeTree) {
|
|
|
|
auto key = CreateTreeAddTwoLeavesReturnRootKey();
|
|
|
|
CHECK_DEPTH(1, key);
|
|
|
|
}
|
|
|
|
|
|
|
|
TEST_F(DataTreeGrowingTest_DepthFlags, GrowATwoLevelThreeNodeTree) {
|
|
|
|
auto key = CreateTreeAddThreeLeavesReturnRootKey();
|
|
|
|
CHECK_DEPTH(1, key);
|
|
|
|
}
|
|
|
|
|
|
|
|
TEST_F(DataTreeGrowingTest_DepthFlags, GrowAThreeNodeChainedTree) {
|
|
|
|
auto key = CreateThreeNodeChainedTreeReturnRootKey();
|
|
|
|
AddLeafTo(key);
|
|
|
|
CHECK_DEPTH(2, key);
|
|
|
|
}
|
|
|
|
|
|
|
|
TEST_F(DataTreeGrowingTest_DepthFlags, GrowAFullTwoLevelTree) {
|
2015-02-23 17:03:45 +01:00
|
|
|
auto key = CreateFullTwoLevel()->key();
|
2015-02-20 20:01:47 +01:00
|
|
|
AddLeafTo(key);
|
|
|
|
CHECK_DEPTH(2, key);
|
|
|
|
}
|
|
|
|
|
|
|
|
TEST_F(DataTreeGrowingTest_DepthFlags, GrowAThreeLevelTreeWithLowerLevelFull) {
|
|
|
|
auto key = CreateThreeLevelTreeWithLowerLevelFullReturnRootKey();
|
|
|
|
AddLeafTo(key);
|
|
|
|
CHECK_DEPTH(2, key);
|
|
|
|
}
|
|
|
|
|
|
|
|
TEST_F(DataTreeGrowingTest_DepthFlags, GrowAFullThreeLevelTree) {
|
2015-02-23 17:03:45 +01:00
|
|
|
auto key = CreateFullThreeLevel()->key();
|
2015-02-20 20:01:47 +01:00
|
|
|
AddLeafTo(key);
|
|
|
|
CHECK_DEPTH(3, key);
|
|
|
|
}
|
|
|
|
|
|
|
|
TEST_F(DataTreeGrowingTest_DepthFlags, GrowAThreeLevelTreeWithTwoFullSubtrees) {
|
|
|
|
auto key = CreateThreeLevelTreeWithTwoFullSubtrees();
|
|
|
|
AddLeafTo(key);
|
|
|
|
CHECK_DEPTH(2, key);
|
|
|
|
}
|