TEST_C(NodeRemovalTest, cantRemoveNodeFromInexistentLevel) { auto levelHeights = makeLevelHeights({ 0, 1, 2, 3 }); DummyMinMaxTreeImageType image(4, 1); paintImage(image); assignPixelsToLatestNodes(image); auto fakeNode = TreeNodeType(PixelType{ 4 }, 0u); image.removeNode(fakeNode); assertThat(image.getPixelValue(0, 0)).isEqualTo(levelHeights[0]); assertThat(image.getPixelValue(1, 0)).isEqualTo(levelHeights[1]); assertThat(image.getPixelValue(2, 0)).isEqualTo(levelHeights[2]); assertThat(image.getPixelValue(3, 0)).isEqualTo(levelHeights[3]); auto& firstNode = image.getPixelNode(0, 0); auto& secondNode = image.getPixelNode(1, 0); auto& thirdNode = image.getPixelNode(2, 0); auto& fourthNode = image.getPixelNode(3, 0); verifyNode(firstNode, levelHeights[0], 0u); verifyNode(secondNode, levelHeights[1], 0u, firstNode); verifyNode(thirdNode, levelHeights[2], 0u, secondNode); verifyNode(fourthNode, levelHeights[3], 0u, thirdNode); }
TEST_C(NodeRemovalTest, nodeParameterWithoutParentCanBeUsed) { auto levelHeights = makeLevelHeights({ 0, 1, 2, 3 }); DummyMinMaxTreeImageType image(4, 1); std::shared_ptr<TreeNodeType> noParent; paintImage(image); assignPixelsToLatestNodes(image); auto nodeCopy = image.getPixelNode(2, 0); nodeCopy.setParent(noParent); image.removeNode(nodeCopy); assertThat(image.getPixelValue(0, 0)).isEqualTo(levelHeights[0]); assertThat(image.getPixelValue(1, 0)).isEqualTo(levelHeights[1]); assertThat(image.getPixelValue(2, 0)).isEqualTo(levelHeights[1]); assertThat(image.getPixelValue(3, 0)).isEqualTo(levelHeights[3]); auto& firstNode = image.getPixelNode(0, 0); auto& secondNode = image.getPixelNode(1, 0); auto& thirdNode = image.getPixelNode(2, 0); auto& fourthNode = image.getPixelNode(3, 0); verifyNode(firstNode, levelHeights[0], 0u); verifyNode(secondNode, levelHeights[1], 0u, firstNode); verifyNode(thirdNode, levelHeights[1], 0u, firstNode); verifyNode(fourthNode, levelHeights[3], 0u, secondNode); }
TEST_C(NodeRemovalTest, parentOfNodeParameterIsNotUsed) { auto levelHeights = makeLevelHeights({ 0, 1, 2 }); DummyMinMaxTreeImageType image(3, 1); paintImage(image); assignPixelsToLatestNodes(image); auto nodeCopy = image.getPixelNode(1, 0); auto fakeParent = makeNode(0u, PixelType { 98765 }); nodeCopy.setParent(fakeParent); image.removeNode(nodeCopy); assertThat(image.getPixelValue(0, 0)).isEqualTo(levelHeights[0]); assertThat(image.getPixelValue(1, 0)).isEqualTo(levelHeights[0]); assertThat(image.getPixelValue(2, 0)).isEqualTo(levelHeights[2]); auto& firstNode = image.getPixelNode(0, 0); auto& secondNode = image.getPixelNode(1, 0); auto& thirdNode = image.getPixelNode(2, 0); verifyNode(firstNode, levelHeights[0], 0u); verifyNode(secondNode, levelHeights[0], 0u); verifyNode(thirdNode, levelHeights[2], 0u, firstNode); }
TEST_C(NodeRemovalTest, pixelNodeIdsAreUpdated) { auto levelHeights = makeLevelHeights({ 0, 1, 2, 3, 4, 5 }); DummyMinMaxTreeImageType image(3, 2); paintImage(image); auto repeatedLevel = image.getPixelValue(1, 0); image.setPixel(2, 0, repeatedLevel); image.assignPixelToLatestNode(0, 0); image.assignPixelToLatestNode(1, 0); image.assignPixelToNewNode(2, 0); image.assignPixelToLatestNode(0, 1); image.assignPixelToLatestNode(1, 1); image.assignPixelToLatestNode(2, 1); auto& node = image.getPixelNode(0, 1); image.removeNode(node); auto& firstNode = image.getPixelNode(0, 0); auto& secondNode = image.getPixelNode(1, 0); auto& thirdNode = image.getPixelNode(2, 0); auto& fourthNode = image.getPixelNode(0, 1); auto& fifthNode = image.getPixelNode(1, 1); auto& sixthNode = image.getPixelNode(2, 1); verifyNode(firstNode, levelHeights[0], 0u); verifyNode(secondNode, levelHeights[1], 0u, firstNode); verifyNode(thirdNode, levelHeights[1], 1u, firstNode); verifyNode(fourthNode, levelHeights[1], 1u, firstNode); verifyNode(fifthNode, levelHeights[4], 0u, fourthNode); verifyNode(sixthNode, levelHeights[5], 0u, fifthNode); }
TEST_C(NodeRemovalTest, treeIsUpdated) { auto levelHeights = makeLevelHeights({ 0, 1, 2, 3 }); DummyMinMaxTreeImageType image(2, 2); paintImage(image); assignPixelsToLatestNodes(image); auto& node = image.getPixelNode(0, 1); image.removeNode(node); verifyNode(image.getPixelNode(0, 0), levelHeights[0], 0u); verifyNode(image.getPixelNode(1, 0), levelHeights[1], 0u, levelHeights[0], 0u); verifyNode(image.getPixelNode(0, 1), levelHeights[1], 0u, levelHeights[0], 0u); verifyNode(image.getPixelNode(1, 1), levelHeights[3], 0u, levelHeights[1], 0u, levelHeights[0], 0u); }
void gkDebugger::drawLine(const gkVector3& from, const gkVector3& to, const gkVector3& color) { verifyNode(); if (!m_node) return; DebugVertex v0, v1; Ogre::PixelUtil::packColour(color.x, color.y, color.z, 1.f, m_d3dColor ? Ogre::PF_A8R8G8B8 : Ogre::PF_A8B8G8R8, &v0.color); v0.v = from; v1.v = to; v1.color = v0.color; m_lineBuf.push_back(v0); m_lineBuf.push_back(v1); m_bbmin.makeFloor(v0.v); m_bbmin.makeFloor(v1.v); m_bbmax.makeCeil(v0.v); m_bbmax.makeCeil(v1.v); if (m_lineBuf.size() > m_bufSize) growBuffer(m_lineBuf.size() * 4); }
void verifySingleNodeInSet(std::set<NodeType>::const_iterator& position, const NodePointer& nodePointer) { auto& node = *position; verifyNode(node, nodePointer); }