| 1 | '''Test module to thest the xmllib module. |
| 2 | Sjoerd Mullender |
| 3 | ''' |
| 4 | |
| 5 | testdoc = """\ |
| 6 | <?xml version="1.0" encoding="UTF-8" standalone='yes' ?> |
| 7 | <!-- comments aren't allowed before the <?xml?> tag, |
| 8 | but they are allowed before the <!DOCTYPE> tag --> |
| 9 | <?processing instructions are allowed in the same places as comments ?> |
| 10 | <!DOCTYPE greeting [ |
| 11 | <!ELEMENT greeting (#PCDATA)> |
| 12 | ]> |
| 13 | <greeting>Hello, world!</greeting> |
| 14 | """ |
| 15 | |
| 16 | nsdoc = "<foo xmlns='URI' attr='val'/>" |
| 17 | |
| 18 | import warnings |
| 19 | warnings.filterwarnings("ignore", ".* xmllib .* obsolete.*", |
| 20 | DeprecationWarning, r'xmllib$') |
| 21 | |
| 22 | from test import test_support |
| 23 | import unittest |
| 24 | import xmllib |
| 25 | |
| 26 | class XMLParserTestCase(unittest.TestCase): |
| 27 | |
| 28 | def test_simple(self): |
| 29 | parser = xmllib.XMLParser() |
| 30 | for c in testdoc: |
| 31 | parser.feed(c) |
| 32 | parser.close() |
| 33 | |
| 34 | def test_default_namespace(self): |
| 35 | class H(xmllib.XMLParser): |
| 36 | def unknown_starttag(self, name, attr): |
| 37 | self.name, self.attr = name, attr |
| 38 | h=H() |
| 39 | h.feed(nsdoc) |
| 40 | h.close() |
| 41 | # The default namespace applies to elements... |
| 42 | self.assertEquals(h.name, "URI foo") |
| 43 | # but not to attributes |
| 44 | self.assertEquals(h.attr, {'attr':'val'}) |
| 45 | |
| 46 | |
| 47 | def test_main(): |
| 48 | test_support.run_unittest(XMLParserTestCase) |
| 49 | |
| 50 | if __name__ == "__main__": |
| 51 | test_main() |