diff --git a/Tests/UnitTests/TestCore/LatticeBasisTest.h b/Tests/UnitTests/TestCore/LatticeBasisTest.h new file mode 100644 index 0000000000000000000000000000000000000000..5069a5b21ed122f1e6e9689cd49cbdea11a73177 --- /dev/null +++ b/Tests/UnitTests/TestCore/LatticeBasisTest.h @@ -0,0 +1,123 @@ +#ifndef LATTICEBASISTEST_H +#define LATTICEBASISTEST_H + +#include "LatticeBasis.h" +#include "Particle.h" +#include "Materials.h" +#include "Units.h" +#include "HomogeneousMaterial.h" +#include "ParticleInfo.h" +#include "FormFactorFullSphere.h" +#include <iostream> + + +class LatticeBasisTest : public ::testing::Test +{ +protected: + LatticeBasisTest(){} + virtual ~LatticeBasisTest(){} +}; + +TEST_F(LatticeBasisTest, LatticeBasisDefaultConstructor) +{ + LatticeBasis *lb = new LatticeBasis(); + Particle particle; + std::vector<kvector_t > positions; + positions.push_back(kvector_t(0.0,0.0,0.0)); + EXPECT_EQ("LatticeBasis",lb->getName()); + lb->addParticle(particle, positions); + EXPECT_EQ(particle.getMaterial(),lb->getParticle(0)->getAmbientMaterial()); + EXPECT_EQ(particle.getName(),lb->getParticle(0)->getName()); + EXPECT_EQ(particle.getTransform3D(),lb->getParticle(0)->getTransform3D()); + EXPECT_EQ(positions, lb->getParticlePositions(0)); + + HomogeneousMaterial material("Air",0.0,0.0); + lb->setAmbientMaterial(material); + EXPECT_EQ("Air", lb->getAmbientMaterial()->getName()); + EXPECT_EQ(1.0, lb->getAmbientMaterial()->getRefractiveIndex()); + + + delete lb; + +} + +TEST_F(LatticeBasisTest, LatticeBasisConstructorWithOneParameter) +{ + Particle particle; + LatticeBasis *lb = new LatticeBasis(particle); + std::vector<kvector_t > positions; + positions.push_back(kvector_t(0.0,0.0,0.0)); + EXPECT_EQ("LatticeBasis",lb->getName()); + lb->addParticle(particle, positions); + EXPECT_EQ(particle.getMaterial(),lb->getParticle(0)->getAmbientMaterial()); + EXPECT_EQ(particle.getName(),lb->getParticle(0)->getName()); + EXPECT_EQ(particle.getTransform3D(),lb->getParticle(0)->getTransform3D()); + EXPECT_EQ(particle.getMaterial(),lb->getParticle(1)->getAmbientMaterial()); + EXPECT_EQ(particle.getName(),lb->getParticle(1)->getName()); + EXPECT_EQ(particle.getTransform3D(),lb->getParticle(1)->getTransform3D()); + EXPECT_EQ(positions, lb->getParticlePositions(0)); + EXPECT_EQ(positions, lb->getParticlePositions(1)); + + HomogeneousMaterial material("Air",0.0,0.0); + lb->setAmbientMaterial(material); + EXPECT_EQ("Air", lb->getAmbientMaterial()->getName()); + EXPECT_EQ(1.0, lb->getAmbientMaterial()->getRefractiveIndex()); + + delete lb; +} + + +TEST_F(LatticeBasisTest, LatticeBasisConstructorWithTwoParameter) +{ + Particle particle; + std::vector<kvector_t > positions; + positions.push_back(kvector_t(1.0,1.0,1.0)); + LatticeBasis *lb = new LatticeBasis(particle, positions); + + EXPECT_EQ("LatticeBasis",lb->getName()); + lb->addParticle(particle, positions); + EXPECT_EQ(particle.getMaterial(),lb->getParticle(0)->getAmbientMaterial()); + EXPECT_EQ(particle.getName(),lb->getParticle(0)->getName()); + EXPECT_EQ(particle.getTransform3D(),lb->getParticle(0)->getTransform3D()); + EXPECT_EQ(particle.getMaterial(),lb->getParticle(1)->getAmbientMaterial()); + EXPECT_EQ(particle.getName(),lb->getParticle(1)->getName()); + EXPECT_EQ(particle.getTransform3D(),lb->getParticle(1)->getTransform3D()); + EXPECT_EQ(positions, lb->getParticlePositions(0)); + EXPECT_EQ(positions, lb->getParticlePositions(1)); + + HomogeneousMaterial material("Air",0.0,0.0); + lb->setAmbientMaterial(material); + EXPECT_EQ("Air", lb->getAmbientMaterial()->getName()); + EXPECT_EQ(1.0, lb->getAmbientMaterial()->getRefractiveIndex()); + + delete lb; +} + +TEST_F(LatticeBasisTest, LatticeBasisClone) +{ + LatticeBasis *lb = new LatticeBasis(); + Particle particle; + std::vector<kvector_t > positions; + positions.push_back(kvector_t(1.0,1.0,1.0)); + HomogeneousMaterial material("Air",0.0,0.0); + lb->addParticle(particle, positions); + lb->setAmbientMaterial(material); + LatticeBasis *lbClone = lb->clone(); + + EXPECT_EQ(lbClone->getName(),lb->getName()); + + EXPECT_EQ(lbClone->getParticle(0)->getAmbientMaterial()->getRefractiveIndex(),lb->getParticle(0)->getAmbientMaterial()->getRefractiveIndex()); + EXPECT_EQ(lbClone->getParticle(0)->getName(), lb->getParticle(0)->getName()); + EXPECT_EQ(lbClone->getParticle(0)->getTransform3D(),lb->getParticle(0)->getTransform3D()); + EXPECT_EQ(positions, lb->getParticlePositions(0)); + + + EXPECT_EQ("Air", lb->getAmbientMaterial()->getName()); + EXPECT_EQ(1.0, lb->getAmbientMaterial()->getRefractiveIndex()); + + delete lb; + delete lbClone; +} + + +#endif diff --git a/Tests/UnitTests/TestCore/main.cpp b/Tests/UnitTests/TestCore/main.cpp index d7a44a0d3d86290cfeae63bf36a659912be19fde..17c9bdaf3b12bb0bda4ff678086530b0f747574e 100644 --- a/Tests/UnitTests/TestCore/main.cpp +++ b/Tests/UnitTests/TestCore/main.cpp @@ -7,6 +7,7 @@ #include "ChiSquaredModuleTest.h" #include "CVectorTest.h" #include "DetectorTest.h" +#include "DistributionsTest.h" #include "DWBASimulationTest.h" #include "FormFactorTest.h" #include "InstrumentTest.h" @@ -22,6 +23,7 @@ #include "RealParameterWrapperTest.h" #include "SimulationTest.h" #include "ThreadInfoTest.h" +#include "LatticeBasisTest.h" #include "LayerRoughnessTest.h" #include "ParticleInfoTest.h" #include "LLDataTest.h" @@ -45,7 +47,7 @@ #include "SpecularSimulationTest.h" #include "ParticleCoreShellTest.h" #include "ParameterDistributionTest.h" -#include "DistributionsTest.h" + struct ErrorStreamRedirect { ErrorStreamRedirect( std::streambuf * new_buffer )