diff --git a/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27Test.cpp b/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27Test.cpp
index 72b96effb0fc142c9e231fa4d1ec16078f358e78..3c3971c3322e41859b07d3b4071d4e287fd27469 100644
--- a/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27Test.cpp
+++ b/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27Test.cpp
@@ -6,15 +6,6 @@
 
 #include <basics/config/ConfigurationFile.h>
 
-auto RealEq = [](auto value) { 
-#ifdef VF_DOUBLE_ACCURACY
-    return testing::DoubleEq(value); 
-#else 
-    return testing::FloatEq(value);
-#endif
-};
-
-
 SPtr<Parameter> initParameterClass()
 {
     std::filesystem::path filePath = __FILE__; //  assuming that the config file is stored parallel to this file.
@@ -24,65 +15,68 @@ SPtr<Parameter> initParameterClass()
     return std::make_shared<Parameter>(config, 1, 0);
 }
 
-class ExchangeData27Test_CopyEdgeNodesXZTest: public testing::Test{
-    protected:
-        SPtr<Parameter> para;
-        int level = 0;
-        int numNodes = 10;
+void setUpFsByCopyingF0(std::vector<real> &distributionVector, int numberOfNodes)
+{
+    for (uint direction = 0; direction < dirEND; direction++) {
+        distributionVector.insert(distributionVector.end(), distributionVector.begin(),
+                                  distributionVector.begin() + numberOfNodes);
+    }
+}
 
+class ExchangeData27Test_CopyEdgeNodesXZTest : public testing::Test
+{
+protected:
+    SPtr<Parameter> para;
+    int level    = 0;
+    int numNodes = 10;
 
-    void SetUp() override {
+    void SetUp() override
+    {
         para = initParameterClass();
-        para->setMaxLevel(level + 1); // setMaxLevel resizes parH
+        para->setMaxLevel(level + 1);       // setMaxLevel resizes parH
         para->initLBMSimulationParameter(); // init parH
 
-        para->getParH(level)->edgeNodesXtoZ.emplace_back(0,1,0,1);
-        para->getParH(level)->edgeNodesXtoZ.emplace_back(0,6,0,6);
-        para->getParH(level)->edgeNodesXtoZ.emplace_back(0,2,0,3);
-        para->getParH(level)->edgeNodesXtoZ.emplace_back(0,7,0,8);    
-        para->getParH(level)->edgeNodesXtoZ.emplace_back(0,7,0,8);
-        para->getParH(level)->edgeNodesXtoZ.emplace_back(0,7,0,8);    
+        para->getParH(level)->edgeNodesXtoZ.emplace_back(0, 1, 0, 1);
+        para->getParH(level)->edgeNodesXtoZ.emplace_back(0, 6, 0, 6);
+        para->getParH(level)->edgeNodesXtoZ.emplace_back(0, 2, 0, 3);
+        para->getParH(level)->edgeNodesXtoZ.emplace_back(0, 7, 0, 8);
+        para->getParH(level)->edgeNodesXtoZ.emplace_back(0, 7, 0, 8);
+        para->getParH(level)->edgeNodesXtoZ.emplace_back(0, 7, 0, 8);
     }
 };
 
-
 TEST_F(ExchangeData27Test_CopyEdgeNodesXZTest, copyEdgeNodes_XZ_CommunicationAfterFtoC_recvVectorFullSize)
-{ 
+{
     int numNodesAfterFtoC = 5; // indexInSend < 5 --> in AfterFToC
 
     // recvProcessNeighborHost
     std::vector<ProcessNeighbor27> recvProcessNeighborHost(1);
-    std::vector<real> recvFs(numNodes, 0.5);    
-    for (LBMSimulationParameter::EdgeNodePositions edgeNode : para->getParH(level)->edgeNodesXtoZ){
-        recvFs[edgeNode.indexInRecvBuffer] = 0.1;        
+    std::vector<real> recvFs(numNodes, 0.5); // 0.5s should not be copied
+    for (LBMSimulationParameter::EdgeNodePositions edgeNode : para->getParH(level)->edgeNodesXtoZ) {
+        recvFs[edgeNode.indexInRecvBuffer] = 0.1; // 0.1s should be copied
     }
-    for (uint direction = 0; direction < dirEND; direction ++){
-        recvFs.insert(recvFs.end(), recvFs.begin(), recvFs.begin()+numNodes);
-    }
-    recvProcessNeighborHost[0].f[0] = recvFs.data();
+    setUpFsByCopyingF0(recvFs, numNodes);
+    recvProcessNeighborHost[0].f[0]          = recvFs.data();
     recvProcessNeighborHost[0].numberOfNodes = numNodes;
 
     // sendProcessNeighborHost
     std::vector<ProcessNeighbor27> sendProcessNeighborHost(1);
-    std::vector<real> sendFs(27*numNodesAfterFtoC, 0.0);
-    sendProcessNeighborHost[0].f[0] = sendFs.data();
+    std::vector<real> sendFs(27 * numNodesAfterFtoC, 0.0);
+    sendProcessNeighborHost[0].f[0]          = sendFs.data();
     sendProcessNeighborHost[0].numberOfNodes = numNodesAfterFtoC;
 
     // expected
     std::vector<real> expectedFs(numNodesAfterFtoC, 0.0);
     expectedFs[1] = 0.1;
     expectedFs[3] = 0.1;
-    // std::vector<real> expectedFs;
-    for (uint direction = 0; direction < dirEND; direction ++){
-        expectedFs.insert(expectedFs.end(), expectedFs.begin(), expectedFs.begin()+numNodesAfterFtoC);
-    }
-    
+    setUpFsByCopyingF0(expectedFs, numNodesAfterFtoC);
+
     // act
     copyEdgeNodes(para->getParH(level)->edgeNodesXtoZ, recvProcessNeighborHost, sendProcessNeighborHost);
 
     // convert result to std::vector
     std::vector<real> result;
-    result.assign(sendProcessNeighborHost[0].f[0],  sendProcessNeighborHost[0].f[0] + 27*numNodesAfterFtoC);
+    result.assign(sendProcessNeighborHost[0].f[0], sendProcessNeighborHost[0].f[0] + 27 * numNodesAfterFtoC);
 
     EXPECT_THAT(result, testing::Eq(expectedFs));
 }
@@ -93,34 +87,34 @@ TEST_F(ExchangeData27Test_CopyEdgeNodesXZTest, copyEdgeNodes_XZ_CommunicateAll)
 
     // recvProcessNeighborHost
     std::vector<ProcessNeighbor27> recvProcessNeighborHost(1);
-    std::vector<real> recvFs(27*numNodes, 0.1);
-    recvProcessNeighborHost[0].f[0] = recvFs.data();
+    std::vector<real> recvFs(numNodes, 0.5); // 0.5s should not be copied
+    for (LBMSimulationParameter::EdgeNodePositions edgeNode : para->getParH(level)->edgeNodesXtoZ) {
+        recvFs[edgeNode.indexInRecvBuffer] = 0.1; // 0.1s should be copied
+    }
+    setUpFsByCopyingF0(recvFs, numNodes);
+    recvProcessNeighborHost[0].f[0]          = recvFs.data();
     recvProcessNeighborHost[0].numberOfNodes = numNodes;
-    
+
     // sendProcessNeighborHost
     std::vector<ProcessNeighbor27> sendProcessNeighborHost(1);
-    std::vector<real> sendFs(27*numNodes, 0.0);
-    sendProcessNeighborHost[0].f[0] = sendFs.data();
+    std::vector<real> sendFs(27 * numNodes, 0.0);
+    sendProcessNeighborHost[0].f[0]          = sendFs.data();
     sendProcessNeighborHost[0].numberOfNodes = numNodes;
 
-
     // expected
     std::vector<real> expectedFs(numNodes, 0.0);
     expectedFs[1] = 0.1;
     expectedFs[3] = 0.1;
     expectedFs[6] = 0.1;
     expectedFs[8] = 0.1;
-    std::vector<real> expectedFsAllDirections;
-    for (uint direction = 0; direction <= dirEND; direction ++){
-        expectedFsAllDirections.insert(expectedFsAllDirections.end(), expectedFs.begin(), expectedFs.end());
-    }
-    
+    setUpFsByCopyingF0(expectedFs, numNodes);
+
     // act
     copyEdgeNodes(para->getParH(level)->edgeNodesXtoZ, recvProcessNeighborHost, sendProcessNeighborHost);
 
     // convert result to std::vector
     std::vector<real> result;
-    result.assign(sendProcessNeighborHost[0].f[0],  sendProcessNeighborHost[0].f[0] + 27*numNodes);
+    result.assign(sendProcessNeighborHost[0].f[0], sendProcessNeighborHost[0].f[0] + 27 * numNodes);
 
-    EXPECT_THAT(result, testing::Eq(expectedFsAllDirections));
+    EXPECT_THAT(result, testing::Eq(expectedFs));
 }
\ No newline at end of file