diff options
| author | Michael Williamson <mike@zwobble.org> | 2013-12-01 00:42:19 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2013-12-01 00:42:19 +0000 |
| commit | 2c07fef611dd1d5cd7e83d59d02d5ab52db74e63 (patch) | |
| tree | 91e69988641f0e890cef9e70c4a2fb39d5d499eb /tests | |
| parent | 73a80869afb8f2e4c7727150a0ea211b93ccc475 (diff) | |
Add xmlparser
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/xmlparser_tests.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/tests/xmlparser_tests.py b/tests/xmlparser_tests.py new file mode 100644 index 0000000..90d8d9b --- /dev/null +++ b/tests/xmlparser_tests.py @@ -0,0 +1,63 @@ +import io + +from nose.tools import istest, assert_equal + +from mammoth.xmlparser import parse_xml, element as xml_element, text as xml_text + + +@istest +def can_parse_self_closing_element(): + xml = _parse_xml_string(b"<body/>") + assert_equal(xml_element("body", {}, []), xml) + + +@istest +def can_parse_empty_element_with_separate_closing_tag(): + xml = _parse_xml_string(b"<body></body>") + assert_equal(xml_element("body", {}, []), xml) + + +@istest +def can_parse_attributes_of_tag(): + xml = _parse_xml_string(b"<body name='bob'></body>") + assert_equal(xml_element("body", {"name": "bob"}, []), xml) + + +@istest +def can_parse_text_element(): + xml = _parse_xml_string(b"<body>Hello!</body>") + assert_equal(xml_element("body", {}, [xml_text("Hello!")]), xml) + + +@istest +def can_parse_text_element_before_new_tag(): + xml = _parse_xml_string(b"<body>Hello!<br/></body>") + assert_equal(xml_element("body", {}, [xml_text("Hello!"), xml_element("br", {}, [])]), xml) + + +@istest +def can_parse_element_with_children(): + xml = _parse_xml_string(b"<body><a/><b/></body>") + assert_equal([xml_element("a", {}, []), xml_element("b", {}, [])], xml.children) + + +@istest +def unmapped_namespaces_uris_are_included_in_braces_as_prefix(): + xml = _parse_xml_string(b'<w:body xmlns:w="word"/>') + assert_equal("{word}body", xml.name) + + +@istest +def mapped_namespaces_uris_are_translated_using_namespace_map(): + xml = _parse_xml_string(b'<w:body xmlns:w="word"/>', [("x", "word")]) + assert_equal("x:body", xml.name) + + +@istest +def namespace_of_attributes_is_mapped_to_prefix(): + xml = _parse_xml_string(b'<w:body xmlns:w="word" w:val="Hello!"/>', [("x", "word")]) + assert_equal("Hello!", xml.attributes["x:val"]) + + +def _parse_xml_string(string, namespace_mapping=None): + return parse_xml(io.BytesIO(string), namespace_mapping) |
