From a8c41df1714014af6ad94ddd4f45de739ebb8d27 Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 15 Aug 2025 20:46:11 +0200 Subject: [PATCH] Test: Add test cases for Persistence::validateXMLString --- src/Mod/Test/Document.py | 11 +++++++++++ tests/src/Base/Reader.cpp | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/Mod/Test/Document.py b/src/Mod/Test/Document.py index 75d207dcbb..09cf409878 100644 --- a/src/Mod/Test/Document.py +++ b/src/Mod/Test/Document.py @@ -666,6 +666,17 @@ class DocumentBasicCases(unittest.TestCase): root = ET.fromstring(test.Content) self.assertEqual(root.tag, "Properties") + def testValidateXml(self): + self.Doc.openTransaction("Add") + obj = self.Doc.addObject("App::FeatureTest","Label") + obj.Label = "abc\x01ef" + TempPath = tempfile.gettempdir() + SaveName = TempPath + os.sep + "CreateTest.FCStd" + self.Doc.saveAs(SaveName) + FreeCAD.closeDocument(self.Doc.Name) + self.Doc = FreeCAD.open(SaveName) + self.assertEqual(self.Doc.ActiveObject.Label, "abc_ef") + def tearDown(self): # closing doc FreeCAD.closeDocument("CreateTest") diff --git a/tests/src/Base/Reader.cpp b/tests/src/Base/Reader.cpp index 371863baaa..27cee37d6e 100644 --- a/tests/src/Base/Reader.cpp +++ b/tests/src/Base/Reader.cpp @@ -7,6 +7,7 @@ #endif #include "Base/Exception.h" +#include "Base/Persistence.h" #include "Base/Reader.h" #include #include @@ -459,3 +460,13 @@ TEST_F(ReaderTest, validDefaults) EXPECT_THROW({ xml.Reader()->getAttribute("missing"); }, Base::XMLBaseException); EXPECT_EQ(value20, TimesIGoToBed::Late); } + +TEST_F(ReaderTest, validateXmlString) +{ + std::string input = "abcde"; + std::string output = input; + input.push_back(char(15)); + output.push_back('_'); + std::string result = Base::Persistence::validateXMLString(input); + EXPECT_EQ(output, result); +}