symbian-qemu-0.9.1-12/python-2.6.1/Lib/test/test_xml_etree_c.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 # xml.etree test for cElementTree
       
     2 
       
     3 import doctest
       
     4 import sys
       
     5 
       
     6 from test import test_support
       
     7 
       
     8 from xml.etree import cElementTree as ET
       
     9 
       
    10 SAMPLE_XML = """
       
    11 <body>
       
    12   <tag>text</tag>
       
    13   <tag />
       
    14   <section>
       
    15     <tag>subtext</tag>
       
    16   </section>
       
    17 </body>
       
    18 """
       
    19 
       
    20 SAMPLE_XML_NS = """
       
    21 <body xmlns="http://effbot.org/ns">
       
    22   <tag>text</tag>
       
    23   <tag />
       
    24   <section>
       
    25     <tag>subtext</tag>
       
    26   </section>
       
    27 </body>
       
    28 """
       
    29 
       
    30 def sanity():
       
    31     """
       
    32     Import sanity.
       
    33 
       
    34     >>> from xml.etree import cElementTree
       
    35     """
       
    36 
       
    37 def check_method(method):
       
    38     if not callable(method):
       
    39         print method, "not callable"
       
    40 
       
    41 def serialize(ET, elem, encoding=None):
       
    42     import StringIO
       
    43     file = StringIO.StringIO()
       
    44     tree = ET.ElementTree(elem)
       
    45     if encoding:
       
    46         tree.write(file, encoding)
       
    47     else:
       
    48         tree.write(file)
       
    49     return file.getvalue()
       
    50 
       
    51 def summarize(elem):
       
    52     return elem.tag
       
    53 
       
    54 def summarize_list(seq):
       
    55     return map(summarize, seq)
       
    56 
       
    57 def interface():
       
    58     """
       
    59     Test element tree interface.
       
    60 
       
    61     >>> element = ET.Element("tag", key="value")
       
    62     >>> tree = ET.ElementTree(element)
       
    63 
       
    64     Make sure all standard element methods exist.
       
    65 
       
    66     >>> check_method(element.append)
       
    67     >>> check_method(element.insert)
       
    68     >>> check_method(element.remove)
       
    69     >>> check_method(element.getchildren)
       
    70     >>> check_method(element.find)
       
    71     >>> check_method(element.findall)
       
    72     >>> check_method(element.findtext)
       
    73     >>> check_method(element.clear)
       
    74     >>> check_method(element.get)
       
    75     >>> check_method(element.set)
       
    76     >>> check_method(element.keys)
       
    77     >>> check_method(element.items)
       
    78     >>> check_method(element.getiterator)
       
    79 
       
    80     Basic method sanity checks.
       
    81 
       
    82     >>> serialize(ET, element) # 1
       
    83     '<tag key="value" />'
       
    84     >>> subelement = ET.Element("subtag")
       
    85     >>> element.append(subelement)
       
    86     >>> serialize(ET, element) #  2
       
    87     '<tag key="value"><subtag /></tag>'
       
    88     >>> element.insert(0, subelement)
       
    89     >>> serialize(ET, element) # 3
       
    90     '<tag key="value"><subtag /><subtag /></tag>'
       
    91     >>> element.remove(subelement)
       
    92     >>> serialize(ET, element) # 4
       
    93     '<tag key="value"><subtag /></tag>'
       
    94     >>> element.remove(subelement)
       
    95     >>> serialize(ET, element) # 5
       
    96     '<tag key="value" />'
       
    97     >>> element.remove(subelement)
       
    98     Traceback (most recent call last):
       
    99     ValueError: list.remove(x): x not in list
       
   100     >>> serialize(ET, element) # 6
       
   101     '<tag key="value" />'
       
   102     """
       
   103 
       
   104 def find():
       
   105     """
       
   106     Test find methods (including xpath syntax).
       
   107 
       
   108     >>> elem = ET.XML(SAMPLE_XML)
       
   109     >>> elem.find("tag").tag
       
   110     'tag'
       
   111     >>> ET.ElementTree(elem).find("tag").tag
       
   112     'tag'
       
   113     >>> elem.find("section/tag").tag
       
   114     'tag'
       
   115     >>> ET.ElementTree(elem).find("section/tag").tag
       
   116     'tag'
       
   117     >>> elem.findtext("tag")
       
   118     'text'
       
   119     >>> elem.findtext("tog")
       
   120     >>> elem.findtext("tog", "default")
       
   121     'default'
       
   122     >>> ET.ElementTree(elem).findtext("tag")
       
   123     'text'
       
   124     >>> elem.findtext("section/tag")
       
   125     'subtext'
       
   126     >>> ET.ElementTree(elem).findtext("section/tag")
       
   127     'subtext'
       
   128     >>> summarize_list(elem.findall("tag"))
       
   129     ['tag', 'tag']
       
   130     >>> summarize_list(elem.findall("*"))
       
   131     ['tag', 'tag', 'section']
       
   132     >>> summarize_list(elem.findall(".//tag"))
       
   133     ['tag', 'tag', 'tag']
       
   134     >>> summarize_list(elem.findall("section/tag"))
       
   135     ['tag']
       
   136     >>> summarize_list(elem.findall("section//tag"))
       
   137     ['tag']
       
   138     >>> summarize_list(elem.findall("section/*"))
       
   139     ['tag']
       
   140     >>> summarize_list(elem.findall("section//*"))
       
   141     ['tag']
       
   142     >>> summarize_list(elem.findall("section/.//*"))
       
   143     ['tag']
       
   144     >>> summarize_list(elem.findall("*/*"))
       
   145     ['tag']
       
   146     >>> summarize_list(elem.findall("*//*"))
       
   147     ['tag']
       
   148     >>> summarize_list(elem.findall("*/tag"))
       
   149     ['tag']
       
   150     >>> summarize_list(elem.findall("*/./tag"))
       
   151     ['tag']
       
   152     >>> summarize_list(elem.findall("./tag"))
       
   153     ['tag', 'tag']
       
   154     >>> summarize_list(elem.findall(".//tag"))
       
   155     ['tag', 'tag', 'tag']
       
   156     >>> summarize_list(elem.findall("././tag"))
       
   157     ['tag', 'tag']
       
   158     >>> summarize_list(ET.ElementTree(elem).findall("/tag"))
       
   159     ['tag', 'tag']
       
   160     >>> summarize_list(ET.ElementTree(elem).findall("./tag"))
       
   161     ['tag', 'tag']
       
   162     >>> elem = ET.XML(SAMPLE_XML_NS)
       
   163     >>> summarize_list(elem.findall("tag"))
       
   164     []
       
   165     >>> summarize_list(elem.findall("{http://effbot.org/ns}tag"))
       
   166     ['{http://effbot.org/ns}tag', '{http://effbot.org/ns}tag']
       
   167     >>> summarize_list(elem.findall(".//{http://effbot.org/ns}tag"))
       
   168     ['{http://effbot.org/ns}tag', '{http://effbot.org/ns}tag', '{http://effbot.org/ns}tag']
       
   169     """
       
   170 
       
   171 def parseliteral():
       
   172     r"""
       
   173 
       
   174     >>> element = ET.XML("<html><body>text</body></html>")
       
   175     >>> ET.ElementTree(element).write(sys.stdout)
       
   176     <html><body>text</body></html>
       
   177     >>> element = ET.fromstring("<html><body>text</body></html>")
       
   178     >>> ET.ElementTree(element).write(sys.stdout)
       
   179     <html><body>text</body></html>
       
   180     >>> print ET.tostring(element)
       
   181     <html><body>text</body></html>
       
   182     >>> print ET.tostring(element, "ascii")
       
   183     <?xml version='1.0' encoding='ascii'?>
       
   184     <html><body>text</body></html>
       
   185     >>> _, ids = ET.XMLID("<html><body>text</body></html>")
       
   186     >>> len(ids)
       
   187     0
       
   188     >>> _, ids = ET.XMLID("<html><body id='body'>text</body></html>")
       
   189     >>> len(ids)
       
   190     1
       
   191     >>> ids["body"].tag
       
   192     'body'
       
   193     """
       
   194 
       
   195 def check_encoding(encoding):
       
   196     """
       
   197     >>> check_encoding("ascii")
       
   198     >>> check_encoding("us-ascii")
       
   199     >>> check_encoding("iso-8859-1")
       
   200     >>> check_encoding("iso-8859-15")
       
   201     >>> check_encoding("cp437")
       
   202     >>> check_encoding("mac-roman")
       
   203     """
       
   204     ET.XML(
       
   205         "<?xml version='1.0' encoding='%s'?><xml />" % encoding
       
   206         )
       
   207 
       
   208 def bug_1534630():
       
   209     """
       
   210     >>> bob = ET.TreeBuilder()
       
   211     >>> e = bob.data("data")
       
   212     >>> e = bob.start("tag", {})
       
   213     >>> e = bob.end("tag")
       
   214     >>> e = bob.close()
       
   215     >>> serialize(ET, e)
       
   216     '<tag />'
       
   217     """
       
   218 
       
   219 def test_main():
       
   220     from test import test_xml_etree_c
       
   221     test_support.run_doctest(test_xml_etree_c, verbosity=True)
       
   222 
       
   223 if __name__ == '__main__':
       
   224     test_main()