'''Test module to thest the xmllib module.
   Sjoerd Mullender
'''

testdoc = """\
<?xml version="1.0" encoding="UTF-8" standalone='yes' ?>
<!-- comments aren't allowed before the <?xml?> tag,
     but they are allowed before the <!DOCTYPE> tag -->
<?processing instructions are allowed in the same places as comments ?>
<!DOCTYPE greeting [
  <!ELEMENT greeting (#PCDATA)>
]>
<greeting>Hello, world!</greeting>
"""

nsdoc = "<foo xmlns='URI' attr='val'/>"

from test import test_support
import unittest
# Silence Py3k warning
xmllib = test_support.import_module('xmllib', deprecated=True)

class XMLParserTestCase(unittest.TestCase):

    def test_simple(self):
        parser = xmllib.XMLParser()
        for c in testdoc:
            parser.feed(c)
        parser.close()

    def test_default_namespace(self):
        class H(xmllib.XMLParser):
            def unknown_starttag(self, name, attr):
                self.name, self.attr = name, attr
        h=H()
        h.feed(nsdoc)
        h.close()
        # The default namespace applies to elements...
        self.assertEqual(h.name, "URI foo")
        # but not to attributes
        self.assertEqual(h.attr, {'attr':'val'})


def test_main():
    test_support.run_unittest(XMLParserTestCase)

if __name__ == "__main__":
    test_main()
