diff --git a/Tests/UnitTests/Core/Fresnel/SpecularMagneticTest.cpp b/Tests/UnitTests/Core/Fresnel/SpecularMagneticTest.cpp index 72ba70b62d151def256ae7dff1ef027f43b9e778..a4d3b33e80697811f8949bfe542198d2c90c778a 100644 --- a/Tests/UnitTests/Core/Fresnel/SpecularMagneticTest.cpp +++ b/Tests/UnitTests/Core/Fresnel/SpecularMagneticTest.cpp @@ -15,13 +15,13 @@ constexpr double eps = 1e-10; class SpecularMagneticTest : public ::testing::Test { protected: - std::unique_ptr<ProcessedSample> sample_zerofield(); + std::unique_ptr<ProcessedSample> sample_zerofield(bool slab); std::unique_ptr<ProcessedSample> sample_degenerate(); template <typename Strategy> void test_degenerate(); template <typename Strategy> void testZeroField(const kvector_t& k, const ProcessedSample& sample); - template <typename Strategy> void testcase_zerofield(std::vector<double>&& angles); + template <typename Strategy> void testcase_zerofield(std::vector<double>&& angles, bool slab=false); }; template <> void SpecularMagneticTest::test_degenerate<SpecularMagneticTanhStrategy>() { @@ -89,12 +89,19 @@ TEST_F(SpecularMagneticTest, degenerate_) { test_degenerate<SpecularMagneticTanhStrategy>(); } -std::unique_ptr<ProcessedSample> SpecularMagneticTest::sample_zerofield() { +std::unique_ptr<ProcessedSample> SpecularMagneticTest::sample_zerofield(bool slab) { MultiLayer multi_layer_scalar; Material substr_material_scalar = HomogeneousMaterial("Substrate", 7e-6, 2e-8); Layer vacuum_layer(HomogeneousMaterial("Vacuum", 0.0, 0.0)); Layer substr_layer_scalar(substr_material_scalar); multi_layer_scalar.addLayer(vacuum_layer); + + if(slab) { + Material layer_material = HomogeneousMaterial("Layer", 3e-6, 1e-8); + Layer layer(layer_material, 10. * Units::nm); + multi_layer_scalar.addLayer(layer); + } + multi_layer_scalar.addLayer(substr_layer_scalar); SimulationOptions options; @@ -104,18 +111,43 @@ std::unique_ptr<ProcessedSample> SpecularMagneticTest::sample_zerofield() { } template <typename Strategy> -void SpecularMagneticTest::testcase_zerofield(std::vector<double>&& angles) { +void SpecularMagneticTest::testcase_zerofield(std::vector<double>&& angles, bool slab) { for (auto& angle : angles) { - auto sample = sample_zerofield(); + auto sample = sample_zerofield(slab); kvector_t k = vecOfLambdaAlphaPhi(1.0, angle * Units::deg, 0.0); testZeroField<Strategy>(k, *sample); } } -TEST_F(SpecularMagneticTest, zerofield) { +TEST_F(SpecularMagneticTest, zerofield_v2_negative_k) { testcase_zerofield<SpecularMagneticStrategy_v2>({-0.1, -2.0, -10.0}); } -TEST_F(SpecularMagneticTest, zerofield_new) { +TEST_F(SpecularMagneticTest, zerofield_v2_positive_k) { + testcase_zerofield<SpecularMagneticStrategy_v2>({0.1, 2.0, 10.0}); +} + +TEST_F(SpecularMagneticTest, zerofield2_v2_negative_k) { + testcase_zerofield<SpecularMagneticStrategy_v2>({-0.1, -2.0, -10.0}, true); +} + +TEST_F(SpecularMagneticTest, zerofield2_v2_positive_k) { + testcase_zerofield<SpecularMagneticStrategy_v2>({0.1, 2.0, 10.0}, true); +} + + +TEST_F(SpecularMagneticTest, zerofield_positive_k) { + testcase_zerofield<SpecularMagneticTanhStrategy>({0.0, 1.e-9, 1.e-5, 0.1, 2.0, 10.0}); +} + +TEST_F(SpecularMagneticTest, zerofield_negative_k) { testcase_zerofield<SpecularMagneticTanhStrategy>({-0.0, -1.e-9, -1.e-5, -0.1, -2.0, -10.0}); } + +TEST_F(SpecularMagneticTest, zerofield2_positive_k) { + testcase_zerofield<SpecularMagneticTanhStrategy>({0.0, 1.e-9, 1.e-5, 0.1, 2.0, 10.0}, true); +} + +TEST_F(SpecularMagneticTest, zerofield2_negative_k) { + testcase_zerofield<SpecularMagneticTanhStrategy>({-0.0, -1.e-9, -1.e-5, -0.1, -2.0, -10.0}, true); +}