diff --git a/Tests/Suite/Common/TestSuite.h b/Tests/Suite/Common/TestSuite.h index 7c9b4bb5d9292d86c3e00784221438815936d645..4d1a1d76fda6d6d976b5148e915515a884cf2585 100644 --- a/Tests/Suite/Common/TestSuite.h +++ b/Tests/Suite/Common/TestSuite.h @@ -38,8 +38,15 @@ #define DISTRIBUTION_TEST(test_fixture, name) TEST(test_fixture, name) #endif +#ifndef PYTHON_STD_TEST +#define eps_direct_vs_python(eps_direct, eps_python) eps_direct +#else +#define eps_direct_vs_python(eps_direct, eps_python) eps_python +#endif + TEST(TESTNAME, FormFactors) { + const double eps = eps_direct_vs_python(2e-13, 8e-11); for (const std::string& ffname : FormFactorComponents().keys()) { const IFormFactor* ff = FormFactorComponents().getItem(ffname)->clone(); ASSERT(ff); @@ -47,12 +54,13 @@ TEST(TESTNAME, FormFactors) ExemplarySamples::createParticleInVacuumWithFF(ff)); ASSERT(sample); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("FormFactors_" + ff->className(), *sim, 8e-11)); + EXPECT_TRUE(runTest("FormFactors_" + ff->className(), *sim, eps)); } } TEST(TESTNAME, FormFactorsWithAbsorption) { + const double eps = eps_direct_vs_python(5e-13, 3e-10); for (const std::string& ffname : FormFactorComponents().keys()) { const IFormFactor* ff = FormFactorComponents().getItem(ffname)->clone(); ASSERT(ff); @@ -60,40 +68,45 @@ TEST(TESTNAME, FormFactorsWithAbsorption) ExemplarySamples::createLayersWithAbsorptionWithFF(ff)); ASSERT(sample); auto sim = test::makeSimulation::MiniGISAS_v2(*sample); - EXPECT_TRUE(runTest("FormFactorsWithAbsorption_" + ff->className(), *sim, 3e-10)); + EXPECT_TRUE(runTest("FormFactorsWithAbsorption_" + ff->className(), *sim, eps)); } } TEST(TESTNAME, GISASAbsorptiveSLDLayers) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createLayersWithAbsorptionBySLD()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("GISASAbsorptiveSLDLayers", *sim, 2e-10)); + EXPECT_TRUE(runTest("GISASAbsorptiveSLDLayers", *sim, eps)); } TEST(TESTNAME, CylindersAndPrisms) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createCylindersAndPrisms()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("CylindersAndPrisms", *sim, 2e-10)); + EXPECT_TRUE(runTest("CylindersAndPrisms", *sim, eps)); } TEST(TESTNAME, RadialParacrystal) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createRadialParacrystal()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("RadialParacrystal", *sim, 2e-10)); + EXPECT_TRUE(runTest("RadialParacrystal", *sim, eps)); } TEST(TESTNAME, HardDisk) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createHardDisk()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("HardDisk", *sim, 2e-10)); + EXPECT_TRUE(runTest("HardDisk", *sim, eps)); } TEST(TESTNAME, Basic2DParacrystal) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); for (const std::string& pdfname : Profile2DComponents().keys()) { const IProfile2D* pdf2 = Profile2DComponents().getItem(pdfname)->clone(); ASSERT(pdf2); @@ -102,22 +115,24 @@ TEST(TESTNAME, Basic2DParacrystal) ExemplarySamples::createBasic2DParacrystalWithFTDis(pdf2)); ASSERT(sample); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("Basic2DParacrystal_" + pdf2->className(), *sim, 2e-10)); + EXPECT_TRUE(runTest("Basic2DParacrystal_" + pdf2->className(), *sim, eps)); } } TEST(TESTNAME, HexParacrystal) { + const double eps = eps_direct_vs_python(8e-11, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createHexParacrystal()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("HexParacrystal", *sim, 2e-10)); + EXPECT_TRUE(runTest("HexParacrystal", *sim, eps)); } TEST(TESTNAME, Lattice1D) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createLattice1D()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("Lattice1D", *sim, 2e-10)); + EXPECT_TRUE(runTest("Lattice1D", *sim, eps)); } TEST(TESTNAME, RectParacrystal) @@ -131,331 +146,377 @@ TEST(TESTNAME, RectParacrystal) TEST(TESTNAME, CoreShellParticle) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createCoreShellParticle()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("CoreShellParticle", *sim, 2e-10)); + EXPECT_TRUE(runTest("CoreShellParticle", *sim, eps)); } TEST(TESTNAME, CoreShellBoxRotateZandY) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createCoreShellBoxRotateZandY()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("CoreShellBoxRotateZandY", *sim, 2e-10)); + EXPECT_TRUE(runTest("CoreShellBoxRotateZandY", *sim, eps)); } TEST(TESTNAME, MultiLayerWithRoughness) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createMultiLayerWithRoughness()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("MultiLayerWithRoughness", *sim, 2e-10)); + EXPECT_TRUE(runTest("MultiLayerWithRoughness", *sim, eps)); } TEST(TESTNAME, SquareLattice2D) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createSquareLattice2D()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("SquareLattice2D", *sim, 2e-10)); + EXPECT_TRUE(runTest("SquareLattice2D", *sim, eps)); } TEST(TESTNAME, CenteredSquareLattice2D) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createCenteredSquareLattice2D()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("CenteredSquareLattice2D", *sim, 2e-10)); + EXPECT_TRUE(runTest("CenteredSquareLattice2D", *sim, eps)); } TEST(TESTNAME, RotatedSquareLattice2D) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createRotatedSquareLattice2D()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("RotatedSquareLattice2D", *sim, 2e-10)); + EXPECT_TRUE(runTest("RotatedSquareLattice2D", *sim, eps)); } TEST(TESTNAME, FiniteSquareLattice2D) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createFiniteSquareLattice2D()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("FiniteSquareLattice2D", *sim, 2e-10)); + EXPECT_TRUE(runTest("FiniteSquareLattice2D", *sim, eps)); } TEST(TESTNAME, RotatedPyramids) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createRotatedPyramids()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("RotatedPyramids", *sim, 2e-10)); + EXPECT_TRUE(runTest("RotatedPyramids", *sim, eps)); } TEST(TESTNAME, ThickAbsorptiveSampleWithRoughness) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createThickAbsorptiveSample()); auto sim = test::makeSimulation::ExtraLongWavelengthGISAS(*sample); - EXPECT_TRUE(runTest("ThickAbsorptiveSampleWithRoughness", *sim, 2e-10)); + EXPECT_TRUE(runTest("ThickAbsorptiveSampleWithRoughness", *sim, eps)); } TEST(TESTNAME, Compound) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createCompound()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("Compound", *sim, 2e-10)); + EXPECT_TRUE(runTest("Compound", *sim, eps)); } TEST(TESTNAME, BoxCompositionRotateX) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createBoxCompositionRotateX()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("BoxCompositionRotateX", *sim, 2e-10)); + EXPECT_TRUE(runTest("BoxCompositionRotateX", *sim, eps)); } TEST(TESTNAME, BoxCompositionRotateY) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createBoxCompositionRotateY()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("BoxCompositionRotateY", *sim, 2e-10)); + EXPECT_TRUE(runTest("BoxCompositionRotateY", *sim, eps)); } TEST(TESTNAME, BoxCompositionRotateZ) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createBoxCompositionRotateZ()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("BoxCompositionRotateZ", *sim, 2e-10)); + EXPECT_TRUE(runTest("BoxCompositionRotateZ", *sim, eps)); } TEST(TESTNAME, BoxCompositionRotateZandY) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createBoxCompositionRotateZandY()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("BoxCompositionRotateZandY", *sim, 2e-10)); + EXPECT_TRUE(runTest("BoxCompositionRotateZandY", *sim, eps)); } TEST(TESTNAME, BoxStackComposition) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createBoxStackComposition()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("BoxStackComposition", *sim, 2e-10)); + EXPECT_TRUE(runTest("BoxStackComposition", *sim, eps)); } DISTRIBUTION_TEST(TESTNAME, CylindersWithSizeDistribution) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample( ExemplarySamples::createCylindersWithSizeDistribution()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("CylindersWithSizeDistribution", *sim, 2e-10)); + EXPECT_TRUE(runTest("CylindersWithSizeDistribution", *sim, eps)); } DISTRIBUTION_TEST(TESTNAME, TwoTypesCylindersDistribution) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample( ExemplarySamples::createTwoTypesCylindersDistribution()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("TwoTypesCylindersDistribution", *sim, 2e-10)); + EXPECT_TRUE(runTest("TwoTypesCylindersDistribution", *sim, eps)); } DISTRIBUTION_TEST(TESTNAME, RotatedPyramidsDistribution) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createRotatedPyramidsDistribution()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("RotatedPyramidsDistribution", *sim, 2e-10)); + EXPECT_TRUE(runTest("RotatedPyramidsDistribution", *sim, eps)); } DISTRIBUTION_TEST(TESTNAME, SpheresWithLimitsDistribution) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample( ExemplarySamples::createSpheresWithLimitsDistribution()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("SpheresWithLimitsDistribution", *sim, 2e-10)); + EXPECT_TRUE(runTest("SpheresWithLimitsDistribution", *sim, eps)); } DISTRIBUTION_TEST(TESTNAME, ConesWithLimitsDistribution) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createConesWithLimitsDistribution()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("ConesWithLimitsDistribution", *sim, 2e-10)); + EXPECT_TRUE(runTest("ConesWithLimitsDistribution", *sim, eps)); } DISTRIBUTION_TEST(TESTNAME, LinkedBoxDistribution) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createLinkedBoxDistribution()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("LinkedBoxDistribution", *sim, 2e-10)); + EXPECT_TRUE(runTest("LinkedBoxDistribution", *sim, eps)); } TEST(TESTNAME, MultipleLayout) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createMultipleLayout()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("MultipleLayout", *sim, 2e-10)); + EXPECT_TRUE(runTest("MultipleLayout", *sim, eps)); } TEST(TESTNAME, ApproximationDA) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createSizeDistributionDAModel()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("ApproximationDA", *sim, 2e-10)); + EXPECT_TRUE(runTest("ApproximationDA", *sim, eps)); } TEST(TESTNAME, ApproximationLMA) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createSizeDistributionLMAModel()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("ApproximationLMA", *sim, 2e-10)); + EXPECT_TRUE(runTest("ApproximationLMA", *sim, eps)); } TEST(TESTNAME, ApproximationSSCA) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createSizeDistributionSSCAModel()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("ApproximationSSCA", *sim, 2e-10)); + EXPECT_TRUE(runTest("ApproximationSSCA", *sim, eps)); } DISTRIBUTION_TEST(TESTNAME, CylindersInSSCA) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createCylindersInSSCA()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("CylindersInSSCA", *sim, 2e-10)); + EXPECT_TRUE(runTest("CylindersInSSCA", *sim, eps)); } TEST(TESTNAME, CosineRipple) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createCosineRipple()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("CosineRipple", *sim, 2e-10)); + EXPECT_TRUE(runTest("CosineRipple", *sim, eps)); } TEST(TESTNAME, TriangularRipple) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createTriangularRipple()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("TriangularRipple", *sim, 2e-10)); + EXPECT_TRUE(runTest("TriangularRipple", *sim, eps)); } TEST(TESTNAME, AsymRipple) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createAsymRipple()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("AsymRipple", *sim, 2e-10)); + EXPECT_TRUE(runTest("AsymRipple", *sim, eps)); } TEST(TESTNAME, Mesocrystal) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createMesocrystal()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("Mesocrystal", *sim, 2e-10)); + EXPECT_TRUE(runTest("Mesocrystal", *sim, eps)); } TEST(TESTNAME, CustomMorphology) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createCustomMorphology()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("CustomMorphology", *sim, 2e-10)); + EXPECT_TRUE(runTest("CustomMorphology", *sim, eps)); } TEST(TESTNAME, TransformBox) { + const double eps = eps_direct_vs_python(5e-13, 1e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createTransformBox()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("TransformBox", *sim, 1e-10)); + EXPECT_TRUE(runTest("TransformBox", *sim, eps)); } TEST(TESTNAME, MagneticParticleZeroField) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createMagneticParticleZeroField()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("MagneticParticleZeroField", *sim, 2e-10)); + EXPECT_TRUE(runTest("MagneticParticleZeroField", *sim, eps)); } TEST(TESTNAME, SlicedComposition) { + const double eps = eps_direct_vs_python(5e-13, 1e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createSlicedComposition()); auto sim = test::makeSimulation::MiniGISAS(*sample); - EXPECT_TRUE(runTest("SlicedComposition", *sim, 1e-10)); + EXPECT_TRUE(runTest("SlicedComposition", *sim, eps)); } TEST(TESTNAME, MagneticSubstrateZeroField) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createMagneticSubstrateZeroField()); auto sim = test::makeSimulation::MiniZPolarizedGISAS(*sample, "PP"); - EXPECT_TRUE(runTest("MagneticSubstrateZeroField", *sim, 2e-10)); + EXPECT_TRUE(runTest("MagneticSubstrateZeroField", *sim, eps)); } TEST(TESTNAME, MagneticRotation) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createMagneticRotation()); auto sim = test::makeSimulation::MiniZPolarizedGISAS(*sample, "PM"); - EXPECT_TRUE(runTest("MagneticRotationZPM", *sim, 2e-10)); + EXPECT_TRUE(runTest("MagneticRotationZPM", *sim, eps)); } TEST(TESTNAME, MagneticSpheres) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createMagneticSpheres()); auto sim = test::makeSimulation::MiniZPolarizedGISAS(*sample, "PM"); - EXPECT_TRUE(runTest("MagneticSpheres", *sim, 2e-10)); + EXPECT_TRUE(runTest("MagneticSpheres", *sim, eps)); } TEST(TESTNAME, MagneticCylinders) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); for (const std::string polCase : {"PP", "MP", "PM", "MM"}) { std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createMagneticCylinders()); auto sim = test::makeSimulation::MiniZPolarizedGISAS(*sample, polCase); - EXPECT_TRUE(runTest("MagneticCylinders" + polCase, *sim, 2e-10)); + EXPECT_TRUE(runTest("MagneticCylinders" + polCase, *sim, eps)); } } TEST(TESTNAME, MagneticSpheresInMagLayer) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); for (const std::string polCase : {"PP", "MP"}) { std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createMagneticLayer()); auto sim = test::makeSimulation::MiniZPolarizedGISAS(*sample, polCase); - EXPECT_TRUE(runTest("MagneticSpheresInMagLayer" + polCase, *sim, 2e-10)); + EXPECT_TRUE(runTest("MagneticSpheresInMagLayer" + polCase, *sim, eps)); } } TEST(TESTNAME, BeamDivergence) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createCylindersInBA()); auto sim = test::makeSimulation::MiniGISASBeamDivergence(*sample); - EXPECT_TRUE(runTest("BeamDivergence", *sim, 2e-10)); + EXPECT_TRUE(runTest("BeamDivergence", *sim, eps)); } TEST(TESTNAME, DetectorResolution) { + const double eps = eps_direct_vs_python(5e-13, 2e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createCylindersInBA()); auto sim = test::makeSimulation::MiniGISASDetectorResolution(*sample); - EXPECT_TRUE(runTest("DetectorResolution", *sim, 2e-10)); + EXPECT_TRUE(runTest("DetectorResolution", *sim, eps)); } TEST(TESTNAME, SimulationWithMasks) { + const double eps = eps_direct_vs_python(5e-13, 1e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createCylindersAndPrisms()); auto sim = test::makeSimulation::GISASWithMasks(*sample); - EXPECT_TRUE(runTest("SimulationWithMasks", *sim, 1e-10)); + EXPECT_TRUE(runTest("SimulationWithMasks", *sim, eps)); } TEST(TESTNAME, RectDetectorGeneric) { + const double eps = eps_direct_vs_python(5e-13, 1e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createCylindersInBA()); auto sim = test::makeSimulation::RectDetectorGeneric(*sample); - EXPECT_TRUE(runTest("RectDetectorGeneric", *sim, 1e-10)); + EXPECT_TRUE(runTest("RectDetectorGeneric", *sim, eps)); } TEST(TESTNAME, RectDetectorPerpToSample) { + const double eps = eps_direct_vs_python(5e-13, 1e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createCylindersInBA()); auto sim = test::makeSimulation::RectDetectorPerpToSample(*sample); - EXPECT_TRUE(runTest("RectDetectorPerpToSample", *sim, 1e-10)); + EXPECT_TRUE(runTest("RectDetectorPerpToSample", *sim, eps)); } TEST(TESTNAME, RectDetectorPerpToDirectBeam) { + const double eps = eps_direct_vs_python(5e-13, 1e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createCylindersInBA()); auto sim = test::makeSimulation::RectDetectorPerpToDirectBeam(*sample); - EXPECT_TRUE(runTest("RectDetectorPerpToDirectBeam", *sim, 1e-10)); + EXPECT_TRUE(runTest("RectDetectorPerpToDirectBeam", *sim, eps)); } TEST(TESTNAME, RectDetectorPerpToReflectedBeam) { + const double eps = eps_direct_vs_python(5e-13, 1e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createCylindersInBA()); auto sim = test::makeSimulation::RectDetectorPerpToReflectedBeam(*sample); - EXPECT_TRUE(runTest("RectDetectorPerpToReflectedBeam", *sim, 1e-10)); + EXPECT_TRUE(runTest("RectDetectorPerpToReflectedBeam", *sim, eps)); } TEST(TESTNAME, LargeCylindersMonteCarlo) @@ -467,45 +528,51 @@ TEST(TESTNAME, LargeCylindersMonteCarlo) TEST(TESTNAME, SphericalDetWithRoi) { + const double eps = eps_direct_vs_python(5e-13, 1e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createCylindersAndPrisms()); auto sim = test::makeSimulation::SphericalDetWithRoi(*sample); - EXPECT_TRUE(runTest("SphericalDetWithRoi", *sim, 1e-10)); + EXPECT_TRUE(runTest("SphericalDetWithRoi", *sim, eps)); } TEST(TESTNAME, RectDetWithRoi) { + const double eps = eps_direct_vs_python(5e-13, 1e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createCylindersAndPrisms()); auto sim = test::makeSimulation::RectDetWithRoi(*sample); - EXPECT_TRUE(runTest("RectDetWithRoi", *sim, 1e-10)); + EXPECT_TRUE(runTest("RectDetWithRoi", *sim, eps)); } TEST(TESTNAME, BoxesWithSpecular) { + const double eps = eps_direct_vs_python(5e-13, 1e-10); std::unique_ptr<const MultiLayer> sample(ExemplarySamples::createBoxesSquareLattice2D()); auto sim = test::makeSimulation::MiniGISASSpecularPeak(*sample); - EXPECT_TRUE(runTest("BoxesWithSpecular", *sim, 1e-10)); + EXPECT_TRUE(runTest("BoxesWithSpecular", *sim, eps)); } TEST(TESTNAME, ConstantBackground) { + const double eps = eps_direct_vs_python(5e-13, 1e-10); auto* sample = ExemplarySamples::createCylindersInBA(); auto sim = test::makeSimulation::MiniGISAS(*sample); sim->setBackground(ConstantBackground(1e3)); - EXPECT_TRUE(runTest("ConstantBackground", *sim, 1e-10)); + EXPECT_TRUE(runTest("ConstantBackground", *sim, eps)); } TEST(TESTNAME, HomogeneousTiNiSample) { + const double eps = eps_direct_vs_python(5e-13, 1e-10); auto* sample = ExemplarySamples::createHomogeneousMultilayer(); auto sim = test::makeSimulation::BasicSpecular(*sample, false); - EXPECT_TRUE(runTest("HomogeneousTiNiSample", *sim, 1e-10)); + EXPECT_TRUE(runTest("HomogeneousTiNiSample", *sim, eps)); } TEST(TESTNAME, HomogeneousTiNiSampleWithAbsorption) { + const double eps = eps_direct_vs_python(5e-13, 1e-10); auto* sample = ExemplarySamples::createPlainMultiLayerBySLD(); auto sim = test::makeSimulation::BasicSpecular(*sample, false); - EXPECT_TRUE(runTest("HomogeneousTiNiSampleWithAbsorption", *sim, 1e-10)); + EXPECT_TRUE(runTest("HomogeneousTiNiSampleWithAbsorption", *sim, eps)); } TEST(TESTNAME, RoughnessInSpecular) @@ -517,23 +584,26 @@ TEST(TESTNAME, RoughnessInSpecular) TEST(TESTNAME, GaussianBeamFootprint) { + const double eps = eps_direct_vs_python(5e-13, 1e-10); auto* sample = ExemplarySamples::createHomogeneousMultilayer(); auto sim = test::makeSimulation::SpecularWithGaussianBeam(*sample); - EXPECT_TRUE(runTest("GaussianBeamFootprint", *sim, 1e-10)); + EXPECT_TRUE(runTest("GaussianBeamFootprint", *sim, eps)); } TEST(TESTNAME, SquareBeamFootprint) { + const double eps = eps_direct_vs_python(5e-13, 1e-10); auto* sample = ExemplarySamples::createHomogeneousMultilayer(); auto sim = test::makeSimulation::SpecularWithSquareBeam(*sample); - EXPECT_TRUE(runTest("SquareBeamFootprint", *sim, 1e-10)); + EXPECT_TRUE(runTest("SquareBeamFootprint", *sim, eps)); } TEST(TESTNAME, SpecularDivergentBeam) { + const double eps = eps_direct_vs_python(5e-13, 1e-10); auto* sample = ExemplarySamples::createHomogeneousMultilayer(); auto sim = test::makeSimulation::SpecularDivergentBeam(*sample); - EXPECT_TRUE(runTest("SpecularDivergentBeam", *sim, 1e-10)); + EXPECT_TRUE(runTest("SpecularDivergentBeam", *sim, eps)); } // ************************************************************************************************ @@ -544,9 +614,10 @@ TEST(TESTNAME, SpecularDivergentBeam) TEST(TESTNAME, RelativeResolutionTOF) { + const double eps = eps_direct_vs_python(5e-13, 1e-10); auto* sample = ExemplarySamples::createPlainMultiLayerBySLD(); auto sim = test::makeSimulation::TOFRWithRelativeResolution(*sample); - EXPECT_TRUE(runTest("RelativeResolutionTOF", *sim, 1e-10)); + EXPECT_TRUE(runTest("RelativeResolutionTOF", *sim, eps)); } #endif // GUI_STD_TEST @@ -559,9 +630,10 @@ TEST(TESTNAME, RelativeResolutionTOF) TEST(TESTNAME, OffspecResonator) { + const double eps = eps_direct_vs_python(5e-13, 1e-10); auto* sample = ExemplarySamples::createResonator(); auto sim = test::makeSimulation::MiniOffspec(*sample); - EXPECT_TRUE(runTest("OffspecResonator", *sim, 1e-10)); + EXPECT_TRUE(runTest("OffspecResonator", *sim, eps)); } #endif // PYTHON_STD_TEST