diff --git a/Tests/UnitTests/Core/Legacy/SpecularMagneticConsistencyTest.cpp b/Tests/UnitTests/Core/Legacy/SpecularMagneticConsistencyTest.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..9f9404d7a7d120d90bb3c6e9b79a63022c5e0413
--- /dev/null
+++ b/Tests/UnitTests/Core/Legacy/SpecularMagneticConsistencyTest.cpp
@@ -0,0 +1,70 @@
+#include "Base/Const/Units.h"
+#include "Core/Legacy/SpecularMagneticStrategy_v2.h"
+#include "Sample/Material/MaterialFactoryFuncs.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Processed/ProcessedSample.h"
+#include "Sample/RT/SimulationOptions.h"
+#include "Sample/Slice/KzComputation.h"
+#include "Sample/Specular/SpecularMagneticTanhStrategy.h"
+#include "Tests/GTestWrapper/google_test.h"
+
+class SpecularMagneticConsistencyTest : public ::testing::Test {
+protected:
+    auto static constexpr eps = 1.e-10;
+
+    std::unique_ptr<ProcessedSample> sample_1();
+
+    template<typename Strategy1, typename Strategy2>
+    void testcase(const auto & slices, double k);
+};
+
+std::unique_ptr<ProcessedSample>
+SpecularMagneticConsistencyTest::sample_1() {
+    MultiLayer multi_layer_scalar;
+    Material substr_material_scalar = HomogeneousMaterial("Substrate", 7e-6, 2e-8);
+    Material layer_material = HomogeneousMaterial("Layer", 3e-6, 1e-8,
+                                                  kvector_t{1.e7, 0, 1.e7});
+
+    Layer vacuum_layer(HomogeneousMaterial("Vacuum", 0.0, 0.0));
+    Layer substr_layer_scalar(substr_material_scalar);
+    Layer layer(layer_material, 10. * Units::nm);
+
+    multi_layer_scalar.addLayer(vacuum_layer);
+    multi_layer_scalar.addLayer(layer);
+    multi_layer_scalar.addLayer(substr_layer_scalar);
+
+    SimulationOptions options;
+    auto sample_scalar = std::make_unique<ProcessedSample>(multi_layer_scalar, options);
+
+    return sample_scalar;
+}
+
+template<typename Strategy1, typename Strategy2>
+void SpecularMagneticConsistencyTest::testcase(const auto & slices, double k){
+
+    const auto kz = kvector_t{0., 0., k};
+    const auto coeffs1 = std::make_unique<Strategy1>()->Execute(
+                slices, KzComputation::computeKzFromRefIndices(slices, kz));
+    const auto coeffs2 = std::make_unique<Strategy2>()->Execute(
+                slices, KzComputation::computeKzFromRefIndices(slices, kz));
+
+    for(size_t i = 0; i < coeffs1.size(); ++i){
+        EXPECT_NEAR_MATRIXCOEFF(coeffs1[i], coeffs2[i], eps);
+    }
+}
+
+TEST_F(SpecularMagneticConsistencyTest, z_direction){
+    using Strategy1 = SpecularMagneticTanhStrategy;
+    using Strategy2 = SpecularMagneticStrategy_v2;
+
+    const auto sample = sample_1();
+    const auto slices = sample->slices();
+
+    const std::vector<double> kzs = {1.e-9, 1.e-5, 0.1, 2.0, 10.0};
+
+    for(const auto & k : kzs){
+        testcase<Strategy1, Strategy2>(slices, k);
+        testcase<Strategy1, Strategy2>(slices, -k);
+    }
+}