diff --git a/tests/src/Mod/Part/App/PropertyTopoShape.cpp b/tests/src/Mod/Part/App/PropertyTopoShape.cpp index e08435b75a..a6464c3b25 100644 --- a/tests/src/Mod/Part/App/PropertyTopoShape.cpp +++ b/tests/src/Mod/Part/App/PropertyTopoShape.cpp @@ -32,6 +32,75 @@ protected: void TearDown() override {} + std::string getDocumentXml() const + { + return R"x( + + + + + + + + + + + + + + + + + + + + + + + + + + + + +)x"; + } + Common* _common = nullptr; // NOLINT Can't be private in a test framework }; @@ -182,3 +251,21 @@ TEST_F(PropertyTopoShapeTest, testPropertyShapeCachePyObj) Py_XDECREF(pyObjOut); Py_XDECREF(pyObjOutErased); } + +TEST_F(PropertyTopoShapeTest, testRestore) +{ + // Test case for https://github.com/FreeCAD/FreeCAD/pull/16576 + std::stringstream str(getDocumentXml()); + Base::XMLReader reader("Document.xml", str); + App::StringHasher hasher; + hasher.Restore(reader); + + Part::PropertyPartShape prop; + prop.Restore(reader); + + EXPECT_STREQ(reader.localName(), "ElementMap2"); + EXPECT_EQ(reader.level(), 5); + EXPECT_EQ(reader.getAttributeCount(), 1); + EXPECT_TRUE(reader.isValid()); + EXPECT_TRUE(reader.isEndOfElement()); +}