diff --git a/Tests/Unit/Sample/FormFactorBasicTest.cpp b/Tests/Unit/Sample/FormFactorBasicTest.cpp index 88593dcbc3913cbdbbb375f69581d7fa7a71da2d..fa354eb17148a8022d0f66aceadc68c71986df58 100644 --- a/Tests/Unit/Sample/FormFactorBasicTest.cpp +++ b/Tests/Unit/Sample/FormFactorBasicTest.cpp @@ -1,13 +1,15 @@ #include "Base/Const/Units.h" -#include <numbers> -using std::numbers::pi; #include "Base/Types/Span.h" #include "Sample/HardParticle/HardParticles.h" #include "Sample/Scattering/Rotations.h" #include "Tests/GTestWrapper/google_test.h" +#include <numbers> +using std::numbers::pi; using namespace std::complex_literals; +const double eps_span = 1e-40; + void test_eps_q(const IFormFactor* p, C3 qdir, double eps) { C3 q = eps * qdir; @@ -125,7 +127,7 @@ TEST(FormFactorBasicTest, Pyramid2) Pyramid2 particle(length, width, height, alpha); EXPECT_DOUBLE_EQ(volume, particle.volume()); RotationZ rot(.42); - EXPECT_EQ(0., particle.spanZ(&rot).low()); + EXPECT_NEAR(0., particle.spanZ(&rot).low(), eps_span); EXPECT_NEAR(height, particle.spanZ(&rot).hig(), height * 1e-15); test_ff(&particle); @@ -160,10 +162,10 @@ TEST(FormFactorBasicTest, Box) EXPECT_DOUBLE_EQ(volume, particle.volume()); RotationZ rot(.42); - EXPECT_EQ(0., particle.spanZ(&rot).low()); + EXPECT_NEAR(0., particle.spanZ(&rot).low(), eps_span); EXPECT_NEAR(height, particle.spanZ(&rot).hig(), height * 1e-15); - EXPECT_EQ(0., particle.spanZ(new RotationZ(17 * Units::deg)).low()); + EXPECT_NEAR(0., particle.spanZ(new RotationZ(17 * Units::deg)).low(), eps_span); EXPECT_NEAR(height, particle.spanZ(new RotationZ(39 * Units::deg)).hig(), height * 1e-15); EXPECT_NEAR(-width / 2, particle.spanZ(new RotationX(90 * Units::deg)).low(), 1e-12); @@ -188,7 +190,7 @@ TEST(FormFactorBasicTest, CantellatedCube) CantellatedCube particle(L, t); EXPECT_DOUBLE_EQ(particle.volume(), volume); RotationZ rot(.42); - EXPECT_EQ(0., particle.spanZ(&rot).low()); + EXPECT_NEAR(0., particle.spanZ(&rot).low(), eps_span); EXPECT_NEAR(L, particle.spanZ(&rot).hig(), L * 1e-15); test_ff(&particle); @@ -214,7 +216,7 @@ TEST(FormFactorBasicTest, Cone) Cone particle(radius, height, alpha); EXPECT_DOUBLE_EQ(volume, particle.volume()); RotationZ rot(.42); - EXPECT_EQ(0., particle.spanZ(&rot).low()); + EXPECT_NEAR(0., particle.spanZ(&rot).low(), eps_span); EXPECT_NEAR(height, particle.spanZ(&rot).hig(), height * 1e-15); test_ff(&particle); @@ -261,7 +263,7 @@ TEST(FormFactorBasicTest, CosineRippleBox) CosineRippleBox particle(length, width, height); EXPECT_DOUBLE_EQ(volume, particle.volume()); RotationZ rot(.42); - EXPECT_EQ(0., particle.spanZ(&rot).low()); + EXPECT_NEAR(0., particle.spanZ(&rot).low(), eps_span); EXPECT_NEAR(height, particle.spanZ(&rot).hig(), height * 1e-15); test_ff(&particle); @@ -287,7 +289,7 @@ TEST(FormFactorBasicTest, Bipyramid4) Bipyramid4 particle(length, height, height_ratio, alpha); EXPECT_DOUBLE_EQ(volume, particle.volume()); RotationZ rot(.42); - EXPECT_EQ(0., particle.spanZ(&rot).low()); + EXPECT_NEAR(0., particle.spanZ(&rot).low(), eps_span); EXPECT_NEAR(height * (1 + height_ratio), particle.spanZ(&rot).hig(), height * (1 + height_ratio) * 1e-15); @@ -310,7 +312,7 @@ TEST(FormFactorBasicTest, Cylinder) EXPECT_DOUBLE_EQ(volume, particle.volume()); RotationZ rot(.42); - EXPECT_EQ(0., particle.spanZ(&rot).low()); + EXPECT_NEAR(0., particle.spanZ(&rot).low(), eps_span); EXPECT_NEAR(height, particle.spanZ(&rot).hig(), height * 1e-15); RotationX rectX(90 * Units::deg); @@ -358,7 +360,7 @@ TEST(FormFactorBasicTest, HorizontalCylinder) HorizontalCylinder particle_full(R, L); EXPECT_DOUBLE_EQ(full_volume, particle_full.volume()); - EXPECT_EQ(0., particle_full.spanZ(&rot).low()); + EXPECT_NEAR(0., particle_full.spanZ(&rot).low(), eps_span); EXPECT_NEAR(2 * R, particle_full.spanZ(&rot).hig(), 2 * R * 1e-15); // truncated @@ -372,7 +374,7 @@ TEST(FormFactorBasicTest, HorizontalCylinder) HorizontalCylinder particle_trunc(R, L, b, t); EXPECT_NEAR(trunc_volume, particle_trunc.volume(), 1e-7); - EXPECT_EQ(0., particle_trunc.spanZ(&rot).low()); + EXPECT_NEAR(0., particle_trunc.spanZ(&rot).low(), eps_span); EXPECT_NEAR(t - b, particle_trunc.spanZ(&rot).hig(), 1e-7); RotationX rot1((pi / 2)); @@ -400,7 +402,7 @@ TEST(FormFactorBasicTest, Dodecahedron) Dodecahedron particle(edge); EXPECT_DOUBLE_EQ(volume, particle.volume()); RotationZ rot(.42); - EXPECT_EQ(0., particle.spanZ(&rot).low()); + EXPECT_NEAR(0., particle.spanZ(&rot).low(), eps_span); EXPECT_NEAR(2 * 1.11352 * edge, particle.spanZ(&rot).hig(), 1e-4); // height=2*inradius from web ressource @@ -420,7 +422,7 @@ TEST(FormFactorBasicTest, EllipsoidalCylinder) EllipsoidalCylinder particle(radiusx, radiusy, height); EXPECT_DOUBLE_EQ(volume, particle.volume()); RotationZ rot(.42); - EXPECT_EQ(0., particle.spanZ(&rot).low()); + EXPECT_NEAR(0., particle.spanZ(&rot).low(), eps_span); EXPECT_NEAR(height, particle.spanZ(&rot).hig(), height * 1e-15); test_ff(&particle); @@ -461,7 +463,7 @@ TEST(FormFactorBasicTest, Spheroid) Spheroid particle(radius, height); EXPECT_DOUBLE_EQ(volume, particle.volume()); RotationZ rot(.42); - EXPECT_EQ(0., particle.spanZ(&rot).low()); + EXPECT_NEAR(0., particle.spanZ(&rot).low(), eps_span); EXPECT_NEAR(height, particle.spanZ(&rot).hig(), height * 1e-15); test_ff(&particle); @@ -497,7 +499,7 @@ TEST(FormFactorBasicTest, Icosahedron) Icosahedron particle(edge); EXPECT_DOUBLE_EQ(volume, particle.volume()); RotationZ rot(.42); - EXPECT_EQ(0., particle.spanZ(&rot).low()); + EXPECT_NEAR(0., particle.spanZ(&rot).low(), eps_span); EXPECT_NEAR(2 * 0.755761 * edge, particle.spanZ(&rot).hig(), 1e-4); // height=2*inradius from web ressource @@ -518,7 +520,7 @@ TEST(FormFactorBasicTest, PlatonicOctahedron) PlatonicOctahedron particle(edge); EXPECT_DOUBLE_EQ(volume, particle.volume()); RotationZ rot(.42); - EXPECT_EQ(0., particle.spanZ(&rot).low()); + EXPECT_NEAR(0., particle.spanZ(&rot).low(), eps_span); EXPECT_NEAR(edge * sqrt(2.), particle.spanZ(&rot).hig(), 1e-4); test_ff(&particle); @@ -538,7 +540,7 @@ TEST(FormFactorBasicTest, PlatonicTetrahedron) PlatonicTetrahedron particle(edge); EXPECT_DOUBLE_EQ(volume, particle.volume()); RotationZ rot(.42); - EXPECT_EQ(0., particle.spanZ(&rot).low()); + EXPECT_NEAR(0., particle.spanZ(&rot).low(), eps_span); EXPECT_NEAR(edge * sqrt(2. / 3.), particle.spanZ(&rot).hig(), 1e-4); test_ff(&particle); @@ -560,7 +562,7 @@ TEST(FormFactorBasicTest, Prism3) Prism3 particle(base_edge, height); EXPECT_DOUBLE_EQ(volume, particle.volume()); RotationZ rot(.42); - EXPECT_EQ(0., particle.spanZ(&rot).low()); + EXPECT_NEAR(0., particle.spanZ(&rot).low(), eps_span); EXPECT_NEAR(height, particle.spanZ(&rot).hig(), height * 1e-15); test_ff(&particle); @@ -582,7 +584,7 @@ TEST(FormFactorBasicTest, Prism6) Prism6 particle(base_edge, height); EXPECT_DOUBLE_EQ(volume, particle.volume()); RotationZ rot(.42); - EXPECT_EQ(0., particle.spanZ(&rot).low()); + EXPECT_NEAR(0., particle.spanZ(&rot).low(), eps_span); EXPECT_NEAR(height, particle.spanZ(&rot).hig(), height * 1e-15); test_ff(&particle); @@ -609,7 +611,7 @@ TEST(FormFactorBasicTest, Pyramid4) Pyramid4 particle(base_edge, height, alpha); EXPECT_DOUBLE_EQ(volume, particle.volume()); RotationZ rot(.42); - EXPECT_EQ(0., particle.spanZ(&rot).low()); + EXPECT_NEAR(0., particle.spanZ(&rot).low(), eps_span); EXPECT_NEAR(height, particle.spanZ(&rot).hig(), height * 1e-15); test_ff(&particle); @@ -635,7 +637,7 @@ TEST(FormFactorBasicTest, SawtoothRippleBox) SawtoothRippleBox particle(length, width, height, d); EXPECT_DOUBLE_EQ(volume, particle.volume()); RotationZ rot(.42); - EXPECT_EQ(0., particle.spanZ(&rot).low()); + EXPECT_NEAR(0., particle.spanZ(&rot).low(), eps_span); EXPECT_NEAR(height, particle.spanZ(&rot).hig(), height * 1e-15); // test_ff( &particle ); WAITING: restore once radius returns the umkreis radius @@ -657,7 +659,7 @@ TEST(FormFactorBasicTest, TruncatedCube) TruncatedCube particle(length, t); EXPECT_DOUBLE_EQ(particle.volume(), volume); RotationZ rot(.42); - EXPECT_EQ(0., particle.spanZ(&rot).low()); + EXPECT_NEAR(0., particle.spanZ(&rot).low(), eps_span); EXPECT_NEAR(length, particle.spanZ(&rot).hig(), length * 1e-15); test_ff(&particle); @@ -682,7 +684,7 @@ TEST(FormFactorBasicTest, TruncatedSphere) TruncatedSphere particle(radius, height, 0); EXPECT_DOUBLE_EQ(volume, particle.volume()); RotationZ rot(.42); - EXPECT_EQ(0., particle.spanZ(&rot).low()); + EXPECT_NEAR(0., particle.spanZ(&rot).low(), eps_span); EXPECT_NEAR(height, particle.spanZ(&rot).hig(), height * 1e-15); test_ff(&particle); @@ -706,7 +708,7 @@ TEST(FormFactorBasicTest, TruncatedSpheroid) TruncatedSpheroid particle(radius, height, flattening, 0); EXPECT_DOUBLE_EQ(volume, particle.volume()); RotationZ rot(.42); - EXPECT_EQ(0., particle.spanZ(&rot).low()); + EXPECT_NEAR(0., particle.spanZ(&rot).low(), eps_span); EXPECT_NEAR(height, particle.spanZ(&rot).hig(), height * 1e-15); test_ff(&particle);