From b90a1e37a61bf3fffffe07cab85c6393e8555343 Mon Sep 17 00:00:00 2001
From: Anna Wellmann <a.wellmann@tu-bs.de>
Date: Tue, 31 May 2022 09:02:08 +0000
Subject: [PATCH] temp

---
 .../IndexRearrangementForStreamsTest.cpp      | 248 +++++++++---------
 1 file changed, 119 insertions(+), 129 deletions(-)

diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreamsTest.cpp b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreamsTest.cpp
index 80c1917bb..b3ed57794 100644
--- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreamsTest.cpp
+++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreamsTest.cpp
@@ -11,22 +11,11 @@
 #include <gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h>
 #include <gpu/GridGenerator/grid/GridImp.h>
 
-
-auto RealEq = [](auto value) { 
-#ifdef VF_DOUBLE_ACCURACY
-    return testing::DoubleEq(value); 
-#else 
-    return testing::FloatEq(value);
-#endif
-};
-
-
 class GridBuilderDouble : public LevelGridBuilder
 {
 private:
     SPtr<Grid> grid;
     GridBuilderDouble()=default;
-
 public:
     GridBuilderDouble(SPtr<Grid> grid) : LevelGridBuilder(Device(), ""), grid(grid){};
     SPtr<Grid> getGrid(uint level) override{ return grid; };
@@ -93,47 +82,18 @@ struct CFBorderBulk {
 };
 
 
-static void initParameterClass(std::shared_ptr<Parameter> &para);
-
-class IndexRearrangementForStreamsTest
-{
-public:
-    static void setUpAndRun_splitCoarseToFineIntoBorderAndBulk(CFBorderBulk &cf, std::shared_ptr<Parameter> para)
-    {
-        SPtr<GridImpDouble> grid =
-            GridImpDouble::makeShared(nullptr, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, nullptr, Distribution(), 1);
-        grid->setFluidNodeIndicesBorder(cf.fluidNodeIndicesBorder);
-        std::shared_ptr<GridBuilderDouble> builder = std::make_shared<GridBuilderDouble>(grid);
-
-        para->setMaxLevel(cf.level + 1);
-        para->parH[cf.level]                    = std::make_shared<LBMSimulationParameter>();
-        para->parD[cf.level]                    = std::make_shared<LBMSimulationParameter>();
-        para->getParH(cf.level)->intCF.ICellCFC = &(cf.iCellCFC.front());
-        para->getParH(cf.level)->intCF.ICellCFF = &(cf.iCellCFF.front());
-        para->getParH(cf.level)->neighborX_SP   = cf.neighborX_SP;
-        para->getParH(cf.level)->neighborY_SP   = cf.neighborY_SP;
-        para->getParH(cf.level)->neighborZ_SP   = cf.neighborZ_SP;
-        para->getParH(cf.level)->intCF.kCF      = cf.sizeOfICellCf;
-        para->getParH(cf.level)->offCF.xOffCF   = &(cf.offsetCFx.front());
-        para->getParH(cf.level)->offCF.yOffCF   = &(cf.offsetCFy.front());
-        para->getParH(cf.level)->offCF.zOffCF   = &(cf.offsetCFz.front());
-
-        IndexRearrangementForStreams testSubject = IndexRearrangementForStreams(para, builder);
-
-        testSubject.splitCoarseToFineIntoBorderAndBulk(cf.level);
-    };
-};
-
-void initParameterClass(std::shared_ptr<Parameter> &para)
+static SPtr<Parameter> initParameterClass()
 {
     std::filesystem::path filePath = __FILE__; //  assuming that the config file is stored parallel to this file.
     filePath.replace_filename("IndexRearrangementForStreamsTest.cfg");
     vf::basics::ConfigurationFile config;
     config.load(filePath.string());
-    para = std::make_shared<Parameter>(config, 1, 0);
+    return std::make_shared<Parameter>(config, 1, 0);
 }
 
-bool vectorsAreEqual(std::vector<uint> vector1, std::vector<uint> vectorExpected)
+
+template <typename T>
+bool vectorsAreEqual(std::vector<T> vector1, std::vector<T> vectorExpected)
 {
     return vector1 == vectorExpected;
 }
@@ -157,101 +117,131 @@ bool vectorsAreEqual(real *vector1, std::vector<uint> vectorExpected)
 }
 
 
-
-
-
-TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, sizeIsConstant)
+class IndexRearrangementForStreamsTest_IndicesCFBorderBulkTest : public testing::Test 
 {
+    public:
     CFBorderBulk cf;
     SPtr<Parameter> para;
-    initParameterClass(para);
-    IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
-    EXPECT_TRUE(para->getParH(cf.level)->intCFBorder.kCF + para->getParH(cf.level)->intCFBulk.kCF == cf.sizeOfICellCf);
-}
 
-TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, borderSizeCFC)
-{
-    CFBorderBulk cf;
-    SPtr<Parameter> para;
-    initParameterClass(para);
-    IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
-    EXPECT_EQ(para->getParH(cf.level)->intCFBorder.kCF, (uint)cf.iCellCfcBorder_expected.size());
-}
+    private:
+        static std::unique_ptr<IndexRearrangementForStreams> createTestSubjectCFBorderBulk(CFBorderBulk &cf, std::shared_ptr<Parameter> para)
+    {
+        SPtr<GridImpDouble> grid =
+            GridImpDouble::makeShared(nullptr, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, nullptr, Distribution(), 1);
+        grid->setFluidNodeIndicesBorder(cf.fluidNodeIndicesBorder);
+        std::shared_ptr<GridBuilderDouble> builder = std::make_shared<GridBuilderDouble>(grid);
 
-TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, borderVectorCFC)
-{
-    CFBorderBulk cf;
-    SPtr<Parameter> para;
-    initParameterClass(para);
-    IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
-    EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBorder.ICellCFC, cf.iCellCfcBorder_expected));
-}
+        para->setMaxLevel(cf.level + 1);        // setMaxLevel resizes parH and parD
+        para->parH[cf.level]                    = std::make_shared<LBMSimulationParameter>();
+        para->parD[cf.level]                    = std::make_shared<LBMSimulationParameter>();
+        para->getParH(cf.level)->intCF.ICellCFC = &(cf.iCellCFC.front());
+        para->getParH(cf.level)->intCF.ICellCFF = &(cf.iCellCFF.front());
+        para->getParH(cf.level)->neighborX_SP   = cf.neighborX_SP;
+        para->getParH(cf.level)->neighborY_SP   = cf.neighborY_SP;
+        para->getParH(cf.level)->neighborZ_SP   = cf.neighborZ_SP;
+        para->getParH(cf.level)->intCF.kCF      = cf.sizeOfICellCf;
+        para->getParH(cf.level)->offCF.xOffCF   = &(cf.offsetCFx.front());
+        para->getParH(cf.level)->offCF.yOffCF   = &(cf.offsetCFy.front());
+        para->getParH(cf.level)->offCF.zOffCF   = &(cf.offsetCFz.front());
 
-TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkSizeCFC)
-{
-    CFBorderBulk cf;
-    SPtr<Parameter> para;
-    initParameterClass(para);
-    IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
-    EXPECT_EQ(para->getParH(cf.level)->intCFBulk.kCF, (uint)cf.iCellCfcBulk_expected.size());
-}
+        return std::make_unique<IndexRearrangementForStreams>(para, builder);        
+    };
 
-TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkVectorCFC)
-{
-    CFBorderBulk cf;
-    SPtr<Parameter> para;
-    initParameterClass(para);
-    IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
-    EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBulk.ICellCFC, cf.iCellCfcBulk_expected));
-}
+    public:
 
-TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, borderSizeCFF)
-{
-    CFBorderBulk cf;
-    SPtr<Parameter> para;
-    initParameterClass(para);
-    IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
-    EXPECT_EQ(para->getParH(cf.level)->intCFBorder.kCF, (uint)cf.iCellCffBorder_expected.size());
-}
+    void SetUp() override {
+        para = initParameterClass();
+        auto testSubject = createTestSubjectCFBorderBulk(cf, para);        
+        testSubject->splitCoarseToFineIntoBorderAndBulk(cf.level);
+    }
 
-TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, borderVectorCFF)
-{
-    CFBorderBulk cf;
-    SPtr<Parameter> para;
-    initParameterClass(para);
-    IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
-    EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBorder.ICellCFF, cf.iCellCffBorder_expected));
-}
+    void TearDown() override {
+
+    }
+
+};
 
-TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkSizeCFF)
-{
-    CFBorderBulk cf;
-    SPtr<Parameter> para;
-    initParameterClass(para);
-    IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
-    EXPECT_EQ(para->getParH(cf.level)->intCFBulk.kCF, (uint)cf.iCellCffBulk_expected.size());
-}
 
-TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkVectorCFF)
+TEST_F(IndexRearrangementForStreamsTest_IndicesCFBorderBulkTest, splitCoarseToFineIntoBorderAndBulk)
 {
-    CFBorderBulk cf;
-    SPtr<Parameter> para;
-    initParameterClass(para);
-    IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
-    EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBulk.ICellCFF, cf.iCellCffBulk_expected));
+    EXPECT_THAT(para->getParH(cf.level)->intCFBorder.kCF + para->getParH(cf.level)->intCFBulk.kCF, testing::Eq(cf.sizeOfICellCf)) << "The number of interpolation cells from coarse to fine changed during reordering.";
+    EXPECT_THAT(para->getParH(cf.level)->intCFBorder.kCF, testing::Eq((uint) cf.iCellCfcBorder_expected.size()));
 }
 
-TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, offsetsVectorsCFC)
-{
-    CFBorderBulk cf;
-    SPtr<Parameter> para;
-    initParameterClass(para);
-    IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
-
-    EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCF.xOffCF, cf.offsetCFx_Border_expected));
-    EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCFBulk.xOffCF, cf.offsetCFx_Bulk_expected));
-    EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCF.yOffCF, cf.offsetCFy_Border_expected));
-    EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCFBulk.yOffCF, cf.offsetCFy_Bulk_expected));
-    EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCF.zOffCF, cf.offsetCFz_Border_expected));
-    EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCFBulk.zOffCF, cf.offsetCFz_Bulk_expected));
-}
\ No newline at end of file
+// TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, borderVectorCFC)
+// {
+//     CFBorderBulk cf;
+//     SPtr<Parameter> para;
+//     initParameterClass(para);
+//     IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
+//     EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBorder.ICellCFC, cf.iCellCfcBorder_expected));
+// }
+
+// TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkSizeCFC)
+// {
+//     CFBorderBulk cf;
+//     SPtr<Parameter> para;
+//     initParameterClass(para);
+//     IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
+//     EXPECT_EQ(para->getParH(cf.level)->intCFBulk.kCF, (uint)cf.iCellCfcBulk_expected.size());
+// }
+
+// TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkVectorCFC)
+// {
+//     CFBorderBulk cf;
+//     SPtr<Parameter> para;
+//     initParameterClass(para);
+//     IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
+//     EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBulk.ICellCFC, cf.iCellCfcBulk_expected));
+// }
+
+// TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, borderSizeCFF)
+// {
+//     CFBorderBulk cf;
+//     SPtr<Parameter> para;
+//     initParameterClass(para);
+//     IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
+//     EXPECT_EQ(para->getParH(cf.level)->intCFBorder.kCF, (uint)cf.iCellCffBorder_expected.size());
+// }
+
+// TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, borderVectorCFF)
+// {
+//     CFBorderBulk cf;
+//     SPtr<Parameter> para;
+//     initParameterClass(para);
+//     IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
+//     EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBorder.ICellCFF, cf.iCellCffBorder_expected));
+// }
+
+// TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkSizeCFF)
+// {
+//     CFBorderBulk cf;
+//     SPtr<Parameter> para;
+//     initParameterClass(para);
+//     IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
+//     EXPECT_EQ(para->getParH(cf.level)->intCFBulk.kCF, (uint)cf.iCellCffBulk_expected.size());
+// }
+
+// TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, bulkVectorCFF)
+// {
+//     CFBorderBulk cf;
+//     SPtr<Parameter> para;
+//     initParameterClass(para);
+//     IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
+//     EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->intCFBulk.ICellCFF, cf.iCellCffBulk_expected));
+// }
+
+// TEST(IndexRearrangementForStreamsTest_IndicesCFBorderBulk, offsetsVectorsCFC)
+// {
+//     CFBorderBulk cf;
+//     SPtr<Parameter> para;
+//     initParameterClass(para);
+//     IndexRearrangementForStreamsTest::setUpAndRun_splitCoarseToFineIntoBorderAndBulk(cf, para);
+
+//     EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCF.xOffCF, cf.offsetCFx_Border_expected));
+//     EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCFBulk.xOffCF, cf.offsetCFx_Bulk_expected));
+//     EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCF.yOffCF, cf.offsetCFy_Border_expected));
+//     EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCFBulk.yOffCF, cf.offsetCFy_Bulk_expected));
+//     EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCF.zOffCF, cf.offsetCFz_Border_expected));
+//     EXPECT_TRUE(vectorsAreEqual(para->getParH(cf.level)->offCFBulk.zOffCF, cf.offsetCFz_Bulk_expected));
+// }
\ No newline at end of file
-- 
GitLab