xref: /aosp_15_r20/external/fonttools/Tests/misc/etree_test.py (revision e1fe3e4ad2793916b15cccdc4a7da52a7e1dd0e9)
1*e1fe3e4aSElliott Hughes# coding: utf-8
2*e1fe3e4aSElliott Hughesfrom fontTools.misc import etree
3*e1fe3e4aSElliott Hughesfrom collections import OrderedDict
4*e1fe3e4aSElliott Hughesimport io
5*e1fe3e4aSElliott Hughesimport pytest
6*e1fe3e4aSElliott Hughes
7*e1fe3e4aSElliott Hughes
8*e1fe3e4aSElliott Hughes@pytest.mark.parametrize(
9*e1fe3e4aSElliott Hughes    "xml",
10*e1fe3e4aSElliott Hughes    [
11*e1fe3e4aSElliott Hughes        (
12*e1fe3e4aSElliott Hughes            "<root>"
13*e1fe3e4aSElliott Hughes            '<element key="value">text</element>'
14*e1fe3e4aSElliott Hughes            "<element>text</element>tail"
15*e1fe3e4aSElliott Hughes            "<empty-element/>"
16*e1fe3e4aSElliott Hughes            "</root>"
17*e1fe3e4aSElliott Hughes        ),
18*e1fe3e4aSElliott Hughes        (
19*e1fe3e4aSElliott Hughes            "<root>\n"
20*e1fe3e4aSElliott Hughes            '  <element key="value">text</element>\n'
21*e1fe3e4aSElliott Hughes            "  <element>text</element>tail\n"
22*e1fe3e4aSElliott Hughes            "  <empty-element/>\n"
23*e1fe3e4aSElliott Hughes            "</root>"
24*e1fe3e4aSElliott Hughes        ),
25*e1fe3e4aSElliott Hughes        (
26*e1fe3e4aSElliott Hughes            '<axis default="400" maximum="1000" minimum="1" name="weight" tag="wght">'
27*e1fe3e4aSElliott Hughes            '<labelname xml:lang="fa-IR">قطر</labelname>'
28*e1fe3e4aSElliott Hughes            "</axis>"
29*e1fe3e4aSElliott Hughes        ),
30*e1fe3e4aSElliott Hughes    ],
31*e1fe3e4aSElliott Hughes    ids=["simple_xml_no_indent", "simple_xml_indent", "xml_ns_attrib_utf_8"],
32*e1fe3e4aSElliott Hughes)
33*e1fe3e4aSElliott Hughesdef test_roundtrip_string(xml):
34*e1fe3e4aSElliott Hughes    root = etree.fromstring(xml.encode("utf-8"))
35*e1fe3e4aSElliott Hughes    result = etree.tostring(root, encoding="utf-8").decode("utf-8")
36*e1fe3e4aSElliott Hughes    assert result == xml
37*e1fe3e4aSElliott Hughes
38*e1fe3e4aSElliott Hughes
39*e1fe3e4aSElliott Hughesdef test_pretty_print():
40*e1fe3e4aSElliott Hughes    root = etree.Element("root")
41*e1fe3e4aSElliott Hughes    attrs = OrderedDict([("c", "2"), ("b", "1"), ("a", "0")])
42*e1fe3e4aSElliott Hughes    etree.SubElement(root, "element", attrs).text = "text"
43*e1fe3e4aSElliott Hughes    etree.SubElement(root, "element").text = "text"
44*e1fe3e4aSElliott Hughes    root.append(etree.Element("empty-element"))
45*e1fe3e4aSElliott Hughes
46*e1fe3e4aSElliott Hughes    result = etree.tostring(root, encoding="unicode", pretty_print=True)
47*e1fe3e4aSElliott Hughes
48*e1fe3e4aSElliott Hughes    assert result == (
49*e1fe3e4aSElliott Hughes        "<root>\n"
50*e1fe3e4aSElliott Hughes        '  <element c="2" b="1" a="0">text</element>\n'
51*e1fe3e4aSElliott Hughes        "  <element>text</element>\n"
52*e1fe3e4aSElliott Hughes        "  <empty-element/>\n"
53*e1fe3e4aSElliott Hughes        "</root>\n"
54*e1fe3e4aSElliott Hughes    )
55