-
Anna Wellmann authoredAnna Wellmann authored
GridScalingKernelManagerTest.cpp 3.12 KiB
#include <gmock/gmock.h>
#include <stdexcept>
#include "GridScalingKernelManager.h"
#include "Factories/GridScalingFactory.h"
#include "Parameter/Parameter.h"
#include "PointerDefinitions.h"
class GridScalingKernelManagerTest_Initialization : public testing::Test
{
protected:
GridScalingFactory scalingFactory;
SPtr<Parameter> para = std::make_shared<Parameter>();
void SetUp() override
{
para->setGridX({2, 8});
para->setGridY({2, 8});
para->setGridZ({2, 8});
para->setDistX({0, 0});
para->setDistY({0, 0});
para->setDistZ({0, 0});
}
};
TEST_F(GridScalingKernelManagerTest_Initialization, singleLevel_noScalingFactoryProvided_doesNotThrow)
{
// only one level --> no scaling factory needed --> no error
para->initLBMSimulationParameter();
EXPECT_NO_THROW(GridScalingKernelManager(para, nullptr));
}
TEST_F(GridScalingKernelManagerTest_Initialization, singleLevel_scalingFactoryProvided_doesNotThrow)
{
// only one level --> no scaling function needed --> no error
para->initLBMSimulationParameter();
EXPECT_NO_THROW(GridScalingKernelManager(para, &scalingFactory));
}
TEST_F(GridScalingKernelManagerTest_Initialization, singleLevel_scalingFactoryAndFunctionProvided_doesNotThrow)
{
// only one level, but the user provided a scaling function anyway --> no error
para->initLBMSimulationParameter();
scalingFactory.setScalingFactory(GridScalingFactory::GridScaling::ScaleCompressible);
EXPECT_NO_THROW(GridScalingKernelManager(para, &scalingFactory));
}
TEST_F(GridScalingKernelManagerTest_Initialization, multipleLevels_notScalingFactoryProvided_throws)
{
// multiple levels, but the user forgot the scaling factory --> error
para->setMaxLevel(2);
para->initLBMSimulationParameter();
EXPECT_THROW(GridScalingKernelManager(para, nullptr), std::runtime_error);
}
TEST_F(GridScalingKernelManagerTest_Initialization, multipleLevelWithoutInterpolationNodes_noScalingFunctionProvided_doesNotThrow)
{
// multiple levels, but no interpolation nodes specified --> no scaling function needed --> no error
para->setMaxLevel(2);
para->initLBMSimulationParameter();
EXPECT_NO_THROW(GridScalingKernelManager(para, &scalingFactory));
}
TEST_F(GridScalingKernelManagerTest_Initialization, multipleLevelWithoutInterpolationNodes_scalingFunctionProvided_doesNotThrow)
{
// multiple levels and NO interpolation nodes specified, but the user provided a scaling function anyway --> no error
para->setMaxLevel(2);
para->initLBMSimulationParameter();
scalingFactory.setScalingFactory(GridScalingFactory::GridScaling::ScaleRhoSq);
EXPECT_NO_THROW(GridScalingKernelManager(para, &scalingFactory));
}
TEST_F(GridScalingKernelManagerTest_Initialization, multipleLevelWithInterpolationNodes_noScalingFunctionProvided_throws)
{
// multiple levels and interpolation nodes specified, but the user forgot to set the scalingFunction --> error
para->setMaxLevel(2);
para->initLBMSimulationParameter();
para->getParD(0)->fineToCoarse.numberOfCells = 100;
EXPECT_THROW(GridScalingKernelManager(para, &scalingFactory), std::runtime_error);
}