From d4af885c2c80d110ba010b2e569dab305e1b5867 Mon Sep 17 00:00:00 2001 From: Gennady Pospelov <g.pospelov@fz-juelich.de> Date: Fri, 10 Apr 2020 13:53:42 +0200 Subject: [PATCH] Implement unit tests for SimulationElement --- .../SimulationElementTest.cpp | 143 ++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 Tests/UnitTests/Core/SimulationElement/SimulationElementTest.cpp diff --git a/Tests/UnitTests/Core/SimulationElement/SimulationElementTest.cpp b/Tests/UnitTests/Core/SimulationElement/SimulationElementTest.cpp new file mode 100644 index 00000000000..e9691468dc9 --- /dev/null +++ b/Tests/UnitTests/Core/SimulationElement/SimulationElementTest.cpp @@ -0,0 +1,143 @@ +#include "SimulationElement.h" +#include "Bin.h" +#include "SphericalDetector.h" +#include "Units.h" +#include "google_test.h" +#include <memory> + +namespace +{ +const Bin1D alpha_bin(0.0 * Units::deg, 1.0 * Units::deg); +const Bin1D phi_bin(-0.5 * Units::deg, 0.5 * Units::deg); +const double wavelength = 42.0; +const double alpha_i = 0.2 * Units::deg; +const double phi_i = 0.0 * Units::deg; +} // namespace + +class SimulationElementTest : public ::testing::Test +{ +public: + ~SimulationElementTest(); + + std::unique_ptr<IPixel> createPixel() const + { + return std::make_unique<SphericalPixel>(alpha_bin, phi_bin); + } + + std::unique_ptr<SimulationElement> createElement() const + { + return std::make_unique<SimulationElement>(wavelength, alpha_i, phi_i, createPixel()); + } +}; + +SimulationElementTest::~SimulationElementTest() = default; + +TEST_F(SimulationElementTest, basicConstructor) +{ + SimulationElement element(wavelength, alpha_i, phi_i, createPixel()); + EXPECT_EQ(element.getWavelength(), wavelength); + EXPECT_EQ(element.getAlphaI(), alpha_i); + EXPECT_EQ(element.getPhiI(), phi_i); + EXPECT_EQ(element.getIntensity(), 0.0); + EXPECT_FLOAT_EQ(element.getAlphaMean(), 0.5 * Units::deg); + EXPECT_FLOAT_EQ(element.getPhiMean(), 0.0 * Units::deg); + EXPECT_EQ(element.getKi(), vecOfLambdaAlphaPhi(wavelength, alpha_i, phi_i)); + EXPECT_EQ(element.getMeanKf(), createPixel()->getK(0.5, 0.5, wavelength)); + EXPECT_FALSE(element.isSpecular()); +} + +TEST_F(SimulationElementTest, setIntensity) +{ + auto element = createElement(); + EXPECT_EQ(element->getIntensity(), 0.0); + element->addIntensity(1.0); + EXPECT_EQ(element->getIntensity(), 1.0); + element->setIntensity(42.0); + EXPECT_EQ(element->getIntensity(), 42.0); +} + +TEST_F(SimulationElementTest, copyConstructor) +{ + auto orig = createElement(); + SimulationElement element(*orig); + EXPECT_EQ(orig->getWavelength(), element.getWavelength()); + EXPECT_EQ(orig->getAlphaI(), element.getAlphaI()); + EXPECT_EQ(orig->getPhiI(), element.getPhiI()); + EXPECT_EQ(orig->getAlphaMean(), element.getAlphaMean()); + EXPECT_EQ(orig->getPhiMean(), element.getPhiMean()); + EXPECT_EQ(orig->getIntensity(), element.getIntensity()); + EXPECT_EQ(orig->getKi(), element.getKi()); + EXPECT_EQ(orig->getMeanKf(), element.getMeanKf()); + EXPECT_EQ(orig->getQ(0.5, 0.5), element.getQ(0.5, 0.5)); + EXPECT_EQ(orig->getIntegrationFactor(0.5, 0.5), element.getIntegrationFactor(0.5, 0.5)); + EXPECT_EQ(orig->getSolidAngle(), element.getSolidAngle()); + EXPECT_EQ(orig->getAlpha(0.5, 0.5), element.getAlpha(0.5, 0.5)); + EXPECT_EQ(orig->getPhi(0.5, 0.5), element.getPhi(0.5, 0.5)); + EXPECT_EQ(orig->isSpecular(), element.isSpecular()); +} + +TEST_F(SimulationElementTest, assignmentOperator) +{ + auto orig = createElement(); + SimulationElement element(1.0, 1.0, 1.0, createPixel()); + element = *orig; + + EXPECT_EQ(orig->getWavelength(), element.getWavelength()); + EXPECT_EQ(orig->getAlphaI(), element.getAlphaI()); + EXPECT_EQ(orig->getPhiI(), element.getPhiI()); + EXPECT_EQ(orig->getAlphaMean(), element.getAlphaMean()); + EXPECT_EQ(orig->getPhiMean(), element.getPhiMean()); + EXPECT_EQ(orig->getIntensity(), element.getIntensity()); + EXPECT_EQ(orig->getKi(), element.getKi()); + EXPECT_EQ(orig->getMeanKf(), element.getMeanKf()); + EXPECT_EQ(orig->getQ(0.5, 0.5), element.getQ(0.5, 0.5)); + EXPECT_EQ(orig->getIntegrationFactor(0.5, 0.5), element.getIntegrationFactor(0.5, 0.5)); + EXPECT_EQ(orig->getSolidAngle(), element.getSolidAngle()); + EXPECT_EQ(orig->getAlpha(0.5, 0.5), element.getAlpha(0.5, 0.5)); + EXPECT_EQ(orig->getPhi(0.5, 0.5), element.getPhi(0.5, 0.5)); + EXPECT_EQ(orig->isSpecular(), element.isSpecular()); +} + +TEST_F(SimulationElementTest, moveAssignment) +{ + SimulationElement for_move(1.0, 2.0, 3.0, createPixel()); + SimulationElement orig(1.0, 2.0, 3.0, createPixel()); + SimulationElement element = std::move(for_move); + + EXPECT_EQ(orig.getWavelength(), element.getWavelength()); + EXPECT_EQ(orig.getAlphaI(), element.getAlphaI()); + EXPECT_EQ(orig.getPhiI(), element.getPhiI()); + EXPECT_EQ(orig.getAlphaMean(), element.getAlphaMean()); + EXPECT_EQ(orig.getPhiMean(), element.getPhiMean()); + EXPECT_EQ(orig.getIntensity(), element.getIntensity()); + EXPECT_EQ(orig.getKi(), element.getKi()); + EXPECT_EQ(orig.getMeanKf(), element.getMeanKf()); + EXPECT_EQ(orig.getQ(0.5, 0.5), element.getQ(0.5, 0.5)); + EXPECT_EQ(orig.getIntegrationFactor(0.5, 0.5), element.getIntegrationFactor(0.5, 0.5)); + EXPECT_EQ(orig.getSolidAngle(), element.getSolidAngle()); + EXPECT_EQ(orig.getAlpha(0.5, 0.5), element.getAlpha(0.5, 0.5)); + EXPECT_EQ(orig.getPhi(0.5, 0.5), element.getPhi(0.5, 0.5)); + EXPECT_EQ(orig.isSpecular(), element.isSpecular()); +} + +TEST_F(SimulationElementTest, moveConstruction) +{ + SimulationElement for_move(1.0, 2.0, 3.0, createPixel()); + SimulationElement orig(1.0, 2.0, 3.0, createPixel()); + SimulationElement element(std::move(for_move)); + + EXPECT_EQ(orig.getWavelength(), element.getWavelength()); + EXPECT_EQ(orig.getAlphaI(), element.getAlphaI()); + EXPECT_EQ(orig.getPhiI(), element.getPhiI()); + EXPECT_EQ(orig.getAlphaMean(), element.getAlphaMean()); + EXPECT_EQ(orig.getPhiMean(), element.getPhiMean()); + EXPECT_EQ(orig.getIntensity(), element.getIntensity()); + EXPECT_EQ(orig.getKi(), element.getKi()); + EXPECT_EQ(orig.getMeanKf(), element.getMeanKf()); + EXPECT_EQ(orig.getQ(0.5, 0.5), element.getQ(0.5, 0.5)); + EXPECT_EQ(orig.getIntegrationFactor(0.5, 0.5), element.getIntegrationFactor(0.5, 0.5)); + EXPECT_EQ(orig.getSolidAngle(), element.getSolidAngle()); + EXPECT_EQ(orig.getAlpha(0.5, 0.5), element.getAlpha(0.5, 0.5)); + EXPECT_EQ(orig.getPhi(0.5, 0.5), element.getPhi(0.5, 0.5)); + EXPECT_EQ(orig.isSpecular(), element.isSpecular()); +} -- GitLab