| # coding: utf-8 |
| from __future__ import absolute_import, unicode_literals |
| from fontTools.misc import etree |
| from collections import OrderedDict |
| import io |
| import pytest |
| |
| |
| @pytest.mark.parametrize( |
| "xml", |
| [ |
| ( |
| "<root>" |
| '<element key="value">text</element>' |
| "<element>text</element>tail" |
| "<empty-element/>" |
| "</root>" |
| ), |
| ( |
| "<root>\n" |
| ' <element key="value">text</element>\n' |
| " <element>text</element>tail\n" |
| " <empty-element/>\n" |
| "</root>" |
| ), |
| ( |
| '<axis default="400" maximum="1000" minimum="1" name="weight" tag="wght">' |
| '<labelname xml:lang="fa-IR">قطر</labelname>' |
| "</axis>" |
| ), |
| ], |
| ids=["simple_xml_no_indent", "simple_xml_indent", "xml_ns_attrib_utf_8"], |
| ) |
| def test_roundtrip_string(xml): |
| root = etree.fromstring(xml.encode("utf-8")) |
| result = etree.tostring(root, encoding="utf-8").decode("utf-8") |
| assert result == xml |
| |
| |
| def test_pretty_print(): |
| root = etree.Element("root") |
| attrs = OrderedDict([("c", "2"), ("b", "1"), ("a", "0")]) |
| etree.SubElement(root, "element", attrs).text = "text" |
| etree.SubElement(root, "element").text = "text" |
| root.append(etree.Element("empty-element")) |
| |
| result = etree.tostring(root, encoding="unicode", pretty_print=True) |
| |
| assert result == ( |
| "<root>\n" |
| ' <element c="2" b="1" a="0">text</element>\n' |
| " <element>text</element>\n" |
| " <empty-element/>\n" |
| "</root>\n" |
| ) |