diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 63df6fdf0a..f24d1c3b70 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -101,6 +101,9 @@ endif(BUILD_MATERIAL) if(BUILD_MESH) list (APPEND TestExecutables Mesh_tests_run) endif(BUILD_MESH) +if(BUILD_MESH_PART) + list (APPEND TestExecutables MeshPart_tests_run) +endif(BUILD_MESH_PART) if(BUILD_PART) list (APPEND TestExecutables Part_tests_run) endif(BUILD_PART) diff --git a/tests/src/Mod/CMakeLists.txt b/tests/src/Mod/CMakeLists.txt index cbf44c16e9..fdef3879bd 100644 --- a/tests/src/Mod/CMakeLists.txt +++ b/tests/src/Mod/CMakeLists.txt @@ -7,6 +7,9 @@ endif(BUILD_MATERIAL) if(BUILD_MESH) add_subdirectory(Mesh) endif(BUILD_MESH) +if(BUILD_MESH_PART) + add_subdirectory(MeshPart) +endif(BUILD_MESH_PART) if(BUILD_PART) add_subdirectory(Part) endif(BUILD_PART) diff --git a/tests/src/Mod/MeshPart/App/CMakeLists.txt b/tests/src/Mod/MeshPart/App/CMakeLists.txt new file mode 100644 index 0000000000..3d2a75e536 --- /dev/null +++ b/tests/src/Mod/MeshPart/App/CMakeLists.txt @@ -0,0 +1,11 @@ +target_sources( + MeshPart_tests_run + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/MeshPart.cpp +) + +target_include_directories( + MeshPart_tests_run + PUBLIC + ${CMAKE_BINARY_DIR} +) diff --git a/tests/src/Mod/MeshPart/App/MeshPart.cpp b/tests/src/Mod/MeshPart/App/MeshPart.cpp new file mode 100644 index 0000000000..4e8ea0c490 --- /dev/null +++ b/tests/src/Mod/MeshPart/App/MeshPart.cpp @@ -0,0 +1,103 @@ +#include +#include +#include +#include +#include +#include + +QT_WARNING_PUSH +QT_WARNING_DISABLE_CLANG("-Wextra-semi") +QT_WARNING_DISABLE_CLANG("-Woverloaded-virtual") +#include +#include +#include +#include +#include +#include +#include +QT_WARNING_POP + +// NOLINTBEGIN +TEST(SMesh, testMefisto) +{ + TopoDS_Solid box = BRepPrimAPI_MakeBox(10.0, 10.0, 10.0).Solid(); + + SMESH_Gen* gen = new SMESH_Gen(); +#if SMESH_VERSION_MAJOR >= 9 + SMESH_Mesh* mesh = gen->CreateMesh(true); + + StdMeshers_LocalLength* hyp1d = new StdMeshers_LocalLength(0, gen); + hyp1d->SetLength(1.0); + StdMeshers_Regular_1D* algo1d = new StdMeshers_Regular_1D(1, gen); + + StdMeshers_QuadranglePreference* hyp2d = new StdMeshers_QuadranglePreference(2, gen); + StdMeshers_MEFISTO_2D* algo2d = new StdMeshers_MEFISTO_2D(3, gen); +#else + SMESH_Mesh* mesh = gen->CreateMesh(0, true); + + StdMeshers_LocalLength* hyp1d = new StdMeshers_LocalLength(0, 0, gen); + hyp1d->SetLength(1.0); + StdMeshers_Regular_1D* algo1d = new StdMeshers_Regular_1D(1, 0, gen); + + StdMeshers_QuadranglePreference* hyp2d = new StdMeshers_QuadranglePreference(2, 0, gen); + StdMeshers_MEFISTO_2D* algo2d = new StdMeshers_MEFISTO_2D(3, 0, gen); +#endif + + mesh->ShapeToMesh(box); + mesh->AddHypothesis(box, 0); + mesh->AddHypothesis(box, 1); + mesh->AddHypothesis(box, 2); + mesh->AddHypothesis(box, 3); + + bool success = gen->Compute(*mesh, box); + EXPECT_EQ(success, true); + + EXPECT_EQ(mesh->NbNodes(), 1244); + EXPECT_EQ(mesh->NbTriangles(), 2484); + EXPECT_EQ(mesh->NbQuadrangles(), 0); + + delete hyp1d; + delete algo1d; + delete hyp2d; + delete algo2d; + delete mesh; + delete gen; +} + +TEST(SMesh, testStdMeshers) +{ + TopoDS_Solid box = BRepPrimAPI_MakeBox(10.0, 10.0, 10.0).Solid(); + + TopExp_Explorer exp = TopExp_Explorer(box, TopAbs_EDGE); + const TopoDS_Shape& edge = exp.Current(); + + SMESH_Gen* gen = new SMESH_Gen(); +#if SMESH_VERSION_MAJOR >= 9 + SMESH_Mesh* mesh = gen->CreateMesh(true); + + StdMeshers_LocalLength* hyp1d = new StdMeshers_LocalLength(0, gen); + hyp1d->SetLength(0.1); + StdMeshers_Regular_1D* algo1d = new StdMeshers_Regular_1D(1, gen); +#else + SMESH_Mesh* mesh = gen->CreateMesh(0, true); + + StdMeshers_LocalLength* hyp1d = new StdMeshers_LocalLength(0, 0, gen); + hyp1d->SetLength(0.1); + StdMeshers_Regular_1D* algo1d = new StdMeshers_Regular_1D(1, 0, gen); +#endif + + mesh->ShapeToMesh(box); + mesh->AddHypothesis(edge, 0); + mesh->AddHypothesis(edge, 1); + + bool success = gen->Compute(*mesh, box); + EXPECT_EQ(success, true); + + EXPECT_EQ(mesh->NbNodes(), 107); + + delete hyp1d; + delete algo1d; + delete mesh; + delete gen; +} +// NOLINTEND diff --git a/tests/src/Mod/MeshPart/CMakeLists.txt b/tests/src/Mod/MeshPart/CMakeLists.txt new file mode 100644 index 0000000000..24a4b1272d --- /dev/null +++ b/tests/src/Mod/MeshPart/CMakeLists.txt @@ -0,0 +1,17 @@ + +target_include_directories(MeshPart_tests_run PUBLIC + ${EIGEN3_INCLUDE_DIR} + ${OCC_INCLUDE_DIR} + ${Python3_INCLUDE_DIRS} + ${SMESH_INCLUDE_DIR} + ${VTK_INCLUDE_DIRS} + ${XercesC_INCLUDE_DIRS} +) + +target_link_libraries(MeshPart_tests_run + gtest_main + ${Google_Tests_LIBS} + MeshPart +) + +add_subdirectory(App)