diff --git a/tests/MeshDataBaseForTests.cpp b/tests/MeshDataBaseForTests.cpp index 8a873625a365fd3aed7ff23ecdfb82e91bf72926..8debe252a86fac67463ffc74ab17e1f9ccf141ea 100644 --- a/tests/MeshDataBaseForTests.cpp +++ b/tests/MeshDataBaseForTests.cpp @@ -1,14 +1,19 @@ #include <MeshDataBaseForTests.hpp> -#include <utils/PugsAssert.hpp> - #include <mesh/CartesianMeshBuilder.hpp> +#include <mesh/Connectivity.hpp> +#include <utils/PugsAssert.hpp> const MeshDataBaseForTests* MeshDataBaseForTests::m_instance = nullptr; MeshDataBaseForTests::MeshDataBaseForTests() { - std::make_shared<CartesianMeshBuilder>(TinyVector<3>{0, 1, 0}, TinyVector<3>{2, -1, 3}, - TinyVector<3, size_t>{6, 7, 3}); + m_cartesian_1d_mesh = CartesianMeshBuilder{TinyVector<1>{-1}, TinyVector<1>{3}, TinyVector<1, size_t>{23}}.mesh(); + + m_cartesian_2d_mesh = + CartesianMeshBuilder{TinyVector<2>{0, -1}, TinyVector<2>{3, 2}, TinyVector<2, size_t>{6, 7}}.mesh(); + + m_cartesian_3d_mesh = + CartesianMeshBuilder{TinyVector<3>{0, 1, 0}, TinyVector<3>{2, -1, 3}, TinyVector<3, size_t>{6, 7, 4}}.mesh(); } const MeshDataBaseForTests& @@ -31,3 +36,20 @@ MeshDataBaseForTests::destroy() delete m_instance; m_instance = nullptr; } + +template <size_t Dimension> +const Mesh<Connectivity<Dimension>>& +MeshDataBaseForTests::cartesianMesh() const +{ + if constexpr (Dimension == 1) { + return dynamic_cast<const Mesh<Connectivity<Dimension>>&>(*m_cartesian_1d_mesh); + } else if constexpr (Dimension == 2) { + return dynamic_cast<const Mesh<Connectivity<Dimension>>&>(*m_cartesian_2d_mesh); + } else if constexpr (Dimension == 3) { + return dynamic_cast<const Mesh<Connectivity<Dimension>>&>(*m_cartesian_3d_mesh); + } +} + +template const Mesh<Connectivity<1>>& MeshDataBaseForTests::cartesianMesh<1>() const; +template const Mesh<Connectivity<2>>& MeshDataBaseForTests::cartesianMesh<2>() const; +template const Mesh<Connectivity<3>>& MeshDataBaseForTests::cartesianMesh<3>() const; diff --git a/tests/MeshDataBaseForTests.hpp b/tests/MeshDataBaseForTests.hpp index 31dad8f384b8c96d2d325940a3a4e3267f6c5793..2a1b1c06c864f37981fd275067e0994a589afaac 100644 --- a/tests/MeshDataBaseForTests.hpp +++ b/tests/MeshDataBaseForTests.hpp @@ -3,6 +3,12 @@ #include <mesh/IMesh.hpp> +template <size_t Dimension> +class Connectivity; + +template <typename ConnectivityT> +class Mesh; + #include <memory> class MeshDataBaseForTests @@ -12,7 +18,14 @@ class MeshDataBaseForTests static const MeshDataBaseForTests* m_instance; + std::shared_ptr<const IMesh> m_cartesian_1d_mesh; + std::shared_ptr<const IMesh> m_cartesian_2d_mesh; + std::shared_ptr<const IMesh> m_cartesian_3d_mesh; + public: + template <size_t Dimension> + const Mesh<Connectivity<Dimension>>& cartesianMesh() const; + static const MeshDataBaseForTests& get(); static void create(); static void destroy();