Commit 25075c0f authored by Lukas Riedel's avatar Lukas Riedel 📝

Fix boundary condition manager test

Make tests properly fail if they never evaluate the respective
expressions. Update grid configuration to only contain a single cell.
parent 85549071
......@@ -40,6 +40,8 @@ using BC = Dune::Dorie::BoundaryCondition<typename Traits::RF>;
/* ------------------------------------------------------------------------- */
// Test BC factory creating BCs from YAML nodes
// This tests checks if the construction throws appropriate exceptions for
// incompatible input.
/// BCFactory fixture. Create three factories with a different mode each.
class BCFactory : public ::testing::Test
......@@ -59,7 +61,7 @@ protected:
void SetUp () override
{
auto [inifile, log, helper] = Dune::Dorie::Setup::init(_argc, _argv);
auto log = Dune::Dorie::create_logger(Dune::Dorie::log_base, helper);
_bcf_none = std::make_unique<BCF<Mode::none>>(log);
_bcf_richards = std::make_unique<BCF<Mode::richards>>(log);
_bcf_transport = std::make_unique<BCF<Mode::transport>>(log);
......@@ -126,6 +128,7 @@ TEST_F(BCFactory, Outflow)
/* ------------------------------------------------------------------------- */
// Test BC manager and loaded BC data.
// This verifies that YAML data is properly interpreted
/// BoundaryConditionManager fixture
/** \tparam T BCMMode wrapped into an integral constant to appear as type
......@@ -199,7 +202,7 @@ TEST_F(BCManager, Neumann)
auto gv = _grid->leafGridView();
auto cell = *Dune::elements(gv).begin();
if (not cell.hasBoundaryIntersections()) {
ADD_FAILURE();
FAIL();
}
for (auto&& is : Dune::intersections(gv, cell)) {
const auto coords = is.geometry().center();
......@@ -220,8 +223,11 @@ TEST_F(BCManager, Neumann)
dynamic_cast<NeumannBoundaryCondition<double>&>(*bc);
EXPECT_TRUE(bc_neumann.horizontal_projection());
}
return;
}
}
FAIL();
}
TEST_F(BCManager, Dirichlet)
......@@ -229,7 +235,7 @@ TEST_F(BCManager, Dirichlet)
auto gv = _grid->leafGridView();
auto cell = *Dune::elements(gv).begin();
if (not cell.hasBoundaryIntersections()) {
ADD_FAILURE();
FAIL();
}
for (auto&& is : Dune::intersections(gv, cell)) {
const auto coords = is.geometry().center();
......@@ -259,8 +265,11 @@ TEST_F(BCManager, Dirichlet)
EXPECT_EQ(bc->type(), Operator::BCType::Neumann);
EXPECT_DOUBLE_EQ(bc->evaluate(time), 0.0);
}
return;
}
}
FAIL();
}
TEST_F(BCManager, Outflow)
......@@ -268,11 +277,11 @@ TEST_F(BCManager, Outflow)
auto gv = _grid->leafGridView();
auto cell = *Dune::elements(gv).begin();
if (not cell.hasBoundaryIntersections()) {
ADD_FAILURE();
FAIL();
}
for (auto&& is : Dune::intersections(gv, cell)) {
const auto coords = is.geometry().center();
if (Dune::FloatCmp::eq(coords[1], 1.0))
if (Dune::FloatCmp::eq(coords[0], 0.0))
{
for (auto time: {0.0, 1.0, 1.5, 1.9}) {
_manager->set_time(time);
......@@ -284,8 +293,11 @@ TEST_F(BCManager, Outflow)
EXPECT_DOUBLE_EQ(time_int.begin, 0.0);
EXPECT_DOUBLE_EQ(time_int.end, 2.0);
}
return;
}
}
FAIL();
}
// --- Main Function --- //
......
......@@ -5,7 +5,7 @@ _asset_path = "${PROJECT_SOURCE_DIR}/test"
[grid]
dimensions = 2
initialLevel = 1
initialLevel = 0
gridType = rectangular
cells = 1 1
extensions = 1 1
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment