]> git.proxmox.com Git - mirror_edk2.git/blobdiff - AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sax.py
edk2: Remove AppPkg, StdLib, StdLibPrivateInternalFiles
[mirror_edk2.git] / AppPkg / Applications / Python / Python-2.7.2 / Lib / test / test_sax.py
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sax.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_sax.py
deleted file mode 100644 (file)
index b0944b7..0000000
+++ /dev/null
@@ -1,753 +0,0 @@
-# regression test for SAX 2.0            -*- coding: utf-8 -*-\r
-# $Id$\r
-\r
-from xml.sax import make_parser, ContentHandler, \\r
-                    SAXException, SAXReaderNotAvailable, SAXParseException\r
-try:\r
-    make_parser()\r
-except SAXReaderNotAvailable:\r
-    # don't try to test this module if we cannot create a parser\r
-    raise ImportError("no XML parsers available")\r
-from xml.sax.saxutils import XMLGenerator, escape, unescape, quoteattr, \\r
-                             XMLFilterBase\r
-from xml.sax.expatreader import create_parser\r
-from xml.sax.handler import feature_namespaces\r
-from xml.sax.xmlreader import InputSource, AttributesImpl, AttributesNSImpl\r
-from cStringIO import StringIO\r
-from test.test_support import findfile, run_unittest\r
-import unittest\r
-\r
-TEST_XMLFILE = findfile("test.xml", subdir="xmltestdata")\r
-TEST_XMLFILE_OUT = findfile("test.xml.out", subdir="xmltestdata")\r
-\r
-ns_uri = "http://www.python.org/xml-ns/saxtest/"\r
-\r
-class XmlTestBase(unittest.TestCase):\r
-    def verify_empty_attrs(self, attrs):\r
-        self.assertRaises(KeyError, attrs.getValue, "attr")\r
-        self.assertRaises(KeyError, attrs.getValueByQName, "attr")\r
-        self.assertRaises(KeyError, attrs.getNameByQName, "attr")\r
-        self.assertRaises(KeyError, attrs.getQNameByName, "attr")\r
-        self.assertRaises(KeyError, attrs.__getitem__, "attr")\r
-        self.assertEqual(attrs.getLength(), 0)\r
-        self.assertEqual(attrs.getNames(), [])\r
-        self.assertEqual(attrs.getQNames(), [])\r
-        self.assertEqual(len(attrs), 0)\r
-        self.assertFalse(attrs.has_key("attr"))\r
-        self.assertEqual(attrs.keys(), [])\r
-        self.assertEqual(attrs.get("attrs"), None)\r
-        self.assertEqual(attrs.get("attrs", 25), 25)\r
-        self.assertEqual(attrs.items(), [])\r
-        self.assertEqual(attrs.values(), [])\r
-\r
-    def verify_empty_nsattrs(self, attrs):\r
-        self.assertRaises(KeyError, attrs.getValue, (ns_uri, "attr"))\r
-        self.assertRaises(KeyError, attrs.getValueByQName, "ns:attr")\r
-        self.assertRaises(KeyError, attrs.getNameByQName, "ns:attr")\r
-        self.assertRaises(KeyError, attrs.getQNameByName, (ns_uri, "attr"))\r
-        self.assertRaises(KeyError, attrs.__getitem__, (ns_uri, "attr"))\r
-        self.assertEqual(attrs.getLength(), 0)\r
-        self.assertEqual(attrs.getNames(), [])\r
-        self.assertEqual(attrs.getQNames(), [])\r
-        self.assertEqual(len(attrs), 0)\r
-        self.assertFalse(attrs.has_key((ns_uri, "attr")))\r
-        self.assertEqual(attrs.keys(), [])\r
-        self.assertEqual(attrs.get((ns_uri, "attr")), None)\r
-        self.assertEqual(attrs.get((ns_uri, "attr"), 25), 25)\r
-        self.assertEqual(attrs.items(), [])\r
-        self.assertEqual(attrs.values(), [])\r
-\r
-    def verify_attrs_wattr(self, attrs):\r
-        self.assertEqual(attrs.getLength(), 1)\r
-        self.assertEqual(attrs.getNames(), ["attr"])\r
-        self.assertEqual(attrs.getQNames(), ["attr"])\r
-        self.assertEqual(len(attrs), 1)\r
-        self.assertTrue(attrs.has_key("attr"))\r
-        self.assertEqual(attrs.keys(), ["attr"])\r
-        self.assertEqual(attrs.get("attr"), "val")\r
-        self.assertEqual(attrs.get("attr", 25), "val")\r
-        self.assertEqual(attrs.items(), [("attr", "val")])\r
-        self.assertEqual(attrs.values(), ["val"])\r
-        self.assertEqual(attrs.getValue("attr"), "val")\r
-        self.assertEqual(attrs.getValueByQName("attr"), "val")\r
-        self.assertEqual(attrs.getNameByQName("attr"), "attr")\r
-        self.assertEqual(attrs["attr"], "val")\r
-        self.assertEqual(attrs.getQNameByName("attr"), "attr")\r
-\r
-class MakeParserTest(unittest.TestCase):\r
-    def test_make_parser2(self):\r
-        # Creating parsers several times in a row should succeed.\r
-        # Testing this because there have been failures of this kind\r
-        # before.\r
-        from xml.sax import make_parser\r
-        p = make_parser()\r
-        from xml.sax import make_parser\r
-        p = make_parser()\r
-        from xml.sax import make_parser\r
-        p = make_parser()\r
-        from xml.sax import make_parser\r
-        p = make_parser()\r
-        from xml.sax import make_parser\r
-        p = make_parser()\r
-        from xml.sax import make_parser\r
-        p = make_parser()\r
-\r
-\r
-# ===========================================================================\r
-#\r
-#   saxutils tests\r
-#\r
-# ===========================================================================\r
-\r
-class SaxutilsTest(unittest.TestCase):\r
-    # ===== escape\r
-    def test_escape_basic(self):\r
-        self.assertEqual(escape("Donald Duck & Co"), "Donald Duck & Co")\r
-\r
-    def test_escape_all(self):\r
-        self.assertEqual(escape("<Donald Duck & Co>"),\r
-                         "&lt;Donald Duck &amp; Co&gt;")\r
-\r
-    def test_escape_extra(self):\r
-        self.assertEqual(escape("Hei på deg", {"å" : "&aring;"}),\r
-                         "Hei p&aring; deg")\r
-\r
-    # ===== unescape\r
-    def test_unescape_basic(self):\r
-        self.assertEqual(unescape("Donald Duck &amp; Co"), "Donald Duck & Co")\r
-\r
-    def test_unescape_all(self):\r
-        self.assertEqual(unescape("&lt;Donald Duck &amp; Co&gt;"),\r
-                         "<Donald Duck & Co>")\r
-\r
-    def test_unescape_extra(self):\r
-        self.assertEqual(unescape("Hei på deg", {"å" : "&aring;"}),\r
-                         "Hei p&aring; deg")\r
-\r
-    def test_unescape_amp_extra(self):\r
-        self.assertEqual(unescape("&amp;foo;", {"&foo;": "splat"}), "&foo;")\r
-\r
-    # ===== quoteattr\r
-    def test_quoteattr_basic(self):\r
-        self.assertEqual(quoteattr("Donald Duck & Co"),\r
-                         '"Donald Duck &amp; Co"')\r
-\r
-    def test_single_quoteattr(self):\r
-        self.assertEqual(quoteattr('Includes "double" quotes'),\r
-                         '\'Includes "double" quotes\'')\r
-\r
-    def test_double_quoteattr(self):\r
-        self.assertEqual(quoteattr("Includes 'single' quotes"),\r
-                         "\"Includes 'single' quotes\"")\r
-\r
-    def test_single_double_quoteattr(self):\r
-        self.assertEqual(quoteattr("Includes 'single' and \"double\" quotes"),\r
-                         "\"Includes 'single' and &quot;double&quot; quotes\"")\r
-\r
-    # ===== make_parser\r
-    def test_make_parser(self):\r
-        # Creating a parser should succeed - it should fall back\r
-        # to the expatreader\r
-        p = make_parser(['xml.parsers.no_such_parser'])\r
-\r
-\r
-# ===== XMLGenerator\r
-\r
-start = '<?xml version="1.0" encoding="iso-8859-1"?>\n'\r
-\r
-class XmlgenTest(unittest.TestCase):\r
-    def test_xmlgen_basic(self):\r
-        result = StringIO()\r
-        gen = XMLGenerator(result)\r
-        gen.startDocument()\r
-        gen.startElement("doc", {})\r
-        gen.endElement("doc")\r
-        gen.endDocument()\r
-\r
-        self.assertEqual(result.getvalue(), start + "<doc></doc>")\r
-\r
-    def test_xmlgen_content(self):\r
-        result = StringIO()\r
-        gen = XMLGenerator(result)\r
-\r
-        gen.startDocument()\r
-        gen.startElement("doc", {})\r
-        gen.characters("huhei")\r
-        gen.endElement("doc")\r
-        gen.endDocument()\r
-\r
-        self.assertEqual(result.getvalue(), start + "<doc>huhei</doc>")\r
-\r
-    def test_xmlgen_pi(self):\r
-        result = StringIO()\r
-        gen = XMLGenerator(result)\r
-\r
-        gen.startDocument()\r
-        gen.processingInstruction("test", "data")\r
-        gen.startElement("doc", {})\r
-        gen.endElement("doc")\r
-        gen.endDocument()\r
-\r
-        self.assertEqual(result.getvalue(), start + "<?test data?><doc></doc>")\r
-\r
-    def test_xmlgen_content_escape(self):\r
-        result = StringIO()\r
-        gen = XMLGenerator(result)\r
-\r
-        gen.startDocument()\r
-        gen.startElement("doc", {})\r
-        gen.characters("<huhei&")\r
-        gen.endElement("doc")\r
-        gen.endDocument()\r
-\r
-        self.assertEqual(result.getvalue(),\r
-            start + "<doc>&lt;huhei&amp;</doc>")\r
-\r
-    def test_xmlgen_attr_escape(self):\r
-        result = StringIO()\r
-        gen = XMLGenerator(result)\r
-\r
-        gen.startDocument()\r
-        gen.startElement("doc", {"a": '"'})\r
-        gen.startElement("e", {"a": "'"})\r
-        gen.endElement("e")\r
-        gen.startElement("e", {"a": "'\""})\r
-        gen.endElement("e")\r
-        gen.startElement("e", {"a": "\n\r\t"})\r
-        gen.endElement("e")\r
-        gen.endElement("doc")\r
-        gen.endDocument()\r
-\r
-        self.assertEqual(result.getvalue(), start +\r
-            ("<doc a='\"'><e a=\"'\"></e>"\r
-             "<e a=\"'&quot;\"></e>"\r
-             "<e a=\"&#10;&#13;&#9;\"></e></doc>"))\r
-\r
-    def test_xmlgen_ignorable(self):\r
-        result = StringIO()\r
-        gen = XMLGenerator(result)\r
-\r
-        gen.startDocument()\r
-        gen.startElement("doc", {})\r
-        gen.ignorableWhitespace(" ")\r
-        gen.endElement("doc")\r
-        gen.endDocument()\r
-\r
-        self.assertEqual(result.getvalue(), start + "<doc> </doc>")\r
-\r
-    def test_xmlgen_ns(self):\r
-        result = StringIO()\r
-        gen = XMLGenerator(result)\r
-\r
-        gen.startDocument()\r
-        gen.startPrefixMapping("ns1", ns_uri)\r
-        gen.startElementNS((ns_uri, "doc"), "ns1:doc", {})\r
-        # add an unqualified name\r
-        gen.startElementNS((None, "udoc"), None, {})\r
-        gen.endElementNS((None, "udoc"), None)\r
-        gen.endElementNS((ns_uri, "doc"), "ns1:doc")\r
-        gen.endPrefixMapping("ns1")\r
-        gen.endDocument()\r
-\r
-        self.assertEqual(result.getvalue(), start + \\r
-           ('<ns1:doc xmlns:ns1="%s"><udoc></udoc></ns1:doc>' %\r
-                                         ns_uri))\r
-\r
-    def test_1463026_1(self):\r
-        result = StringIO()\r
-        gen = XMLGenerator(result)\r
-\r
-        gen.startDocument()\r
-        gen.startElementNS((None, 'a'), 'a', {(None, 'b'):'c'})\r
-        gen.endElementNS((None, 'a'), 'a')\r
-        gen.endDocument()\r
-\r
-        self.assertEqual(result.getvalue(), start+'<a b="c"></a>')\r
-\r
-    def test_1463026_2(self):\r
-        result = StringIO()\r
-        gen = XMLGenerator(result)\r
-\r
-        gen.startDocument()\r
-        gen.startPrefixMapping(None, 'qux')\r
-        gen.startElementNS(('qux', 'a'), 'a', {})\r
-        gen.endElementNS(('qux', 'a'), 'a')\r
-        gen.endPrefixMapping(None)\r
-        gen.endDocument()\r
-\r
-        self.assertEqual(result.getvalue(), start+'<a xmlns="qux"></a>')\r
-\r
-    def test_1463026_3(self):\r
-        result = StringIO()\r
-        gen = XMLGenerator(result)\r
-\r
-        gen.startDocument()\r
-        gen.startPrefixMapping('my', 'qux')\r
-        gen.startElementNS(('qux', 'a'), 'a', {(None, 'b'):'c'})\r
-        gen.endElementNS(('qux', 'a'), 'a')\r
-        gen.endPrefixMapping('my')\r
-        gen.endDocument()\r
-\r
-        self.assertEqual(result.getvalue(),\r
-            start+'<my:a xmlns:my="qux" b="c"></my:a>')\r
-\r
-    def test_5027_1(self):\r
-        # The xml prefix (as in xml:lang below) is reserved and bound by\r
-        # definition to http://www.w3.org/XML/1998/namespace.  XMLGenerator had\r
-        # a bug whereby a KeyError is thrown because this namespace is missing\r
-        # from a dictionary.\r
-        #\r
-        # This test demonstrates the bug by parsing a document.\r
-        test_xml = StringIO(\r
-            '<?xml version="1.0"?>'\r
-            '<a:g1 xmlns:a="http://example.com/ns">'\r
-             '<a:g2 xml:lang="en">Hello</a:g2>'\r
-            '</a:g1>')\r
-\r
-        parser = make_parser()\r
-        parser.setFeature(feature_namespaces, True)\r
-        result = StringIO()\r
-        gen = XMLGenerator(result)\r
-        parser.setContentHandler(gen)\r
-        parser.parse(test_xml)\r
-\r
-        self.assertEqual(result.getvalue(),\r
-                         start + (\r
-                         '<a:g1 xmlns:a="http://example.com/ns">'\r
-                          '<a:g2 xml:lang="en">Hello</a:g2>'\r
-                         '</a:g1>'))\r
-\r
-    def test_5027_2(self):\r
-        # The xml prefix (as in xml:lang below) is reserved and bound by\r
-        # definition to http://www.w3.org/XML/1998/namespace.  XMLGenerator had\r
-        # a bug whereby a KeyError is thrown because this namespace is missing\r
-        # from a dictionary.\r
-        #\r
-        # This test demonstrates the bug by direct manipulation of the\r
-        # XMLGenerator.\r
-        result = StringIO()\r
-        gen = XMLGenerator(result)\r
-\r
-        gen.startDocument()\r
-        gen.startPrefixMapping('a', 'http://example.com/ns')\r
-        gen.startElementNS(('http://example.com/ns', 'g1'), 'g1', {})\r
-        lang_attr = {('http://www.w3.org/XML/1998/namespace', 'lang'): 'en'}\r
-        gen.startElementNS(('http://example.com/ns', 'g2'), 'g2', lang_attr)\r
-        gen.characters('Hello')\r
-        gen.endElementNS(('http://example.com/ns', 'g2'), 'g2')\r
-        gen.endElementNS(('http://example.com/ns', 'g1'), 'g1')\r
-        gen.endPrefixMapping('a')\r
-        gen.endDocument()\r
-\r
-        self.assertEqual(result.getvalue(),\r
-                         start + (\r
-                         '<a:g1 xmlns:a="http://example.com/ns">'\r
-                          '<a:g2 xml:lang="en">Hello</a:g2>'\r
-                         '</a:g1>'))\r
-\r
-\r
-class XMLFilterBaseTest(unittest.TestCase):\r
-    def test_filter_basic(self):\r
-        result = StringIO()\r
-        gen = XMLGenerator(result)\r
-        filter = XMLFilterBase()\r
-        filter.setContentHandler(gen)\r
-\r
-        filter.startDocument()\r
-        filter.startElement("doc", {})\r
-        filter.characters("content")\r
-        filter.ignorableWhitespace(" ")\r
-        filter.endElement("doc")\r
-        filter.endDocument()\r
-\r
-        self.assertEqual(result.getvalue(), start + "<doc>content </doc>")\r
-\r
-# ===========================================================================\r
-#\r
-#   expatreader tests\r
-#\r
-# ===========================================================================\r
-\r
-xml_test_out = open(TEST_XMLFILE_OUT).read()\r
-\r
-class ExpatReaderTest(XmlTestBase):\r
-\r
-    # ===== XMLReader support\r
-\r
-    def test_expat_file(self):\r
-        parser = create_parser()\r
-        result = StringIO()\r
-        xmlgen = XMLGenerator(result)\r
-\r
-        parser.setContentHandler(xmlgen)\r
-        parser.parse(open(TEST_XMLFILE))\r
-\r
-        self.assertEqual(result.getvalue(), xml_test_out)\r
-\r
-    # ===== DTDHandler support\r
-\r
-    class TestDTDHandler:\r
-\r
-        def __init__(self):\r
-            self._notations = []\r
-            self._entities  = []\r
-\r
-        def notationDecl(self, name, publicId, systemId):\r
-            self._notations.append((name, publicId, systemId))\r
-\r
-        def unparsedEntityDecl(self, name, publicId, systemId, ndata):\r
-            self._entities.append((name, publicId, systemId, ndata))\r
-\r
-    def test_expat_dtdhandler(self):\r
-        parser = create_parser()\r
-        handler = self.TestDTDHandler()\r
-        parser.setDTDHandler(handler)\r
-\r
-        parser.feed('<!DOCTYPE doc [\n')\r
-        parser.feed('  <!ENTITY img SYSTEM "expat.gif" NDATA GIF>\n')\r
-        parser.feed('  <!NOTATION GIF PUBLIC "-//CompuServe//NOTATION Graphics Interchange Format 89a//EN">\n')\r
-        parser.feed(']>\n')\r
-        parser.feed('<doc></doc>')\r
-        parser.close()\r
-\r
-        self.assertEqual(handler._notations,\r
-            [("GIF", "-//CompuServe//NOTATION Graphics Interchange Format 89a//EN", None)])\r
-        self.assertEqual(handler._entities, [("img", None, "expat.gif", "GIF")])\r
-\r
-    # ===== EntityResolver support\r
-\r
-    class TestEntityResolver:\r
-\r
-        def resolveEntity(self, publicId, systemId):\r
-            inpsrc = InputSource()\r
-            inpsrc.setByteStream(StringIO("<entity/>"))\r
-            return inpsrc\r
-\r
-    def test_expat_entityresolver(self):\r
-        parser = create_parser()\r
-        parser.setEntityResolver(self.TestEntityResolver())\r
-        result = StringIO()\r
-        parser.setContentHandler(XMLGenerator(result))\r
-\r
-        parser.feed('<!DOCTYPE doc [\n')\r
-        parser.feed('  <!ENTITY test SYSTEM "whatever">\n')\r
-        parser.feed(']>\n')\r
-        parser.feed('<doc>&test;</doc>')\r
-        parser.close()\r
-\r
-        self.assertEqual(result.getvalue(), start +\r
-                         "<doc><entity></entity></doc>")\r
-\r
-    # ===== Attributes support\r
-\r
-    class AttrGatherer(ContentHandler):\r
-\r
-        def startElement(self, name, attrs):\r
-            self._attrs = attrs\r
-\r
-        def startElementNS(self, name, qname, attrs):\r
-            self._attrs = attrs\r
-\r
-    def test_expat_attrs_empty(self):\r
-        parser = create_parser()\r
-        gather = self.AttrGatherer()\r
-        parser.setContentHandler(gather)\r
-\r
-        parser.feed("<doc/>")\r
-        parser.close()\r
-\r
-        self.verify_empty_attrs(gather._attrs)\r
-\r
-    def test_expat_attrs_wattr(self):\r
-        parser = create_parser()\r
-        gather = self.AttrGatherer()\r
-        parser.setContentHandler(gather)\r
-\r
-        parser.feed("<doc attr='val'/>")\r
-        parser.close()\r
-\r
-        self.verify_attrs_wattr(gather._attrs)\r
-\r
-    def test_expat_nsattrs_empty(self):\r
-        parser = create_parser(1)\r
-        gather = self.AttrGatherer()\r
-        parser.setContentHandler(gather)\r
-\r
-        parser.feed("<doc/>")\r
-        parser.close()\r
-\r
-        self.verify_empty_nsattrs(gather._attrs)\r
-\r
-    def test_expat_nsattrs_wattr(self):\r
-        parser = create_parser(1)\r
-        gather = self.AttrGatherer()\r
-        parser.setContentHandler(gather)\r
-\r
-        parser.feed("<doc xmlns:ns='%s' ns:attr='val'/>" % ns_uri)\r
-        parser.close()\r
-\r
-        attrs = gather._attrs\r
-\r
-        self.assertEqual(attrs.getLength(), 1)\r
-        self.assertEqual(attrs.getNames(), [(ns_uri, "attr")])\r
-        self.assertTrue((attrs.getQNames() == [] or\r
-                         attrs.getQNames() == ["ns:attr"]))\r
-        self.assertEqual(len(attrs), 1)\r
-        self.assertTrue(attrs.has_key((ns_uri, "attr")))\r
-        self.assertEqual(attrs.get((ns_uri, "attr")), "val")\r
-        self.assertEqual(attrs.get((ns_uri, "attr"), 25), "val")\r
-        self.assertEqual(attrs.items(), [((ns_uri, "attr"), "val")])\r
-        self.assertEqual(attrs.values(), ["val"])\r
-        self.assertEqual(attrs.getValue((ns_uri, "attr")), "val")\r
-        self.assertEqual(attrs[(ns_uri, "attr")], "val")\r
-\r
-    # ===== InputSource support\r
-\r
-    def test_expat_inpsource_filename(self):\r
-        parser = create_parser()\r
-        result = StringIO()\r
-        xmlgen = XMLGenerator(result)\r
-\r
-        parser.setContentHandler(xmlgen)\r
-        parser.parse(TEST_XMLFILE)\r
-\r
-        self.assertEqual(result.getvalue(), xml_test_out)\r
-\r
-    def test_expat_inpsource_sysid(self):\r
-        parser = create_parser()\r
-        result = StringIO()\r
-        xmlgen = XMLGenerator(result)\r
-\r
-        parser.setContentHandler(xmlgen)\r
-        parser.parse(InputSource(TEST_XMLFILE))\r
-\r
-        self.assertEqual(result.getvalue(), xml_test_out)\r
-\r
-    def test_expat_inpsource_stream(self):\r
-        parser = create_parser()\r
-        result = StringIO()\r
-        xmlgen = XMLGenerator(result)\r
-\r
-        parser.setContentHandler(xmlgen)\r
-        inpsrc = InputSource()\r
-        inpsrc.setByteStream(open(TEST_XMLFILE))\r
-        parser.parse(inpsrc)\r
-\r
-        self.assertEqual(result.getvalue(), xml_test_out)\r
-\r
-    # ===== IncrementalParser support\r
-\r
-    def test_expat_incremental(self):\r
-        result = StringIO()\r
-        xmlgen = XMLGenerator(result)\r
-        parser = create_parser()\r
-        parser.setContentHandler(xmlgen)\r
-\r
-        parser.feed("<doc>")\r
-        parser.feed("</doc>")\r
-        parser.close()\r
-\r
-        self.assertEqual(result.getvalue(), start + "<doc></doc>")\r
-\r
-    def test_expat_incremental_reset(self):\r
-        result = StringIO()\r
-        xmlgen = XMLGenerator(result)\r
-        parser = create_parser()\r
-        parser.setContentHandler(xmlgen)\r
-\r
-        parser.feed("<doc>")\r
-        parser.feed("text")\r
-\r
-        result = StringIO()\r
-        xmlgen = XMLGenerator(result)\r
-        parser.setContentHandler(xmlgen)\r
-        parser.reset()\r
-\r
-        parser.feed("<doc>")\r
-        parser.feed("text")\r
-        parser.feed("</doc>")\r
-        parser.close()\r
-\r
-        self.assertEqual(result.getvalue(), start + "<doc>text</doc>")\r
-\r
-    # ===== Locator support\r
-\r
-    def test_expat_locator_noinfo(self):\r
-        result = StringIO()\r
-        xmlgen = XMLGenerator(result)\r
-        parser = create_parser()\r
-        parser.setContentHandler(xmlgen)\r
-\r
-        parser.feed("<doc>")\r
-        parser.feed("</doc>")\r
-        parser.close()\r
-\r
-        self.assertEqual(parser.getSystemId(), None)\r
-        self.assertEqual(parser.getPublicId(), None)\r
-        self.assertEqual(parser.getLineNumber(), 1)\r
-\r
-    def test_expat_locator_withinfo(self):\r
-        result = StringIO()\r
-        xmlgen = XMLGenerator(result)\r
-        parser = create_parser()\r
-        parser.setContentHandler(xmlgen)\r
-        parser.parse(TEST_XMLFILE)\r
-\r
-        self.assertEqual(parser.getSystemId(), TEST_XMLFILE)\r
-        self.assertEqual(parser.getPublicId(), None)\r
-\r
-\r
-# ===========================================================================\r
-#\r
-#   error reporting\r
-#\r
-# ===========================================================================\r
-\r
-class ErrorReportingTest(unittest.TestCase):\r
-    def test_expat_inpsource_location(self):\r
-        parser = create_parser()\r
-        parser.setContentHandler(ContentHandler()) # do nothing\r
-        source = InputSource()\r
-        source.setByteStream(StringIO("<foo bar foobar>"))   #ill-formed\r
-        name = "a file name"\r
-        source.setSystemId(name)\r
-        try:\r
-            parser.parse(source)\r
-            self.fail()\r
-        except SAXException, e:\r
-            self.assertEqual(e.getSystemId(), name)\r
-\r
-    def test_expat_incomplete(self):\r
-        parser = create_parser()\r
-        parser.setContentHandler(ContentHandler()) # do nothing\r
-        self.assertRaises(SAXParseException, parser.parse, StringIO("<foo>"))\r
-\r
-    def test_sax_parse_exception_str(self):\r
-        # pass various values from a locator to the SAXParseException to\r
-        # make sure that the __str__() doesn't fall apart when None is\r
-        # passed instead of an integer line and column number\r
-        #\r
-        # use "normal" values for the locator:\r
-        str(SAXParseException("message", None,\r
-                              self.DummyLocator(1, 1)))\r
-        # use None for the line number:\r
-        str(SAXParseException("message", None,\r
-                              self.DummyLocator(None, 1)))\r
-        # use None for the column number:\r
-        str(SAXParseException("message", None,\r
-                              self.DummyLocator(1, None)))\r
-        # use None for both:\r
-        str(SAXParseException("message", None,\r
-                              self.DummyLocator(None, None)))\r
-\r
-    class DummyLocator:\r
-        def __init__(self, lineno, colno):\r
-            self._lineno = lineno\r
-            self._colno = colno\r
-\r
-        def getPublicId(self):\r
-            return "pubid"\r
-\r
-        def getSystemId(self):\r
-            return "sysid"\r
-\r
-        def getLineNumber(self):\r
-            return self._lineno\r
-\r
-        def getColumnNumber(self):\r
-            return self._colno\r
-\r
-# ===========================================================================\r
-#\r
-#   xmlreader tests\r
-#\r
-# ===========================================================================\r
-\r
-class XmlReaderTest(XmlTestBase):\r
-\r
-    # ===== AttributesImpl\r
-    def test_attrs_empty(self):\r
-        self.verify_empty_attrs(AttributesImpl({}))\r
-\r
-    def test_attrs_wattr(self):\r
-        self.verify_attrs_wattr(AttributesImpl({"attr" : "val"}))\r
-\r
-    def test_nsattrs_empty(self):\r
-        self.verify_empty_nsattrs(AttributesNSImpl({}, {}))\r
-\r
-    def test_nsattrs_wattr(self):\r
-        attrs = AttributesNSImpl({(ns_uri, "attr") : "val"},\r
-                                 {(ns_uri, "attr") : "ns:attr"})\r
-\r
-        self.assertEqual(attrs.getLength(), 1)\r
-        self.assertEqual(attrs.getNames(), [(ns_uri, "attr")])\r
-        self.assertEqual(attrs.getQNames(), ["ns:attr"])\r
-        self.assertEqual(len(attrs), 1)\r
-        self.assertTrue(attrs.has_key((ns_uri, "attr")))\r
-        self.assertEqual(attrs.keys(), [(ns_uri, "attr")])\r
-        self.assertEqual(attrs.get((ns_uri, "attr")), "val")\r
-        self.assertEqual(attrs.get((ns_uri, "attr"), 25), "val")\r
-        self.assertEqual(attrs.items(), [((ns_uri, "attr"), "val")])\r
-        self.assertEqual(attrs.values(), ["val"])\r
-        self.assertEqual(attrs.getValue((ns_uri, "attr")), "val")\r
-        self.assertEqual(attrs.getValueByQName("ns:attr"), "val")\r
-        self.assertEqual(attrs.getNameByQName("ns:attr"), (ns_uri, "attr"))\r
-        self.assertEqual(attrs[(ns_uri, "attr")], "val")\r
-        self.assertEqual(attrs.getQNameByName((ns_uri, "attr")), "ns:attr")\r
-\r
-\r
-    # During the development of Python 2.5, an attempt to move the "xml"\r
-    # package implementation to a new package ("xmlcore") proved painful.\r
-    # The goal of this change was to allow applications to be able to\r
-    # obtain and rely on behavior in the standard library implementation\r
-    # of the XML support without needing to be concerned about the\r
-    # availability of the PyXML implementation.\r
-    #\r
-    # While the existing import hackery in Lib/xml/__init__.py can cause\r
-    # PyXML's _xmlpus package to supplant the "xml" package, that only\r
-    # works because either implementation uses the "xml" package name for\r
-    # imports.\r
-    #\r
-    # The move resulted in a number of problems related to the fact that\r
-    # the import machinery's "package context" is based on the name that's\r
-    # being imported rather than the __name__ of the actual package\r
-    # containment; it wasn't possible for the "xml" package to be replaced\r
-    # by a simple module that indirected imports to the "xmlcore" package.\r
-    #\r
-    # The following two tests exercised bugs that were introduced in that\r
-    # attempt.  Keeping these tests around will help detect problems with\r
-    # other attempts to provide reliable access to the standard library's\r
-    # implementation of the XML support.\r
-\r
-    def test_sf_1511497(self):\r
-        # Bug report: http://www.python.org/sf/1511497\r
-        import sys\r
-        old_modules = sys.modules.copy()\r
-        for modname in sys.modules.keys():\r
-            if modname.startswith("xml."):\r
-                del sys.modules[modname]\r
-        try:\r
-            import xml.sax.expatreader\r
-            module = xml.sax.expatreader\r
-            self.assertEqual(module.__name__, "xml.sax.expatreader")\r
-        finally:\r
-            sys.modules.update(old_modules)\r
-\r
-    def test_sf_1513611(self):\r
-        # Bug report: http://www.python.org/sf/1513611\r
-        sio = StringIO("invalid")\r
-        parser = make_parser()\r
-        from xml.sax import SAXParseException\r
-        self.assertRaises(SAXParseException, parser.parse, sio)\r
-\r
-\r
-def test_main():\r
-    run_unittest(MakeParserTest,\r
-                 SaxutilsTest,\r
-                 XmlgenTest,\r
-                 ExpatReaderTest,\r
-                 ErrorReportingTest,\r
-                 XmlReaderTest)\r
-\r
-if __name__ == "__main__":\r
-    test_main()\r