B
    2*™\»  ã            	   @   s  d dl mZmZmZmZmZ d dlZd dlmZ y
eƒ  W n ek
rX   e d¡‚Y nX 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#m$Z$ d dl%m&Z&m'Z'm(Z( e&dddZ)e&dddZ*ye) +d¡ e* +d¡ W n  e,k
rV   e d¡‚Y nX dZ-ej.j/s˜ye$j0 +e$j1¡ W n e2e3fk
r–   dZ-Y nX e 4e-d¡Z5dZ6G dd„ dej7ƒZ8dAdd„Z9dBdd„Z:dCdd„Z;G d d!„ d!ej7ƒZ<G d"d#„ d#ej7ƒZ=G d$d%„ d%ej7ƒZ>G d&d'„ d'ej7ƒZ?G d(d)„ d)ƒZ@G d*d+„ d+e@ej7ƒZAG d,d-„ d-e@ej7ƒZBG d.d/„ d/eBƒZCG d0d1„ d1e@ej7ƒZDG d2d3„ d3e@ej7ƒZEd4ZFG d5d6„ d6ej7ƒZGeHe*d7ƒZIeI J¡ ZKW dQ R X G d8d9„ d9e8ƒZLG d:d;„ d;ej7ƒZMG d<d=„ d=e8ƒZNd>d?„ ZOePd@kreOƒ  dS )Dé    )Ú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Úrun_unittestÚTESTFNztest.xmlZxmltestdata)Zsubdirztest.xml.outz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   © r2   ú8C:\ALexclude\prg\programme\Python37\Lib\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   zns:attrr   r   )r   r    r!   Úns_urir"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   )r1   r   r2   r2   r3   Ú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   r8   )r&   r'   r(   r)   r*   ÚassertInr,   r-   r.   r/   r0   r!   r"   r#   r$   )r1   r   r2   r2   r3   Úverify_attrs_wattrT   s    zXmlTestBase.verify_attrs_wattrN)Ú__name__Ú
__module__Ú__qualname__r4   r6   r:   r2   r2   r2   r3   r   1   s   r   c             C   s   |d kr| S d|| f S )Nz&<?xml version="1.0" encoding="%s"?>
%sr2   )ÚdocÚencodingr2   r2   r3   Úxml_strf   s    r@   .c             C   s   |dkr|}t | |ƒ |d¡S )N.Úxmlcharrefreplace)r@   Úencode)r>   r?   Údecl_encodingr2   r2   r3   Ú	xml_bytesk   s    rD   c          	   C   s<   |dkr|}t td|dd}| t| |ƒ¡ W d Q R X d S )N.ÚwrA   )r?   Úerrors)Úopenr   Úwriter@   )r>   r?   rC   Úfr2   r2   r3   Úmake_xml_filep   s    rJ   c               @   sX   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S )Ú	ParseTestu,   <money value="$Â£â‚¬ð…»">$Â£â‚¬ð…»</money>c             C   s   t  t¡ d S )N)r   Úunlinkr   )r1   r2   r2   r3   ÚtearDownz   s    zParseTest.tearDownc             C   s>   ddl m} tƒ }||t|dƒƒ |  | ¡ t| jdƒ¡ d S )Nr   )Úparsezutf-8)Úxml.saxrN   r   r   r&   Úgetvaluer@   Údata)r1   rI   rN   Úresultr2   r2   r3   Úcheck_parse}   s    zParseTest.check_parsec          
   C   sž   d}x”|D ]Œ}|   tt| j|ƒƒ¡ t| j|ƒ ttd|d}|   |¡ W d Q R X |   t| jƒ¡ t| j|d ƒ ttd|d}|   |¡ W d Q R X q
W d S )N)zus-asciiz
iso-8859-1zutf-8zutf-16zutf-16lezutf-16beÚr)r?   )rS   r   r@   rQ   rJ   rG   r   )r1   Ú	encodingsr?   rI   r2   r2   r3   Útest_parse_textƒ   s    
zParseTest.test_parse_textc          
   C   s0  d}x¨|D ] }|   tt| j|ƒƒ¡ t| j|ƒ |   t¡ ttdƒ}|   |¡ W d Q R X |   tt| j|d ƒƒ¡ t| j|d ƒ |   t¡ ttdƒ}|   |¡ W d Q R X q
W |   tt| jddƒƒ¡ t| jddƒ |   t¡ ttdƒ}|   |¡ W d Q R X |   tt| jdd ƒƒ¡ t| jdd ƒ |   t¡ ttdƒ}|   |¡ W d Q R X |   tt| jdƒƒ¡ t| jdƒ |   t¡ ttdƒ}|   |¡ W d Q R X |  t¡ |   tt| jdd ƒƒ¡ W d Q R X t| jdd ƒ |  t¡ |   t¡ W d Q R X ttdƒ&}|  t¡ |   |¡ W d Q R X W d Q R X d S )N)zus-asciizutf-8zutf-16zutf-16lezutf-16beÚrbz	utf-8-sigzutf-8z
iso-8859-1)	rS   r   rD   rQ   rJ   r   rG   r   r   )r1   rU   r?   rI   r2   r2   r3   Útest_parse_bytes   sF    





"zParseTest.test_parse_bytesc          	   C   sL   t | jdd ƒ ttdƒ*}tƒ }| |¡ | d¡ |  |¡ W d Q R X d S )Nz
iso-8859-1rW   )rJ   rQ   rG   r   r   ÚsetByteStreamZsetEncodingrS   )r1   rI   Úinputr2   r2   r3   Útest_parse_InputSourceº   s    

z ParseTest.test_parse_InputSourcec          
      sn   t ‰ d ‰‡ ‡fdd„}tjd|d@ t| jdd ƒ |  t¡ |  t¡ W d Q R X |  	ˆj
¡ W d Q R X d S )Nc                 s   ˆ | Ž ‰ˆS )Nr2   )Úargs)Úbuiltin_openÚfileobjr2   r3   Ú	mock_openÇ   s    z4ParseTest.test_parse_close_source.<locals>.mock_openzxml.sax.saxutils.open)Zside_effectz
iso-8859-1)rG   r   ZpatchrJ   rQ   r   r   rS   r   Ú
assertTrueÚclosed)r1   r_   r2   )r]   r^   r3   Ú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   )ÚparseStringzutf-8)rO   rc   r   r   r&   rP   r@   rQ   )r1   Úsrc   rR   r2   r2   r3   Úcheck_parseStringÒ   s    zParseTest.check_parseStringc             C   s4   d}x|D ]}|   t| j|ƒ¡ q
W |   | j¡ d S )N)zus-asciiz
iso-8859-1zutf-8zutf-16zutf-16lezutf-16be)re   r@   rQ   )r1   rU   r?   r2   r2   r3   Útest_parseString_textØ   s    
zParseTest.test_parseString_textc          	   C   s    d}x2|D ]*}|   t| j|ƒ¡ |   t| j|d ƒ¡ q
W |   t| jddƒ¡ |   t| jdd ƒ¡ |   t| jdƒ¡ |  t¡ |   t| jdd ƒ¡ W d Q R X d S )N)zus-asciizutf-8zutf-16zutf-16lezutf-16bez	utf-8-sigzutf-8z
iso-8859-1)re   rD   rQ   r   r   )r1   rU   r?   r2   r2   r3   Útest_parseString_bytesß   s    
z ParseTest.test_parseString_bytesN)r;   r<   r=   rQ   rM   rS   rV   rX   r[   rb   re   rf   rg   r2   r2   r2   r3   rK   w   s   *	rK   c               @   s   e Z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   )rO   r   )r1   r   Úpr2   r2   r3   Útest_make_parser2ð   s    z MakeParserTest.test_make_parser2N)r;   r<   r=   rj   r2   r2   r2   r3   rh   ï   s   rh   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 )NzDonald Duck & CozDonald Duck &amp; Co)r&   r	   )r1   r2   r2   r3   Útest_escape_basic
  s    zSaxutilsTest.test_escape_basicc             C   s   |   tdƒd¡ d S )Nz<Donald Duck & Co>z&lt;Donald Duck &amp; Co&gt;)r&   r	   )r1   r2   r2   r3   Ú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; deg)r&   r	   )r1   r2   r2   r3   Útest_escape_extra  s    zSaxutilsTest.test_escape_extrac             C   s   |   tdƒd¡ d S )NzDonald Duck &amp; CozDonald Duck & Co)r&   r
   )r1   r2   r2   r3   Útest_unescape_basic  s    z SaxutilsTest.test_unescape_basicc             C   s   |   tdƒd¡ d S )Nz&lt;Donald Duck &amp; Co&gt;z<Donald Duck & Co>)r&   r
   )r1   r2   r2   r3   Útest_unescape_all  s    
zSaxutilsTest.test_unescape_allc             C   s   |   tdddiƒd¡ d S )Nu   Hei pÃ¥ degrn   z&aring;zHei p&aring; deg)r&   r
   )r1   r2   r2   r3   Ú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splat)r&   r
   )r1   r2   r2   r3   Útest_unescape_amp_extra!  s    z$SaxutilsTest.test_unescape_amp_extrac             C   s   |   tdƒd¡ d S )NzDonald Duck & Coz"Donald Duck &amp; Co")r&   r   )r1   r2   r2   r3   Útest_quoteattr_basic%  s    
z!SaxutilsTest.test_quoteattr_basicc             C   s   |   tdƒd¡ d S )NzIncludes "double" quotesz'Includes "double" quotes')r&   r   )r1   r2   r2   r3   Útest_single_quoteattr)  s    
z"SaxutilsTest.test_single_quoteattrc             C   s   |   tdƒd¡ d S )NzIncludes 'single' quotesz"Includes 'single' quotes")r&   r   )r1   r2   r2   r3   Útest_double_quoteattr-  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&   r   )r1   r2   r2   r3   Útest_single_double_quoteattr1  s    
z)SaxutilsTest.test_single_double_quoteattrc             C   s   t dgƒ}d S )Nzxml.parsers.no_such_parser)r   )r1   ri   r2   r2   r3   Útest_make_parser6  s    zSaxutilsTest.test_make_parserN)r;   r<   r=   rl   rm   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   r2   r2   r2   r3   rk     s   rk   c               @   sd   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S )ÚPrepareInputSourceTestc          	   C   s.   t j| _t| jdƒ}| d¡ W d Q R X d S )NrE   zThis was read from a file.)r   r   ÚfilerG   rH   )r1   Ztmpr2   r2   r3   ÚsetUp>  s    zPrepareInputSourceTest.setUpc             C   s   t  | j¡ d S )N)r   rL   rz   )r1   r2   r2   r3   rM   C  s    zPrepareInputSourceTest.tearDownc             C   s   t dƒS )Ns   This is a byte stream.)r   )r1   r2   r2   r3   Úmake_byte_streamF  s    z'PrepareInputSourceTest.make_byte_streamc             C   s   t dƒS )NzThis is a character stream.)r   )r1   r2   r2   r3   Úmake_character_streamI  s    z,PrepareInputSourceTest.make_character_streamc             C   s&   |   |¡ |  | ¡ |¡ | ¡  d S )N)ZassertIsNotNoner&   ÚreadÚclose)r1   ÚstreamÚcontentr2   r2   r3   ÚcheckContentL  s    
z#PrepareInputSourceTest.checkContentc             C   sB   t | jƒ}| |  ¡ ¡ t|ƒ}|  | ¡ ¡ |  | ¡ d¡ d S )NzThis is a character stream.)	r   rz   ÚsetCharacterStreamr}   r   ÚassertIsNoneÚgetByteStreamr‚   ÚgetCharacterStream)r1   ÚsrcÚprepr2   r2   r3   Útest_character_streamR  s    

z,PrepareInputSourceTest.test_character_streamc             C   sB   t | jƒ}| |  ¡ ¡ t|ƒ}|  | ¡ ¡ |  | ¡ d¡ d S )Ns   This is a byte stream.)	r   rz   rY   r|   r   r„   r†   r‚   r…   )r1   r‡   rˆ   r2   r2   r3   Ú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   rz   r   r„   r†   r‚   r…   )r1   r‡   rˆ   r2   r2   r3   Útest_system_ide  s
    

z%PrepareInputSourceTest.test_system_idc             C   s,   t | jƒ}|  | ¡ ¡ |  | ¡ d¡ d S )Ns   This was read from a file.)r   rz   r„   r†   r‚   r…   )r1   rˆ   r2   r2   r3   Útest_stringn  s    

z"PrepareInputSourceTest.test_stringc             C   s.   t |  ¡ ƒ}|  | ¡ ¡ |  | ¡ d¡ d S )Ns   This is a byte stream.)r   r|   r„   r†   r‚   r…   )r1   rˆ   r2   r2   r3   Útest_binary_fileu  s    
z'PrepareInputSourceTest.test_binary_filec             C   s.   t |  ¡ ƒ}|  | ¡ ¡ |  | ¡ d¡ d S )NzThis is a character stream.)r   r}   r„   r…   r‚   r†   )r1   rˆ   r2   r2   r3   Útest_text_file}  s    
z%PrepareInputSourceTest.test_text_fileN)r;   r<   r=   r{   rM   r|   r}   r‚   r‰   rŠ   r‹   rŒ   r   rŽ   r2   r2   r2   r3   ry   <  s   	
	ry   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 )Nr>   z<doc></doc>)	Úioclassr   ÚstartDocumentÚstartElementÚ
endElementÚendDocumentr&   rP   Úxml)r1   rR   Úgenr2   r2   r3   Útest_xmlgen_basic‰  s    
zXmlgenTest.test_xmlgen_basicc             C   sT   |   ¡ }t|dd}| ¡  | di ¡ | d¡ | ¡  |  | ¡ |  d¡¡ d S )NT)Úshort_empty_elementsr>   z<doc/>)	r   r   r‘   r’   r“   r”   r&   rP   r•   )r1   rR   r–   r2   r2   r3   Útest_xmlgen_basic_empty“  s    
z"XmlgenTest.test_xmlgen_basic_emptyc             C   sZ   |   ¡ }t|ƒ}| ¡  | di ¡ | d¡ | d¡ | ¡  |  | ¡ |  	d¡¡ d S )Nr>   Úhuheiz<doc>huhei</doc>)
r   r   r‘   r’   Ú
charactersr“   r”   r&   rP   r•   )r1   rR   r–   r2   r2   r3   Útest_xmlgen_content  s    

zXmlgenTest.test_xmlgen_contentc             C   s^   |   ¡ }t|dd}| ¡  | di ¡ | d¡ | d¡ | ¡  |  | ¡ |  	d¡¡ d S )NT)r˜   r>   rš   z<doc>huhei</doc>)
r   r   r‘   r’   r›   r“   r”   r&   rP   r•   )r1   rR   r–   r2   r2   r3   Útest_xmlgen_content_empty©  s    

z$XmlgenTest.test_xmlgen_content_emptyc             C   s\   |   ¡ }t|ƒ}| ¡  | dd¡ | di ¡ | d¡ | ¡  |  | ¡ |  	d¡¡ d S )NÚtestrQ   r>   z<?test data?><doc></doc>)
r   r   r‘   ZprocessingInstructionr’   r“   r”   r&   rP   r•   )r1   rR   r–   r2   r2   r3   Útest_xmlgen_piµ  s    

zXmlgenTest.test_xmlgen_pic             C   sZ   |   ¡ }t|ƒ}| ¡  | di ¡ | d¡ | d¡ | ¡  |  | ¡ |  	d¡¡ d S )Nr>   z<huhei&z<doc>&lt;huhei&amp;</doc>)
r   r   r‘   r’   r›   r“   r”   r&   rP   r•   )r1   rR   r–   r2   r2   r3   Ú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 )	Nr>   Úaú"Úeú'z'"z
	zK<doc a='"'><e a="'"></e><e a="'&quot;"></e><e a="&#10;&#13;&#9;"></e></doc>)	r   r   r‘   r’   r“   r”   r&   rP   r•   )r1   rR   r–   r2   r2   r3   Útest_xmlgen_attr_escapeÏ  s    



z"XmlgenTest.test_xmlgen_attr_escapec             C   sx   d}xn|D ]f}|   ¡ }t||d}| ¡  | dddi¡ | d¡ | d¡ | ¡  |  | ¡ | j	d|d¡ q
W d S )N)	ziso-8859-15zutf-8z	utf-8-sigzutf-16zutf-16bezutf-16lezutf-32zutf-32bezutf-32le)r?   r>   r¡   u   â‚¬u   <doc a="â‚¬">â‚¬</doc>)
r   r   r‘   r’   r›   r“   r”   r&   rP   r•   )r1   rU   r?   rR   r–   r2   r2   r3   Ú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Úascii)r?   r>   r¡   u   â‚¬z<doc a="&#8364;">&#8364;</doc>)
r   r   r‘   r’   r›   r“   r”   r&   rP   r•   )r1   rR   r–   r2   r2   r3   Útest_xmlgen_unencodableô  s    


z"XmlgenTest.test_xmlgen_unencodablec             C   sZ   |   ¡ }t|ƒ}| ¡  | di ¡ | d¡ | d¡ | ¡  |  | ¡ |  	d¡¡ d S )Nr>   ú z<doc> </doc>)
r   r   r‘   r’   ÚignorableWhitespacer“   r”   r&   rP   r•   )r1   rR   r–   r2   r2   r3   Útest_xmlgen_ignorable  s    

z XmlgenTest.test_xmlgen_ignorablec             C   s^   |   ¡ }t|dd}| ¡  | di ¡ | d¡ | d¡ | ¡  |  | ¡ |  	d¡¡ d S )NT)r˜   r>   r©   z<doc> </doc>)
r   r   r‘   r’   rª   r“   r”   r&   rP   r•   )r1   rR   r–   r2   r2   r3   Útest_xmlgen_ignorable_empty  s    

z&XmlgenTest.test_xmlgen_ignorable_emptyc             C   sŽ   d}x„|D ]|}|   ¡ }t||d}| ¡  | dddi¡ | d |¡¡ | d |¡¡ | d¡ | ¡  |  	| 
¡ | jd|d¡ q
W d S )N)	ziso-8859-15zutf-8z	utf-8-sigzutf-16zutf-16bezutf-16lezutf-32zutf-32bezutf-32le)r?   r>   r¡   u   â‚¬r©   u   <doc a="â‚¬">â‚¬ </doc>)r   r   r‘   r’   r›   rB   rª   r“   r”   r&   rP   r•   )r1   rU   r?   rR   r–   r2   r2   r3   Ú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Úns1r>   zns1:doc)NÚudocz/<ns1:doc xmlns:ns1="%s"><udoc></udoc></ns1:doc>)r   r   r‘   ÚstartPrefixMappingr5   ÚstartElementNSÚendElementNSÚendPrefixMappingr”   r&   rP   r•   )r1   rR   r–   r2   r2   r3   Útest_xmlgen_ns+  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 )NT)r˜   r®   r>   zns1:doc)Nr¯   z)<ns1:doc xmlns:ns1="%s"><udoc/></ns1:doc>)r   r   r‘   r°   r5   r±   r²   r³   r”   r&   rP   r•   )r1   rR   r–   r2   r2   r3   Útest_xmlgen_ns_empty=  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&   rP   r•   )r1   rR   r–   r2   r2   r3   Útest_1463026_1O  s    zXmlgenTest.test_1463026_1c             C   s\   |   ¡ }t|dd}| ¡  | ddddi¡ | dd¡ | ¡  |  | ¡ |  d¡¡ d S )NT)r˜   )Nr¡   r¡   )Nr¶   r·   z
<a b="c"/>)	r   r   r‘   r±   r²   r”   r&   rP   r•   )r1   rR   r–   r2   r2   r3   Útest_1463026_1_emptyZ  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&   rP   r•   )r1   rR   r–   r2   r2   r3   Útest_1463026_2e  s    
zXmlgenTest.test_1463026_2c             C   sn   |   ¡ }t|dd}| ¡  | d d¡ | ddi ¡ | dd¡ | d ¡ | ¡  |  | 	¡ |  
d¡¡ d S )NT)r˜   rº   )rº   r¡   r¡   z<a xmlns="qux"/>)r   r   r‘   r°   r±   r²   r³   r”   r&   rP   r•   )r1   rR   r–   r2   r2   r3   Útest_1463026_2_emptyr  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¡   )Nr¶   r·   z"<my:a xmlns:my="qux" b="c"></my:a>)r   r   r‘   r°   r±   r²   r³   r”   r&   rP   r•   )r1   rR   r–   r2   r2   r3   Ú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 )
NT)r˜   r½   rº   )rº   r¡   r¡   )Nr¶   r·   z<my:a xmlns:my="qux" b="c"/>)r   r   r‘   r°   r±   r²   r³   r”   r&   rP   r•   )r1   rR   r–   r2   r2   r3   Ú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>TzM<a:g1 xmlns:a="http://example.com/ns"><a:g2 xml:lang="en">Hello</a:g2></a:g1>)r   r   Ú
setFeaturer   r   r   ÚsetContentHandlerrN   r&   rP   r•   )r1   Ztest_xmlÚparserrR   r–   r2   r2   r3   Ú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¡   zhttp://example.com/ns)zhttp://example.com/nsÚg1rÄ   )z$http://www.w3.org/XML/1998/namespaceÚlangÚen)zhttp://example.com/nsÚg2rÇ   ÚHellozM<a:g1 xmlns:a="http://example.com/ns"><a:g2 xml:lang="en">Hello</a:g2></a:g1>)r   r   r‘   r°   r±   r›   r²   r³   r”   r&   rP   r•   )r1   rR   r–   Z	lang_attrr2   r2   r3   Útest_5027_2µ  s    


zXmlgenTest.test_5027_2c             C   s(   |   ¡ }dd„ }||ƒ |  |j¡ d S )Nc             S   s    t | ƒ}| ¡  | di ¡ d S )Nr>   )r   r‘   r’   )Úoutr–   r2   r2   r3   ÚfuncÓ  s    z+XmlgenTest.test_no_close_file.<locals>.func)r   ZassertFalsera   )r1   rR   rË   r2   r2   r3   Ú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&   rP   r•   r*   )r1   rR   r–   r2   r2   r3   Ú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Î   r2   r2   r2   r3   r   ˆ  s0   

	r   c               @   s   e Zd ZeZddd„ZdZdS )ÚStringXmlgenTestú
iso-8859-1c             C   s   d||f S )Nz&<?xml version="1.0" encoding="%s"?>
%sr2   )r1   r>   r?   r2   r2   r3   r•   ì  s    zStringXmlgenTest.xmlN)rÐ   )r;   r<   r=   r   r   r•   r¨   r2   r2   r2   r3   rÏ   é  s   
rÏ   c               @   s   e Zd ZeZddd„ZdS )ÚBytesXmlgenTestú
iso-8859-1c             C   s   d||f   |d¡S )Nz&<?xml version="1.0" encoding="%s"?>
%srA   )rB   )r1   r>   r?   r2   r2   r3   r•   ô  s    zBytesXmlgenTest.xmlN)rÒ   )r;   r<   r=   r   r   r•   r2   r2   r2   r3   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 )NTr2   )r1   r2   r2   r3   Úseekableý  s    z!WriterXmlgenTest.ioclass.seekablec             C   s   t | ƒS )N)r*   )r1   r2   r2   r3   Útell   s    zWriterXmlgenTest.ioclass.tellc             C   s
   d  | ¡S )Nó    )Újoin)r1   r2   r2   r3   rP     s    z!WriterXmlgenTest.ioclass.getvalueN)
r;   r<   r=   r,   ÚappendrH   ra   rÔ   rÕ   rP   r2   r2   r2   r3   r   ù  s
   r   N)r;   r<   r=   r,   r   r2   r2   r2   r3   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§   rA   )r   ÚcodecsÚ	getwriterrP   )r1   ÚrawÚwriterr2   r2   r3   r     s    zStreamWriterXmlgenTest.ioclassú
iso-8859-1c             C   s   d||f   dd¡S )Nz&<?xml version="1.0" encoding="%s"?>
%sr§   rA   )rB   )r1   r>   r?   r2   r2   r3   r•     s    zStreamWriterXmlgenTest.xmlN)rÞ   )r;   r<   r=   r   r•   r2   r2   r2   r3   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 )
NrE   r§   rA   r   )r?   rF   Ú	bufferingc                  s   ˆ  ¡  t ˆ j¡ d S )N)r   r   rL   Úfnamer2   )r1   rÝ   r2   r3   Úcleanup  s    z5StreamReaderWriterXmlgenTest.ioclass.<locals>.cleanupc           	      s(   ˆ   ¡  tˆ jdƒ
} |  ¡ S Q R X d S )NrW   )r   rG   Únamer~   )rI   )rÝ   r2   r3   rP     s    z6StreamReaderWriterXmlgenTest.ioclass.<locals>.getvalue)rÚ   rG   rá   Ú
addCleanuprP   )r1   râ   rP   r2   )r1   rÝ   r3   r     s    

z$StreamReaderWriterXmlgenTest.ioclassú
iso-8859-1c             C   s   d||f   dd¡S )Nz&<?xml version="1.0" encoding="%s"?>
%sr§   rA   )rB   )r1   r>   r?   r2   r2   r3   r•   $  s    z StreamReaderWriterXmlgenTest.xmlN)rå   )r;   r<   r=   r   r   rá   r   r•   r2   r2   r2   r3   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 )Nr>   r   r©   s   <doc>content </doc>)r   r   r   rÁ   r‘   r’   r›   rª   r“   r”   r&   rP   Ústart)r1   rR   r–   Úfilterr2   r2   r3   Útest_filter_basic,  s    



z#XMLFilterBaseTest.test_filter_basicN)r;   r<   r=   ré   r2   r2   r2   r3   ræ   +  s   ræ   rW   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   sR   t ƒ }tƒ }t|ƒ}| |¡ ttdƒ}| |¡ W d Q R X |  | ¡ t	¡ d S )NrW   )
r   r   r   rÁ   rG   ÚTEST_XMLFILErN   r&   rP   Úxml_test_out)r1   rÂ   rR   ÚxmlgenrI   r2   r2   r3   Útest_expat_binary_fileH  s    
z&ExpatReaderTest.test_expat_binary_filec          	   C   sV   t ƒ }tƒ }t|ƒ}| |¡ ttddd}| |¡ W d Q R X |  | ¡ t	¡ d S )NÚrtz
iso-8859-1)r?   )
r   r   r   rÁ   rG   rë   rN   r&   rP   rì   )r1   rÂ   rR   rí   rI   r2   r2   r3   Útest_expat_text_fileS  s    
z$ExpatReaderTest.test_expat_text_filec             C   sb   t j}t t|¡ |  t j|¡ tƒ }tƒ }t	|ƒ}| 
|¡ | t|dƒ¡ |  | ¡ t¡ d S )NrW   )r   ÚTESTFN_UNICODEÚshutilÚcopyfilerë   rä   rL   r   r   r   rÁ   rN   rG   r&   rP   rì   )r1   rá   rÂ   rR   rí   r2   r2   r3   Útest_expat_binary_file_nonascii^  s    
z/ExpatReaderTest.test_expat_binary_file_nonasciic          	   C   s\   t  t¡}tƒ }tƒ }t|ƒ}| |¡ t|dƒ}| |¡ W d Q R X |  	| 
¡ t¡ d S )NrW   )ÚosÚfsencoderë   r   r   r   rÁ   rG   rN   r&   rP   rì   )r1   rá   rÂ   rR   rí   rI   r2   r2   r3   Ú!test_expat_binary_file_bytes_namem  s    

z1ExpatReaderTest.test_expat_binary_file_bytes_namec          
   C   sp   t ƒ }tƒ }t|ƒ}| |¡ ttdƒ.}t| ¡ ddd}| |¡ W d Q R X W d Q R X |  | 	¡ t
¡ d S )NrW   F)Úclosefd)r   r   r   rÁ   rG   rë   ÚfilenorN   r&   rP   rì   )r1   rÂ   rR   rí   rI   Úf2r2   r2   r3   Útest_expat_binary_file_int_namey  s    
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 )N)Ú
_notationsÚ	_entities)r1   r2   r2   r3   Ú__init__‰  s    z'ExpatReaderTest.TestDTDHandler.__init__c             C   s   | j  |||f¡ d S )N)rü   rØ   )r1   rã   ÚpublicIdÚsystemIdr2   r2   r3   ÚnotationDecl  s    z+ExpatReaderTest.TestDTDHandler.notationDeclc             C   s   | j  ||||f¡ d S )N)rý   rØ   )r1   rã   rÿ   r   Zndatar2   r2   r3   ÚunparsedEntityDecl  s    z1ExpatReaderTest.TestDTDHandler.unparsedEntityDeclN)r;   r<   r=   rþ   r  r  r2   r2   r2   r3   ÚTestDTDHandler‡  s   r  c               @   s   e Zd Zdd„ Zdd„ ZdS )z"ExpatReaderTest.TestEntityRecorderc             C   s
   g | _ d S )N)Úentities)r1   r2   r2   r3   rþ   •  s    z+ExpatReaderTest.TestEntityRecorder.__init__c             C   s.   | j  ||f¡ tƒ }| |¡ | |¡ |S )N)r  rØ   r   ZsetPublicIdÚsetSystemId)r1   rÿ   r   Úsourcer2   r2   r3   ÚresolveEntity˜  s
    

z0ExpatReaderTest.TestEntityRecorder.resolveEntityN)r;   r<   r=   rþ   r  r2   r2   r2   r3   ÚTestEntityRecorder”  s   r  c             C   sv   t ƒ }|  ¡ }| |¡ | d¡ | d¡ | d¡ | d¡ | d¡ | ¡  |  |jdg¡ |  |jdg¡ d S )Nz<!DOCTYPE doc [
z-  <!ENTITY img SYSTEM "expat.gif" NDATA GIF>
zW  <!NOTATION GIF PUBLIC "-//CompuServe//NOTATION Graphics Interchange Format 89a//EN">
z]>
z<doc></doc>)ÚGIFz;-//CompuServe//NOTATION Graphics Interchange Format 89a//ENN)ZimgNz	expat.gifr	  )r   r  ZsetDTDHandlerÚfeedr   r&   rü   rý   )r1   rÂ   Zhandlerr2   r2   r3   Útest_expat_dtdhandlerŸ  s    





z%ExpatReaderTest.test_expat_dtdhandlerc          	   C   sX   t ƒ }| td¡ |  ¡ }| |¡ |  t¡ | d¡ W d Q R X |  |j	dg¡ d S )NTz8<!DOCTYPE external SYSTEM "unsupported://non-existing">
)Nzunsupported://non-existing)
r   rÀ   r   r  ÚsetEntityResolverr   r   r
  r&   r  )r1   rÂ   Úresolverr2   r2   r3   Útest_expat_external_dtd_enabled¯  s    
z/ExpatReaderTest.test_expat_external_dtd_enabledc             C   sF   t ƒ }|  ¡ }| |¡ | d¡ | d¡ | ¡  |  |jg ¡ d S )Nz8<!DOCTYPE external SYSTEM "unsupported://non-existing">
z<doc />)r   r  r  r
  r   r&   r  )r1   rÂ   r  r2   r2   r3   Ú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   rY   r   )r1   rÿ   r   Úinpsrcr2   r2   r3   r  Í  s    z0ExpatReaderTest.TestEntityResolver.resolveEntityN)r;   r<   r=   r  r2   r2   r2   r3   ÚTestEntityResolverË  s   r  c             C   s|   t ƒ }| td¡ | |  ¡ ¡ tƒ }| t|ƒ¡ | d¡ | d¡ | d¡ | d¡ | 	¡  |  
| ¡ td ¡ d S )NTz<!DOCTYPE doc [
z#  <!ENTITY test SYSTEM "whatever">
z]>
z<doc>&test;</doc>s   <doc><entity></entity></doc>)r   rÀ   r   r  r  r   rÁ   r   r
  r   r&   rP   rç   )r1   rÂ   rR   r2   r2   r3   Ú!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 )NFz<!DOCTYPE doc [
z#  <!ENTITY test SYSTEM "whatever">
z]>
z<doc>&test;</doc>s   <doc></doc>)r   r&   Z
getFeaturer   r  r  r   rÁ   r   r
  r   rP   rç   )r1   rÂ   rR   r2   r2   r3   Ú!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 )N)Ú_attrs)r1   rã   r   r2   r2   r3   r’   ö  s    z)ExpatReaderTest.AttrGatherer.startElementc             C   s
   || _ d S )N)r  )r1   rã   Zqnamer   r2   r2   r3   r±   ù  s    z+ExpatReaderTest.AttrGatherer.startElementNSN)r;   r<   r=   r’   r±   r2   r2   r2   r3   ÚAttrGathererô  s   r  c             C   s:   t ƒ }|  ¡ }| |¡ | d¡ | ¡  |  |j¡ d S )Nz<doc/>)r   r  rÁ   r
  r   r4   r  )r1   rÂ   Úgatherr2   r2   r3   Útest_expat_attrs_emptyü  s    

z&ExpatReaderTest.test_expat_attrs_emptyc             C   s:   t ƒ }|  ¡ }| |¡ | d¡ | ¡  |  |j¡ d S )Nz<doc attr='val'/>)r   r  rÁ   r
  r   r:   r  )r1   rÂ   r  r2   r2   r3   Útest_expat_attrs_wattr  s    

z&ExpatReaderTest.test_expat_attrs_wattrc             C   s<   t dƒ}|  ¡ }| |¡ | d¡ | ¡  |  |j¡ d S )Nr7   z<doc/>)r   r  rÁ   r
  r   r6   r  )r1   rÂ   r  r2   r2   r3   Ú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 )Nr7   z"<doc xmlns:ns='%s' ns:attr='val'/>r   zns:attrr8   r   )r   r  rÁ   r
  r5   r   r  r&   r'   r(   r`   r)   r*   r9   r.   r,   r/   r0   r!   )r1   rÂ   r  r   r2   r2   r3   Útest_expat_nsattrs_wattr  s$    
z(ExpatReaderTest.test_expat_nsattrs_wattrc             C   s<   t ƒ }tƒ }t|ƒ}| |¡ | t¡ |  | ¡ t¡ d S )N)	r   r   r   rÁ   rN   rë   r&   rP   rì   )r1   rÂ   rR   rí   r2   r2   r3   Útest_expat_inpsource_filename3  s    

z-ExpatReaderTest.test_expat_inpsource_filenamec             C   s@   t ƒ }tƒ }t|ƒ}| |¡ | ttƒ¡ |  | ¡ t	¡ d S )N)
r   r   r   rÁ   rN   r   rë   r&   rP   rì   )r1   rÂ   rR   rí   r2   r2   r3   Útest_expat_inpsource_sysid=  s    
z*ExpatReaderTest.test_expat_inpsource_sysidc             C   s`   t j}t t|¡ |  t j|¡ tƒ }tƒ }t	|ƒ}| 
|¡ | t|ƒ¡ |  | ¡ t¡ d S )N)r   rñ   rò   ró   rë   rä   rL   r   r   r   rÁ   rN   r   r&   rP   rì   )r1   rá   rÂ   rR   rí   r2   r2   r3   Ú#test_expat_inpsource_sysid_nonasciiG  s    
z3ExpatReaderTest.test_expat_inpsource_sysid_nonasciic          	   C   sb   t ƒ }tƒ }t|ƒ}| |¡ tƒ }ttdƒ}| |¡ | |¡ W d Q R X |  	| 
¡ t¡ d S )NrW   )r   r   r   rÁ   r   rG   rë   rY   rN   r&   rP   rì   )r1   rÂ   rR   rí   r  rI   r2   r2   r3   Ú test_expat_inpsource_byte_streamV  s    

z0ExpatReaderTest.test_expat_inpsource_byte_streamc          	   C   sf   t ƒ }tƒ }t|ƒ}| |¡ tƒ }ttddd}| |¡ | |¡ W d Q R X |  	| 
¡ t¡ d S )Nrï   z
iso-8859-1)r?   )r   r   r   rÁ   r   rG   rë   rƒ   rN   r&   rP   rì   )r1   rÂ   rR   rí   r  rI   r2   r2   r3   Ú%test_expat_inpsource_character_streamc  s    

z5ExpatReaderTest.test_expat_inpsource_character_streamc             C   sR   t ƒ }t|ƒ}tƒ }| |¡ | d¡ | d¡ | ¡  |  | ¡ td ¡ d S )Nz<doc>z</doc>s   <doc></doc>)	r   r   r   rÁ   r
  r   r&   rP   rç   )r1   rR   rí   rÂ   r2   r2   r3   Útest_expat_incrementalr  s    


z&ExpatReaderTest.test_expat_incrementalc             C   s   t ƒ }t|ƒ}tƒ }| |¡ | d¡ | d¡ t ƒ }t|ƒ}| |¡ | ¡  | d¡ | d¡ | d¡ | ¡  |  | ¡ t	d ¡ d S )Nz<doc>Útextz</doc>s   <doc>text</doc>)
r   r   r   rÁ   r
  Úresetr   r&   rP   rç   )r1   rR   rí   rÂ   r2   r2   r3   Útest_expat_incremental_reset~  s    






z,ExpatReaderTest.test_expat_incremental_resetc             C   sn   t ƒ }t|ƒ}tƒ }| |¡ | d¡ | d¡ | ¡  |  | ¡ d ¡ |  | ¡ d ¡ |  | 	¡ d¡ d S )Nz<doc>z</doc>r7   )
r   r   r   rÁ   r
  r   r&   ÚgetSystemIdÚgetPublicIdÚgetLineNumber)r1   rR   rí   rÂ   r2   r2   r3   Útest_expat_locator_noinfo•  s    


z)ExpatReaderTest.test_expat_locator_noinfoc             C   sL   t ƒ }t|ƒ}tƒ }| |¡ | t¡ |  | ¡ t¡ |  | ¡ d ¡ d S )N)	r   r   r   rÁ   rN   rë   r&   r$  r%  )r1   rR   rí   rÂ   r2   r2   r3   Ú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 )N)r   rñ   rò   ró   rë   rä   rL   r   r   r   rÁ   rN   r&   r$  r%  )r1   rá   rR   rí   rÂ   r2   r2   r3   Ú$test_expat_locator_withinfo_nonascii­  s    

z4ExpatReaderTest.test_expat_locator_withinfo_nonasciiN)!r;   r<   r=   rî   rð   Úrequires_nonascii_filenamesrô   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)  r2   r2   r2   r3   rê   D  s8   





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}| |¡ y| |¡ |  ¡  W n2 t	k
r| } z|  
| ¡ |¡ W d d }~X Y nX d S )Ns   <foo bar foobar>za file name)r   rÁ   r   r   rY   r   r  rN   Zfailr   r&   r$  )r1   rÂ   r  rã   r£   r2   r2   r3   Útest_expat_inpsource_locationÄ  s    

z0ErrorReportingTest.test_expat_inpsource_locationc             C   sJ   t ƒ }| tƒ ¡ |  t|jtdƒ¡ |  | ¡ d¡ |  | 	¡ d¡ d S )Nz<foo>é   r7   )
r   rÁ   r   r   r   rN   r   r&   ÚgetColumnNumberr&  )r1   rÂ   r2   r2   r3   Ú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Úmessager7   )Ústrr   ÚDummyLocator)r1   r2   r2   r3   Ú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 )N)Ú_linenoÚ_colno)r1   ÚlinenoÚcolnor2   r2   r3   rþ   ë  s    z(ErrorReportingTest.DummyLocator.__init__c             C   s   dS )NZpubidr2   )r1   r2   r2   r3   r%  ï  s    z+ErrorReportingTest.DummyLocator.getPublicIdc             C   s   dS )NZsysidr2   )r1   r2   r2   r3   r$  ò  s    z+ErrorReportingTest.DummyLocator.getSystemIdc             C   s   | j S )N)r4  )r1   r2   r2   r3   r&  õ  s    z-ErrorReportingTest.DummyLocator.getLineNumberc             C   s   | j S )N)r5  )r1   r2   r2   r3   r.  ø  s    z/ErrorReportingTest.DummyLocator.getColumnNumberN)r;   r<   r=   rþ   r%  r$  r&  r.  r2   r2   r2   r3   r2  ê  s
   r2  N)r;   r<   r=   r,  r/  r3  r2  r2   r2   r2   r3   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 )N)r4   r   )r1   r2   r2   r3   Útest_attrs_empty  s    zXmlReaderTest.test_attrs_emptyc             C   s   |   tddiƒ¡ d S )Nr   r8   )r:   r   )r1   r2   r2   r3   Útest_attrs_wattr  s    zXmlReaderTest.test_attrs_wattrc             C   s   |   ti i ƒ¡ d S )N)r6   r   )r1   r2   r2   r3   Útest_nsattrs_empty
  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   r8   zns:attrr7   r   )r   r5   r&   r'   r(   r)   r*   r9   r,   r-   r.   r/   r0   r!   r"   r#   r$   )r1   r   r2   r2   r3   Útest_nsattrs_wattr  s"    z XmlReaderTest.test_nsattrs_wattrN)r;   r<   r=   r9  r:  r;  r<  r2   r2   r2   r3   r8    s   r8  c               C   s"   t ttttttttt	t
ttƒ d S )N)r   rh   rK   rk   ry   rÏ   rÑ   rÓ   rÙ   rß   rê   r+  r8  r2   r2   r2   r3   Ú	test_main"  s    r=  Ú__main__)N).).)QrO   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gcZos.pathrõ   rò   Zurllib.errorr   rž   r   Ztest.supportr   r   r   rë   ZTEST_XMLFILE_OUTrB   ÚUnicodeEncodeErrorZsupports_nonascii_filenamesÚpathÚsupports_unicode_filenamesrñ   ZTESTFN_ENCODINGÚUnicodeErrorÚ	TypeErrorZ
skipUnlessr*  r5   ZTestCaser   r@   rD   rJ   rK   rh   rk   ry   r   rÏ   rÑ   rÓ   rÙ   rß   rç   ræ   rG   rI   r~   rì   rê   r+  r8  r=  r;   r2   r2   r2   r3   Ú<module>   s€   
 


5


x4L  c   >!
