From c60364772a42d379e2b96c4fd48fdebfe98fa65a Mon Sep 17 00:00:00 2001 From: ickby Date: Wed, 17 Oct 2018 18:16:13 +0200 Subject: [PATCH] Persistence: Test cases for content dump It turned our that the document could not be dumped as the xml specifier was used as first element. As the dumping added the element around it was invalid. However, content is required to read properties. Hence the xml element generation was moved. --- src/App/Document.cpp | 9 ++++----- src/App/PropertyContainerPyImp.cpp | 2 +- src/Mod/Test/Document.py | 28 +++++++++++++++++++++++++++- 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/src/App/Document.cpp b/src/App/Document.cpp index 73367a2cca..a87cc8bada 100644 --- a/src/App/Document.cpp +++ b/src/App/Document.cpp @@ -1327,11 +1327,6 @@ std::string Document::getTransientDirectoryName(const std::string& uuid, const s void Document::Save (Base::Writer &writer) const { - writer.Stream() << "" << endl - << "" << endl; - writer.Stream() << "GetBool("SaveBinaryBrep", false)) writer.setMode("BinaryBrep"); + writer.Stream() << "" << endl + << "" << endl; Document::Save(writer); // Special handling for Gui document. diff --git a/src/App/PropertyContainerPyImp.cpp b/src/App/PropertyContainerPyImp.cpp index a07e157651..f8182dcac7 100644 --- a/src/App/PropertyContainerPyImp.cpp +++ b/src/App/PropertyContainerPyImp.cpp @@ -231,7 +231,7 @@ PyObject* PropertyContainerPy::dumpPropertyContent(PyObject *args, PyObject *kwd int compression = 3; char* property; - static char* kwds_def[] = {"Compression",NULL}; + static char* kwds_def[] = {"Property", "Compression",NULL}; PyErr_Clear(); if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|i", kwds_def, &property, &compression)) { return NULL; diff --git a/src/Mod/Test/Document.py b/src/Mod/Test/Document.py index 897f871d7f..4a03641104 100644 --- a/src/Mod/Test/Document.py +++ b/src/Mod/Test/Document.py @@ -454,7 +454,33 @@ class DocumentSaveRestoreCases(unittest.TestCase): self.failUnless(hasattr(Doc.Extension_2.ViewObject.ExtensionProxy, 'testFunction')) FreeCAD.closeDocument("SaveRestoreExtensions") - + + def testPersistenceContentDump(self): + + #test smallest level... property + self.Doc.Label_1.Vector = (1,2,3) + dump = self.Doc.Label_1.dumpPropertyContent('Vector', Compression = 9) + self.Doc.Label_2.restorePropertyContent('Vector', dump) + self.failUnless(self.Doc.Label_1.Vector == self.Doc.Label_2.Vector) + + #next higher: object + self.Doc.Label_1.Distance = 12 + self.Doc.Label_1.String = 'test' + dump = self.Doc.Label_1.dumpContent() + self.Doc.Label_3.restoreContent(dump) + self.failUnless( self.Doc.Label_1.Distance == self.Doc.Label_3.Distance) + self.failUnless( self.Doc.Label_1.String == self.Doc.Label_3.String) + + #highest level: document + dump = self.Doc.dumpContent(9) + Doc = FreeCAD.newDocument("DumpTest") + Doc.restoreContent(dump) + self.failUnless(len(self.Doc.Objects) == len(Doc.Objects)) + self.failUnless( self.Doc.Label_1.Distance == Doc.Label_1.Distance) + self.failUnless( self.Doc.Label_1.String == Doc.Label_1.String) + self.failUnless(self.Doc.Label_1.Vector == Doc.Label_1.Vector) + FreeCAD.closeDocument("DumpTest") + def tearDown(self): #closing doc FreeCAD.closeDocument("SaveRestoreTests")