a
    äzeBº  ã                	   @   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 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-yR   e d¡‚Y n0 dZ.ej/j0s’ze%j1 ,e%j2¡ W n e3e4fy   dZ.Y n0 e 5e.d¡Z6dZ7G dd„ dej8ƒZ9d?dd„Z:d@dd„Z;dAdd„Z<G d d!„ d!ej8ƒZ=G d"d#„ d#ej8ƒZ>G d$d%„ d%ej8ƒZ?G d&d'„ d'ej8ƒZ@G d(d)„ d)ƒZAG d*d+„ d+eAej8ƒZBG d,d-„ d-eAej8ƒZCG d.d/„ d/eCƒZDG d0d1„ d1eAej8ƒZEG d2d3„ d3eAej8ƒZFd4ZGG d5d6„ d6ej8ƒZHeIe+d7ƒZJeJ K¡ ZLW d  ƒ n1 sÈ0    Y  G d8d9„ d9e9ƒZMG d:d;„ d;ej8ƒZNG d<d=„ d=e9ƒZOePd>kre Q¡  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   ú#/usr/lib/python3.9/test/test_sax.pyÚverify_empty_attrs2   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_nsattrsC   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_wattrT   s    zXmlTestBase.verify_attrs_wattrN)Ú__name__Ú
__module__Ú__qualname__r6   r9   r=   r4   r4   r4   r5   r   1   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_strf   s    rE   .c                 C   s   |du r|}t | |ƒ |d¡S )N.Úxmlcharrefreplace)rE   Úencode)rC   rD   Údecl_encodingr4   r4   r5   Ú	xml_bytesk   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_filep   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   ÚtearDownz   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   w   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_extra1  s    ÿzSaxutilsTest.test_escape_extrac                 C   s   |   tdƒd¡ d S )NrŒ   r‹   ©r'   r
   rS   r4   r4   r5   Útest_unescape_basic6  s    z SaxutilsTest.test_unescape_basicc                 C   s   |   tdƒd¡ d S )Nr   r   r•   rS   r4   r4   r5   Útest_unescape_all9  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_extraA  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_basicE  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_quoteattrI  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_quoteattrM  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_quoteattrQ  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_parserV  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   c  s    zPrepareInputSourceTest.tearDownc                 C   s   t dƒS ©Ns   This is a byte stream.)r   rS   r4   r4   r5   Úmake_byte_streamf  s    z'PrepareInputSourceTest.make_byte_streamc                 C   s   t dƒS ©NzThis is a character stream.)r   rS   r4   r4   r5   Úmake_character_streami  s    z,PrepareInputSourceTest.make_character_streamc                 C   s&   |   |¡ |  | ¡ |¡ | ¡  d S rQ   )ZassertIsNotNoner'   ÚreadÚclose)r3   ÚstreamÚcontentr4   r4   r5   ÚcheckContentl  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_streamr  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_empty4  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_bytes@  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_nsR  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_emptyd  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_1v  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À   Z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À   /  s    zStreamWriterXmlgenTest.ioclassr]   c                 C   s   d||f   dd¡S ©NrB   rÞ   rF   r  r  r4   r4   r5   rÅ   5  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   C  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Å   K  s
    ÿÿz StreamReaderWriterXmlgenTest.xmlN)r]   )r>   r?   r@   r   r   r#  rÀ   rÅ   r4   r4   r4   r5   r!  9  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_basicS  s    



z#XMLFilterBaseTest.test_filter_basicN)r>   r?   r@   r,  r4   r4   r4   r5   r)  R  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d3d4„ Zd5d6„ Zed7d8„ ƒZ d9S ):Ú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_fileo  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.  r1  r4   r4   r5   Útest_expat_text_filez  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Úcopyfiler/  r(  rR   r   r   r   r  rU   rL   r'   rW   r0  ©r3   r#  r  rY   r2  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Úfsencoder/  r   r   r   r  rL   rU   r'   rW   r0  )r3   r#  r  rY   r2  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   r/  ÚfilenorU   r'   rW   r0  )r3   r  rY   r2  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   )rB  r  )r3   r'  ÚpublicIdÚsystemIdr4   r4   r5   ÚnotationDecl´  s    z+ExpatReaderTest.TestDTDHandler.notationDeclc                 C   s   | j  ||||f¡ d S rQ   )rC  r  )r3   r'  rE  rF  Zndatar4   r4   r5   ÚunparsedEntityDecl·  s    z1ExpatReaderTest.TestDTDHandler.unparsedEntityDeclN)r>   r?   r@   rD  rG  rH  r4   r4   r4   r5   ÚTestDTDHandler®  s   rI  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   rD  ¼  s    z+ExpatReaderTest.TestEntityRecorder.__init__c                 C   s.   | j  ||f¡ tƒ }| |¡ | |¡ |S rQ   )rJ  r  r   ZsetPublicIdÚsetSystemId)r3   rE  rF  Úsourcer4   r4   r5   ÚresolveEntity¿  s
    

z0ExpatReaderTest.TestEntityRecorder.resolveEntityN)r>   r?   r@   rD  rM  r4   r4   r4   r5   ÚTestEntityRecorder»  s   rN  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.gifrQ  )r   rI  ZsetDTDHandlerÚfeedr©   r'   rB  rC  )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   rN  ÚsetEntityResolverr    r   rR  r'   rJ  ©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 )NrU  z<doc />)r   rN  rX  rR  r©   r'   rJ  rY  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   rE  rF  Úinpsrcr4   r4   r5   rM  ÷  s    z0ExpatReaderTest.TestEntityResolver.resolveEntityN)r>   r?   r@   rM  r4   r4   r4   r5   ÚTestEntityResolverõ  s   r]  c                 C   s|   t ƒ }| td¡ | |  ¡ ¡ tƒ }| t|ƒ¡ | d¡ | d¡ | d¡ | d¡ | 	¡  |  
| ¡ td ¡ d S )NTrO  ú#  <!ENTITY test SYSTEM "whatever">
rP  ú<doc>&test;</doc>s   <doc><entity></entity></doc>)r   r  r   rX  r]  r   r  r   rR  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 )NFrO  r^  rP  r_  ó   <doc></doc>)r   r'   Z
getFeaturer   rX  r]  r   r  r   rR  r©   rW   r*  r`  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   rd  )r3   r'  Zqnamer   r4   r4   r5   rì   #  s    z+ExpatReaderTest.AttrGatherer.startElementNSN)r>   r?   r@   rÂ   rì   r4   r4   r4   r5   ÚAttrGatherer  s   rf  c                 C   s:   t ƒ }|  ¡ }| |¡ | d¡ | ¡  |  |j¡ d S )NrÊ   )r   rf  r  rR  r©   r6   re  ©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   rf  r  rR  r©   r=   re  rg  r4   r4   r5   Útest_expat_attrs_wattr0  s    

z&ExpatReaderTest.test_expat_attrs_wattrc                 C   s<   t dƒ}|  ¡ }| |¡ | d¡ | ¡  |  |j¡ d S )Nr:   rÊ   )r   rf  r  rR  r©   r9   re  rg  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   rf  r  rR  r8   r©   re  r'   r(   r)   rr   r*   r+   r<   r/   r-   r0   r1   r"   )r3   r  rh  r   r4   r4   r5   Útest_expat_nsattrs_wattrD  s&    
ÿz(ExpatReaderTest.test_expat_nsattrs_wattrc                 C   s<   t ƒ }tƒ }t|ƒ}| |¡ | t¡ |  | ¡ t¡ d S rQ   )	r   r   r   r  rU   r/  r'   rW   r0  ©r3   r  rY   r2  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   r/  r'   rW   r0  rm  r4   r4   r5   Útest_expat_inpsource_sysidg  s    
z*ExpatReaderTest.test_expat_inpsource_sysidc                 C   s`   t j}t t|¡ |  t j|¡ tƒ }tƒ }t	|ƒ}| 
|¡ | t|ƒ¡ |  | ¡ t¡ d S rQ   )r   r6  r7  r8  r/  r(  rR   r   r   r   r  rU   r   r'   rW   r0  r9  r4   r4   r5   Ú#test_expat_inpsource_sysid_nonasciiq  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   r/  rk   rU   r'   rW   r0  ©r3   r  rY   r2  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 r4  )r   r   r   r  r   rL   r/  r­   rU   r'   rW   r0  rq  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>rb  )	r   r   r   r  rR  r©   r'   rW   r*  ©r3   rY   r2  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 )Nrt  Útextru  s   <doc>text</doc>)
r   r   r   r  rR  Úresetr©   r'   rW   r*  rv  r4   r4   r5   Útest_expat_incremental_reset¨  s    






z,ExpatReaderTest.test_expat_incremental_resetc                 C   sn   t ƒ }t|ƒ}tƒ }| |¡ | d¡ | d¡ | ¡  |  | ¡ d ¡ |  | ¡ d ¡ |  | 	¡ d¡ d S )Nrt  ru  r:   )
r   r   r   r  rR  r©   r'   ÚgetSystemIdÚgetPublicIdÚgetLineNumberrv  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   r/  r'   r{  r|  rv  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   r6  r7  r8  r/  r(  rR   r   r   r   r  rU   r'   r{  r|  )r3   r#  rY   r2  r  r4   r4   r5   Ú$test_expat_locator_withinfo_nonascii×  s    

z4ExpatReaderTest.test_expat_locator_withinfo_nonasciiN)!r>   r?   r@   r3  r5  Úrequires_nonascii_filenamesr:  r=  rA  rI  rN  rT  rZ  r[  r]  ra  rc  r   rf  ri  rj  rk  rl  rn  ro  rp  rr  rs  rw  rz  r~  r  r€  r4   r4   r4   r5   r-  k  s>   







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   rK  rU   Zfailr   r'   r{  )r3   r  rL  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_str  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   rD    s    z(ErrorReportingTest.DummyLocator.__init__c                 C   s   dS )NZpubidr4   rS   r4   r4   r5   r|    s    z+ErrorReportingTest.DummyLocator.getPublicIdc                 C   s   dS )NZsysidr4   rS   r4   r4   r5   r{    s    z+ErrorReportingTest.DummyLocator.getSystemIdc                 C   s   | j S rQ   )r‹  rS   r4   r4   r5   r}    s    z-ErrorReportingTest.DummyLocator.getLineNumberc                 C   s   | j S rQ   )rŒ  rS   r4   r4   r5   r…  "  s    z/ErrorReportingTest.DummyLocator.getColumnNumberN)r>   r?   r@   rD  r|  r{  r}  r…  r4   r4   r4   r5   r‰    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_empty.  s    zXmlReaderTest.test_attrs_emptyc                 C   s   |   tddiƒ¡ d S )Nr   r;   )r=   r   rS   r4   r4   r5   Útest_attrs_wattr1  s    zXmlReaderTest.test_attrs_wattrc                 C   s   |   ti i ƒ¡ d S rQ   )r9   r   rS   r4   r4   r5   Útest_nsattrs_empty4  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_wattr7  s$    
ÿz XmlReaderTest.test_nsattrs_wattrN)r>   r?   r@   r  r‘  r’  r“  r4   r4   r4   r5   r  +  s   r  Ú__main__)N).).)RrV   r   r   r   r   r   Zunittestr   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;  r7  Zurllib.errorr   Zurllib.requestrV  rÒ   r   Ztest.supportr   r   r   r/  ZTEST_XMLFILE_OUTrG   ÚUnicodeEncodeErrorZsupports_nonascii_filenamesÚpathÚsupports_unicode_filenamesr6  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¨   r0  r-  r‚  r  r>   Úmainr4   r4   r4   r5   Ú<module>   s€   
 


þ5


|54S  c(   >!
