Skip to content

Commit

Permalink
#6107: Add unit test attempting to form a cyclic tree, which should t…
Browse files Browse the repository at this point in the history
…hrow
  • Loading branch information
codereader committed Oct 1, 2022
1 parent d68a92d commit 63ba87c
Showing 1 changed file with 20 additions and 0 deletions.
20 changes: 20 additions & 0 deletions test/LayerManipulation.cpp
Expand Up @@ -461,6 +461,26 @@ TEST_F(LayerTest, SetLayerParent)
EXPECT_EQ(layerManager.getParentLayer(childLayerId), 0) << "Parent Id has not been reassigned";
}

TEST_F(LayerTest, SetLayerParentRecursionDetection)
{
auto& layerManager = GlobalMapModule().getRoot()->getLayerManager();
auto grandParentLayerId = layerManager.createLayer("GrandParentLayer");
auto parentLayerId = layerManager.createLayer("ParentLayer");
auto childLayerId = layerManager.createLayer("ChildLayer");

EXPECT_EQ(layerManager.getParentLayer(0), -1) << "Default layer cannot have a parent";
EXPECT_EQ(layerManager.getParentLayer(grandParentLayerId), -1) << "GrandParentLayer doesn't have a parent yet";
EXPECT_EQ(layerManager.getParentLayer(parentLayerId), -1) << "ParentLayer doesn't have a parent yet";
EXPECT_EQ(layerManager.getParentLayer(childLayerId), -1) << "ChildLayer doesn't have a parent yet";

// Form a straight line GrandParent > Parent > Child
layerManager.setParentLayer(childLayerId, parentLayerId);
layerManager.setParentLayer(parentLayerId, grandParentLayerId);

// Then try to assign Child as a parent to its own GrandParent => recursion detection should throw
EXPECT_THROW(layerManager.setParentLayer(grandParentLayerId, childLayerId), std::invalid_argument);
}

TEST_F(LayerTest, HierarchyChangedSignal)
{
auto& layerManager = GlobalMapModule().getRoot()->getLayerManager();
Expand Down

0 comments on commit 63ba87c

Please sign in to comment.