From c376acbe72e6eaf9b59ab94a580c1dcc184ee443 Mon Sep 17 00:00:00 2001
From: Randolf Beerwerth <r.beerwerth@fz-juelich.de>
Date: Tue, 22 Sep 2020 10:27:01 +0200
Subject: [PATCH] create macros for comparison of complex and vector values

---
 Tests/GTestWrapper/google_test.h              |  8 +++++
 .../Core/Fresnel/SpecularMagneticTest.cpp     | 34 +++++++------------
 2 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/Tests/GTestWrapper/google_test.h b/Tests/GTestWrapper/google_test.h
index 739a04cb321..f9424007a85 100644
--- a/Tests/GTestWrapper/google_test.h
+++ b/Tests/GTestWrapper/google_test.h
@@ -16,4 +16,12 @@
 
 #include <memory>
 
+#define EXPECT_NEAR_COMPLEX(z1, z2, eps) \
+    EXPECT_NEAR(z1.real(), z2.real(), eps); \
+    EXPECT_NEAR(z1.imag(), z2.imag(), eps);
+
+#define EXPECT_NEAR_VECTOR2CD(v1, v2, eps) \
+    EXPECT_NEAR_COMPLEX(v1(0), v2(0), eps); \
+    EXPECT_NEAR_COMPLEX(v1(1), v2(1), eps);
+
 #endif // BORNAGAIN_TESTS_GTESTWRAPPER_GOOGLE_TEST_H
diff --git a/Tests/UnitTests/Core/Fresnel/SpecularMagneticTest.cpp b/Tests/UnitTests/Core/Fresnel/SpecularMagneticTest.cpp
index b7ab82ee307..dea22b0e944 100644
--- a/Tests/UnitTests/Core/Fresnel/SpecularMagneticTest.cpp
+++ b/Tests/UnitTests/Core/Fresnel/SpecularMagneticTest.cpp
@@ -27,16 +27,8 @@ protected:
 
     template<typename Strategy>
     void test_degenerate();
-
-    void ifEqual(const Eigen::Vector2cd& lhs, const Eigen::Vector2cd& rhs);
 };
 
-void SpecularMagneticTest::ifEqual(const Eigen::Vector2cd& lhs, const Eigen::Vector2cd& rhs)
-{
-    EXPECT_NEAR(0.0, std::abs(lhs(0) - rhs(0)), eps);
-    EXPECT_NEAR(0.0, std::abs(lhs(1) - rhs(1)), eps);
-}
-
 template<typename Strategy>
 void SpecularMagneticTest::test_degenerate()
 {
@@ -50,14 +42,14 @@ void SpecularMagneticTest::test_degenerate()
     auto sample = sample_degenerate();
     auto result = std::make_unique<Strategy>()->Execute(sample->slices(), v);
     for (auto& coeff : result) {
-        ifEqual(coeff->T1plus(), Tp_ref);
-        ifEqual(coeff->T2plus(), Tp_ref);
-        ifEqual(coeff->T1min(), Tm_ref);
-        ifEqual(coeff->T2min(), Tm_ref);
-        ifEqual(coeff->R1plus(), Rp_ref);
-        ifEqual(coeff->R2plus(), Rp_ref);
-        ifEqual(coeff->R1min(), Rm_ref);
-        ifEqual(coeff->R2min(), Rm_ref);
+        EXPECT_NEAR_VECTOR2CD(coeff->T1plus(), Tp_ref, eps);
+        EXPECT_NEAR_VECTOR2CD(coeff->T2plus(), Tp_ref, eps);
+        EXPECT_NEAR_VECTOR2CD(coeff->T1min(), Tm_ref, eps);
+        EXPECT_NEAR_VECTOR2CD(coeff->T2min(), Tm_ref, eps);
+        EXPECT_NEAR_VECTOR2CD(coeff->R1plus(), Rp_ref, eps);
+        EXPECT_NEAR_VECTOR2CD(coeff->R2plus(), Rp_ref, eps);
+        EXPECT_NEAR_VECTOR2CD(coeff->R1min(), Rm_ref, eps);
+        EXPECT_NEAR_VECTOR2CD(coeff->R2min(), Rm_ref, eps);
     }
 }
 
@@ -88,12 +80,12 @@ void SpecularMagneticTest::testZeroField(const kvector_t& k,
         Eigen::Vector2cd TMM = RTMatrix.T1min() + RTMatrix.T2min();
         Eigen::Vector2cd RMM = RTMatrix.R1min() + RTMatrix.R2min();
 
-        ifEqual(TPS, TPM);
-        ifEqual(RPS, RPM);
-        ifEqual(TMS, TMM);
-        ifEqual(RMS, RMM);
+        EXPECT_NEAR_VECTOR2CD(TPS, TPM, eps);
+        EXPECT_NEAR_VECTOR2CD(RPS, RPM, eps);
+        EXPECT_NEAR_VECTOR2CD(TMS, TMM, eps);
+        EXPECT_NEAR_VECTOR2CD(RMS, RMM, eps);
 
-        ifEqual(RTScalar.getKz(), RTMatrix.getKz());
+        EXPECT_NEAR_VECTOR2CD(RTScalar.getKz(), RTMatrix.getKz(), eps);
     }
 }
 
-- 
GitLab