From 6f36a2124f6d5995fac56cceeb01c007ebb7cbf9 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sat, 26 Oct 2024 01:02:24 +0200 Subject: [PATCH] Test: Add unit test for pad --- tests/src/Mod/PartDesign/App/CMakeLists.txt | 1 + tests/src/Mod/PartDesign/App/Pad.cpp | 94 +++++++++++++++++++++ tests/src/Mod/PartDesign/CMakeLists.txt | 1 + 3 files changed, 96 insertions(+) create mode 100644 tests/src/Mod/PartDesign/App/Pad.cpp diff --git a/tests/src/Mod/PartDesign/App/CMakeLists.txt b/tests/src/Mod/PartDesign/App/CMakeLists.txt index 109d7e6842..007fd820de 100644 --- a/tests/src/Mod/PartDesign/App/CMakeLists.txt +++ b/tests/src/Mod/PartDesign/App/CMakeLists.txt @@ -4,4 +4,5 @@ target_sources( PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/DatumPlane.cpp ${CMAKE_CURRENT_SOURCE_DIR}/ShapeBinder.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/Pad.cpp ) diff --git a/tests/src/Mod/PartDesign/App/Pad.cpp b/tests/src/Mod/PartDesign/App/Pad.cpp new file mode 100644 index 0000000000..a4bd4af4f4 --- /dev/null +++ b/tests/src/Mod/PartDesign/App/Pad.cpp @@ -0,0 +1,94 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later + +#include +#include "src/App/InitApplication.h" + +#include +#include +#include +#include +#include +#include + +// NOLINTBEGIN(readability-magic-numbers,cppcoreguidelines-avoid-magic-numbers) + +class PadTest: public ::testing::Test +{ +protected: + static void SetUpTestSuite() + { + tests::initApplication(); + } + + void SetUp() override + { + _doc = App::GetApplication().newDocument("Pad_test", "testUser"); + _body = dynamic_cast(_doc->addObject("PartDesign::Body")); + _sketch = dynamic_cast( + _doc->addObject("Sketcher::SketchObject", "Sketch")); + _body->addObject(_sketch); + + _sketch->AttachmentSupport.setValue(_doc->getObject("XY_Plane"), ""); + _sketch->MapMode.setValue("FlatFace"); + Part::GeomCircle circle; + circle.setRadius(10.0); + _sketch->addGeometry(&circle, false); + } + + void TearDown() override + { + App::GetApplication().closeDocument(_doc->getName()); + } + + App::Document* getDocument() const + { + return _doc; + } + + PartDesign::Body* getBody() const + { + return _body; + } + + Sketcher::SketchObject* getSketch() const + { + return _sketch; + } + +private: + App::Document* _doc = nullptr; + PartDesign::Body* _body = nullptr; + Sketcher::SketchObject* _sketch = nullptr; +}; + +TEST_F(PadTest, TestMidPlaneTwoLength) +{ + auto doc = getDocument(); + auto body = getBody(); + auto sketch = getSketch(); + + doc->recompute(); + + auto pad = dynamic_cast(doc->addObject("PartDesign::Pad", "Pad")); + body->addObject(pad); + pad->Profile.setValue(sketch, {""}); + pad->Direction.setValue(0.0, 0.0, 1.0); + pad->Midplane.setValue(true); + pad->Length.setValue(10.0); + pad->Length2.setValue(20.0); + + pad->Type.setValue("TwoLengths"); + + doc->recompute(); + + auto bbox = pad->Shape.getBoundingBox(); + + EXPECT_DOUBLE_EQ(bbox.MaxX, 10.0); + EXPECT_DOUBLE_EQ(bbox.MinX, -10.0); + EXPECT_DOUBLE_EQ(bbox.MaxY, 10.0); + EXPECT_DOUBLE_EQ(bbox.MinY, -10.0); + EXPECT_DOUBLE_EQ(bbox.MaxZ, 10.0); + EXPECT_DOUBLE_EQ(bbox.MinZ, -20.0); +} + +// NOLINTEND(readability-magic-numbers,cppcoreguidelines-avoid-magic-numbers) diff --git a/tests/src/Mod/PartDesign/CMakeLists.txt b/tests/src/Mod/PartDesign/CMakeLists.txt index d6cb13c3d3..2077c3f42e 100644 --- a/tests/src/Mod/PartDesign/CMakeLists.txt +++ b/tests/src/Mod/PartDesign/CMakeLists.txt @@ -10,6 +10,7 @@ target_link_libraries(PartDesign_tests_run gtest_main ${Google_Tests_LIBS} PartDesign + Sketcher ) add_subdirectory(App)