Skip to content
Snippets Groups Projects
Commit 16a90639 authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Add tests for shallow copies and assertions failure

parent fc69bd74
No related branches found
No related tags found
1 merge request!89Add missing compatibility check when affecting lists to R^d or R^dxd
...@@ -258,7 +258,7 @@ class DiscreteFunctionP0 : public IDiscreteFunction ...@@ -258,7 +258,7 @@ class DiscreteFunctionP0 : public IDiscreteFunction
DiscreteFunctionP0(const std::shared_ptr<const MeshType>& mesh, const CellValue<DataType>& cell_value) DiscreteFunctionP0(const std::shared_ptr<const MeshType>& mesh, const CellValue<DataType>& cell_value)
: m_mesh{mesh}, m_cell_values{cell_value} : m_mesh{mesh}, m_cell_values{cell_value}
{ {
Assert(mesh->connectivity().shared_ptr() == cell_value.connectivity_ptr()); Assert(mesh->shared_connectivity() == cell_value.connectivity_ptr());
} }
DiscreteFunctionP0() noexcept = delete; DiscreteFunctionP0() noexcept = delete;
......
...@@ -49,8 +49,12 @@ TEST_CASE("DiscreteFunctionP0", "[scheme]") ...@@ -49,8 +49,12 @@ TEST_CASE("DiscreteFunctionP0", "[scheme]")
REQUIRE(same_values(h, zero)); REQUIRE(same_values(h, zero));
REQUIRE(same_values(h, h_values)); REQUIRE(same_values(h, h_values));
DiscreteFunctionP0<Dimension, TinyVector<Dimension>> shallow_h{mesh};
shallow_h = h;
copy_to(MeshDataManager::instance().getMeshData(*mesh).xj(), h_values); copy_to(MeshDataManager::instance().getMeshData(*mesh).xj(), h_values);
REQUIRE(same_values(shallow_h, h_values));
REQUIRE(same_values(h, h_values)); REQUIRE(same_values(h, h_values));
REQUIRE(not same_values(h, zero)); REQUIRE(not same_values(h, zero));
...@@ -2296,4 +2300,69 @@ TEST_CASE("DiscreteFunctionP0", "[scheme]") ...@@ -2296,4 +2300,69 @@ TEST_CASE("DiscreteFunctionP0", "[scheme]")
} }
} }
} }
#ifndef NDEBUG
SECTION("error")
{
SECTION("different meshes")
{
SECTION("1D")
{
constexpr size_t Dimension = 1;
std::shared_ptr mesh_1 = MeshDataBaseForTests::get().cartesianMesh1D();
std::shared_ptr mesh_2 =
std::make_shared<Mesh<Connectivity<Dimension>>>(mesh_1->shared_connectivity(), mesh_1->xr());
DiscreteFunctionP0<Dimension, double> f1{mesh_1};
DiscreteFunctionP0<Dimension, double> f2{mesh_2};
REQUIRE_THROWS_AS(f1 = f2, AssertError);
REQUIRE_THROWS_AS(copy_to(f1, f2), AssertError);
REQUIRE_THROWS_AS(f1 + f2, AssertError);
REQUIRE_THROWS_AS(f1 - f2, AssertError);
REQUIRE_THROWS_AS(f1 * f2, AssertError);
REQUIRE_THROWS_AS(f1 / f2, AssertError);
}
SECTION("2D")
{
constexpr size_t Dimension = 2;
std::shared_ptr mesh_1 = MeshDataBaseForTests::get().cartesianMesh2D();
std::shared_ptr mesh_2 =
std::make_shared<Mesh<Connectivity<Dimension>>>(mesh_1->shared_connectivity(), mesh_1->xr());
DiscreteFunctionP0<Dimension, double> f1{mesh_1};
DiscreteFunctionP0<Dimension, double> f2{mesh_2};
REQUIRE_THROWS_AS(f1 = f2, AssertError);
REQUIRE_THROWS_AS(copy_to(f1, f2), AssertError);
REQUIRE_THROWS_AS(f1 + f2, AssertError);
REQUIRE_THROWS_AS(f1 - f2, AssertError);
REQUIRE_THROWS_AS(f1 * f2, AssertError);
REQUIRE_THROWS_AS(f1 / f2, AssertError);
}
SECTION("3D")
{
constexpr size_t Dimension = 3;
std::shared_ptr mesh_1 = MeshDataBaseForTests::get().cartesianMesh3D();
std::shared_ptr mesh_2 =
std::make_shared<Mesh<Connectivity<Dimension>>>(mesh_1->shared_connectivity(), mesh_1->xr());
DiscreteFunctionP0<Dimension, double> f1{mesh_1};
DiscreteFunctionP0<Dimension, double> f2{mesh_2};
REQUIRE_THROWS_AS(f1 = f2, AssertError);
REQUIRE_THROWS_AS(copy_to(f1, f2), AssertError);
REQUIRE_THROWS_AS(f1 + f2, AssertError);
REQUIRE_THROWS_AS(f1 - f2, AssertError);
REQUIRE_THROWS_AS(f1 * f2, AssertError);
REQUIRE_THROWS_AS(f1 / f2, AssertError);
}
}
}
#endif // NDEBUG
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment