a
     RîhÄÀ  ã                	   @   s"  d dl mZmZmZmZmZ d dlZd dlmZ z
eƒ  W n eyV   e d¡‚Y n0 d dl	m
Z
mZmZmZmZmZ d dlmZ d dlmZmZ d dlmZmZmZ d d	lmZmZ d dlZd dlZd dlZd dl Z d d
l!m"Z" d dl#Z$d dl%m&Z& d dl'm(Z(m)Z)m*Z* e(dddZ+e(dddZ,ze+ -d¡ e, -d¡ W n e.yZ   e d¡‚Y n0 dZ/ej0j1sšze&j2 -e&j3¡ W n e4e5fy˜   dZ/Y n0 e 6e/d¡Z7dZ8G dd„ dej9ƒZ:d?dd„Z;d@dd„Z<dAdd„Z=G d d!„ d!ej9ƒZ>G d"d#„ d#ej9ƒZ?G d$d%„ d%ej9ƒZ@G d&d'„ d'ej9ƒZAG d(d)„ d)ƒZBG d*d+„ d+eBej9ƒZCG d,d-„ d-eBej9ƒZDG d.d/„ d/eDƒZEG d0d1„ d1eBej9ƒZFG d2d3„ d3eBej9ƒZGd4ZHG d5d6„ d6ej9ƒZIeJe,d7ƒZKeK L¡ ZMW d  ƒ n1 sÐ0    Y  G d8d9„ d9e:ƒZNG d:d;„ d;ej9ƒZOG d<d=„ d=e:ƒZPeQd>kre R¡  dS )Bé    )Úmake_parserÚContentHandlerÚSAXExceptionÚSAXReaderNotAvailableÚSAXParseExceptionN)Úmockzno XML parsers available)ÚXMLGeneratorÚescapeÚunescapeÚ	quoteattrÚXMLFilterBaseÚprepare_input_source)Úcreate_parser)Úfeature_namespacesÚfeature_external_ges)ÚInputSourceÚAttributesImplÚAttributesNSImpl)ÚBytesIOÚStringIO)ÚURLError)Úsupport)ÚfindfileÚFakePathÚTESTFNztest.xmlZxmltestdata)Zsubdirztest.xml.outúutf-8z!filename is not encodable to utf8TFz$Requires non-ascii filenames supportz%http://www.python.org/xml-ns/saxtest/c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚXmlTestBasec                 C   s  |   t|jd¡ |   t|jd¡ |   t|jd¡ |   t|jd¡ |   t|jd¡ |  | ¡ d¡ |  | 	¡ g ¡ |  | 
¡ g ¡ |  t|ƒd¡ |  d|¡ |  t| ¡ ƒg ¡ |  | d¡d ¡ |  | dd¡d¡ |  t| ¡ ƒg ¡ |  t| ¡ ƒg ¡ d S )NÚattrr   Úattrsé   )ÚassertRaisesÚKeyErrorÚgetValueÚgetValueByQNameÚgetNameByQNameÚgetQNameByNameÚ__getitem__ÚassertEqualÚ	getLengthÚgetNamesÚ	getQNamesÚlenÚassertNotInÚlistÚkeysÚgetÚitemsÚvalues©Úselfr   © r4   ú5/opt/python-3.9.24/usr/lib/python3.9/test/test_sax.pyÚverify_empty_attrs3   s    zXmlTestBase.verify_empty_attrsc                 C   s  |   t|jtdf¡ |   t|jd¡ |   t|jd¡ |   t|jtdf¡ |   t|jtdf¡ |  | 	¡ d¡ |  | 
¡ g ¡ |  | ¡ g ¡ |  t|ƒd¡ |  tdf|¡ |  t| ¡ ƒg ¡ |  | tdf¡d ¡ |  | tdfd¡d¡ |  t| ¡ ƒg ¡ |  t| ¡ ƒg ¡ d S )Nr   úns:attrr   r   )r    r!   r"   Úns_urir#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r4   r4   r5   Úverify_empty_nsattrsD   s    z XmlTestBase.verify_empty_nsattrsc                 C   s  |   | ¡ d¡ |   | ¡ dg¡ |   | ¡ dg¡ |   t|ƒd¡ |  d|¡ |   t| ¡ ƒdg¡ |   | d¡d¡ |   | dd¡d¡ |   t| 	¡ ƒdg¡ |   t| 
¡ ƒdg¡ |   | d¡d¡ |   | d¡d¡ |   | d¡d¡ |   |d d¡ |   | d¡d¡ d S )Né   r   Úvalr   )r   r;   )r'   r(   r)   r*   r+   ÚassertInr-   r.   r/   r0   r1   r"   r#   r$   r%   r2   r4   r4   r5   Úverify_attrs_wattrU   s    zXmlTestBase.verify_attrs_wattrN)Ú__name__Ú
__module__Ú__qualname__r6   r9   r=   r4   r4   r4   r5   r   2   s   r   c                 C   s   |d u r| S d|| f S ©Nú&<?xml version="1.0" encoding="%s"?>
%sr4   )ÚdocÚencodingr4   r4   r5   Úxml_strg   s    rE   .c                 C   s   |du r|}t | |ƒ |d¡S )N.Úxmlcharrefreplace)rE   Úencode)rC   rD   Údecl_encodingr4   r4   r5   Ú	xml_bytesl   s    rI   c                 C   sP   |du r|}t td|dd }| t| |ƒ¡ W d   ƒ n1 sB0    Y  d S )N.ÚwrF   )rD   Úerrors)Úopenr   ÚwriterE   )rC   rD   rH   Úfr4   r4   r5   Úmake_xml_fileq   s    rO   c                   @   s`   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )Ú	ParseTestu,   <money value="$Â£â‚¬ð…»">$Â£â‚¬ð…»</money>c                 C   s   t  t¡ d S ©N)r   Úunlinkr   ©r3   r4   r4   r5   ÚtearDown{   s    zParseTest.tearDownc                 C   s>   ddl m} tƒ }||t|dƒƒ |  | ¡ t| jdƒ¡ d S )Nr   )Úparser   )Úxml.saxrU   r   r   r'   ÚgetvaluerE   Údata)r3   rN   rU   Úresultr4   r4   r5   Úcheck_parse~   s    zParseTest.check_parsec              	   C   sÂ   d}|D ]´}|   tt| j|ƒƒ¡ t| j|ƒ ttd|d}|   |¡ W d   ƒ n1 s\0    Y  |   t| jƒ¡ t| j|d ƒ ttd|d}|   |¡ W d   ƒ q1 s²0    Y  qd S )N©úus-asciiú
iso-8859-1r   úutf-16úutf-16leúutf-16beÚr©rD   )rZ   r   rE   rX   rO   rL   r   ©r3   Ú	encodingsrD   rN   r4   r4   r5   Útest_parse_text„   s    (zParseTest.test_parse_textc              	   C   sî  d}|D ]È}|   tt| j|ƒƒ¡ t| j|ƒ |   t¡ ttdƒ}|   |¡ W d   ƒ n1 sb0    Y  |   tt| j|d ƒƒ¡ t| j|d ƒ |   t¡ ttdƒ}|   |¡ W d   ƒ q1 sÆ0    Y  q|   tt| jddƒƒ¡ t| jddƒ |   t¡ ttdƒ}|   |¡ W d   ƒ n1 s.0    Y  |   tt| jdd ƒƒ¡ t| jdd ƒ |   t¡ ttdƒ}|   |¡ W d   ƒ n1 s”0    Y  |   tt| jdƒƒ¡ t| jdƒ |   t¡ ttdƒ}|   |¡ W d   ƒ n1 sö0    Y  |  t¡( |   tt| jdd ƒƒ¡ W d   ƒ n1 s:0    Y  t| jdd ƒ |  t¡ |   t¡ W d   ƒ n1 s~0    Y  ttdƒF}|  t¡ |   |¡ W d   ƒ n1 sÀ0    Y  W d   ƒ n1 sà0    Y  d S )N©r\   r   r^   r_   r`   Úrbú	utf-8-sigr   r]   )	rZ   r   rI   rX   rO   r   rL   r    r   rc   r4   r4   r5   Útest_parse_bytes‘   sF    
(
*
*
*
*8*zParseTest.test_parse_bytesc                 C   s    t | jdd ƒ |  ttƒ¡ d S )Nr   )rO   rX   rZ   r   r   rS   r4   r4   r5   Útest_parse_path_object»   s    z ParseTest.test_parse_path_objectc                 C   s`   t | jdd ƒ ttdƒ4}tƒ }| |¡ | d¡ |  |¡ W d   ƒ n1 sR0    Y  d S )Nr]   rg   )rO   rX   rL   r   r   ÚsetByteStreamZsetEncodingrZ   )r3   rN   Úinputr4   r4   r5   Útest_parse_InputSource¿   s    

z ParseTest.test_parse_InputSourcec              	      s–   t ‰ d ‰‡ ‡fdd„}tjd|d^ t| jdd ƒ |  t¡ |  t¡ W d   ƒ n1 s^0    Y  |  	ˆj
¡ W d   ƒ n1 sˆ0    Y  d S )Nc                     s   ˆ | Ž ‰ˆS rQ   r4   )Úargs©Zbuiltin_openÚfileobjr4   r5   Ú	mock_openÌ   s    z4ParseTest.test_parse_close_source.<locals>.mock_openzxml.sax.saxutils.open)Zside_effectr]   )rL   r   ZpatchrO   rX   r    r   rZ   r   Ú
assertTrueÚclosed)r3   rq   r4   ro   r5   Útest_parse_close_sourceÈ   s    (z!ParseTest.test_parse_close_sourcec                 C   s>   ddl m} tƒ }||t|dƒƒ |  | ¡ t| jdƒ¡ d S )Nr   )ÚparseStringr   )rV   ru   r   r   r'   rW   rE   rX   )r3   Úsru   rY   r4   r4   r5   Úcheck_parseString×   s    zParseTest.check_parseStringc                 C   s0   d}|D ]}|   t| j|ƒ¡ q|   | j¡ d S )Nr[   )rw   rE   rX   ©r3   rd   rD   r4   r4   r5   Útest_parseString_textÝ   s    zParseTest.test_parseString_textc                 C   s°   d}|D ]*}|   t| j|ƒ¡ |   t| j|d ƒ¡ q|   t| jddƒ¡ |   t| jdd ƒ¡ |   t| jdƒ¡ |  t¡$ |   t| jdd ƒ¡ W d   ƒ n1 s¢0    Y  d S )Nrf   rh   r   r]   )rw   rI   rX   r    r   rx   r4   r4   r5   Útest_parseString_bytesä   s    z ParseTest.test_parseString_bytesN)r>   r?   r@   rX   rT   rZ   re   ri   rj   rm   rt   rw   ry   rz   r4   r4   r4   r5   rP   x   s   *	rP   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚMakeParserTestc                 C   sp   ddl m} |ƒ }ddl m} |ƒ }ddl m} |ƒ }ddl m} |ƒ }ddl m} |ƒ }ddl m} |ƒ }d S )Nr   ©r   )rV   r   )r3   r   Úpr4   r4   r5   Útest_make_parser2õ   s    z MakeParserTest.test_make_parser2c                 C   sH   t dgƒ t dƒ t dhƒ t tdhƒƒ t dd iƒ t tdgƒƒ d S )NÚmodule)r   ©r   Ú	frozensetÚiterrS   r4   r4   r5   Útest_make_parser3  s    

z MakeParserTest.test_make_parser3c                 C   s>   t g ƒ t tƒ ƒ t tƒ ƒ t tƒ ƒ t i ƒ t tg ƒƒ d S rQ   )r   ÚtupleÚsetr   r‚   rS   r4   r4   r5   Útest_make_parser4  s    


z MakeParserTest.test_make_parser4c                 C   sR   t ddgƒ t dƒ t ddhƒ t tddhƒƒ t d d dœƒ t tddgƒƒ d S )NÚmodule1Úmodule2)r‡   rˆ   r€   rS   r4   r4   r5   Útest_make_parser5  s    z MakeParserTest.test_make_parser5N)r>   r?   r@   r~   rƒ   r†   r‰   r4   r4   r4   r5   r{   ô   s   
	r{   c                   @   sl   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚSaxutilsTestc                 C   s   |   tdƒd¡ d S )NúDonald Duck & CoúDonald Duck &amp; Co©r'   r	   rS   r4   r4   r5   Útest_escape_basic+  s    zSaxutilsTest.test_escape_basicc                 C   s   |   tdƒd¡ d S )Nú<Donald Duck & Co>ú&lt;Donald Duck &amp; Co&gt;r   rS   r4   r4   r5   Útest_escape_all.  s    
ÿzSaxutilsTest.test_escape_allc                 C   s   |   tdddiƒd¡ d S ©Nu   Hei pÃ¥ degõ   Ã¥z&aring;zHei p&aring; degr   rS   r4   r4   r5   Útest_escape_extra2  s    ÿzSaxutilsTest.test_escape_extrac                 C   s   |   tdƒd¡ d S )NrŒ   r‹   ©r'   r
   rS   r4   r4   r5   Útest_unescape_basic7  s    z SaxutilsTest.test_unescape_basicc                 C   s   |   tdƒd¡ d S )Nr   r   r•   rS   r4   r4   r5   Útest_unescape_all:  s    
ÿzSaxutilsTest.test_unescape_allc                 C   s   |   tdddiƒd¡ d S r’   r•   rS   r4   r4   r5   Útest_unescape_extra>  s    ÿz SaxutilsTest.test_unescape_extrac                 C   s   |   tdddiƒd¡ d S )Nz	&amp;foo;z&foo;Zsplatr•   rS   r4   r4   r5   Útest_unescape_amp_extraB  s    z$SaxutilsTest.test_unescape_amp_extrac                 C   s   |   tdƒd¡ d S )Nr‹   z"Donald Duck &amp; Co"©r'   r   rS   r4   r4   r5   Útest_quoteattr_basicF  s    
ÿz!SaxutilsTest.test_quoteattr_basicc                 C   s   |   tdƒd¡ d S )NzIncludes "double" quotesz'Includes "double" quotes'rš   rS   r4   r4   r5   Útest_single_quoteattrJ  s    
ÿz"SaxutilsTest.test_single_quoteattrc                 C   s   |   tdƒd¡ d S )NzIncludes 'single' quotesz"Includes 'single' quotes"rš   rS   r4   r4   r5   Útest_double_quoteattrN  s    
ÿz"SaxutilsTest.test_double_quoteattrc                 C   s   |   tdƒd¡ d S )Nz%Includes 'single' and "double" quotesz1"Includes 'single' and &quot;double&quot; quotes"rš   rS   r4   r4   r5   Útest_single_double_quoteattrR  s    
ÿz)SaxutilsTest.test_single_double_quoteattrc                 C   s   t dgƒ}d S )Nzxml.parsers.no_such_parserr|   )r3   r}   r4   r4   r5   Útest_make_parserW  s    zSaxutilsTest.test_make_parserN)r>   r?   r@   rŽ   r‘   r”   r–   r—   r˜   r™   r›   rœ   r   rž   rŸ   r4   r4   r4   r5   rŠ   )  s   rŠ   c                   @   sl   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚPrepareInputSourceTestc                 C   sB   t j| _t| jdƒ}| d¡ W d   ƒ n1 s40    Y  d S )NrJ   zThis was read from a file.)r   r   ÚfilerL   rM   )r3   Útmpr4   r4   r5   ÚsetUp_  s    zPrepareInputSourceTest.setUpc                 C   s   t  | j¡ d S rQ   )r   rR   r¡   rS   r4   r4   r5   rT   d  s    zPrepareInputSourceTest.tearDownc                 C   s   t dƒS ©Ns   This is a byte stream.)r   rS   r4   r4   r5   Úmake_byte_streamg  s    z'PrepareInputSourceTest.make_byte_streamc                 C   s   t dƒS ©NzThis is a character stream.)r   rS   r4   r4   r5   Úmake_character_streamj  s    z,PrepareInputSourceTest.make_character_streamc                 C   s&   |   |¡ |  | ¡ |¡ | ¡  d S rQ   )ZassertIsNotNoner'   ÚreadÚclose)r3   ÚstreamÚcontentr4   r4   r5   ÚcheckContentm  s    
z#PrepareInputSourceTest.checkContentc                 C   sB   t | jƒ}| |  ¡ ¡ t|ƒ}|  | ¡ ¡ |  | ¡ d¡ d S r¦   )	r   r¡   ÚsetCharacterStreamr§   r   ÚassertIsNoneÚgetByteStreamr¬   ÚgetCharacterStream©r3   ÚsrcÚprepr4   r4   r5   Útest_character_streams  s    

ÿz,PrepareInputSourceTest.test_character_streamc                 C   sB   t | jƒ}| |  ¡ ¡ t|ƒ}|  | ¡ ¡ |  | ¡ d¡ d S r¤   )	r   r¡   rk   r¥   r   r®   r°   r¬   r¯   r±   r4   r4   r5   Útest_byte_stream|  s    

ÿz'PrepareInputSourceTest.test_byte_streamc                 C   s4   t | jƒ}t|ƒ}|  | ¡ ¡ |  | ¡ d¡ d S ©Ns   This was read from a file.)r   r¡   r   r®   r°   r¬   r¯   r±   r4   r4   r5   Útest_system_id†  s    

ÿz%PrepareInputSourceTest.test_system_idc                 C   s,   t | jƒ}|  | ¡ ¡ |  | ¡ d¡ d S r¶   )r   r¡   r®   r°   r¬   r¯   ©r3   r³   r4   r4   r5   Útest_string  s
    

ÿz"PrepareInputSourceTest.test_stringc                 C   s0   t t| jƒƒ}|  | ¡ ¡ |  | ¡ d¡ d S r¶   )r   r   r¡   r®   r°   r¬   r¯   r¸   r4   r4   r5   Útest_path_objects–  s
    
ÿz(PrepareInputSourceTest.test_path_objectsc                 C   s.   t |  ¡ ƒ}|  | ¡ ¡ |  | ¡ d¡ d S r¤   )r   r¥   r®   r°   r¬   r¯   r¸   r4   r4   r5   Útest_binary_file  s
    
ÿz'PrepareInputSourceTest.test_binary_filec                 C   s.   t |  ¡ ƒ}|  | ¡ ¡ |  | ¡ d¡ d S r¦   )r   r§   r®   r¯   r¬   r°   r¸   r4   r4   r5   Útest_text_file¥  s
    
ÿz%PrepareInputSourceTest.test_text_fileN)r>   r?   r@   r£   rT   r¥   r§   r¬   r´   rµ   r·   r¹   rº   r»   r¼   r4   r4   r4   r5   r    ]  s   	
	r    c                   @   sÌ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1S )2Ú
XmlgenTestc                 C   sP   |   ¡ }t|ƒ}| ¡  | di ¡ | d¡ | ¡  |  | ¡ |  d¡¡ d S )NrC   ú<doc></doc>©	Úioclassr   ÚstartDocumentÚstartElementÚ
endElementÚendDocumentr'   rW   Úxml©r3   rY   Úgenr4   r4   r5   Útest_xmlgen_basic±  s    
zXmlgenTest.test_xmlgen_basicc                 C   sT   |   ¡ }t|dd}| ¡  | di ¡ | d¡ | ¡  |  | ¡ |  d¡¡ d S )NT©Zshort_empty_elementsrC   ú<doc/>r¿   rÆ   r4   r4   r5   Útest_xmlgen_basic_empty»  s    
z"XmlgenTest.test_xmlgen_basic_emptyc                 C   sZ   |   ¡ }t|ƒ}| ¡  | di ¡ | d¡ | d¡ | ¡  |  | ¡ |  	d¡¡ d S )NrC   Úhuheiú<doc>huhei</doc>©
rÀ   r   rÁ   rÂ   Ú
charactersrÃ   rÄ   r'   rW   rÅ   rÆ   r4   r4   r5   Útest_xmlgen_contentÅ  s    

zXmlgenTest.test_xmlgen_contentc                 C   s^   |   ¡ }t|dd}| ¡  | di ¡ | d¡ | d¡ | ¡  |  | ¡ |  	d¡¡ d S )NTrÉ   rC   rÌ   rÍ   rÎ   rÆ   r4   r4   r5   Útest_xmlgen_content_emptyÑ  s    

z$XmlgenTest.test_xmlgen_content_emptyc                 C   s\   |   ¡ }t|ƒ}| ¡  | dd¡ | di ¡ | d¡ | ¡  |  | ¡ |  	d¡¡ d S )NÚtestrX   rC   z<?test data?><doc></doc>)
rÀ   r   rÁ   ZprocessingInstructionrÂ   rÃ   rÄ   r'   rW   rÅ   rÆ   r4   r4   r5   Útest_xmlgen_piÝ  s    

ÿzXmlgenTest.test_xmlgen_pic                 C   sZ   |   ¡ }t|ƒ}| ¡  | di ¡ | d¡ | d¡ | ¡  |  | ¡ |  	d¡¡ d S )NrC   z<huhei&z<doc>&lt;huhei&amp;</doc>rÎ   rÆ   r4   r4   r5   Útest_xmlgen_content_escapeê  s    


ÿz%XmlgenTest.test_xmlgen_content_escapec                 C   s¢   |   ¡ }t|ƒ}| ¡  | dddi¡ | dddi¡ | d¡ | dddi¡ | d¡ | dddi¡ | d¡ | d¡ | ¡  |  | ¡ |  d¡¡ d S )	NrC   Úaú"Úeú'z'"z
	zK<doc a='"'><e a="'"></e><e a="'&quot;"></e><e a="&#10;&#13;&#9;"></e></doc>r¿   rÆ   r4   r4   r5   Útest_xmlgen_attr_escape÷  s    



ÿz"XmlgenTest.test_xmlgen_attr_escapec                 C   st   d}|D ]f}|   ¡ }t||d}| ¡  | dddi¡ | d¡ | d¡ | ¡  |  | ¡ | j	d|d¡ qd S )N©	ziso-8859-15r   rh   r^   r`   r_   zutf-32zutf-32bezutf-32lerb   rC   rÕ   õ   â‚¬u   <doc a="â‚¬">â‚¬</doc>rÎ   ©r3   rd   rD   rY   rÇ   r4   r4   r5   Útest_xmlgen_encoding  s    


ÿzXmlgenTest.test_xmlgen_encodingc                 C   sf   |   ¡ }t|dd}| ¡  | dddi¡ | d¡ | d¡ | ¡  |  | ¡ | j	ddd¡ d S )NÚasciirb   rC   rÕ   rÛ   z<doc a="&#8364;">&#8364;</doc>rÎ   rÆ   r4   r4   r5   Útest_xmlgen_unencodable  s    


ÿz"XmlgenTest.test_xmlgen_unencodablec                 C   sZ   |   ¡ }t|ƒ}| ¡  | di ¡ | d¡ | d¡ | ¡  |  | ¡ |  	d¡¡ d S )NrC   ú ú<doc> </doc>©
rÀ   r   rÁ   rÂ   ÚignorableWhitespacerÃ   rÄ   r'   rW   rÅ   rÆ   r4   r4   r5   Útest_xmlgen_ignorable)  s    

z XmlgenTest.test_xmlgen_ignorablec                 C   s^   |   ¡ }t|dd}| ¡  | di ¡ | d¡ | d¡ | ¡  |  | ¡ |  	d¡¡ d S )NTrÉ   rC   rà   rá   râ   rÆ   r4   r4   r5   Útest_xmlgen_ignorable_empty5  s    

z&XmlgenTest.test_xmlgen_ignorable_emptyc                 C   sŠ   d}|D ]|}|   ¡ }t||d}| ¡  | dddi¡ | d |¡¡ | d |¡¡ | d¡ | ¡  |  	| 
¡ | jd|d¡ qd S )NrÚ   rb   rC   rÕ   rÛ   rà   u   <doc a="â‚¬">â‚¬ </doc>)rÀ   r   rÁ   rÂ   rÏ   rG   rã   rÃ   rÄ   r'   rW   rÅ   rÜ   r4   r4   r5   Útest_xmlgen_encoding_bytesA  s    

ÿz%XmlgenTest.test_xmlgen_encoding_bytesc                 C   s   |   ¡ }t|ƒ}| ¡  | dt¡ | tdfdi ¡ | dd i ¡ | dd ¡ | tdfd¡ | d¡ | ¡  |  	| 
¡ |  dt ¡¡ d S )NÚns1rC   úns1:doc©NZudocz/<ns1:doc xmlns:ns1="%s"><udoc></udoc></ns1:doc>©rÀ   r   rÁ   ÚstartPrefixMappingr8   ÚstartElementNSÚendElementNSÚendPrefixMappingrÄ   r'   rW   rÅ   rÆ   r4   r4   r5   Útest_xmlgen_nsS  s    
ÿÿzXmlgenTest.test_xmlgen_nsc                 C   s”   |   ¡ }t|dd}| ¡  | dt¡ | tdfdi ¡ | dd i ¡ | dd ¡ | tdfd¡ | d¡ | ¡  |  	| 
¡ |  dt ¡¡ d S )NTrÉ   rç   rC   rè   ré   z)<ns1:doc xmlns:ns1="%s"><udoc/></ns1:doc>rê   rÆ   r4   r4   r5   Útest_xmlgen_ns_emptye  s    
ÿÿzXmlgenTest.test_xmlgen_ns_emptyc                 C   sX   |   ¡ }t|ƒ}| ¡  | ddddi¡ | dd¡ | ¡  |  | ¡ |  d¡¡ d S )N©NrÕ   rÕ   ©NÚbÚcz<a b="c"></a>©	rÀ   r   rÁ   rì   rí   rÄ   r'   rW   rÅ   rÆ   r4   r4   r5   Útest_1463026_1w  s    zXmlgenTest.test_1463026_1c                 C   s\   |   ¡ }t|dd}| ¡  | ddddi¡ | dd¡ | ¡  |  | ¡ |  d¡¡ d S )NTrÉ   rñ   rÕ   rò   rô   z
<a b="c"/>rõ   rÆ   r4   r4   r5   Útest_1463026_1_empty‚  s    zXmlgenTest.test_1463026_1_emptyc                 C   sj   |   ¡ }t|ƒ}| ¡  | d d¡ | ddi ¡ | dd¡ | d ¡ | ¡  |  | 	¡ |  
d¡¡ d S )NÚqux©rø   rÕ   rÕ   z<a xmlns="qux"></a>©rÀ   r   rÁ   rë   rì   rí   rî   rÄ   r'   rW   rÅ   rÆ   r4   r4   r5   Útest_1463026_2  s    
zXmlgenTest.test_1463026_2c                 C   sn   |   ¡ }t|dd}| ¡  | d d¡ | ddi ¡ | dd¡ | d ¡ | ¡  |  | 	¡ |  
d¡¡ d S )NTrÉ   rø   rù   rÕ   z<a xmlns="qux"/>rú   rÆ   r4   r4   r5   Útest_1463026_2_emptyš  s    
zXmlgenTest.test_1463026_2_emptyc                 C   sn   |   ¡ }t|ƒ}| ¡  | dd¡ | ddddi¡ | dd¡ | d¡ | ¡  |  | 	¡ |  
d¡¡ d S )NÚmyrø   rù   rÕ   rò   rô   z"<my:a xmlns:my="qux" b="c"></my:a>rú   rÆ   r4   r4   r5   Útest_1463026_3§  s    

ÿzXmlgenTest.test_1463026_3c                 C   sr   |   ¡ }t|dd}| ¡  | dd¡ | ddddi¡ | dd¡ | d¡ | ¡  |  | 	¡ |  
d	¡¡ d S )
NTrÉ   rý   rø   rù   rÕ   rò   rô   z<my:a xmlns:my="qux" b="c"/>rú   rÆ   r4   r4   r5   Útest_1463026_3_emptyµ  s    

ÿzXmlgenTest.test_1463026_3_emptyc                 C   sX   t dƒ}tƒ }| td¡ |  ¡ }t|ƒ}| |¡ | |¡ |  | 	¡ |  
d¡¡ d S )Nzb<?xml version="1.0"?><a:g1 xmlns:a="http://example.com/ns"><a:g2 xml:lang="en">Hello</a:g2></a:g1>TúM<a:g1 xmlns:a="http://example.com/ns"><a:g2 xml:lang="en">Hello</a:g2></a:g1>)r   r   Ú
setFeaturer   rÀ   r   ÚsetContentHandlerrU   r'   rW   rÅ   )r3   Ztest_xmlÚparserrY   rÇ   r4   r4   r5   Útest_5027_1Ã  s    ÿ


ÿÿzXmlgenTest.test_5027_1c                 C   s–   |   ¡ }t|ƒ}| ¡  | dd¡ | ddi ¡ ddi}| dd|¡ | d	¡ | dd¡ | dd¡ | d¡ | ¡  |  	| 
¡ |  d
¡¡ d S )NrÕ   úhttp://example.com/ns)r  Úg1r  )z$http://www.w3.org/XML/1998/namespaceÚlangÚen)r  Úg2r	  ÚHellor   )rÀ   r   rÁ   rë   rì   rÏ   rí   rî   rÄ   r'   rW   rÅ   )r3   rY   rÇ   Z	lang_attrr4   r4   r5   Útest_5027_2Ý  s"    


ÿÿzXmlgenTest.test_5027_2c                 C   s(   |   ¡ }dd„ }||ƒ |  |j¡ d S )Nc                 S   s    t | ƒ}| ¡  | di ¡ d S )NrC   )r   rÁ   rÂ   )ÚoutrÇ   r4   r4   r5   Úfuncû  s    z+XmlgenTest.test_no_close_file.<locals>.func)rÀ   ÚassertFalsers   )r3   rY   r  r4   r4   r5   Útest_no_close_fileù  s    zXmlgenTest.test_no_close_filec                 C   sz   |   ¡ }t|ƒ}| dddi¡ | d¡ | d¡ | dddi¡ | d¡ |  | ¡ |  d¡t|  d	¡ƒd … ¡ d S )
NZfoorÕ   z1.0r
  Zbarró   z2.0z+<foo a="1.0">Hello</foo><bar b="2.0"></bar>Ú )	rÀ   r   rÂ   rÏ   rÃ   r'   rW   rÅ   r+   rÆ   r4   r4   r5   Útest_xmlgen_fragment  s    



ÿzXmlgenTest.test_xmlgen_fragmentN)r>   r?   r@   rÈ   rË   rÐ   rÑ   rÓ   rÔ   rÙ   rÝ   rß   rä   rå   ræ   rï   rð   rö   r÷   rû   rü   rþ   rÿ   r  r  r  r  r4   r4   r4   r5   r½   °  s0   

	r½   c                   @   s   e Zd ZeZddd„ZdZdS )ÚStringXmlgenTestr]   c                 C   s   d||f S rA   r4   ©r3   rC   rD   r4   r4   r5   rÅ     s    zStringXmlgenTest.xmlN)r]   )r>   r?   r@   r   rÀ   rÅ   rß   r4   r4   r4   r5   r    s   
r  c                   @   s   e Zd ZeZddd„ZdS )ÚBytesXmlgenTestr]   c                 C   s   d||f   |d¡S )NrB   rF   ©rG   r  r4   r4   r5   rÅ     s
    ÿÿzBytesXmlgenTest.xmlN)r]   )r>   r?   r@   r   rÀ   rÅ   r4   r4   r4   r5   r    s   r  c                   @   s   e Zd ZG dd„ deƒZdS )ÚWriterXmlgenTestc                   @   s.   e Zd ZejZdZdd„ Zdd„ Zdd„ Z	dS )	zWriterXmlgenTest.ioclassFc                 C   s   dS )NTr4   rS   r4   r4   r5   Úseekable%  s    z!WriterXmlgenTest.ioclass.seekablec                 C   s   t | ƒS rQ   )r+   rS   r4   r4   r5   Útell(  s    zWriterXmlgenTest.ioclass.tellc                 C   s
   d  | ¡S )Nó    )ÚjoinrS   r4   r4   r5   rW   ,  s    z!WriterXmlgenTest.ioclass.getvalueN)
r>   r?   r@   r-   ÚappendrM   rs   r  r  rW   r4   r4   r4   r5   rÀ   !  s
   rÀ   N)r>   r?   r@   r-   rÀ   r4   r4   r4   r5   r     s   r  c                   @   s   e Zd Zdd„ Zddd„ZdS )ÚStreamWriterXmlgenTestc                 C   s"   t ƒ }t d¡|dƒ}|j|_|S )NrÞ   rF   )r   ÚcodecsÚ	getwriterrW   )r3   ÚrawÚwriterr4   r4   r5   rÀ   0  s    zStreamWriterXmlgenTest.ioclassr]   c                 C   s   d||f   dd¡S ©NrB   rÞ   rF   r  r  r4   r4   r5   rÅ   6  s
    ÿÿzStreamWriterXmlgenTest.xmlN)r]   )r>   r?   r@   rÀ   rÅ   r4   r4   r4   r5   r  /  s   r  c                   @   s(   e Zd Zejd Zdd„ Zddd„ZdS )	ÚStreamReaderWriterXmlgenTestz-codecsc                    sD   t jˆ jddddd‰‡ ‡fdd„}ˆ  |¡ ‡fdd	„}|ˆ_ˆS )
NrJ   rÞ   rF   r   )rD   rK   Ú	bufferingc                      s   ˆ  ¡  t ˆ j¡ d S rQ   )r©   r   rR   Úfnamer4   ©r3   r   r4   r5   Úcleanup@  s    z5StreamReaderWriterXmlgenTest.ioclass.<locals>.cleanupc                     s@   ˆ   ¡  tˆ jdƒ} |  ¡ W  d   ƒ S 1 s20    Y  d S ©Nrg   )r©   rL   Únamer¨   )rN   )r   r4   r5   rW   D  s    z6StreamReaderWriterXmlgenTest.ioclass.<locals>.getvalue)r  rL   r$  Ú
addCleanuprW   )r3   r&  rW   r4   r%  r5   rÀ   =  s    ÿ
z$StreamReaderWriterXmlgenTest.ioclassr]   c                 C   s   d||f   dd¡S r!  r  r  r4   r4   r5   rÅ   L  s
    ÿÿz StreamReaderWriterXmlgenTest.xmlN)r]   )r>   r?   r@   r   r   r$  rÀ   rÅ   r4   r4   r4   r5   r"  :  s   
r"  s,   <?xml version="1.0" encoding="iso-8859-1"?>
c                   @   s   e Zd Zdd„ ZdS )ÚXMLFilterBaseTestc                 C   sp   t ƒ }t|ƒ}tƒ }| |¡ | ¡  | di ¡ | d¡ | d¡ | d¡ | 	¡  |  
| ¡ td ¡ d S )NrC   r«   rà   s   <doc>content </doc>)r   r   r   r  rÁ   rÂ   rÏ   rã   rÃ   rÄ   r'   rW   Ústart)r3   rY   rÇ   Úfilterr4   r4   r5   Útest_filter_basicT  s    



z#XMLFilterBaseTest.test_filter_basicN)r>   r?   r@   r-  r4   r4   r4   r5   r*  S  s   r*  rg   c                   @   s>  e Zd Zdd„ Zdd„ Zedd„ ƒZdd„ Zd	d
„ ZG dd„ dƒZ	G dd„ dƒZ
dd„ Zdd„ Zdd„ ZG dd„ dƒZdd„ Zdd„ ZG dd„ deƒZdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zed)d*„ ƒZd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Ze e j!d3k d4e j!› d5¡d6d7„ ƒZ"d8d9„ Z#d:d;„ Z$d<d=„ Z%ed>d?„ ƒZ&d@S )AÚExpatReaderTestc                 C   sf   t ƒ }tƒ }t|ƒ}| |¡ ttdƒ}| |¡ W d   ƒ n1 sH0    Y  |  | ¡ t	¡ d S r'  ©
r   r   r   r  rL   ÚTEST_XMLFILErU   r'   rW   Úxml_test_out©r3   r  rY   ÚxmlgenrN   r4   r4   r5   Útest_expat_binary_filep  s    
(z&ExpatReaderTest.test_expat_binary_filec                 C   sj   t ƒ }tƒ }t|ƒ}| |¡ ttddd}| |¡ W d   ƒ n1 sL0    Y  |  | ¡ t	¡ d S ©NZrtr]   rb   r/  r2  r4   r4   r5   Útest_expat_text_file{  s    
(z$ExpatReaderTest.test_expat_text_filec                 C   sb   t j}t t|¡ |  t j|¡ tƒ }tƒ }t	|ƒ}| 
|¡ | t|dƒ¡ |  | ¡ t¡ d S r'  )r   ÚTESTFN_UNICODEÚshutilÚcopyfiler0  r)  rR   r   r   r   r  rU   rL   r'   rW   r1  ©r3   r$  r  rY   r3  r4   r4   r5   Útest_expat_binary_file_nonascii†  s    
z/ExpatReaderTest.test_expat_binary_file_nonasciic                 C   sp   t  t¡}tƒ }tƒ }t|ƒ}| |¡ t|dƒ}| |¡ W d   ƒ n1 sR0    Y  |  	| 
¡ t¡ d S r'  )ÚosÚfsencoder0  r   r   r   r  rL   rU   r'   rW   r1  )r3   r$  r  rY   r3  rN   r4   r4   r5   Ú!test_expat_binary_file_bytes_name•  s    

(z1ExpatReaderTest.test_expat_binary_file_bytes_namec              	   C   s˜   t ƒ }tƒ }t|ƒ}| |¡ ttdƒL}t| ¡ ddd}| |¡ W d   ƒ n1 s\0    Y  W d   ƒ n1 sz0    Y  |  | 	¡ t
¡ d S )Nrg   F)Úclosefd)r   r   r   r  rL   r0  ÚfilenorU   r'   rW   r1  )r3   r  rY   r3  rN   Úf2r4   r4   r5   Útest_expat_binary_file_int_name¡  s    
Fz/ExpatReaderTest.test_expat_binary_file_int_namec                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )zExpatReaderTest.TestDTDHandlerc                 C   s   g | _ g | _d S rQ   )Ú
_notationsÚ	_entitiesrS   r4   r4   r5   Ú__init__±  s    z'ExpatReaderTest.TestDTDHandler.__init__c                 C   s   | j  |||f¡ d S rQ   )rC  r  )r3   r(  ÚpublicIdÚsystemIdr4   r4   r5   ÚnotationDeclµ  s    z+ExpatReaderTest.TestDTDHandler.notationDeclc                 C   s   | j  ||||f¡ d S rQ   )rD  r  )r3   r(  rF  rG  Zndatar4   r4   r5   ÚunparsedEntityDecl¸  s    z1ExpatReaderTest.TestDTDHandler.unparsedEntityDeclN)r>   r?   r@   rE  rH  rI  r4   r4   r4   r5   ÚTestDTDHandler¯  s   rJ  c                   @   s   e Zd Zdd„ Zdd„ ZdS )z"ExpatReaderTest.TestEntityRecorderc                 C   s
   g | _ d S rQ   )ÚentitiesrS   r4   r4   r5   rE  ½  s    z+ExpatReaderTest.TestEntityRecorder.__init__c                 C   s.   | j  ||f¡ tƒ }| |¡ | |¡ |S rQ   )rK  r  r   ZsetPublicIdÚsetSystemId)r3   rF  rG  Úsourcer4   r4   r5   ÚresolveEntityÀ  s
    

z0ExpatReaderTest.TestEntityRecorder.resolveEntityN)r>   r?   r@   rE  rN  r4   r4   r4   r5   ÚTestEntityRecorder¼  s   rO  c                 C   sv   t ƒ }|  ¡ }| |¡ | d¡ | d¡ | d¡ | d¡ | d¡ | ¡  |  |jdg¡ |  |jdg¡ d S )Nú<!DOCTYPE doc [
z-  <!ENTITY img SYSTEM "expat.gif" NDATA GIF>
zW  <!NOTATION GIF PUBLIC "-//CompuServe//NOTATION Graphics Interchange Format 89a//EN">
ú]>
r¾   )ÚGIFz;-//CompuServe//NOTATION Graphics Interchange Format 89a//ENN)ZimgNz	expat.gifrR  )r   rJ  ZsetDTDHandlerÚfeedr©   r'   rC  rD  )r3   r  Úhandlerr4   r4   r5   Útest_expat_dtdhandlerÇ  s    





ÿz%ExpatReaderTest.test_expat_dtdhandlerc                 C   sz   |   tjj¡ tƒ }| td¡ |  ¡ }| |¡ |  	t
¡ | d¡ W d   ƒ n1 s\0    Y  |  |jdg¡ d S )NTú8<!DOCTYPE external SYSTEM "unsupported://non-existing">
)Nzunsupported://non-existing)r)  ÚurllibZrequestÚ
urlcleanupr   r  r   rO  ÚsetEntityResolverr    r   rS  r'   rK  ©r3   r  Zresolverr4   r4   r5   Útest_expat_external_dtd_enabled×  s    
ÿ"ÿz/ExpatReaderTest.test_expat_external_dtd_enabledc                 C   sF   t ƒ }|  ¡ }| |¡ | d¡ | d¡ | ¡  |  |jg ¡ d S )NrV  z<doc />)r   rO  rY  rS  r©   r'   rK  rZ  r4   r4   r5   Útest_expat_external_dtd_defaultè  s    
ÿ
z/ExpatReaderTest.test_expat_external_dtd_defaultc                   @   s   e Zd Zdd„ ZdS )z"ExpatReaderTest.TestEntityResolverc                 C   s   t ƒ }| tdƒ¡ |S )Ns	   <entity/>)r   rk   r   )r3   rF  rG  Úinpsrcr4   r4   r5   rN  ø  s    z0ExpatReaderTest.TestEntityResolver.resolveEntityN)r>   r?   r@   rN  r4   r4   r4   r5   ÚTestEntityResolverö  s   r^  c                 C   s|   t ƒ }| td¡ | |  ¡ ¡ tƒ }| t|ƒ¡ | d¡ | d¡ | d¡ | d¡ | 	¡  |  
| ¡ td ¡ d S )NTrP  ú#  <!ENTITY test SYSTEM "whatever">
rQ  ú<doc>&test;</doc>s   <doc><entity></entity></doc>)r   r  r   rY  r^  r   r  r   rS  r©   r'   rW   r+  ©r3   r  rY   r4   r4   r5   Ú!test_expat_entityresolver_enabledý  s    



ÿz1ExpatReaderTest.test_expat_entityresolver_enabledc                 C   s‚   t ƒ }|  | t¡d¡ | |  ¡ ¡ tƒ }| t|ƒ¡ | 	d¡ | 	d¡ | 	d¡ | 	d¡ | 
¡  |  | ¡ td ¡ d S )NFrP  r_  rQ  r`  ó   <doc></doc>)r   r'   Z
getFeaturer   rY  r^  r   r  r   rS  r©   rW   r+  ra  r4   r4   r5   Ú!test_expat_entityresolver_default  s    



ÿz1ExpatReaderTest.test_expat_entityresolver_defaultc                   @   s   e Zd Zdd„ Zdd„ ZdS )zExpatReaderTest.AttrGathererc                 C   s
   || _ d S rQ   ©Ú_attrs)r3   r(  r   r4   r4   r5   rÂ   !  s    z)ExpatReaderTest.AttrGatherer.startElementc                 C   s
   || _ d S rQ   re  )r3   r(  Zqnamer   r4   r4   r5   rì   $  s    z+ExpatReaderTest.AttrGatherer.startElementNSN)r>   r?   r@   rÂ   rì   r4   r4   r4   r5   ÚAttrGatherer  s   rg  c                 C   s:   t ƒ }|  ¡ }| |¡ | d¡ | ¡  |  |j¡ d S )NrÊ   )r   rg  r  rS  r©   r6   rf  ©r3   r  Úgatherr4   r4   r5   Útest_expat_attrs_empty'  s    

z&ExpatReaderTest.test_expat_attrs_emptyc                 C   s:   t ƒ }|  ¡ }| |¡ | d¡ | ¡  |  |j¡ d S )Nz<doc attr='val'/>)r   rg  r  rS  r©   r=   rf  rh  r4   r4   r5   Útest_expat_attrs_wattr1  s    

z&ExpatReaderTest.test_expat_attrs_wattrc                 C   s<   t dƒ}|  ¡ }| |¡ | d¡ | ¡  |  |j¡ d S )Nr:   rÊ   )r   rg  r  rS  r©   r9   rf  rh  r4   r4   r5   Útest_expat_nsattrs_empty;  s    

z(ExpatReaderTest.test_expat_nsattrs_emptyc                 C   s,  t dƒ}|  ¡ }| |¡ | dt ¡ | ¡  |j}|  | ¡ d¡ |  | 	¡ tdfg¡ |  
| ¡ g kpx| ¡ dgk¡ |  t|ƒd¡ |  tdf|¡ |  | tdf¡d¡ |  | tdfd¡d¡ |  t| ¡ ƒtdfdfg¡ |  t| ¡ ƒdg¡ |  | tdf¡d¡ |  |tdf d¡ d S )Nr:   z"<doc xmlns:ns='%s' ns:attr='val'/>r   r7   r;   r   )r   rg  r  rS  r8   r©   rf  r'   r(   r)   rr   r*   r+   r<   r/   r-   r0   r1   r"   )r3   r  ri  r   r4   r4   r5   Útest_expat_nsattrs_wattrE  s&    
ÿz(ExpatReaderTest.test_expat_nsattrs_wattrc                 C   s<   t ƒ }tƒ }t|ƒ}| |¡ | t¡ |  | ¡ t¡ d S rQ   )	r   r   r   r  rU   r0  r'   rW   r1  ©r3   r  rY   r3  r4   r4   r5   Útest_expat_inpsource_filename^  s    

z-ExpatReaderTest.test_expat_inpsource_filenamec                 C   s@   t ƒ }tƒ }t|ƒ}| |¡ | ttƒ¡ |  | ¡ t	¡ d S rQ   )
r   r   r   r  rU   r   r0  r'   rW   r1  rn  r4   r4   r5   Útest_expat_inpsource_sysidh  s    
z*ExpatReaderTest.test_expat_inpsource_sysidc                 C   s`   t j}t t|¡ |  t j|¡ tƒ }tƒ }t	|ƒ}| 
|¡ | t|ƒ¡ |  | ¡ t¡ d S rQ   )r   r7  r8  r9  r0  r)  rR   r   r   r   r  rU   r   r'   rW   r1  r:  r4   r4   r5   Ú#test_expat_inpsource_sysid_nonasciir  s    
z3ExpatReaderTest.test_expat_inpsource_sysid_nonasciic                 C   sv   t ƒ }tƒ }t|ƒ}| |¡ tƒ }ttdƒ$}| |¡ | |¡ W d   ƒ n1 sX0    Y  |  	| 
¡ t¡ d S r'  )r   r   r   r  r   rL   r0  rk   rU   r'   rW   r1  ©r3   r  rY   r3  r]  rN   r4   r4   r5   Ú test_expat_inpsource_byte_stream  s    

(z0ExpatReaderTest.test_expat_inpsource_byte_streamc                 C   sz   t ƒ }tƒ }t|ƒ}| |¡ tƒ }ttddd$}| |¡ | |¡ W d   ƒ n1 s\0    Y  |  	| 
¡ t¡ d S r5  )r   r   r   r  r   rL   r0  r­   rU   r'   rW   r1  rr  r4   r4   r5   Ú%test_expat_inpsource_character_streamŽ  s    

(z5ExpatReaderTest.test_expat_inpsource_character_streamc                 C   sR   t ƒ }t|ƒ}tƒ }| |¡ | d¡ | d¡ | ¡  |  | ¡ td ¡ d S )Nú<doc>ú</doc>rc  )	r   r   r   r  rS  r©   r'   rW   r+  ©r3   rY   r3  r  r4   r4   r5   Útest_expat_incremental  s    


z&ExpatReaderTest.test_expat_incrementalc                 C   s   t ƒ }t|ƒ}tƒ }| |¡ | d¡ | d¡ t ƒ }t|ƒ}| |¡ | ¡  | d¡ | d¡ | d¡ | ¡  |  | ¡ t	d ¡ d S )Nru  Útextrv  s   <doc>text</doc>)
r   r   r   r  rS  Úresetr©   r'   rW   r+  rw  r4   r4   r5   Útest_expat_incremental_reset©  s    






z,ExpatReaderTest.test_expat_incremental_reset©é   é   r   zExpat z" does not support reparse deferralc                 C   s¨   t ƒ }t|ƒ}tƒ }| |¡ dD ]}| |¡ q"|  | ¡ t¡ |  |j	 
¡ ¡ | ¡  |  |j	 
¡ ¡ |  | ¡ td ¡ | d¡ | ¡  |  | ¡ td ¡ d S )N©z<docú>ó   <doc>rv  rc  )r   r   r   r  rS  r'   rW   r+  rr   Ú_parserÚGetReparseDeferralEnabledÚflushr©   ©r3   rY   r3  r  Úchunkr4   r4   r5   Ú#test_flush_reparse_deferral_enabled¾  s    

z3ExpatReaderTest.test_flush_reparse_deferral_enabledc                 C   s¾   t ƒ }t|ƒ}tƒ }| |¡ dD ]}| |¡ q"tjdkrX|j d¡ |  	| 
¡ t¡ |  |j ¡ ¡ | ¡  |  |j ¡ ¡ |  	| 
¡ td ¡ | d¡ | ¡  |  	| 
¡ td ¡ d S )Nr  r|  Fr  rv  rc  )r   r   r   r  rS  ÚpyexpatÚversion_infor‚  ZSetReparseDeferralEnabledr'   rW   r+  r  rƒ  r„  r©   r…  r4   r4   r5   Ú$test_flush_reparse_deferral_disabled×  s     


z4ExpatReaderTest.test_flush_reparse_deferral_disabledc                 C   sn   t ƒ }t|ƒ}tƒ }| |¡ | d¡ | d¡ | ¡  |  | ¡ d ¡ |  | ¡ d ¡ |  | 	¡ d¡ d S )Nru  rv  r:   )
r   r   r   r  rS  r©   r'   ÚgetSystemIdÚgetPublicIdÚgetLineNumberrw  r4   r4   r5   Útest_expat_locator_noinfoò  s    


z)ExpatReaderTest.test_expat_locator_noinfoc                 C   sL   t ƒ }t|ƒ}tƒ }| |¡ | t¡ |  | ¡ t¡ |  | ¡ d ¡ d S rQ   )	r   r   r   r  rU   r0  r'   r‹  rŒ  rw  r4   r4   r5   Útest_expat_locator_withinfo   s    

z+ExpatReaderTest.test_expat_locator_withinfoc                 C   sl   t j}t t|¡ |  t j|¡ tƒ }t|ƒ}t	ƒ }| 
|¡ | |¡ |  | ¡ |¡ |  | ¡ d ¡ d S rQ   )r   r7  r8  r9  r0  r)  rR   r   r   r   r  rU   r'   r‹  rŒ  )r3   r$  rY   r3  r  r4   r4   r5   Ú$test_expat_locator_withinfo_nonascii
  s    

z4ExpatReaderTest.test_expat_locator_withinfo_nonasciiN)'r>   r?   r@   r4  r6  Úrequires_nonascii_filenamesr;  r>  rB  rJ  rO  rU  r[  r\  r^  rb  rd  r   rg  rj  rk  rl  rm  ro  rp  rq  rs  rt  rx  r{  ÚunittestZskipIfrˆ  r‰  r‡  rŠ  rŽ  r  r  r4   r4   r4   r5   r.  l  sH   






ÿ

r.  c                   @   s2   e Zd Zdd„ Zdd„ Zdd„ ZG dd„ dƒZd	S )
ÚErrorReportingTestc              
   C   s„   t ƒ }| tƒ ¡ tƒ }| tdƒ¡ d}| |¡ z| |¡ |  ¡  W n4 t	y~ } z|  
| ¡ |¡ W Y d }~n
d }~0 0 d S )Ns   <foo bar foobar>za file name)r   r  r   r   rk   r   rL  rU   Zfailr   r'   r‹  )r3   r  rM  r(  r×   r4   r4   r5   Útest_expat_inpsource_location!  s    

z0ErrorReportingTest.test_expat_inpsource_locationc                 C   sJ   t ƒ }| tƒ ¡ |  t|jtdƒ¡ |  | ¡ d¡ |  | 	¡ d¡ d S )Nz<foo>é   r:   )
r   r  r   r    r   rU   r   r'   ÚgetColumnNumberr  )r3   r  r4   r4   r5   Útest_expat_incomplete.  s
    z(ErrorReportingTest.test_expat_incompletec                 C   sd   t tdd |  dd¡ƒƒ t tdd |  d d¡ƒƒ t tdd |  dd ¡ƒƒ t tdd |  d d ¡ƒƒ d S )NÚmessager:   )Ústrr   ÚDummyLocatorrS   r4   r4   r5   Útest_sax_parse_exception_str5  s    
ÿ
ÿ
ÿ
ÿz/ErrorReportingTest.test_sax_parse_exception_strc                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )zErrorReportingTest.DummyLocatorc                 C   s   || _ || _d S rQ   )Ú_linenoÚ_colno)r3   ÚlinenoÚcolnor4   r4   r5   rE  H  s    z(ErrorReportingTest.DummyLocator.__init__c                 C   s   dS )NZpubidr4   rS   r4   r4   r5   rŒ  L  s    z+ErrorReportingTest.DummyLocator.getPublicIdc                 C   s   dS )NZsysidr4   rS   r4   r4   r5   r‹  O  s    z+ErrorReportingTest.DummyLocator.getSystemIdc                 C   s   | j S rQ   )rœ  rS   r4   r4   r5   r  R  s    z-ErrorReportingTest.DummyLocator.getLineNumberc                 C   s   | j S rQ   )r  rS   r4   r4   r5   r–  U  s    z/ErrorReportingTest.DummyLocator.getColumnNumberN)r>   r?   r@   rE  rŒ  r‹  r  r–  r4   r4   r4   r5   rš  G  s
   rš  N)r>   r?   r@   r”  r—  r›  rš  r4   r4   r4   r5   r“     s   r“  c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚXmlReaderTestc                 C   s   |   ti ƒ¡ d S rQ   )r6   r   rS   r4   r4   r5   Útest_attrs_emptya  s    zXmlReaderTest.test_attrs_emptyc                 C   s   |   tddiƒ¡ d S )Nr   r;   )r=   r   rS   r4   r4   r5   Útest_attrs_wattrd  s    zXmlReaderTest.test_attrs_wattrc                 C   s   |   ti i ƒ¡ d S rQ   )r9   r   rS   r4   r4   r5   Útest_nsattrs_emptyg  s    z XmlReaderTest.test_nsattrs_emptyc                 C   sZ  t tdfditdfdiƒ}|  | ¡ d¡ |  | ¡ tdfg¡ |  | ¡ dg¡ |  t|ƒd¡ |  tdf|¡ |  t| 	¡ ƒtdfg¡ |  | 
tdf¡d¡ |  | 
tdfd¡d¡ |  t| ¡ ƒtdfdfg¡ |  t| ¡ ƒdg¡ |  | tdf¡d¡ |  | d¡d¡ |  | d¡tdf¡ |  |tdf d¡ |  | tdf¡d¡ d S )Nr   r;   r7   r:   r   )r   r8   r'   r(   r)   r*   r+   r<   r-   r.   r/   r0   r1   r"   r#   r$   r%   r2   r4   r4   r5   Útest_nsattrs_wattrj  s$    
ÿz XmlReaderTest.test_nsattrs_wattrN)r>   r?   r@   r¡  r¢  r£  r¤  r4   r4   r4   r5   r   ^  s   r   Ú__main__)N).).)SrV   r   r   r   r   r   r’  r   ZSkipTestZxml.sax.saxutilsr   r	   r
   r   r   r   Zxml.sax.expatreaderr   Zxml.sax.handlerr   r   Zxml.sax.xmlreaderr   r   r   Úior   r   r  Zos.pathr<  rˆ  r8  Zurllib.errorr   Zurllib.requestrW  rÒ   r   Ztest.supportr   r   r   r0  ZTEST_XMLFILE_OUTrG   ÚUnicodeEncodeErrorZsupports_nonascii_filenamesÚpathÚsupports_unicode_filenamesr7  ZTESTFN_ENCODINGÚUnicodeErrorÚ	TypeErrorZ
skipUnlessr‘  r8   ZTestCaser   rE   rI   rO   rP   r{   rŠ   r    r½   r  r  r  r  r"  r+  r*  rL   rN   r¨   r1  r.  r“  r   r>   Úmainr4   r4   r4   r5   Ú<module>   s‚   
 


þ5


|54S  c(   7>!
