# HG changeset patch # User dfraser # Date 1249464595 0 # Node ID d960021f902f6c1ec219205a80c8e18a790c34e5 # Parent 0c96346efa29e221f346a9d32e727487a7f29d8d Added external module for testing `bitten.util.xmlio` - specifically currently parses `UCS-4`-encoding `build` data diff --git a/bitten/util/tests/__init__.py b/bitten/util/tests/__init__.py --- a/bitten/util/tests/__init__.py +++ b/bitten/util/tests/__init__.py @@ -11,11 +11,13 @@ import doctest import unittest -from bitten.util import xmlio +from bitten.util import xmlio as xmlio_module +from bitten.util.tests import xmlio as xmlio_tests def suite(): suite = unittest.TestSuite() - suite.addTest(doctest.DocTestSuite(xmlio)) + suite.addTest(doctest.DocTestSuite(xmlio_module)) + suite.addTest(xmlio_tests.suite()) return suite if __name__ == '__main__': diff --git a/bitten/util/tests/xmlio.py b/bitten/util/tests/xmlio.py new file mode 100644 --- /dev/null +++ b/bitten/util/tests/xmlio.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2005-2007 Christopher Lenz +# Copyright (C) 2007 Edgewall Software +# All rights reserved. +# +# This software is licensed as described in the file COPYING, which +# you should have received as part of this distribution. The terms +# are also available at http://bitten.edgewall.org/wiki/License. + +import os +import shutil +import tempfile +import unittest + +from bitten.util import xmlio + +class XMLIOTestCase(unittest.TestCase): + + def test_parse_ucs_4(self): + """Tests that UCS-4/UTF-38-encoded data is parsed correctly""" + s = """<\x00\x00\x00b\x00\x00\x00u\x00\x00\x00i\x00\x00\x00l\x00\x00\x00d\x00\x00\x00 \x00\x00\x00x\x00\x00\x00m\x00\x00\x00l\x00\x00\x00n\x00\x00\x00s\x00\x00\x00:\x00\x00\x00c\x00\x00\x00=\x00\x00\x00"\x00\x00\x00h\x00\x00\x00t\x00\x00\x00t\x00\x00\x00p\x00\x00\x00:\x00\x00\x00/\x00\x00\x00/\x00\x00\x00b\x00\x00\x00i\x00\x00\x00t\x00\x00\x00t\x00\x00\x00e\x00\x00\x00n\x00\x00\x00.\x00\x00\x00c\x00\x00\x00m\x00\x00\x00l\x00\x00\x00e\x00\x00\x00n\x00\x00\x00z\x00\x00\x00.\x00\x00\x00n\x00\x00\x00e\x00\x00\x00t\x00\x00\x00/\x00\x00\x00t\x00\x00\x00o\x00\x00\x00o\x00\x00\x00l\x00\x00\x00s\x00\x00\x00/\x00\x00\x00c\x00\x00\x00"\x00\x00\x00>\x00\x00\x00 +\x00\x00\x00 +\x00\x00\x00 \x00\x00\x00 \x00\x00\x00<\x00\x00\x00s\x00\x00\x00t\x00\x00\x00e\x00\x00\x00p\x00\x00\x00 \x00\x00\x00i\x00\x00\x00d\x00\x00\x00=\x00\x00\x00"\x00\x00\x00b\x00\x00\x00u\x00\x00\x00i\x00\x00\x00l\x00\x00\x00d\x00\x00\x00"\x00\x00\x00 \x00\x00\x00d\x00\x00\x00e\x00\x00\x00s\x00\x00\x00c\x00\x00\x00r\x00\x00\x00i\x00\x00\x00p\x00\x00\x00t\x00\x00\x00i\x00\x00\x00o\x00\x00\x00n\x00\x00\x00=\x00\x00\x00"\x00\x00\x00C\x00\x00\x00o\x00\x00\x00n\x00\x00\x00f\x00\x00\x00i\x00\x00\x00g\x00\x00\x00u\x00\x00\x00r\x00\x00\x00e\x00\x00\x00 \x00\x00\x00a\x00\x00\x00n\x00\x00\x00d\x00\x00\x00 \x00\x00\x00b\x00\x00\x00u\x00\x00\x00i\x00\x00\x00l\x00\x00\x00d\x00\x00\x00"\x00\x00\x00>\x00\x00\x00 +\x00\x00\x00 +\x00\x00\x00 \x00\x00\x00 \x00\x00\x00 \x00\x00\x00 \x00\x00\x00<\x00\x00\x00c\x00\x00\x00:\x00\x00\x00c\x00\x00\x00o\x00\x00\x00n\x00\x00\x00f\x00\x00\x00i\x00\x00\x00g\x00\x00\x00u\x00\x00\x00r\x00\x00\x00e\x00\x00\x00 \x00\x00\x00/\x00\x00\x00>\x00\x00\x00 +\x00\x00\x00 +\x00\x00\x00 \x00\x00\x00 \x00\x00\x00<\x00\x00\x00/\x00\x00\x00s\x00\x00\x00t\x00\x00\x00e\x00\x00\x00p\x00\x00\x00>\x00\x00\x00 +\x00\x00\x00 +\x00\x00\x00<\x00\x00\x00/\x00\x00\x00b\x00\x00\x00u\x00\x00\x00i\x00\x00\x00l\x00\x00\x00d\x00\x00\x00>\x00\x00\x00""" + s = s.decode("UTF-32").encode("UTF-8") + x = xmlio.parse(s) + assert x.name == "build" + +def suite(): + suite = unittest.TestSuite() + suite.addTest(unittest.makeSuite(XMLIOTestCase, 'test')) + return suite + +if __name__ == '__main__': + unittest.main(defaultTest='suite')