From f91d39bac3a3005e083792abd5b3e46a470ae774 Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Fri, 19 Jan 2024 14:55:45 -0700 Subject: [PATCH] Tests/Toponaming: Add test framework for makeShapeWithElementMap --- tests/src/Mod/Part/App/CMakeLists.txt | 2 + tests/src/Mod/Part/App/TopoShapeExpansion.cpp | 23 +------ .../Part/App/TopoShapeExpansionHelpers.cpp | 26 ++++++++ .../Mod/Part/App/TopoShapeExpansionHelpers.h | 13 ++++ .../App/TopoShapeMakeShapeWithElementMap.cpp | 61 +++++++++++++++++++ 5 files changed, 104 insertions(+), 21 deletions(-) create mode 100644 tests/src/Mod/Part/App/TopoShapeExpansionHelpers.cpp create mode 100644 tests/src/Mod/Part/App/TopoShapeExpansionHelpers.h create mode 100644 tests/src/Mod/Part/App/TopoShapeMakeShapeWithElementMap.cpp diff --git a/tests/src/Mod/Part/App/CMakeLists.txt b/tests/src/Mod/Part/App/CMakeLists.txt index 9c642e65e2..4c5bedf30d 100644 --- a/tests/src/Mod/Part/App/CMakeLists.txt +++ b/tests/src/Mod/Part/App/CMakeLists.txt @@ -15,5 +15,7 @@ target_sources( ${CMAKE_CURRENT_SOURCE_DIR}/TopoShape.cpp ${CMAKE_CURRENT_SOURCE_DIR}/TopoShapeCache.cpp ${CMAKE_CURRENT_SOURCE_DIR}/TopoShapeExpansion.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/TopoShapeExpansionHelpers.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/TopoShapeMakeShapeWithElementMap.cpp ${CMAKE_CURRENT_SOURCE_DIR}/TopoShapeMapper.cpp ) diff --git a/tests/src/Mod/Part/App/TopoShapeExpansion.cpp b/tests/src/Mod/Part/App/TopoShapeExpansion.cpp index ff976589d6..dd72b48d20 100644 --- a/tests/src/Mod/Part/App/TopoShapeExpansion.cpp +++ b/tests/src/Mod/Part/App/TopoShapeExpansion.cpp @@ -2,6 +2,7 @@ #include "gtest/gtest.h" #include "src/App/InitApplication.h" +#include "TopoShapeExpansionHelpers.h" #include #include @@ -125,30 +126,10 @@ TEST_F(TopoShapeExpansionTest, makeElementCompoundTwoShapesGeneratesMap) EXPECT_EQ(4, topoShape.getMappedChildElements().size()); // two vertices and two edges } -namespace -{ - -std::pair CreateTwoCubes() -{ - auto boxMaker1 = BRepPrimAPI_MakeBox(1.0, 1.0, 1.0); - boxMaker1.Build(); - auto box1 = boxMaker1.Shape(); - - auto boxMaker2 = BRepPrimAPI_MakeBox(1.0, 1.0, 1.0); - boxMaker2.Build(); - auto box2 = boxMaker2.Shape(); - auto transform = gp_Trsf(); - transform.SetTranslation(gp_Pnt(0.0, 0.0, 0.0), gp_Pnt(1.0, 0.0, 0.0)); - box2.Location(TopLoc_Location(transform)); - - return {box1, box2}; -} -} // namespace - TEST_F(TopoShapeExpansionTest, makeElementCompoundTwoCubes) { // Arrange - auto [cube1, cube2] = CreateTwoCubes(); + auto [cube1, cube2] = TopoShapeExpansionHelpers::CreateTwoCubes(); Part::TopoShape cube1TS {cube1}; cube1TS.Tag = 1; Part::TopoShape cube2TS {cube2}; diff --git a/tests/src/Mod/Part/App/TopoShapeExpansionHelpers.cpp b/tests/src/Mod/Part/App/TopoShapeExpansionHelpers.cpp new file mode 100644 index 0000000000..ad401ee7b6 --- /dev/null +++ b/tests/src/Mod/Part/App/TopoShapeExpansionHelpers.cpp @@ -0,0 +1,26 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later + +#include "TopoShapeExpansionHelpers.h" + +#include + +namespace TopoShapeExpansionHelpers +{ + +std::pair CreateTwoCubes() +{ + auto boxMaker1 = BRepPrimAPI_MakeBox(1.0, 1.0, 1.0); + boxMaker1.Build(); + auto box1 = boxMaker1.Shape(); + + auto boxMaker2 = BRepPrimAPI_MakeBox(1.0, 1.0, 1.0); + boxMaker2.Build(); + auto box2 = boxMaker2.Shape(); + auto transform = gp_Trsf(); + transform.SetTranslation(gp_Pnt(0.0, 0.0, 0.0), gp_Pnt(1.0, 0.0, 0.0)); + box2.Location(TopLoc_Location(transform)); + + return {box1, box2}; +} + +} // namespace TopoShapeExpansionHelpers diff --git a/tests/src/Mod/Part/App/TopoShapeExpansionHelpers.h b/tests/src/Mod/Part/App/TopoShapeExpansionHelpers.h new file mode 100644 index 0000000000..d92c18f4d4 --- /dev/null +++ b/tests/src/Mod/Part/App/TopoShapeExpansionHelpers.h @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later + +#ifndef FREECAD_TOPOSHAPEEXPANSIONHELPERS_H +#define FREECAD_TOPOSHAPEEXPANSIONHELPERS_H + +#include + +namespace TopoShapeExpansionHelpers +{ +std::pair CreateTwoCubes(); +} + +#endif // FREECAD_TOPOSHAPEEXPANSIONHELPERS_H diff --git a/tests/src/Mod/Part/App/TopoShapeMakeShapeWithElementMap.cpp b/tests/src/Mod/Part/App/TopoShapeMakeShapeWithElementMap.cpp new file mode 100644 index 0000000000..f135e23303 --- /dev/null +++ b/tests/src/Mod/Part/App/TopoShapeMakeShapeWithElementMap.cpp @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later + +// Tests for the makeShapeWithElementMap method, extracted from the main set of tests for TopoShape +// due to length and complexity. + +#include "gtest/gtest.h" +#include "src/App/InitApplication.h" +#include "TopoShapeExpansionHelpers.h" +#include + +#include + +class TopoShapeMakeShapeWithElementMapTests: public ::testing::Test +{ +protected: + static void SetUpTestSuite() + { + tests::initApplication(); + } + + void SetUp() override + { + _docName = App::GetApplication().getUniqueDocumentName("test"); + App::GetApplication().newDocument(_docName.c_str(), "testUser"); + _sids = &_sid; + } + + void TearDown() override + { + App::GetApplication().closeDocument(_docName.c_str()); + } + + Part::TopoShape* Shape() + { + return &_shape; + } + + Part::TopoShape::Mapper* Mapper() + { + return &_mapper; + } + +private: + std::string _docName; + Data::ElementIDRefs _sid; + QVector* _sids = nullptr; + Part::TopoShape _shape; + Part::TopoShape::Mapper _mapper; +}; + +TEST_F(TopoShapeMakeShapeWithElementMapTests, nullShapeThrows) +{ + // Arrange + auto [cube1, cube2] = TopoShapeExpansionHelpers::CreateTwoCubes(); + std::vector sources {cube1, cube2}; + TopoDS_Vertex nullShape; + + // Act and assert + EXPECT_THROW(Shape()->makeShapeWithElementMap(nullShape, *Mapper(), sources), + Part::NullShapeException); +}