From bf96afc04ab4176aa7aea6d3e17e09d74c3c1d9c Mon Sep 17 00:00:00 2001 From: devZoGok Date: Sun, 20 Dec 2020 19:13:49 +0200 Subject: [PATCH] particle emitter test --- CMakeLists.txt | 2 +- main.cpp | 2 ++ particleEmitter.h | 5 ++++- particleEmitterTest.cpp | 31 +++++++++++++++++++++++++++++++ particleEmitterTest.h | 28 ++++++++++++++++++++++++++++ 5 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 particleEmitterTest.cpp create mode 100644 particleEmitterTest.h diff --git a/CMakeLists.txt b/CMakeLists.txt index b7ea785..98deef5 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,7 @@ target_link_libraries(vb01 glad) target_link_libraries(vb01 assimp) target_link_libraries(vb01 freetype) -set(renderTest nodeTest.cpp cameraTest.cpp shaderTest.cpp) +set(renderTest nodeTest.cpp cameraTest.cpp shaderTest.cpp particleEmitterTest.cpp) set(armatureTest boneTest.cpp) set(modelTest vbModelReaderTest.cpp) set(animationTest animationChannelTest.cpp) diff --git a/main.cpp b/main.cpp index 5b7f9a4..6f95294 100755 --- a/main.cpp +++ b/main.cpp @@ -9,6 +9,7 @@ #include "vbModelReaderTest.h" #include "animationChannelTest.h" #include "shaderTest.h" +#include "particleEmitterTest.h" using namespace CppUnit; using namespace vb01; @@ -21,6 +22,7 @@ int main(){ runner.addTest(VbModelReaderTest::suite()); runner.addTest(AnimationChannelTest::suite()); runner.addTest(ShaderTest::suite()); + runner.addTest(ParticleEmitterTest::suite()); runner.run(); return 0; } diff --git a/particleEmitter.h b/particleEmitter.h index 79e57ed..4d40575 100755 --- a/particleEmitter.h +++ b/particleEmitter.h @@ -12,7 +12,8 @@ namespace vb01{ class ParticleEmitter{ public: - ParticleEmitter(int = 1); + ParticleEmitter(){} + ParticleEmitter(int); ~ParticleEmitter(); void update(); inline void setMaterial(Material *mat){this->material = mat;} @@ -59,6 +60,8 @@ namespace vb01{ Vector3 direction = Vector3(0, .1, 0), gravity = Vector3::VEC_ZERO; Vector4 startColor, endColor; float spread = 1, lowLife = 1, highLife = 2; + + friend class ParticleEmitterTest; }; } diff --git a/particleEmitterTest.cpp b/particleEmitterTest.cpp new file mode 100644 index 0000000..535bf92 --- /dev/null +++ b/particleEmitterTest.cpp @@ -0,0 +1,31 @@ +#include "particleEmitterTest.h" +#include "particleEmitter.h" + +#include + +using namespace std; + +namespace vb01{ + void ParticleEmitterTest::setUp(){ + particleEmitter = new ParticleEmitter(); + particleEmitter->numParticles = numParticles; + particleEmitter->particles = new ParticleEmitter::Particle*[numParticles]; + for(int i = 0; i < numParticles; i++){ + ParticleEmitter::Particle *particle = new ParticleEmitter::Particle; + particle->d = rand() % 1000; + particleEmitter->particles[i] = particle; + } + } + + void ParticleEmitterTest::tearDown(){ + } + + void ParticleEmitterTest::testHeapSort(){ + particleEmitter->heapSort(); + for(int i = 1; i < numParticles; i++){ + ParticleEmitter::Particle *prevPart = particleEmitter->particles[i - 1]; + ParticleEmitter::Particle *currPart = particleEmitter->particles[i]; + CPPUNIT_ASSERT(prevPart->d >= currPart->d); + } + } +} diff --git a/particleEmitterTest.h b/particleEmitterTest.h new file mode 100644 index 0000000..9873f99 --- /dev/null +++ b/particleEmitterTest.h @@ -0,0 +1,28 @@ +#ifndef PARTICLE_EMIITER_TEST_H +#define PARTICLE_EMIITER_TEST_H + +#include +#include + +namespace vb01{ + class ParticleEmitter; + + class ParticleEmitterTest : public CppUnit::TestFixture{ + CPPUNIT_TEST_SUITE(ParticleEmitterTest); + CPPUNIT_TEST(testHeapSort); + CPPUNIT_TEST_SUITE_END(); + + public: + ParticleEmitterTest(){} + ~ParticleEmitterTest(){} + void setUp(); + void tearDown(); + private: + int numParticles = 100; + ParticleEmitter *particleEmitter = nullptr; + + void testHeapSort(); + }; +} + +#endif