Refactoring test cases
This commit is contained in:
parent
c81e058717
commit
fee8cd42eb
@ -38,7 +38,7 @@ public:
|
||||
}
|
||||
|
||||
unique_ptr<DataTree> CreateFullTwoLevelTreeWithData(TwoLevelDataFixture *data) {
|
||||
auto root = LoadInnerNode(CreateFullTwoLevelTree());
|
||||
auto root = CreateFullTwoLevel();
|
||||
assert(root->numChildren() == DataInnerNode::MAX_STORED_CHILDREN);
|
||||
data->FillInto(root.get());
|
||||
return make_unique<DataTree>(&nodeStore, std::move(root));
|
||||
|
@ -37,7 +37,7 @@ TEST_F(DataTreeGrowingTest_DepthFlags, GrowAThreeNodeChainedTree) {
|
||||
}
|
||||
|
||||
TEST_F(DataTreeGrowingTest_DepthFlags, GrowAFullTwoLevelTree) {
|
||||
auto key = CreateFullTwoLevelTree();
|
||||
auto key = CreateFullTwoLevel()->key();
|
||||
AddLeafTo(key);
|
||||
CHECK_DEPTH(2, key);
|
||||
}
|
||||
@ -49,7 +49,7 @@ TEST_F(DataTreeGrowingTest_DepthFlags, GrowAThreeLevelTreeWithLowerLevelFull) {
|
||||
}
|
||||
|
||||
TEST_F(DataTreeGrowingTest_DepthFlags, GrowAFullThreeLevelTree) {
|
||||
auto key = CreateFullThreeLevelTree();
|
||||
auto key = CreateFullThreeLevel()->key();
|
||||
AddLeafTo(key);
|
||||
CHECK_DEPTH(3, key);
|
||||
}
|
||||
|
@ -37,12 +37,12 @@ TEST_F(DataTreeGrowingTest_KeyDoesntChange, GrowAThreeLevelTreeWithLowerLevelFul
|
||||
}
|
||||
|
||||
TEST_F(DataTreeGrowingTest_KeyDoesntChange, GrowAFullTwoLevelTree) {
|
||||
auto root_key = CreateFullTwoLevelTree();
|
||||
auto root_key = CreateFullTwoLevel()->key();
|
||||
EXPECT_KEY_DOESNT_CHANGE_WHEN_GROWING(root_key);
|
||||
}
|
||||
|
||||
TEST_F(DataTreeGrowingTest_KeyDoesntChange, GrowAFullThreeLevelTree) {
|
||||
auto root_key = CreateFullThreeLevelTree();
|
||||
auto root_key = CreateFullThreeLevel()->key();
|
||||
EXPECT_KEY_DOESNT_CHANGE_WHEN_GROWING(root_key);
|
||||
}
|
||||
|
||||
|
@ -39,7 +39,7 @@ TEST_F(DataTreeGrowingTest_Structure, GrowAFullTwoLevelTreeFromGroundUp) {
|
||||
}
|
||||
|
||||
TEST_F(DataTreeGrowingTest_Structure, GrowAFullTwoLevelTree) {
|
||||
auto root_key = CreateFullTwoLevelTree();
|
||||
auto root_key = CreateFullTwoLevel()->key();
|
||||
AddLeafTo(root_key);
|
||||
|
||||
auto root = LoadInnerNode(root_key);
|
||||
@ -69,7 +69,7 @@ TEST_F(DataTreeGrowingTest_Structure, GrowAFullThreeLevelTreeFromGroundUp) {
|
||||
}
|
||||
|
||||
TEST_F(DataTreeGrowingTest_Structure, GrowAFullThreeLevelTree) {
|
||||
auto root_key = CreateFullThreeLevelTree();
|
||||
auto root_key = CreateFullThreeLevel()->key();
|
||||
AddLeafTo(root_key);
|
||||
|
||||
auto root = LoadInnerNode(root_key);
|
||||
|
@ -96,13 +96,13 @@ TEST_F(GetLowestInnerRightBorderNodeWithLessThanKChildrenOrNullTest, LargerTree)
|
||||
}
|
||||
|
||||
TEST_F(GetLowestInnerRightBorderNodeWithLessThanKChildrenOrNullTest, FullTwoLevelTree) {
|
||||
auto root = nodeStore.load(CreateFullTwoLevelTree());
|
||||
auto root = CreateFullTwoLevel();
|
||||
auto result = GetLowestInnerRightBorderNodeWithLessThanKChildrenOrNull(&nodeStore, root.get());
|
||||
EXPECT_EQ(nullptr, result.get());
|
||||
}
|
||||
|
||||
TEST_F(GetLowestInnerRightBorderNodeWithLessThanKChildrenOrNullTest, FullThreeLevelTree) {
|
||||
auto root = nodeStore.load(CreateFullThreeLevelTree());
|
||||
auto root = CreateFullThreeLevel();
|
||||
auto result = GetLowestInnerRightBorderNodeWithLessThanKChildrenOrNull(&nodeStore, root.get());
|
||||
EXPECT_EQ(nullptr, result.get());
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ Key DataTreeShrinkingTest::CreateTwoInnerNodeTwoOneLeavesTree() {
|
||||
}
|
||||
|
||||
Key DataTreeShrinkingTest::CreateThreeLevelMinDataTree() {
|
||||
auto fullTwoLevelRoot = nodeStore.load(CreateFullTwoLevelTree());
|
||||
auto fullTwoLevelRoot = CreateFullTwoLevel();
|
||||
auto root = nodeStore.createNewInnerNode(*fullTwoLevelRoot);
|
||||
auto leaf = nodeStore.createNewLeafNode();
|
||||
auto inner = nodeStore.createNewInnerNode(*leaf);
|
||||
@ -53,7 +53,7 @@ Key DataTreeShrinkingTest::CreateThreeLevelMinDataTree() {
|
||||
}
|
||||
|
||||
Key DataTreeShrinkingTest::CreateFourLevelMinDataTree() {
|
||||
auto fullThreeLevelRoot = nodeStore.load(CreateFullThreeLevelTree());
|
||||
auto fullThreeLevelRoot = CreateFullThreeLevel();
|
||||
auto root = nodeStore.createNewInnerNode(*fullThreeLevelRoot);
|
||||
auto leaf = nodeStore.createNewLeafNode();
|
||||
auto inner = nodeStore.createNewInnerNode(*leaf);
|
||||
@ -63,7 +63,7 @@ Key DataTreeShrinkingTest::CreateFourLevelMinDataTree() {
|
||||
}
|
||||
|
||||
Key DataTreeShrinkingTest::CreateFourLevelTreeWithTwoSiblingLeaves1() {
|
||||
auto fullThreeLevelRoot = nodeStore.load(CreateFullThreeLevelTree());
|
||||
auto fullThreeLevelRoot = CreateFullThreeLevel();
|
||||
auto root = nodeStore.createNewInnerNode(*fullThreeLevelRoot);
|
||||
auto leaf = nodeStore.createNewLeafNode();
|
||||
auto inner = nodeStore.createNewInnerNode(*leaf);
|
||||
@ -74,7 +74,7 @@ Key DataTreeShrinkingTest::CreateFourLevelTreeWithTwoSiblingLeaves1() {
|
||||
}
|
||||
|
||||
Key DataTreeShrinkingTest::CreateFourLevelTreeWithTwoSiblingLeaves2() {
|
||||
auto fullThreeLevelRoot = nodeStore.load(CreateFullThreeLevelTree());
|
||||
auto fullThreeLevelRoot = CreateFullThreeLevel();
|
||||
auto root = nodeStore.createNewInnerNode(*fullThreeLevelRoot);
|
||||
auto leaf1 = nodeStore.createNewLeafNode();
|
||||
auto inner1 = nodeStore.createNewInnerNode(*leaf1);
|
||||
@ -89,7 +89,7 @@ Key DataTreeShrinkingTest::CreateFourLevelTreeWithTwoSiblingLeaves2() {
|
||||
}
|
||||
|
||||
Key DataTreeShrinkingTest::CreateTreeWithFirstChildOfRootFullThreelevelAndSecondChildMindataThreelevel() {
|
||||
auto fullThreeLevelRoot = nodeStore.load(CreateFullThreeLevelTree());
|
||||
auto fullThreeLevelRoot = CreateFullThreeLevel();
|
||||
auto root = nodeStore.createNewInnerNode(*fullThreeLevelRoot);
|
||||
auto leaf1 = nodeStore.createNewLeafNode();
|
||||
auto inner1 = nodeStore.createNewInnerNode(*leaf1);
|
||||
@ -103,8 +103,8 @@ Key DataTreeShrinkingTest::CreateTreeWithFirstChildOfRootFullThreelevelAndSecond
|
||||
}
|
||||
|
||||
Key DataTreeShrinkingTest::CreateThreeLevelTreeWithThreeChildrenOfRoot() {
|
||||
auto fullTwoLevelTree1 = nodeStore.load(CreateFullTwoLevelTree());
|
||||
auto fullTwoLevelTree2 = nodeStore.load(CreateFullTwoLevelTree());
|
||||
auto fullTwoLevelTree1 = CreateFullTwoLevel();
|
||||
auto fullTwoLevelTree2 = CreateFullTwoLevel();
|
||||
auto twonodechain = nodeStore.createNewInnerNode(*nodeStore.createNewLeafNode());
|
||||
auto root = nodeStore.createNewInnerNode(*fullTwoLevelTree1);
|
||||
root->addChild(*fullTwoLevelTree2);
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include <messmer/cpp-utils/pointer.h>
|
||||
|
||||
using blobstore::onblocks::datanodestore::DataNodeStore;
|
||||
using blobstore::onblocks::datanodestore::DataNode;
|
||||
using blobstore::onblocks::datanodestore::DataInnerNode;
|
||||
using blobstore::onblocks::datanodestore::DataLeafNode;
|
||||
using blobstore::onblocks::datatreestore::DataTree;
|
||||
@ -11,47 +12,52 @@ using blockstore::testfake::FakeBlockStore;
|
||||
using blockstore::Key;
|
||||
using std::make_unique;
|
||||
using std::unique_ptr;
|
||||
using std::initializer_list;
|
||||
using cpputils::dynamic_pointer_move;
|
||||
|
||||
DataTreeTest::DataTreeTest()
|
||||
:nodeStore(make_unique<FakeBlockStore>()) {
|
||||
}
|
||||
|
||||
unique_ptr<DataLeafNode> DataTreeTest::CreateLeaf() {
|
||||
return nodeStore.createNewLeafNode();
|
||||
}
|
||||
|
||||
unique_ptr<DataInnerNode> DataTreeTest::CreateInner(initializer_list<const DataNode*> children) {
|
||||
assert(children.size() >= 1);
|
||||
auto node = nodeStore.createNewInnerNode(**children.begin());
|
||||
for(auto child = children.begin()+1; child != children.end(); ++child) {
|
||||
node->addChild(**child);
|
||||
}
|
||||
return node;
|
||||
}
|
||||
|
||||
unique_ptr<DataTree> DataTreeTest::CreateLeafOnlyTree() {
|
||||
auto leafnode = nodeStore.createNewLeafNode();
|
||||
return make_unique<DataTree>(&nodeStore, std::move(leafnode));
|
||||
return make_unique<DataTree>(&nodeStore, CreateLeaf());
|
||||
}
|
||||
|
||||
void DataTreeTest::FillNode(DataInnerNode *node) {
|
||||
for(unsigned int i=node->numChildren(); i < DataInnerNode::MAX_STORED_CHILDREN; ++i) {
|
||||
node->addChild(*nodeStore.createNewLeafNode());
|
||||
node->addChild(*CreateLeaf());
|
||||
}
|
||||
}
|
||||
|
||||
void DataTreeTest::FillNodeTwoLevel(DataInnerNode *node) {
|
||||
for(unsigned int i=node->numChildren(); i < DataInnerNode::MAX_STORED_CHILDREN; ++i) {
|
||||
auto inner_node = nodeStore.createNewInnerNode(*nodeStore.createNewLeafNode());
|
||||
for(unsigned int j = 1;j < DataInnerNode::MAX_STORED_CHILDREN; ++j) {
|
||||
inner_node->addChild(*nodeStore.createNewLeafNode());
|
||||
}
|
||||
node->addChild(*inner_node);
|
||||
node->addChild(*CreateFullTwoLevel());
|
||||
}
|
||||
}
|
||||
|
||||
Key DataTreeTest::CreateFullTwoLevelTree() {
|
||||
auto leaf = nodeStore.createNewLeafNode();
|
||||
auto root = nodeStore.createNewInnerNode(*leaf);
|
||||
unique_ptr<DataInnerNode> DataTreeTest::CreateFullTwoLevel() {
|
||||
auto root = CreateInner({CreateLeaf().get()});
|
||||
FillNode(root.get());
|
||||
return root->key();
|
||||
return root;
|
||||
}
|
||||
|
||||
Key DataTreeTest::CreateFullThreeLevelTree() {
|
||||
auto leaf = nodeStore.createNewLeafNode();
|
||||
auto node = nodeStore.createNewInnerNode(*leaf);
|
||||
auto root = nodeStore.createNewInnerNode(*node);
|
||||
FillNode(node.get());
|
||||
unique_ptr<DataInnerNode> DataTreeTest::CreateFullThreeLevel() {
|
||||
auto root = CreateInner({CreateFullTwoLevel().get()});
|
||||
FillNodeTwoLevel(root.get());
|
||||
return root->key();
|
||||
return root;
|
||||
}
|
||||
|
||||
unique_ptr<DataInnerNode> DataTreeTest::LoadInnerNode(const Key &key) {
|
||||
@ -68,11 +74,12 @@ unique_ptr<DataLeafNode> DataTreeTest::LoadLeafNode(const Key &key) {
|
||||
return casted;
|
||||
}
|
||||
|
||||
unique_ptr<DataInnerNode> DataTreeTest::CreateTwoLeaf() {
|
||||
return CreateInner({CreateLeaf().get(), CreateLeaf().get()});
|
||||
}
|
||||
|
||||
unique_ptr<DataTree> DataTreeTest::CreateTwoLeafTree() {
|
||||
auto leaf1 = nodeStore.createNewLeafNode();
|
||||
auto root = nodeStore.createNewInnerNode(*leaf1);
|
||||
root->addChild(*nodeStore.createNewLeafNode());
|
||||
return make_unique<DataTree>(&nodeStore, std::move(root));
|
||||
return make_unique<DataTree>(&nodeStore, CreateTwoLeaf());
|
||||
}
|
||||
|
||||
void DataTreeTest::EXPECT_IS_LEAF_NODE(const Key &key) {
|
||||
|
@ -13,12 +13,16 @@ class DataTreeTest: public ::testing::Test {
|
||||
public:
|
||||
DataTreeTest();
|
||||
|
||||
std::unique_ptr<blobstore::onblocks::datanodestore::DataLeafNode> CreateLeaf();
|
||||
std::unique_ptr<blobstore::onblocks::datanodestore::DataInnerNode> CreateInner(std::initializer_list<const blobstore::onblocks::datanodestore::DataNode *> children);
|
||||
|
||||
std::unique_ptr<blobstore::onblocks::datatreestore::DataTree> CreateLeafOnlyTree();
|
||||
std::unique_ptr<blobstore::onblocks::datanodestore::DataInnerNode> CreateTwoLeaf();
|
||||
std::unique_ptr<blobstore::onblocks::datatreestore::DataTree> CreateTwoLeafTree();
|
||||
void FillNode(blobstore::onblocks::datanodestore::DataInnerNode *node);
|
||||
void FillNodeTwoLevel(blobstore::onblocks::datanodestore::DataInnerNode *node);
|
||||
blockstore::Key CreateFullTwoLevelTree();
|
||||
blockstore::Key CreateFullThreeLevelTree();
|
||||
std::unique_ptr<blobstore::onblocks::datanodestore::DataInnerNode> CreateFullTwoLevel();
|
||||
std::unique_ptr<blobstore::onblocks::datanodestore::DataInnerNode> CreateFullThreeLevel();
|
||||
blobstore::onblocks::datanodestore::DataNodeStore nodeStore;
|
||||
|
||||
std::unique_ptr<blobstore::onblocks::datanodestore::DataInnerNode> LoadInnerNode(const blockstore::Key &key);
|
||||
|
Loading…
Reference in New Issue
Block a user