From 532b1f63634177ea304f423af1654d3d7fd28573 Mon Sep 17 00:00:00 2001 From: devZoGok Date: Wed, 9 Sep 2020 20:20:16 +0300 Subject: [PATCH] node test start --- CMakeLists.txt | 4 +- cameraTest.cpp | 5 +- cameraTest.h | 9 ++-- main.cpp | 3 ++ nodeTest.cpp | 128 +++++++++++++++++++++++++++++++++++++++++++++++++ nodeTest.h | 52 ++++++++++++++++++++ 6 files changed, 194 insertions(+), 7 deletions(-) create mode 100644 nodeTest.cpp create mode 100644 nodeTest.h diff --git a/CMakeLists.txt b/CMakeLists.txt index fa44d4f..bdb5bce 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,13 +19,15 @@ set(model modelReader.cpp assimpModelReader.cpp vbModelReader.cpp) set(anim animationController.cpp animationChannel.cpp animation.cpp) set(armature skeleton.cpp bone.cpp) set(library ${render} ${math} ${model} ${utils} ${gui} ${armature} ${anim}) -set(test cameraTest.cpp) + +set(test cameraTest.cpp nodeTest.cpp) add_library(vb01 SHARED ${library}) target_link_libraries(vb01 glfw) target_link_libraries(vb01 glad) target_link_libraries(vb01 assimp) target_link_libraries(vb01 freetype) + add_executable(vb01Tests main.cpp ${test} ${library}) target_link_libraries(vb01Tests cppunit) target_link_libraries(vb01Tests glfw) diff --git a/cameraTest.cpp b/cameraTest.cpp index 5d00b79..3c93adb 100644 --- a/cameraTest.cpp +++ b/cameraTest.cpp @@ -1,5 +1,5 @@ -#include"cameraTest.h" -#include +#include "cameraTest.h" +#include #include #include #include @@ -7,7 +7,6 @@ using namespace CppUnit; namespace vb01{ - CameraTest::CameraTest(){ } diff --git a/cameraTest.h b/cameraTest.h index 4b01f0e..098b5c6 100644 --- a/cameraTest.h +++ b/cameraTest.h @@ -1,8 +1,9 @@ #ifndef CAMERA_TEST_H #define CAMERA_TEST_H -#include -#include"camera.h" +#include "camera.h" + +#include #include namespace CppUnit{ @@ -14,12 +15,14 @@ namespace vb01{ CPPUNIT_TEST_SUITE( CameraTest ); CPPUNIT_TEST( testLookAt ); CPPUNIT_TEST_SUITE_END(); + public: CameraTest(); void setUp(); void tearDown(); - void testLookAt(); private: + void testLookAt(); + Camera *cam = nullptr; }; } diff --git a/main.cpp b/main.cpp index 18b7bdc..9edc8f3 100755 --- a/main.cpp +++ b/main.cpp @@ -2,7 +2,9 @@ #include #include #include + #include "cameraTest.h" +#include "nodeTest.h" using namespace CppUnit; using namespace vb01; @@ -10,6 +12,7 @@ using namespace vb01; int main(){ TextUi::TestRunner runner; runner.addTest(CameraTest::suite()); + runner.addTest(NodeTest::suite()); runner.run(); return 0; } diff --git a/nodeTest.cpp b/nodeTest.cpp new file mode 100644 index 0000000..5009b78 --- /dev/null +++ b/nodeTest.cpp @@ -0,0 +1,128 @@ +#include "nodeTest.h" +#include "node.h" +#include "root.h" + +#include + +using namespace std; + +namespace vb01{ + NodeTest::NodeTest(){ + } + + void NodeTest::setUp(){ + rootNode = Root::getSingleton()->getRootNode(); + nodeA = new Node(); + nodeB = new Node(); + nodeC = new Node(); + nodeD = new Node(); + + parentA = new Node(); + childA0 = new Node(); + childA1 = new Node(); + childA2 = new Node(); + parentA->attachChild(childA0); + parentA->attachChild(childA1); + parentA->attachChild(childA2); + parentB = new Node(); + childB0 = new Node(); + childB1 = new Node(); + childB2 = new Node(); + parentB->attachChild(childB0); + parentB->attachChild(childB1); + parentB->attachChild(childB2); + parentC = new Node(); + childC0 = new Node(); + childC1 = new Node(); + childC2 = new Node(); + parentC->attachChild(childC0); + parentC->attachChild(childC1); + parentC->attachChild(childC2); + parentD = new Node(); + childD0 = new Node(); + childD1 = new Node(); + childD2 = new Node(); + parentD->attachChild(childD0); + parentD->attachChild(childD1); + parentD->attachChild(childD2); + parentA->attachChild(parentB); + parentB->attachChild(parentC); + parentC->attachChild(parentD); + + rootNode->attachChild(nodeA); + nodeA->attachChild(nodeB); + /* + nodeA->attachChild(nodeC); + nodeA->attachChild(nodeD); + */ + } + + void NodeTest::tearDown(){ + delete nodeD; + delete nodeC; + delete nodeB; + nodeA->dettachChild(nodeB); + delete nodeA; + } + + void NodeTest::testDetachChild(){ + nodeA->dettachChild(nodeB); + CPPUNIT_ASSERT(nodeA->getChild(0) != nodeB); + } + + void NodeTest::testAdjustDir(){ + float maxAngle = .001; + + Vector3 dir[]{ + Vector3(0, 1, 0), + Vector3(.8, .2, 0).norm(), + Vector3(-.6, 0, .9).norm(), + Vector3(0, -1, -.4).norm(), + Vector3(1, 1, 1).norm() + }; + int numDirs = sizeof(dir) / sizeof(Vector3); + + for(int i = 0; i < numDirs; i++){ + nodeA->lookAt(dir[i], rootNode); + CPPUNIT_ASSERT(nodeA->getGlobalAxis(2).getAngleBetween(dir[i]) < maxAngle); + } + } + + void NodeTest::testAdjustUp(){ + float maxAngle = .001; + + Vector3 dir[]{ + Vector3(0, 1, 0), + Vector3(.8, .2, 0).norm(), + Vector3(-.6, 0, .9).norm(), + Vector3(0, -1, -.4).norm(), + Vector3(1, 1, 1).norm() + }; + + int numDirs = sizeof(dir) / sizeof(Vector3); + + for(int i = 0; i < numDirs; i++){ + /* + nodeA->lookAt(dir[i], rootNode); + CPPUNIT_ASSERT(nodeA->getGlobalAxis(2).getAngleBetween(dir[i]) < maxAngle); + */ + } + } + + void NodeTest::testGetDescendants(){ + vector parentADescendants; + vector parentBDescendants; + vector parentCDescendants; + vector parentDDescendants; + + parentA->getDescendants(parentA, parentADescendants); + parentB->getDescendants(parentB, parentBDescendants); + parentC->getDescendants(parentC, parentCDescendants); + parentD->getDescendants(parentD, parentDDescendants); + + parentD->getDescendants(parentD, parentDDescendants); + CPPUNIT_ASSERT(parentDDescendants[0] == childD0); + CPPUNIT_ASSERT(parentDDescendants[1] == childD1); + CPPUNIT_ASSERT(parentDDescendants[2] == childD2); + } +} diff --git a/nodeTest.h b/nodeTest.h new file mode 100644 index 0000000..5f0bf00 --- /dev/null +++ b/nodeTest.h @@ -0,0 +1,52 @@ +#ifndef NODE_TEST_H +#define NODE_TEST_H + +#include +#include + +namespace vb01{ + class Node; + + class NodeTest : public CppUnit::TestFixture{ + CPPUNIT_TEST_SUITE(NodeTest); + //CPPUNIT_TEST(testDetachChild); + CPPUNIT_TEST(testAdjustDir); + CPPUNIT_TEST(testAdjustUp); + CPPUNIT_TEST(testGetDescendants); + CPPUNIT_TEST_SUITE_END(); + + public: + NodeTest(); + void setUp(); + void tearDown(); + private: + void testAdjustDir(); + void testAdjustUp(); + void testDetachChild(); + void testGetDescendants(); + + Node *rootNode = nullptr, + *parentA = nullptr, + *childA0 = nullptr, + *childA1 = nullptr, + *childA2 = nullptr, + *parentB = nullptr, + *childB0 = nullptr, + *childB1 = nullptr, + *childB2 = nullptr, + *parentC = nullptr, + *childC0 = nullptr, + *childC1 = nullptr, + *childC2 = nullptr, + *parentD = nullptr, + *childD0 = nullptr, + *childD1 = nullptr, + *childD2 = nullptr, + *nodeA = nullptr, + *nodeB = nullptr, + *nodeC = nullptr, + *nodeD = nullptr; + }; +} + +#endif