| | |
| |
|
| | #include "gtest/gtest.h" |
| | #include <gmock/gmock.h> |
| |
|
| | #include <src/App/InitApplication.h> |
| |
|
| | #include <App/Application.h> |
| | #include <App/Document.h> |
| | #include <App/DocumentObject.h> |
| | #include <App/GeoFeatureGroupExtension.h> |
| | #include <Base/Interpreter.h> |
| |
|
| | using namespace App; |
| |
|
| | |
| |
|
| | class DocumentObjectTest: public ::testing::Test |
| | { |
| | protected: |
| | static void SetUpTestSuite() |
| | { |
| | tests::initApplication(); |
| | } |
| |
|
| | void SetUp() override |
| | { |
| | _docName = App::GetApplication().getUniqueDocumentName("test"); |
| | _doc = App::GetApplication().newDocument(_docName.c_str(), "testUser"); |
| | } |
| |
|
| | void TearDown() override |
| | { |
| | App::GetApplication().closeDocument(_docName.c_str()); |
| | } |
| |
|
| | |
| | std::string _docName {}; |
| | App::Document* _doc {}; |
| | |
| | }; |
| |
|
| |
|
| | TEST_F(DocumentObjectTest, getSubObjectList) |
| | { |
| | |
| |
|
| | |
| | auto boxName {_doc->addObject("Part::Box")->getNameInDocument()}; |
| | |
| | auto cylName {_doc->addObject("Part::Cylinder")->getNameInDocument()}; |
| | |
| | auto part {_doc->addObject("App::Part")}; |
| | |
| | auto partName {part->getNameInDocument()}; |
| | |
| | auto subName {std::string()}; |
| |
|
| | |
| | |
| | auto sizesNoFlatten {std::vector<int>()}; |
| | |
| | |
| | auto sizesFlatten {std::vector<int>()}; |
| | |
| | |
| | auto cmd {std::string()}; |
| |
|
| | |
| | |
| | Base::Interpreter().runString("from BOPTools import BOPFeatures"); |
| | Base::Interpreter().runString("bp = BOPFeatures.BOPFeatures(App.activeDocument())"); |
| | cmd = "bp.make_multi_fuse([\""; |
| | cmd += boxName; |
| | cmd += "\", \""; |
| | cmd += cylName; |
| | cmd += "\", ])"; |
| | Base::Interpreter().runString(cmd.c_str()); |
| | Base::Interpreter().runString("App.ActiveDocument.recompute()"); |
| | |
| | auto fuseName {_doc->getObject("Fusion")->getNameInDocument()}; |
| |
|
| | |
| | |
| | subName = fuseName; |
| | subName += "."; |
| | subName += boxName; |
| | subName += ".Edge1"; |
| |
|
| | |
| | |
| | cmd = "App.ActiveDocument.getObject(\""; |
| | cmd += partName; |
| | cmd += "\").addObject(App.ActiveDocument.getObject(\""; |
| | cmd += fuseName; |
| | cmd += "\"))"; |
| | Base::Interpreter().runString(cmd.c_str()); |
| | Base::Interpreter().runString("App.ActiveDocument.recompute()"); |
| |
|
| | |
| | |
| | auto docSubObjsNoSubName {std::vector<DocumentObject*>()}; |
| | |
| | |
| | auto docSubObjsWithSubName {std::vector<DocumentObject*>()}; |
| | |
| | |
| | auto docSubObjsWithSubSizes {std::vector<DocumentObject*>()}; |
| | |
| | |
| | auto docSubObjsFlatten {std::vector<DocumentObject*>()}; |
| |
|
| | |
| | docSubObjsNoSubName = part->getSubObjectList(nullptr); |
| | docSubObjsWithSubName = part->getSubObjectList(subName.c_str()); |
| | docSubObjsWithSubSizes = part->getSubObjectList(subName.c_str(), &sizesNoFlatten); |
| | docSubObjsFlatten = part->getSubObjectList(subName.c_str(), &sizesFlatten, true); |
| |
|
| | |
| |
|
| | |
| | |
| | EXPECT_EQ(docSubObjsNoSubName.size(), 1); |
| | EXPECT_EQ(docSubObjsNoSubName[0]->getID(), _doc->getObject(partName)->getID()); |
| |
|
| | |
| | |
| | |
| | EXPECT_EQ(docSubObjsWithSubName.size(), 3); |
| | EXPECT_EQ(docSubObjsWithSubName[0]->getID(), _doc->getObject(partName)->getID()); |
| | EXPECT_EQ(docSubObjsWithSubName[1]->getID(), _doc->getObject(fuseName)->getID()); |
| | EXPECT_EQ(docSubObjsWithSubName[2]->getID(), _doc->getObject(boxName)->getID()); |
| |
|
| | |
| | |
| | |
| | |
| | EXPECT_EQ(docSubObjsWithSubSizes.size(), 3); |
| | EXPECT_EQ(docSubObjsWithSubSizes[0]->getID(), _doc->getObject(partName)->getID()); |
| | EXPECT_EQ(docSubObjsWithSubSizes[1]->getID(), _doc->getObject(fuseName)->getID()); |
| | EXPECT_EQ(docSubObjsWithSubSizes[2]->getID(), _doc->getObject(boxName)->getID()); |
| | EXPECT_EQ(sizesNoFlatten.size(), 3); |
| | EXPECT_EQ(sizesNoFlatten[0], 0); |
| | EXPECT_EQ(sizesNoFlatten[1], strlen(fuseName) + 1); |
| | EXPECT_EQ(sizesNoFlatten[2], strlen(fuseName) + strlen(boxName) + 2); |
| |
|
| | |
| | |
| | |
| | EXPECT_EQ(docSubObjsFlatten.size(), 2); |
| | EXPECT_EQ(docSubObjsFlatten[0]->getID(), _doc->getObject(partName)->getID()); |
| | EXPECT_EQ(docSubObjsFlatten[1]->getID(), _doc->getObject(boxName)->getID()); |
| | EXPECT_EQ(sizesFlatten.size(), 2); |
| | EXPECT_EQ(sizesFlatten[0], 0); |
| | EXPECT_EQ(sizesFlatten[1], strlen(fuseName) + strlen(boxName) + 2); |
| | } |
| |
|
| | |
| |
|