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