From 2137dbc8d0883641ebbabbfc3525116beb6da680 Mon Sep 17 00:00:00 2001 From: wmayer Date: Wed, 25 Sep 2024 19:09:24 +0200 Subject: [PATCH] Tests: Add unit test for PR #16576 --- tests/src/Mod/Part/App/PropertyTopoShape.cpp | 87 ++++++++++++++++++++ 1 file changed, 87 insertions(+) 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()); +}