Download tests/src/Mod/Part/App/FeatureOffset.cpp from AbdulElahGwaith/FreeCAD: direct link, hf CLI and curl.
- Browser
- Download file 3.44 kB
-
https://huggingface.co/AbdulElahGwaith/FreeCAD/resolve/main/tests/src/Mod/Part/App/FeatureOffset.cpp
- Command line
-
hf download hf://AbdulElahGwaith/FreeCAD/tests/src/Mod/Part/App/FeatureOffset.cpp
-
curl -L -o FeatureOffset.cpp https://huggingface.co/AbdulElahGwaith/FreeCAD/resolve/main/tests/src/Mod/Part/App/FeatureOffset.cpp
3.44 kB
| // SPDX-License-Identifier: LGPL-2.1-or-later | |
| using namespace PartTestHelpers; | |
| // NOLINTBEGIN(readability-magic-numbers,cppcoreguidelines-avoid-magic-numbers) | |
| class FeatureOffsetTest: public ::testing::Test, public PartTestHelperClass | |
| { | |
| protected: | |
| static void SetUpTestSuite() | |
| { | |
| tests::initApplication(); | |
| } | |
| void SetUp() override | |
| { | |
| createTestDoc(); | |
| _offset = _doc->addObject<Part::Offset>(); | |
| _offset->Source.setValue(_boxes[0]); | |
| _offset->Value.setValue(1); | |
| _offset->Join.setValue((int)JoinType::intersection); | |
| _offset->execute(); | |
| } | |
| void TearDown() override | |
| {} | |
| Part::Offset* _offset = nullptr; // NOLINT Can't be private in a test framework | |
| }; | |
| TEST_F(FeatureOffsetTest, testOffset3D) | |
| { | |
| // Arrange | |
| Base::BoundBox3d bb = _offset->Shape.getShape().getBoundBox(); | |
| // Assert size and position | |
| // a 1x2x3 box 3doffset by 1 becomes a 3x4x5 box, so volume is 60. | |
| EXPECT_EQ(getVolume(_offset->Shape.getShape().getShape()), 60); | |
| EXPECT_TRUE(boxesMatch(bb, Base::BoundBox3d(-1, -1, -1, 2, 3, 4))); | |
| // Assert correct element Map | |
| EXPECT_EQ(_offset->Shape.getShape().countSubElements("Vertex"), 8); | |
| EXPECT_EQ(_offset->Shape.getShape().countSubElements("Edge"), 12); | |
| EXPECT_EQ(_offset->Shape.getShape().countSubElements("Face"), 6); | |
| } | |
| TEST_F(FeatureOffsetTest, testOffset3DWithExistingElementMap) | |
| { | |
| // Arrange | |
| Part::Fuse* _fuse = nullptr; // NOLINT Can't be private in a test framework | |
| _fuse = _doc->addObject<Part::Fuse>(); | |
| _fuse->Base.setValue(_boxes[0]); | |
| _fuse->Tool.setValue(_boxes[1]); | |
| _fuse->Refine.setValue(true); | |
| // Act | |
| _fuse->execute(); | |
| _offset->Source.setValue(_fuse); | |
| _offset->Value.setValue(2); | |
| _offset->execute(); | |
| Base::BoundBox3d bb = _offset->Shape.getShape().getBoundBox(); | |
| // Assert size and position | |
| // A 1x3x3 box 3doffset by 2 becomes a 5x7x7 box with volume of 245 | |
| EXPECT_EQ(getVolume(_fuse->Shape.getShape().getShape()), 9); | |
| EXPECT_EQ(getVolume(_offset->Shape.getShape().getShape()), 245); | |
| EXPECT_TRUE(boxesMatch(bb, Base::BoundBox3d(-2, -2, -2, 3, 5, 5))); | |
| // Assert correct element Map | |
| EXPECT_EQ(_offset->Shape.getShape().countSubElements("Vertex"), 8); | |
| EXPECT_EQ(_offset->Shape.getShape().countSubElements("Edge"), 12); | |
| EXPECT_EQ(_offset->Shape.getShape().countSubElements("Face"), 6); | |
| } | |
| TEST_F(FeatureOffsetTest, testOffset2D) | |
| { | |
| // Arrange | |
| Part::Offset2D* _offset2 = _doc->addObject<Part::Offset2D>(); | |
| Part::Plane* _pln = _doc->addObject<Part::Plane>(); | |
| _pln->Length.setValue(2); | |
| _pln->Width.setValue(3); | |
| _offset2->Source.setValue(_pln); | |
| _offset2->Value.setValue(1); | |
| _offset2->Join.setValue((int)JoinType::intersection); | |
| // Act | |
| _offset2->execute(); | |
| Base::BoundBox3d bb = _offset2->Shape.getShape().getBoundBox(); | |
| // Assert size and position | |
| // a 2x3 face 2doffset by 1 becomes a 4x5 face, so area is 20. | |
| EXPECT_EQ(getArea(_offset2->Shape.getShape().getShape()), 20); | |
| EXPECT_TRUE(boxesMatch(bb, Base::BoundBox3d(-1, -1, 0, 3, 4, 0))); | |
| // Assert correct element Map | |
| EXPECT_EQ(_offset2->Shape.getShape().getElementMapSize(), 9); | |
| } | |
| // NOLINTEND(readability-magic-numbers,cppcoreguidelines-avoid-magic-numbers) | |