diff --git a/src/gpu/VirtualFluids_GPU/Factories/BoundaryConditionFactoryTest.cpp b/src/gpu/VirtualFluids_GPU/Factories/BoundaryConditionFactoryTest.cpp
index d153c26ac9de8aa6f6b7382a9aa30dd7e9d6244f..599f927504fa93945cdca23a5ae527b1aa170710 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 0000000000000000000000000000000000000000..c371cab6ea01ef8d8098c19770d9879602b58fc9
--- /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.";
+// }