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);
}
示例#6
0
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);
    }