From aad27bd1493266516bf5c6579dae7212d761582c Mon Sep 17 00:00:00 2001
From: Anna Wellmann <a.wellmann@tu-bs.de>
Date: Thu, 11 Aug 2022 11:56:06 +0000
Subject: [PATCH] Add tests to GridScalingFactory

---
 .../BoundaryConditionFactoryTest.cpp          |  2 +-
 .../Factories/GridScalingFactoryTest.cpp      | 73 +++++++++++++++++++
 2 files changed, 74 insertions(+), 1 deletion(-)
 create mode 100644 src/gpu/VirtualFluids_GPU/Factories/GridScalingFactoryTest.cpp

diff --git a/src/gpu/VirtualFluids_GPU/Factories/BoundaryConditionFactoryTest.cpp b/src/gpu/VirtualFluids_GPU/Factories/BoundaryConditionFactoryTest.cpp
index d153c26ac..599f92750 100644
--- a/src/gpu/VirtualFluids_GPU/Factories/BoundaryConditionFactoryTest.cpp
+++ b/src/gpu/VirtualFluids_GPU/Factories/BoundaryConditionFactoryTest.cpp
@@ -63,7 +63,7 @@ bcFunction getVelocityBcTarget(BoundaryConditionFactory &bcFactory)
     return bcTarget;
 }
 
-// tests for boundary conditions whcih are set by the user (tests both set and get functions)
+// tests for boundary conditions which are set by the user (tests both set and get functions)
 
 TEST(BoundaryConditionFactoryTest, velocityBC)
 {
diff --git a/src/gpu/VirtualFluids_GPU/Factories/GridScalingFactoryTest.cpp b/src/gpu/VirtualFluids_GPU/Factories/GridScalingFactoryTest.cpp
new file mode 100644
index 000000000..c371cab6e
--- /dev/null
+++ b/src/gpu/VirtualFluids_GPU/Factories/GridScalingFactoryTest.cpp
@@ -0,0 +1,73 @@
+#include <gmock/gmock.h>
+#include <typeindex>
+
+#include "GPU/GPU_Interface.h"
+#include "GridScalingFactory.h"
+
+using gridScalingFCtarget = void (*)(LBMSimulationParameter *, LBMSimulationParameter *, ICellFC *,
+                                     CUstream_st *stream);
+using gridScalingCFtarget = void (*)(LBMSimulationParameter *, LBMSimulationParameter *, ICellCF *, OffCF,
+                                     CUstream_st *stream);
+
+// tests for default scaling functions
+TEST(GridScalingFactoryTest, defaultGridScalingFC)
+{
+    auto scalingFactory = GridScalingFactory();
+    auto scalingFunction = scalingFactory.getGridScalingFC();
+    EXPECT_THAT(scalingFunction, testing::Eq(nullptr));
+    EXPECT_THROW(scalingFunction(nullptr, nullptr, nullptr, nullptr), std::bad_function_call);
+}
+
+// TEST(GridScalingFactoryTest, defaultGridScalingCF)
+// {
+//     auto scalingFactory = GridScalingFactory();
+//     auto scalingFunction = scalingFactory.getGridScalingCF();
+//     EXPECT_THAT(scalingFunction, testing::Eq(nullptr));
+//     EXPECT_THROW(scalingFunction(nullptr, nullptr, nullptr, OffCF(), nullptr), std::bad_function_call);
+// }
+
+// tests for boundary conditions which are set by the user (tests both set and get functions)
+gridScalingFCtarget getScalingFCTarget(GridScalingFactory &scalingFactory)
+{
+    auto scaling = scalingFactory.getGridScalingFC();
+    void (*scalingTarget)(LBMSimulationParameter *, LBMSimulationParameter *, ICellFC *, CUstream_st * stream) =
+        (*scaling
+              .target<void (*)(LBMSimulationParameter *, LBMSimulationParameter *, ICellFC *, CUstream_st * stream)>());
+    return scalingTarget;
+}
+
+TEST(GridScalingFactoryTest, gridScalingFC)
+{
+    auto scalingFactory = GridScalingFactory();
+
+    scalingFactory.setScalingFactory(GridScalingFactory::GridScaling::ScaleK17);
+    EXPECT_TRUE(*(getScalingFCTarget(scalingFactory)) == ScaleFC_K17_redesigned)
+        << "The returned boundary condition is not the expected function ScaleFC_K17_redesigned.";
+
+    scalingFactory.setScalingFactory(GridScalingFactory::GridScaling::ScaleRhoSq);
+    EXPECT_TRUE(*(getScalingFCTarget(scalingFactory)) == ScaleFC_RhoSq_comp_27)
+        << "The returned boundary condition is not the expected function ScaleFC_RhoSq_comp_27.";
+}
+
+// gridScalingCFtarget getScalingCFTarget(GridScalingFactory &scalingFactory)
+// {
+//     auto scaling = scalingFactory.getGridScalingCF();
+//     void (*scalingTarget)(LBMSimulationParameter *, LBMSimulationParameter *, ICellCF *, OffCF, CUstream_st *stream)
+//     =
+//         (*scaling.target<void (*)(LBMSimulationParameter *, LBMSimulationParameter *, ICellCF *, OffCF, CUstream_st
+//         *stream)>());
+//     return scalingTarget;
+// }
+
+// TEST(GridScalingFactoryTest, gridScalingCF)
+// {
+//     auto scalingFactory = GridScalingFactory();
+
+//     scalingFactory.setScalingFactory(GridScalingFactory::GridScaling::ScaleK17);
+//     EXPECT_TRUE( *(getScalingCFTarget(scalingFactory)) == ScaleCF_K17_redesigned)
+//         << "The returned boundary condition is not the expected function ScaleFC_K17_redesigned.";
+
+//     scalingFactory.setScalingFactory(GridScalingFactory::GridScaling::ScaleRhoSq);
+//     EXPECT_TRUE( *(getScalingCFTarget(scalingFactory)) == ScaleCF_RhoSq_comp_27)
+//         << "The returned boundary condition is not the expected function ScaleFC_RhoSq_comp_27.";
+// }
-- 
GitLab