// SPDX-License-Identifier: LGPL-2.1-or-later #include #include "Mod/Part/App/BRepMesh.h" // NOLINTBEGIN class BRepMeshTest: public ::testing::Test { protected: void SetUp() override {} void TearDown() override {} std::vector getNoDomains() const { std::vector domains; return domains; } std::vector getEmptyDomains() const { Part::BRepMesh::Domain domain; std::vector domains; domains.push_back(domain); domains.push_back(domain); return domains; } std::vector getConnectedDomains() const { Part::BRepMesh::Domain domain1; domain1.points.emplace_back(0, 0, 0); domain1.points.emplace_back(10, 0, 0); domain1.points.emplace_back(10, 10, 0); domain1.points.emplace_back(0, 10, 0); { Part::BRepMesh::Facet f1; f1.I1 = 0; f1.I2 = 1; f1.I3 = 2; domain1.facets.emplace_back(f1); } { Part::BRepMesh::Facet f2; f2.I1 = 0; f2.I2 = 2; f2.I3 = 3; domain1.facets.emplace_back(f2); } Part::BRepMesh::Domain domain2; domain2.points.emplace_back(0, 0, 0); domain2.points.emplace_back(0, 10, 0); domain2.points.emplace_back(0, 10, 10); domain2.points.emplace_back(0, 0, 10); { Part::BRepMesh::Facet f1; f1.I1 = 0; f1.I2 = 1; f1.I3 = 2; domain2.facets.emplace_back(f1); } { Part::BRepMesh::Facet f2; f2.I1 = 0; f2.I2 = 2; f2.I3 = 3; domain2.facets.emplace_back(f2); } std::vector domains; domains.push_back(domain1); domains.push_back(domain2); return domains; } std::vector getUnconnectedDomains() const { double eps = 1.0e-10; Part::BRepMesh::Domain domain1; domain1.points.emplace_back(eps, eps, eps); domain1.points.emplace_back(10, 0, 0); domain1.points.emplace_back(10, 10, 0); domain1.points.emplace_back(eps, 10, eps); { Part::BRepMesh::Facet f1; f1.I1 = 0; f1.I2 = 1; f1.I3 = 2; domain1.facets.emplace_back(f1); } { Part::BRepMesh::Facet f2; f2.I1 = 0; f2.I2 = 2; f2.I3 = 3; domain1.facets.emplace_back(f2); } Part::BRepMesh::Domain domain2; domain2.points.emplace_back(0, 0, 0); domain2.points.emplace_back(0, 10, 0); domain2.points.emplace_back(0, 10, 10); domain2.points.emplace_back(0, 0, 10); { Part::BRepMesh::Facet f1; f1.I1 = 0; f1.I2 = 1; f1.I3 = 2; domain2.facets.emplace_back(f1); } { Part::BRepMesh::Facet f2; f2.I1 = 0; f2.I2 = 2; f2.I3 = 3; domain2.facets.emplace_back(f2); } std::vector domains; domains.push_back(domain1); domains.push_back(domain2); return domains; } }; TEST_F(BRepMeshTest, testNoDomains) { std::vector points; std::vector faces; Part::BRepMesh brepMesh; brepMesh.getFacesFromDomains(getNoDomains(), points, faces); EXPECT_TRUE(points.empty()); EXPECT_TRUE(faces.empty()); } TEST_F(BRepMeshTest, testEmptyDomains) { std::vector points; std::vector faces; Part::BRepMesh brepMesh; brepMesh.getFacesFromDomains(getEmptyDomains(), points, faces); EXPECT_TRUE(points.empty()); EXPECT_TRUE(faces.empty()); } TEST_F(BRepMeshTest, testConnectedDomains) { std::vector points; std::vector faces; Part::BRepMesh brepMesh; brepMesh.getFacesFromDomains(getConnectedDomains(), points, faces); EXPECT_EQ(points.size(), 6); EXPECT_EQ(faces.size(), 4); } TEST_F(BRepMeshTest, testUnconnectedDomains) { std::vector points; std::vector faces; Part::BRepMesh brepMesh; brepMesh.getFacesFromDomains(getUnconnectedDomains(), points, faces); EXPECT_EQ(points.size(), 6); EXPECT_EQ(faces.size(), 4); } // NOLINTEND