TEST(MaximumTrajectoryLength, test) { MaximumTrajectoryLength maxLength(10); Candidate c; c.setTrajectoryLength(9.9); maxLength.process(&c); EXPECT_TRUE(c.isActive()); c.setTrajectoryLength(10.1); maxLength.process(&c); EXPECT_FALSE(c.isActive()); EXPECT_TRUE(c.hasProperty("Rejected")); }
TEST(MinimumRedshift, test) { MinimumRedshift minZ; // default minimum redshift of 0 Candidate c; c.setRedshift(0.1); minZ.process(&c); EXPECT_TRUE(c.isActive()); c.setRedshift(0); minZ.process(&c); EXPECT_FALSE(c.isActive()); EXPECT_TRUE(c.hasProperty("Rejected")); }
/** Unit tests for break condition, observer, boundary and tool modules */ #include "crpropa/module/BreakCondition.h" #include "crpropa/module/Observer.h" #include "crpropa/module/Boundary.h" #include "crpropa/module/Tools.h" #include "crpropa/ParticleID.h" #include "gtest/gtest.h" namespace crpropa { //** ========================= Break conditions ============================= */ TEST(MinimumEnergy, test) { MinimumEnergy minEnergy(5); Candidate c; c.current.setEnergy(5.1); minEnergy.process(&c); EXPECT_TRUE(c.isActive()); c.current.setEnergy(4.9); minEnergy.process(&c); EXPECT_FALSE(c.isActive()); EXPECT_TRUE(c.hasProperty("Rejected")); }
TEST(CubicBoundary, inside) { CubicBoundary cube(Vector3d(0, 0, 0), 10); Candidate c; c.current.setPosition(Vector3d(9, 5, 5)); cube.process(&c); EXPECT_TRUE(c.isActive()); }
TEST(Observer1D, detection) { Observer1D obs; // observer at x = 0 Candidate c; c.current.setPosition(Vector3d(0, 0, 0)); obs.process(&c); EXPECT_FALSE(c.isActive()); }
TEST(EllipsoidalBoundary, outside) { EllipsoidalBoundary ellipsoid(Vector3d(-5, 0, 0), Vector3d(5, 0, 0), 15); Candidate c; c.current.setPosition(Vector3d(0, 25, 0)); ellipsoid.process(&c); EXPECT_FALSE(c.isActive()); EXPECT_TRUE(c.hasProperty("Rejected")); }
TEST(SphericalBoundary, inside) { SphericalBoundary sphere(Vector3d(0, 0, 0), 10); Candidate c; c.current.setPosition(Vector3d(9, 0, 0)); sphere.process(&c); EXPECT_TRUE(c.isActive()); EXPECT_FALSE(c.hasProperty("Rejected")); }
TEST(CubicBoundary, outside) { CubicBoundary cube(Vector3d(0, 0, 0), 10); Candidate c; c.current.setPosition(Vector3d(10.1, 5, 5)); cube.process(&c); EXPECT_FALSE(c.isActive()); EXPECT_TRUE(c.hasProperty("Rejected")); }
TEST(DetectAll, detection) { // DetectAll should detect all candidates DetectAll obs("Wait", "You forgot your lunchbox"); Candidate c; obs.process(&c); EXPECT_FALSE(c.isActive()); EXPECT_TRUE(c.hasProperty("Wait")); }
TEST(SphericalBoundary, outside) { SphericalBoundary sphere(Vector3d(0, 0, 0), 10); sphere.setRejectFlag("I passed the galactic border", "Nothing happened"); Candidate c; c.current.setPosition(Vector3d(0, -10.1, 0)); sphere.process(&c); EXPECT_FALSE(c.isActive()); EXPECT_TRUE(c.hasProperty("I passed the galactic border")); }
TEST(Observer1D, noDetection) { Observer1D obs; // observer at x = 0 Candidate c; c.current.setPosition(Vector3d(5, 0, 0)); c.setNextStep(10); obs.process(&c); EXPECT_TRUE(c.isActive()); EXPECT_DOUBLE_EQ(5, c.getNextStep()); }
TEST(LargeObserverSphere, detection) { // detect if the current position is outside and the previous inside of the sphere LargeObserverSphere obs(Vector3d(0, 0, 0), 10); Candidate c; // no detection: particle was outside already c.current.setPosition(Vector3d(11, 0, 0)); c.previous.setPosition(Vector3d(10.5, 0, 0)); obs.process(&c); EXPECT_TRUE(c.isActive()); EXPECT_FALSE(c.hasProperty("Detected")); // detection: particle just left c.current.setPosition(Vector3d(11, 0, 0)); c.previous.setPosition(Vector3d(9.5, 0, 0)); obs.process(&c); EXPECT_FALSE(c.isActive()); EXPECT_TRUE(c.hasProperty("Detected")); }
/** Unit tests for break condition, observer, boundary and tool modules */ #include "crpropa/module/BreakCondition.h" #include "crpropa/module/Observer.h" #include "crpropa/module/Boundary.h" #include "crpropa/module/Tools.h" #include "crpropa/ParticleID.h" #include "gtest/gtest.h" namespace crpropa { //** ========================= Break conditions ============================= */ TEST(MinimumEnergy, test) { MinimumEnergy minEnergy(5); Candidate c; c.current.setEnergy(5.1); minEnergy.process(&c); EXPECT_TRUE(c.isActive()); c.current.setEnergy(4.9); minEnergy.process(&c); EXPECT_FALSE(c.isActive()); EXPECT_TRUE(c.hasProperty("Rejected")); } TEST(MaximumTrajectoryLength, test) { MaximumTrajectoryLength maxLength(10); Candidate c; c.setTrajectoryLength(9.9); maxLength.process(&c); EXPECT_TRUE(c.isActive()); c.setTrajectoryLength(10.1); maxLength.process(&c); EXPECT_FALSE(c.isActive()); EXPECT_TRUE(c.hasProperty("Rejected")); } TEST(MinimumRedshift, test) { MinimumRedshift minZ; // default minimum redshift of 0 Candidate c; c.setRedshift(0.1); minZ.process(&c); EXPECT_TRUE(c.isActive()); c.setRedshift(0); minZ.process(&c); EXPECT_FALSE(c.isActive()); EXPECT_TRUE(c.hasProperty("Rejected")); } //** ============================= Observers ================================ */ TEST(SmallObserverSphere, detection) { // detect if the current position is inside and the previous outside of the sphere SmallObserverSphere obs(Vector3d(0, 0, 0), 1); Candidate c; // no detection: particle was inside already c.current.setPosition(Vector3d(0.9, 0, 0)); c.previous.setPosition(Vector3d(0.95, 0, 0)); obs.process(&c); EXPECT_TRUE(c.isActive()); EXPECT_FALSE(c.hasProperty("Detected")); // detection: particle just entered c.current.setPosition(Vector3d(0.9, 0, 0)); c.previous.setPosition(Vector3d(1.1, 0, 0)); obs.process(&c); EXPECT_FALSE(c.isActive()); EXPECT_TRUE(c.hasProperty("Detected")); }