a
    äzeÃj  ã                   @   sR  d dl mZ d dlZd dl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 G dd„ dejƒZdZG d	d
„ d
ejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZedkrNe ¡  dS ) é    )ÚBytesION)Úexpat)Úerrors)Úsortdictc                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚSetAttributeTestc                 C   s   t jdd| _d S ©Nú!©Znamespace_separator)r   ÚParserCreateÚparser©Úself© r   ú'/usr/lib/python3.9/test/test_pyexpat.pyÚsetUp   s    zSetAttributeTest.setUpc                 C   s:   |   | jjd¡ dD ] }|| j_|   | jjt|ƒ¡ qd S ©NF)r   é   é   r   )ÚassertIsr   Úbuffer_textÚbool©r   Úxr   r   r   Útest_buffer_text   s    z!SetAttributeTest.test_buffer_textc                 C   s:   |   | jjd¡ dD ] }|| j_|   | jjt|ƒ¡ qd S r   )r   r   Znamespace_prefixesr   r   r   r   r   Útest_namespace_prefixes   s    z(SetAttributeTest.test_namespace_prefixesc                 C   s:   |   | jjd¡ dD ] }|| j_|   | jjt|ƒ¡ qd S r   )r   r   Zordered_attributesr   r   r   r   r   Útest_ordered_attributes"   s    z(SetAttributeTest.test_ordered_attributesc                 C   s:   |   | jjd¡ dD ] }|| j_|   | jjt|ƒ¡ qd S r   )r   r   Zspecified_attributesr   r   r   r   r   Útest_specified_attributes(   s    z*SetAttributeTest.test_specified_attributesc                 C   s®   |   t¡ d| j_W d   ƒ n1 s(0    Y  |   t¡ | jj W d   ƒ n1 sZ0    Y  |   tt| jtdƒd¡ |   t| jjtdƒd¡ |   tt| jtdƒ¡ d S )Nr   é   r   )	ÚassertRaisesÚAttributeErrorr   Zreturns_unicodeÚ	TypeErrorÚsetattrÚrangeÚ__setattr__Úgetattrr   r   r   r   Útest_invalid_attributes.   s    &&z(SetAttributeTest.test_invalid_attributesN)	Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r%   r   r   r   r   r      s   r   s¼  <?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<?xml-stylesheet href="stylesheet.css"?>
<!-- comment data -->
<!DOCTYPE quotations SYSTEM "quotations.dtd" [
<!ELEMENT root ANY>
<!ATTLIST root attr1 CDATA #REQUIRED attr2 CDATA #IMPLIED>
<!NOTATION notation SYSTEM "notation.jpeg">
<!ENTITY acirc "&#226;">
<!ENTITY external_entity SYSTEM "entity.file">
<!ENTITY unparsed_entity SYSTEM "entity.file" NDATA notation>
%unparsed_entity;
]>

<root attr1="value1" attr2="value2&#8000;">
<myns:subelement xmlns:myns="http://www.python.org/namespace">
     Contents of subelements
</myns:subelement>
<sub2><![CDATA[contents of CDATA section]]></sub2>
&external_entity;
&skipped_entity;
µ
</root>
c                   @   sR   e Zd ZG dd„ dƒZg d¢Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dS )Ú	ParseTestc                   @   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/S )0zParseTest.Outputterc                 C   s
   g | _ d S ©N)Úoutr   r   r   r   Ú__init__W   s    zParseTest.Outputter.__init__c                 C   s$   | j  dt|ƒ d t|ƒ ¡ d S )NzStart element: ú )r+   ÚappendÚreprr   ©r   ÚnameÚattrsr   r   r   ÚStartElementHandlerZ   s    ÿz'ParseTest.Outputter.StartElementHandlerc                 C   s   | j  dt|ƒ ¡ d S )NzEnd element: ©r+   r.   r/   ©r   r1   r   r   r   ÚEndElementHandler^   s    z%ParseTest.Outputter.EndElementHandlerc                 C   s$   |  ¡ }|r | j dt|ƒ ¡ d S )NzCharacter data: )Ústripr+   r.   r/   ©r   Údatar   r   r   ÚCharacterDataHandlera   s    z(ParseTest.Outputter.CharacterDataHandlerc                 C   s$   | j  dt|ƒ d t|ƒ ¡ d S )NzPI: r-   r4   )r   Útargetr9   r   r   r   ÚProcessingInstructionHandlerf   s    z0ParseTest.Outputter.ProcessingInstructionHandlerc                 C   s$   | j  dt|ƒ d t|ƒ ¡ d S )Nz	NS decl: r-   r4   )r   ÚprefixZurir   r   r   ÚStartNamespaceDeclHandleri   s    z-ParseTest.Outputter.StartNamespaceDeclHandlerc                 C   s   | j  dt|ƒ ¡ d S )NzEnd of NS decl: r4   )r   r=   r   r   r   ÚEndNamespaceDeclHandlerl   s    z+ParseTest.Outputter.EndNamespaceDeclHandlerc                 C   s   | j  d¡ d S )NúStart of CDATA section©r+   r.   r   r   r   r   ÚStartCdataSectionHandlero   s    z,ParseTest.Outputter.StartCdataSectionHandlerc                 C   s   | j  d¡ d S )NúEnd of CDATA sectionrA   r   r   r   r   ÚEndCdataSectionHandlerr   s    z*ParseTest.Outputter.EndCdataSectionHandlerc                 C   s   | j  dt|ƒ ¡ d S )Nz	Comment: r4   ©r   Útextr   r   r   ÚCommentHandleru   s    z"ParseTest.Outputter.CommentHandlerc                 G   s"   |\}}}}| j  d|f ¡ d S )NzNotation declared: %srA   )r   Úargsr1   ÚbaseZsysidZpubidr   r   r   ÚNotationDeclHandlerx   s    z'ParseTest.Outputter.NotationDeclHandlerc                 G   s$   |\}}}}}| j  d|f ¡ d S )NzUnparsed entity decl: %srA   )r   rH   Z
entityNamerI   ZsystemIdZpublicIdZnotationNamer   r   r   ÚUnparsedEntityDeclHandler|   s    z-ParseTest.Outputter.UnparsedEntityDeclHandlerc                 C   s   | j  d¡ dS )NúNot standaloner   rA   r   r   r   r   ÚNotStandaloneHandler€   s    z(ParseTest.Outputter.NotStandaloneHandlerc                 G   s*   |\}}}}| j  d|dd … f ¡ dS )NzExternal entity ref: %sr   rA   )r   rH   ÚcontextrI   ÚsysIdÚpubIdr   r   r   ÚExternalEntityRefHandler„   s    z,ParseTest.Outputter.ExternalEntityRefHandlerc                 G   s   | j  d|f¡ dS )NúStart doctyper   rA   ©r   rH   r   r   r   ÚStartDoctypeDeclHandler‰   s    z+ParseTest.Outputter.StartDoctypeDeclHandlerc                 C   s   | j  d¡ dS )NúEnd doctyper   rA   r   r   r   r   ÚEndDoctypeDeclHandler   s    z)ParseTest.Outputter.EndDoctypeDeclHandlerc                 G   s   | j  d|f¡ dS )NúEntity declarationr   rA   rS   r   r   r   ÚEntityDeclHandler‘   s    z%ParseTest.Outputter.EntityDeclHandlerc                 G   s   | j  d|f¡ dS )NúXML declarationr   rA   rS   r   r   r   ÚXmlDeclHandler•   s    z"ParseTest.Outputter.XmlDeclHandlerc                 G   s   | j  d|f¡ dS )NúElement declarationr   rA   rS   r   r   r   ÚElementDeclHandler™   s    z&ParseTest.Outputter.ElementDeclHandlerc                 G   s   | j  d|f¡ dS )NúAttribute list declarationr   rA   rS   r   r   r   ÚAttlistDeclHandler   s    z&ParseTest.Outputter.AttlistDeclHandlerc                 G   s   | j  d|f¡ dS )NúSkipped entityr   rA   rS   r   r   r   ÚSkippedEntityHandler¡   s    z(ParseTest.Outputter.SkippedEntityHandlerc                 C   s   d S r*   r   ©r   ZuserDatar   r   r   ÚDefaultHandler¥   s    z"ParseTest.Outputter.DefaultHandlerc                 C   s   d S r*   r   ra   r   r   r   ÚDefaultHandlerExpand¨   s    z(ParseTest.Outputter.DefaultHandlerExpandN)r&   r'   r(   r,   r3   r6   r:   r<   r>   r?   rB   rD   rG   rJ   rK   rM   rQ   rT   rV   rX   rZ   r\   r^   r`   rb   rc   r   r   r   r   Ú	OutputterV   s.   rd   )r3   r6   r:   r<   rK   rJ   r>   r?   rG   rB   rD   rb   rc   rM   rQ   rT   rV   rX   rZ   r\   r^   r`   c                 C   s"   | j D ]}t||t||ƒƒ qdS )z{
        Set each of the callbacks defined on handler and named in
        self.handler_names on the given parser.
        N)Úhandler_namesr!   r$   )r   r   Úhandlerr1   r   r   r   Ú_hookup_callbacks·   s    
zParseTest._hookup_callbacksc                 C   s,   g d¢}t ||ƒD ]\}}|  ||¡ qd S )N))rY   )z1.0ú
iso-8859-1r   z,PI: 'xml-stylesheet' 'href="stylesheet.css"'zComment: ' comment data 'rL   )rR   )Z
quotationszquotations.dtdNr   )r[   )Úroot)r   r   Nr   )r]   )ri   Zattr1ÚCDATANr   )r]   )ri   Zattr2rj   Nr   z<Notation declared: ('notation', None, 'notation.jpeg', None))rW   )Zacircr   õ   Ã¢NNNN)rW   )Zexternal_entityr   NNzentity.fileNNzPUnparsed entity decl: ('unparsed_entity', None, 'entity.file', None, 'notation')rL   rU   u?   Start element: 'root' {'attr1': 'value1', 'attr2': 'value2á½€'}z1NS decl: 'myns' 'http://www.python.org/namespace'z>Start element: 'http://www.python.org/namespace!subelement' {}z)Character data: 'Contents of subelements'z9End element: 'http://www.python.org/namespace!subelement'zEnd of NS decl: 'myns'zStart element: 'sub2' {}r@   z+Character data: 'contents of CDATA section'rC   zEnd element: 'sub2'z0External entity ref: (None, 'entity.file', None))r_   )Zskipped_entityr   u   Character data: 'Âµ'zEnd element: 'root')ÚzipÚassertEqual)r   Ú
operationsZexpected_operationsZ	operationZexpected_operationr   r   r   Ú_verify_parse_output¿   s    "zParseTest._verify_parse_outputc                 C   sP   |   ¡ }tjdd}|  ||¡ | td¡ |j}|  |¡ |  t	t
|d¡ d S )Nr   r	   Tu   í €)rd   r   r
   rg   ÚParser9   r+   ro   r   r   r$   ©r   r+   r   rn   r   r   r   Útest_parse_byteså   s    
zParseTest.test_parse_bytesc                 C   sF   |   ¡ }tjdd}|  ||¡ | t d¡d¡ |j}|  |¡ d S )Nr   r	   rh   T)	rd   r   r
   rg   rp   r9   Údecoder+   ro   rq   r   r   r   Útest_parse_strñ   s    zParseTest.test_parse_strc                 C   sF   |   ¡ }tjdd}|  ||¡ ttƒ}| |¡ |j}|  |¡ d S r   )	rd   r   r
   rg   r   r9   Ú	ParseFiler+   ro   )r   r+   r   Úfilern   r   r   r   Útest_parse_fileû   s    
zParseTest.test_parse_filec                 C   sn   t  ¡ }ttƒ}| |¡ |  t j¡}| |¡ W d   ƒ n1 sF0    Y  |  t  |j	j
¡t jj¡ d S r*   )r   r
   r   r9   ru   r   Úerrorrm   ZErrorStringÚ	exceptionÚcoder   ZXML_ERROR_FINISHED)r   r   rv   Úcmr   r   r   Útest_parse_again  s    
(ÿzParseTest.test_parse_againN)r&   r'   r(   rd   re   rg   ro   rr   rt   rw   r|   r   r   r   r   r)   U   s   U&
r)   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚNamespaceSeparatorTestc                 C   s$   t  ¡  t jd d t jdd d S )Nr	   r-   ©r   r
   r   r   r   r   Ú
test_legal  s    z!NamespaceSeparatorTest.test_legalc              
   C   s    zt jdd |  ¡  W n4 tyL } z|  t|ƒd¡ W Y d }~n
d }~0 0 zt jdd |  ¡  W n4 tyš } z|  t|ƒd¡ W Y d }~n
d }~0 0 d S )Né*   r	   zJParserCreate() argument 'namespace_separator' must be str or None, not intztoo longzCnamespace_separator must be at most one character, omitted, or None)r   r
   Úfailr    rm   ÚstrÚ
ValueError)r   Úer   r   r   Útest_illegal  s    
ÿ
ÿz#NamespaceSeparatorTest.test_illegalc                 C   s   t jdd d S )NÚ r	   r~   r   r   r   r   Útest_zero_length*  s    	z'NamespaceSeparatorTest.test_zero_lengthN)r&   r'   r(   r   r…   r‡   r   r   r   r   r}     s   r}   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚInterningTestc                    sd   t  ¡ }g ‰ ‡ fdd„}||_||_| dd¡ ˆ d }|  tˆ ƒd¡ ˆ D ]}|  ||u ¡ qLd S )Nc                    s   ˆ   | ¡ d S r*   ©r.   )r1   rH   ©ÚLr   r   Ú	collector;  s    z%InterningTest.test.<locals>.collectors   <e> <e/> <e></e> </e>Tr   é   )r   r
   r3   r6   rp   rm   ÚlenÚ
assertTrue)r   ÚprŒ   ÚtagÚentryr   rŠ   r   Útest7  s    zInterningTest.testc                 C   sN   G dd„ dƒ}t jdd}d|_||ƒ}|j|_| td¡ |  |jd¡ d S )Nc                   @   s   e Zd Zdd„ Zdd„ ZdS )z7InterningTest.test_issue9402.<locals>.ExternalOutputterc                 S   s   || _ d | _d S r*   )r   Úparser_result©r   r   r   r   r   r,   I  s    z@InterningTest.test_issue9402.<locals>.ExternalOutputter.__init__c                 S   s   | j  d¡}| dd¡| _dS )Nr†   ó    Tr   )r   ZExternalEntityParserCreaterp   r”   )r   rN   rI   rO   rP   Zexternal_parserr   r   r   rQ   M  s    zPInterningTest.test_issue9402.<locals>.ExternalOutputter.ExternalEntityRefHandlerN)r&   r'   r(   r,   rQ   r   r   r   r   ÚExternalOutputterH  s   r—   r   r	   r   T)r   r
   r   rQ   rp   r9   rm   r”   )r   r—   r   r+   r   r   r   Útest_issue9402F  s    
zInterningTest.test_issue9402N)r&   r'   r(   r“   r˜   r   r   r   r   rˆ   6  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g f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 )"ÚBufferTextTestc                 C   s&   g | _ t ¡ | _d| j_| j| j_d S ©Nr   )Ústuffr   r
   r   r   r:   r   r   r   r   r   [  s    
zBufferTextTest.setUpc              
   C   s&   |   | j|d|| jtt|ƒf ¡ d S )Nz%s
stuff    = %r
expected = %r)rm   r›   Úmapr‚   )r   ÚexpectedZlabelr   r   r   Úchecka  s
    
ÿÿzBufferTextTest.checkc                 C   s   | j  |¡ d S r*   ©r›   r.   rE   r   r   r   r:   f  s    z#BufferTextTest.CharacterDataHandlerc                 C   s@   | j  d| ¡ | d¡}|dkr,d| j_n|dkr<d| j_d S )Nz<%s>zbuffer-textZyesr   Únor   )r›   r.   Úgetr   r   )r   r1   r2   Zbtr   r   r   r3   i  s    

z"BufferTextTest.StartElementHandlerc                 C   s   | j  d| ¡ d S )Nz</%s>rŸ   r5   r   r   r   r6   q  s    z BufferTextTest.EndElementHandlerc                 C   s   | j  d| ¡ d S )Nz	<!--%s-->rŸ   r8   r   r   r   rG   t  s    zBufferTextTest.CommentHandlerc                 C   s"   |D ]}t | j|t| |ƒƒ qd S r*   )r!   r   r$   )r   Úhandlersr1   r   r   r   ÚsetHandlersw  s    zBufferTextTest.setHandlersc                 C   s   t  ¡ }|  |j¡ d S r*   )r   r
   ÚassertFalser   r•   r   r   r   Útest_default_to_disabled{  s    z'BufferTextTest.test_default_to_disabledc                 C   s2   |   | jj¡ | j dd¡ |  | jdgd¡ d S )Nó   <a>1<b/>2<c/>3</a>TZ123ú$buffered text not properly collapsed)r   r   r   rp   rm   r›   r   r   r   r   Útest_buffering_enabled  s
    ÿz%BufferTextTest.test_buffering_enabledc                 C   s2   |   dg¡ | j dd¡ |  | jg d¢d¡ d S )Nr3   s9   <a>1<b buffer-text='no'/>2
3<c buffer-text='yes'/>4
5</a>T)ú<a>Ú1ú<b>Ú2Ú
Ú3ú<c>z4
5z*buffering control not reacting as expected©r£   r   rp   rm   r›   r   r   r   r   Útest1†  s    þzBufferTextTest.test1c                 C   s$   | j  dd¡ |  | jdgd¡ d S )Ns&   <a>1<b/>&lt;2&gt;<c/>&#32;
&#x20;3</a>Tz1<2> 
 3r§   )r   rp   rm   r›   r   r   r   r   Útest2  s    ÿzBufferTextTest.test2c                 C   s2   |   dg¡ | j dd¡ |  | jg d¢d¡ d S )Nr3   r¦   T)r©   rª   r«   r¬   r¯   r®   ú buffered text not properly splitr°   r   r   r   r   Útest3”  s
    ÿzBufferTextTest.test3c                 C   s:   |   ddg¡ d | j_| j dd¡ |  | jg d¢¡ d S )Nr3   r6   r¦   T)r©   r«   ú</b>r¯   ú</c>ú</a>)r£   r   r:   rp   rm   r›   r   r   r   r   Útest4š  s    ÿzBufferTextTest.test4c                 C   s2   |   ddg¡ | j dd¡ |  | jg d¢¡ d S )Nr3   r6   s   <a>1<b></b>2<c/>3</a>T)	r©   rª   r«   rµ   r¬   r¯   r¶   r®   r·   r°   r   r   r   r   Útest5¡  s
    ÿzBufferTextTest.test5c                 C   s4   |   g d¢¡ | j dd¡ |  | jg d¢d¡ d S )N©rG   r6   r3   s   <a>1<b/>2<c></c>345</a> T)	r©   rª   r«   rµ   r¬   r¯   r¶   Z345r·   r³   r°   r   r   r   r   Útest6§  s    þzBufferTextTest.test6c                 C   s4   |   g d¢¡ | j dd¡ |  | jg d¢d¡ d S )Nrº   s,   <a>1<b/>2<c></c>3<!--abc-->4<!--def-->5</a> T)r©   rª   r«   rµ   r¬   r¯   r¶   r®   z
<!--abc-->Ú4z
<!--def-->Ú5r·   r³   r°   r   r   r   r   Útest7¯  s    ýzBufferTextTest.test7N)r&   r'   r(   r   rž   r:   r3   r6   rG   r£   r¥   r¨   r±   r²   r´   r¸   r¹   r»   r¾   r   r   r   r   r™   Z  s    	r™   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚHandlerExceptionTestc                 C   s   t |ƒ‚d S r*   )ÚRuntimeErrorr0   r   r   r   r3   »  s    z(HandlerExceptionTest.StartElementHandlerc                 C   s,   |   tj |d ¡|¡ |   |d |¡ d S )Nr   r   )rm   ÚosÚpathÚbasename)r   r’   ÚfilenameÚfuncnamer   r   r   Úcheck_traceback_entry¾  s    z*HandlerExceptionTest.check_traceback_entryc                 C   sø   t  ¡ }| j|_z| dd¡ |  ¡  W nÊ tyò } z²|  |jd ddd|jd   ¡ t 	|j
¡}|  t|ƒd¡ |  |d dd	¡ |  |d
 dd¡ |  |d dd¡ t ¡ rÞtjdkrÊt ¡ dksÞ|  d|d
 d ¡ W Y d }~n
d }~0 0 d S )Ns   <a><b><c/></b></a>Tr   Úaz*Expected RuntimeError for element 'a', butz	 found %ré   ztest_pyexpat.pyÚtest_exceptionr   z	pyexpat.cZStartElementr   r3   Úwin32ZARMzcall_with_frame("StartElement")r   r
   r3   rp   r   rÀ   rm   rH   Ú	tracebackÚ
extract_tbÚ__traceback__rŽ   rÆ   Ú	sysconfigZis_python_buildÚsysÚplatformÚmachineZassertIn)r   r   r„   Úentriesr   r   r   rÉ   Â  s0    ÿÿ
ÿ
ÿ
ÿz#HandlerExceptionTest.test_exceptionN)r&   r'   r(   r3   rÆ   rÉ   r   r   r   r   r¿   º  s   r¿   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚPositionTestc                 C   s   |   d¡ d S )NÚs©Ú	check_posr0   r   r   r   r3   Û  s    z PositionTest.StartElementHandlerc                 C   s   |   d¡ d S )Nr„   rÕ   r5   r   r   r   r6   Þ  s    zPositionTest.EndElementHandlerc                 C   sd   || j j| j j| j jf}|  | jt| jƒk d¡ | j| j }|  ||d||f ¡ |  jd7  _d S )Nztoo many parser eventsz%Expected position %s, got position %sr   )	r   ZCurrentByteIndexZCurrentLineNumberZCurrentColumnNumberr   ÚuptorŽ   Úexpected_listrm   )r   ÚeventÚposr   r   r   r   rÖ   á  s    ýÿ
ÿzPositionTest.check_posc                 C   sD   t  ¡ | _| j| j_| j| j_d| _g d¢| _d}| j |d¡ d S )Nr   ))rÔ   r   r   r   )rÔ   é   r   r   )rÔ   é   rÈ   r   )r„   r   rÈ   r   )r„   é   é   r   )r„   é   rÛ   r   s   <a>
 <b>
  <c/>
 </b>
</a>T)r   r
   r   r3   r6   r×   rØ   rp   )r   Úxmlr   r   r   r“   í  s    



zPositionTest.testN)r&   r'   r(   r3   r6   rÖ   r“   r   r   r   r   rÓ   Ú  s   rÓ   c                   @   s   e Zd Zdd„ ZdS )Úsf1296433Testc                    sL   dd }G dd„ dt ƒ‰ ‡ fdd„}t ¡ }||_|  t |j| d¡¡ d S )Nz1<?xml version='1.0' encoding='iso8859'?><s>%s</s>A  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac                   @   s   e Zd ZdS )zAsf1296433Test.test_parse_only_xml_data.<locals>.SpecificExceptionN)r&   r'   r(   r   r   r   r   ÚSpecificException  s   râ   c                    s   ˆ ‚d S r*   r   )rF   ©râ   r   r   rf     s    z7sf1296433Test.test_parse_only_xml_data.<locals>.handlerÚiso8859)Ú	Exceptionr   r
   r:   r   rp   Úencode)r   rà   rf   r   r   rã   r   Útest_parse_only_xml_dataú  s    z&sf1296433Test.test_parse_only_xml_dataN)r&   r'   r(   rç   r   r   r   r   rá   ù  s   rá   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 )ÚChardataBufferTestz.
    test setting of chardata buffer size
    c                 C   s   |   |  d¡d¡ d S )Ni  r   ©rm   Úsmall_buffer_testr   r   r   r   Útest_1025_bytes  s    z"ChardataBufferTest.test_1025_bytesc                 C   s   |   |  d¡d¡ d S )Niè  r   ré   r   r   r   r   Útest_1000_bytes  s    z"ChardataBufferTest.test_1000_bytesc                 C   sÜ   t  ¡ }d|_|  t¡ d|_W d   ƒ n1 s40    Y  |  t¡ d|_W d   ƒ n1 sd0    Y  |  ttf¡ tjd |_W d   ƒ n1 sž0    Y  |  t	¡ d|_W d   ƒ n1 sÎ0    Y  d S )Nr   éÿÿÿÿr   g      €@)
r   r
   r   r   rƒ   Úbuffer_sizeÚOverflowErrorrÏ   Úmaxsizer    r•   r   r   r   Útest_wrong_size  s    $$*z"ChardataBufferTest.test_wrong_sizec                 C   st   d}d}t  ¡ }| j|_d|_d|_d| _| |¡ |  | jd¡ |j|_|  | jd¡ | |¡ |  | jd¡ d S )Ns+  <?xml version='1.0' encoding='iso8859'?><s>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</s>i   r   r   r   )	r   r
   Úcounting_handlerr:   rî   r   Únrp   rm   ©r   Úxml1Úxml2r   r   r   r   Útest_unchanged_size#  s    

z&ChardataBufferTest.test_unchanged_sizec                 C   sê   d}d}d}t  ¡ }| j|_d|_d|_|  |jd¡ d| _| |d¡ |  |jd¡ |  | jd¡ d|_|  	|j¡ |  |jd¡ t
dƒD ]}| |d¡ qŒ|  | jd	¡ d|_|  |j¡ |  |jd¡ | |d
¡ |  | jd¡ d S )Ns+  <?xml version='1.0' encoding='iso8859'?><a>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas   bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbs  cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc</a>r   é   r   Fé
   rÜ   Té   )r   r
   rò   r:   r   rî   rm   ró   rp   r¤   r"   r   )r   rõ   rö   Zxml3r   Úir   r   r   Útest_disabling_buffer:  s.    z(ChardataBufferTest.test_disabling_bufferc                 C   s   |  j d7  _ d S rš   )ró   rE   r   r   r   rò   X  s    z#ChardataBufferTest.counting_handlerc                 C   sB   dd|  d }t  ¡ }| j|_d|_d|_d| _| |¡ | jS )Ns+   <?xml version='1.0' encoding='iso8859'?><s>ó   as   </s>rø   r   r   )r   r
   rò   r:   rî   r   ró   rp   )r   Z
buffer_lenrà   r   r   r   r   rê   [  s    
z$ChardataBufferTest.small_buffer_testc                 C   s~   d}d}t  ¡ }| j|_d|_d|_|  |jd¡ d| _| |d¡ | jd9  _|  |jd¡ | |d	¡ |  | jd¡ d S )
Ns.  <?xml version='1.0' encoding='iso8859'?><a><s>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaó  aaa</s><s>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</s></a>r   rø   r   Fr   é   T©	r   r
   rò   r:   r   rî   rm   ró   rp   rô   r   r   r   Útest_change_size_1f  s    z%ChardataBufferTest.test_change_size_1c                 C   s|   d}d}t  ¡ }| j|_d|_d|_|  |jd¡ d| _| |d¡ |jd |_|  |jd¡ | |d	¡ |  | jd
¡ d S )Ns.  <?xml version='1.0' encoding='iso8859'?><a>a<s>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarþ   r   rÿ   r   Fr   rø   TrÞ   r   rô   r   r   r   Útest_change_size_2v  s    z%ChardataBufferTest.test_change_size_2N)r&   r'   r(   Ú__doc__rë   rì   rñ   r÷   rü   rò   rê   r  r  r   r   r   r   rè     s   rè   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚMalformedInputTestc              
   C   s`   d}t  ¡ }z| |d¡ |  ¡  W n6 t jyZ } z|  t|ƒd¡ W Y d }~n
d }~0 0 d S )Ns    
Tz unclosed token: line 2, column 0)r   r
   rp   r   Ú
ExpatErrorrm   r‚   ©r   rà   r   r„   r   r   r   r±   ‡  s    zMalformedInputTest.test1c                 C   sN   d}t  ¡ }d}|  t j|¡ | |d¡ W d   ƒ n1 s@0    Y  d S )Ns   <?xml versionÂ…='1.0'?>
z3XML declaration not well-formed: line 1, column \d+T)r   r
   ZassertRaisesRegexr  rp   )r   rà   r   Zerr_patternr   r   r   r²     s
    zMalformedInputTest.test2N)r&   r'   r(   r±   r²   r   r   r   r   r  †  s   	r  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚErrorMessageTestc                 C   s    |   tjtjtjtj  ¡ d S r*   )rm   r   ZXML_ERROR_SYNTAXÚmessagesÚcodesr   r   r   r   Ú
test_codes™  s    ÿzErrorMessageTest.test_codesc              
   C   sf   d}t  ¡ }z| |d¡ |  ¡  W n< t jy` } z"|  |jtjtj	 ¡ W Y d }~n
d }~0 0 d S )Nó   <T)
r   r
   rp   r   r  rm   rz   r   r	  ZXML_ERROR_UNCLOSED_TOKENr  r   r   r   Útest_expaterrorž  s    
ÿz ErrorMessageTest.test_expaterrorN)r&   r'   r(   r
  r  r   r   r   r   r  ˜  s   r  c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚForeignDTDTestszE
    Tests for the UseForeignDTD method of expat parser objects.
    c                    s–   g ‰ ‡ fdd„}t  ¡ }| d¡ | t j¡ ||_| d¡ |  ˆ dg¡ g ˆ dd…< t  ¡ }| ¡  | t j¡ ||_| d¡ |  ˆ dg¡ dS )zÒ
        If UseForeignDTD is passed True and a document without an external
        entity reference is parsed, ExternalEntityRefHandler is first called
        with None for the public and system ids.
        c                    s   ˆ   ||f¡ dS rš   r‰   ©rN   rI   Z	system_idZ	public_id©Zhandler_call_argsr   r   Úresolve_entity´  s    z<ForeignDTDTests.test_use_foreign_dtd.<locals>.resolve_entityTs   <?xml version='1.0'?><element/>)NNN©r   r
   ZUseForeignDTDZSetParamEntityParsingZXML_PARAM_ENTITY_PARSING_ALWAYSrQ   rp   rm   ©r   r  r   r   r  r   Útest_use_foreign_dtd­  s    


z$ForeignDTDTests.test_use_foreign_dtdc                    sP   g ‰ ‡ fdd„}t  ¡ }| d¡ | t j¡ ||_| d¡ |  ˆ dg¡ dS )zÒ
        If UseForeignDTD is passed True and a document with an external
        entity reference is parsed, ExternalEntityRefHandler is called with
        the public and system ids from the document.
        c                    s   ˆ   ||f¡ dS rš   r‰   r  r  r   r   r  Ð  s    zCForeignDTDTests.test_ignore_use_foreign_dtd.<locals>.resolve_entityTs@   <?xml version='1.0'?><!DOCTYPE foo PUBLIC 'bar' 'baz'><element/>)ZbarZbazNr  r  r   r  r   Útest_ignore_use_foreign_dtdÉ  s    
ÿz+ForeignDTDTests.test_ignore_use_foreign_dtdN)r&   r'   r(   r  r  r  r   r   r   r   r  ©  s   r  Ú__main__)Úior   rÁ   rÐ   rÏ   rÎ   ZunittestrË   Zxml.parsersr   Zxml.parsers.expatr   Ztest.supportr   ZTestCaser   r9   r)   r}   rˆ   r™   r¿   rÓ   rá   rè   r  r  r  r&   Úmainr   r   r   r   Ú<module>   s2   ( ?#$` z4
