X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/510bb7480c5138dd5127ed3d8b1d9cbab39983c9..1f780e48af479e7bf9a07eaaa1ab6b41f1ffb17b:/wxPython/samples/ide/activegrid/util/xmlmarshallertests.py diff --git a/wxPython/samples/ide/activegrid/util/xmlmarshallertests.py b/wxPython/samples/ide/activegrid/util/xmlmarshallertests.py new file mode 100644 index 0000000000..b02b0fb097 --- /dev/null +++ b/wxPython/samples/ide/activegrid/util/xmlmarshallertests.py @@ -0,0 +1,183 @@ +#---------------------------------------------------------------------------- +# Name: xmlmarshallertests.py +# Purpose: +# +# Author: John Spurling +# +# Created: 8/16/04 +# CVS-ID: $Id$ +# Copyright: (c) 2004-2005 ActiveGrid, Inc. +# License: wxWindows License +#---------------------------------------------------------------------------- + +import unittest +import xmlmarshaller +from xmlprettyprinter import xmlprettyprint + +marshalledPersonObject = """ + + Albert + Camus +
23 Absurd St.
+ Ennui + MO + 54321 + <_phoneNumber>808-303-2323 + + angst + ennui + existence + + 150 +
+""" + +marshalledint = ''' +23 +''' + +marshalledlist = ''' + + foo + bar + +''' + +## a dummy class taken from the old XmlMarshaller module. +## class Person: +## def __init__(self): +## # These are not necessary but are nice if you want to tailor +## # the Python object <-> XML binding + +## # The xml element name to use for this object, otherwise it +## # will use a fully qualified Python name like __main__.Person +## # which can be ugly. +## self.__xmlname__ = "person" +## self.firstName = None +## self.lastName = None +## self.addressLine1 = None +## self.addressLine2 = None +## self.city = None +## self.state = None +## self.zip = None +## self._phoneNumber = None +## self.favoriteWords = None +## self.weight = None +class Person: + __xmlflattensequence__ = {'asequence': ('the_earth_is_flat',)} + +class XmlMarshallerTestFunctions(unittest.TestCase): + + def setUp(self): + '''common setup code goes here.''' + pass + + def testInt(self): + xml = xmlmarshaller.marshal(1) + print "\n#########################################" + print "# testString test case #" + print "#########################################" + print "marshalled int object:\n" + print xmlprettyprint(xml) + + def testDict(self): + xml = xmlmarshaller.marshal({'one': 1, + 'two': 2, + 'three': 3}) + print "\n#########################################" + print "# testString test case #" + print "#########################################" + print "marshalled dict object:\n" + print xmlprettyprint(xml) + + def testBool(self): + xmltrue = xmlmarshaller.marshal(True) + xmlfalse = xmlmarshaller.marshal(False) + print "\n#########################################" + print "# testBool test case #" + print "#########################################" + print "marshalled boolean true object:\n" + print xmlprettyprint(xmltrue) + print "\nmarshalled boolean false object:\n" + print xmlprettyprint(xmlfalse) + pytrue = xmlmarshaller.unmarshal(xmltrue) + assert pytrue is True + pyfalse = xmlmarshaller.unmarshal(xmlfalse) + assert pyfalse is False + + def testString(self): + xml = xmlmarshaller.marshal( + "all your marshalled objects are belong to us") + print "\n#########################################" + print "# testString test case #" + print "#########################################" + print xmlprettyprint(xml) + + def testEmptyElement(self): + person = Person() + person.firstName = "Albert" + person.__xmlattributes__ = ('firstName',) + xml = xmlmarshaller.marshal(person, 'person') + print "\n#########################################" + print "# testEmptyElement test case #" + print "#########################################" + print xml + assert (xml == """""") + + def testXMLFlattenSequence(self): + person = Person() + person.asequence = ('one', 'two') + xml = xmlmarshaller.marshal(person, 'person') + print "\n#########################################" + print "# testXMLFlattenSequence test case #" + print "#########################################" + print xml + assert (xml == """onetwo""") + unmarshalledperson = xmlmarshaller.unmarshal(xml) + assert(hasattr(unmarshalledperson, 'asequence')) + assert(len(unmarshalledperson.asequence) == 2) + + def testInstance(self): + print "\n#########################################" + print "# testInstance test case #" + print "#########################################" + class Foo: + def __init__(self): + self.alist = [1,2] + self.astring = 'f00' + f = Foo() + xml = xmlmarshaller.marshal(f, 'foo') + print xml + + def testPerson(self): + person = Person() + person.firstName = "Albert" + person.lastName = "Camus" + person.addressLine1 = "23 Absurd St." + person.city = "Ennui" + person.state = "MO" + person.zip = "54321" + person._phoneNumber = "808-303-2323" + person.favoriteWords = ['angst', 'ennui', 'existence'] + person.weight = 150 +# __xmlattributes__ = ('fabulousness',) + person.fabulousness = "tres tres" + xml = xmlmarshaller.marshal(person) + print "\n#########################################" + print "# testPerson test case #" + print "#########################################" + print "Person object marshalled into XML:\n" + print xml + # When encountering a "person" element, use the Person class +## elementMappings = { "person" : Person } +## obj = unmarshal(xml, elementMappings = elementMappings) +## print "Person object recreated from XML with attribute types indicated:" +## print obj.person.__class__ +## for (attr, value) in obj.person.__dict__.items(): +## if not attr.startswith("__"): +## print attr, "=", value, type(value) +## print + + +if __name__ == "__main__": + unittest.main()