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 <content> element around it was invalid. However, content is required to read properties. Hence the xml element generation was moved.
This commit is contained in:
@@ -1327,11 +1327,6 @@ std::string Document::getTransientDirectoryName(const std::string& uuid, const s
|
||||
|
||||
void Document::Save (Base::Writer &writer) const
|
||||
{
|
||||
writer.Stream() << "<?xml version='1.0' encoding='utf-8'?>" << endl
|
||||
<< "<!--" << endl
|
||||
<< " FreeCAD Document, see http://www.freecadweb.org for more information..." << endl
|
||||
<< "-->" << endl;
|
||||
|
||||
writer.Stream() << "<Document SchemaVersion=\"4\" ProgramVersion=\""
|
||||
<< App::Application::Config()["BuildVersionMajor"] << "."
|
||||
<< App::Application::Config()["BuildVersionMinor"] << "R"
|
||||
@@ -1696,6 +1691,10 @@ bool Document::saveToFile(const char* filename) const
|
||||
if (hGrp->GetBool("SaveBinaryBrep", false))
|
||||
writer.setMode("BinaryBrep");
|
||||
|
||||
writer.Stream() << "<?xml version='1.0' encoding='utf-8'?>" << endl
|
||||
<< "<!--" << endl
|
||||
<< " FreeCAD Document, see http://www.freecadweb.org for more information..." << endl
|
||||
<< "-->" << endl;
|
||||
Document::Save(writer);
|
||||
|
||||
// Special handling for Gui document.
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user