B
    u9aj  ã               @   sJ  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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rFe ¡  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ú!)Únamespace_separator)r   ÚParserCreateÚparser)Úself© r   ú"/usr/lib/python3.7/test_pyexpat.pyÚsetUp   s    zSetAttributeTest.setUpc             C   s>   |   | jjd¡ x(dD ] }|| j_|   | jjt|ƒ¡ qW 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¡ x(dD ] }|| j_|   | jjt|ƒ¡ qW d S )NF)r   r   r   r   )r   r
   Znamespace_prefixesr   )r   r   r   r   r   Útest_namespace_prefixes   s    
z(SetAttributeTest.test_namespace_prefixesc             C   s>   |   | jjd¡ x(dD ] }|| j_|   | jjt|ƒ¡ qW d S )NF)r   r   r   r   )r   r
   Zordered_attributesr   )r   r   r   r   r   Útest_ordered_attributes!   s    
z(SetAttributeTest.test_ordered_attributesc             C   s>   |   | jjd¡ x(dD ] }|| j_|   | jjt|ƒ¡ qW d S )NF)r   r   r   r   )r   r
   Zspecified_attributesr   )r   r   r   r   r   Útest_specified_attributes'   s    
z*SetAttributeTest.test_specified_attributesc          	   C   s†   |   t¡ d| j_W d Q R X |   t¡ | jj W d Q R X |   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__Úgetattr)r   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               @   sz   e Zd ZG dd„ dƒZddddddd	d
ddddddddddddddg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)Úout)r   r   r   r   Ú__init__V   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   ÚStartElementHandlerY   s    z'ParseTest.Outputter.StartElementHandlerc             C   s   | j  dt|ƒ ¡ d S )NzEnd element: )r&   r)   r*   )r   r+   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   ÚCharacterDataHandler`   s    z(ParseTest.Outputter.CharacterDataHandlerc             C   s$   | j  dt|ƒ d t|ƒ ¡ d S )NzPI: r(   )r&   r)   r*   )r   Útargetr0   r   r   r   ÚProcessingInstructionHandlere   s    z0ParseTest.Outputter.ProcessingInstructionHandlerc             C   s$   | j  dt|ƒ d t|ƒ ¡ d S )Nz	NS decl: r(   )r&   r)   r*   )r   ÚprefixZurir   r   r   ÚStartNamespaceDeclHandlerh   s    z-ParseTest.Outputter.StartNamespaceDeclHandlerc             C   s   | j  dt|ƒ ¡ d S )NzEnd of NS decl: )r&   r)   r*   )r   r4   r   r   r   ÚEndNamespaceDeclHandlerk   s    z+ParseTest.Outputter.EndNamespaceDeclHandlerc             C   s   | j  d¡ d S )NzStart of CDATA section)r&   r)   )r   r   r   r   ÚStartCdataSectionHandlern   s    z,ParseTest.Outputter.StartCdataSectionHandlerc             C   s   | j  d¡ d S )NzEnd of CDATA section)r&   r)   )r   r   r   r   ÚEndCdataSectionHandlerq   s    z*ParseTest.Outputter.EndCdataSectionHandlerc             C   s   | j  dt|ƒ ¡ d S )Nz	Comment: )r&   r)   r*   )r   Útextr   r   r   ÚCommentHandlert   s    z"ParseTest.Outputter.CommentHandlerc             G   s"   |\}}}}| j  d|f ¡ d S )NzNotation declared: %s)r&   r)   )r   Úargsr+   ÚbaseZsysidZpubidr   r   r   ÚNotationDeclHandlerw   s    z'ParseTest.Outputter.NotationDeclHandlerc             G   s$   |\}}}}}| j  d|f ¡ d S )NzUnparsed entity decl: %s)r&   r)   )r   r;   Z
entityNamer<   ZsystemIdZpublicIdZnotationNamer   r   r   ÚUnparsedEntityDeclHandler{   s    z-ParseTest.Outputter.UnparsedEntityDeclHandlerc             C   s   | j  d¡ dS )NzNot standaloner   )r&   r)   )r   r   r   r   ÚNotStandaloneHandler   s    z(ParseTest.Outputter.NotStandaloneHandlerc             G   s*   |\}}}}| j  d|dd … f ¡ dS )NzExternal entity ref: %sr   )r&   r)   )r   r;   Úcontextr<   ÚsysIdÚpubIdr   r   r   ÚExternalEntityRefHandlerƒ   s    z,ParseTest.Outputter.ExternalEntityRefHandlerc             G   s   | j  d|f¡ dS )NzStart doctyper   )r&   r)   )r   r;   r   r   r   ÚStartDoctypeDeclHandlerˆ   s    z+ParseTest.Outputter.StartDoctypeDeclHandlerc             C   s   | j  d¡ dS )NzEnd doctyper   )r&   r)   )r   r   r   r   ÚEndDoctypeDeclHandlerŒ   s    z)ParseTest.Outputter.EndDoctypeDeclHandlerc             G   s   | j  d|f¡ dS )NzEntity declarationr   )r&   r)   )r   r;   r   r   r   ÚEntityDeclHandler   s    z%ParseTest.Outputter.EntityDeclHandlerc             G   s   | j  d|f¡ dS )NzXML declarationr   )r&   r)   )r   r;   r   r   r   ÚXmlDeclHandler”   s    z"ParseTest.Outputter.XmlDeclHandlerc             G   s   | j  d|f¡ dS )NzElement declarationr   )r&   r)   )r   r;   r   r   r   ÚElementDeclHandler˜   s    z&ParseTest.Outputter.ElementDeclHandlerc             G   s   | j  d|f¡ dS )NzAttribute list declarationr   )r&   r)   )r   r;   r   r   r   ÚAttlistDeclHandlerœ   s    z&ParseTest.Outputter.AttlistDeclHandlerc             G   s   | j  d|f¡ dS )NzSkipped entityr   )r&   r)   )r   r;   r   r   r   ÚSkippedEntityHandler    s    z(ParseTest.Outputter.SkippedEntityHandlerc             C   s   d S )Nr   )r   ÚuserDatar   r   r   ÚDefaultHandler¤   s    z"ParseTest.Outputter.DefaultHandlerc             C   s   d S )Nr   )r   rK   r   r   r   ÚDefaultHandlerExpand§   s    z(ParseTest.Outputter.DefaultHandlerExpandN)r"   r#   r$   r'   r-   r.   r1   r3   r5   r6   r7   r8   r:   r=   r>   r?   rC   rD   rE   rF   rG   rH   rI   rJ   rL   rM   r   r   r   r   Ú	OutputterU   s.   rN   r-   r.   r1   r3   r>   r=   r5   r6   r:   r7   r8   rL   rM   r?   rC   rD   rE   rF   rG   rH   rI   rJ   c             C   s&   x | j D ]}t||t||ƒƒ qW 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
   Úhandlerr+   r   r   r   Ú_hookup_callbacks¶   s    zParseTest._hookup_callbacksc             C   sf   ddddddddd	d
dddddddddddddddddddg}x"t ||ƒD ]\}}|  ||¡ qJW d S )N)zXML declaration)z1.0z
iso-8859-1r   z,PI: 'xml-stylesheet' 'href="stylesheet.css"'zComment: ' comment data 'zNot standalone)zStart doctype)Z
quotationszquotations.dtdNr   )zElement declaration)Úroot)r   r   Nr   )zAttribute list declaration)rR   Zattr1ÚCDATANr   )zAttribute list declaration)rR   Zattr2rS   Nr   z<Notation declared: ('notation', None, 'notation.jpeg', None))zEntity declaration)Zacircr   õ   Ã¢NNNN)zEntity declaration)Zexternal_entityr   NNzentity.fileNNzPUnparsed entity decl: ('unparsed_entity', None, 'entity.file', None, 'notation')zEnd doctypeu?   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' {}zStart of CDATA sectionz+Character data: 'contents of CDATA section'zEnd of CDATA sectionzEnd element: 'sub2'z0External entity ref: (None, 'entity.file', None))zSkipped entity)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   r   u   í €)rN   r   r	   rQ   ÚParser0   r&   rX   r   r   r    )r   r&   r
   rW   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   z
iso-8859-1r   )	rN   r   r	   rQ   rY   r0   Údecoder&   rX   )r   r&   r
   rW   r   r   r   Útest_parse_strð   s    zParseTest.test_parse_strc             C   sF   |   ¡ }tjdd}|  ||¡ ttƒ}| |¡ |j}|  |¡ d S )Nr   )r   )	rN   r   r	   rQ   r   r0   Ú	ParseFiler&   rX   )r   r&   r
   ÚfilerW   r   r   r   Útest_parse_fileú   s    
zParseTest.test_parse_filec          	   C   sZ   t  ¡ }ttƒ}| |¡ |  t j¡}| |¡ W d Q R X |  t  |j	j
¡t jj¡ d S )N)r   r	   r   r0   r]   r   ÚerrorrV   ZErrorStringZ	exceptionÚcoder   ZXML_ERROR_FINISHED)r   r
   r^   Úcmr   r   r   Útest_parse_again  s    
zParseTest.test_parse_againN)r"   r#   r$   rN   rO   rQ   rX   rZ   r\   r_   rc   r   r   r   r   r%   T   s    V
&
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 )N)r   r(   )r   r	   )r   r   r   r   Ú
test_legal  s    z!NamespaceSeparatorTest.test_legalc          
   C   sœ   yt jdd |  ¡  W n2 tk
rJ } z|  t|ƒd¡ W d d }~X Y nX yt jdd |  ¡  W n2 tk
r– } z|  t|ƒd¡ W d d }~X Y nX d S )Né*   )r   z6ParserCreate() argument 2 must be str or None, not intztoo longzCnamespace_separator must be at most one character, omitted, or None)r   r	   Úfailr   rV   Ú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   r   Útest_zero_length)  s    	z'NamespaceSeparatorTest.test_zero_lengthN)r"   r#   r$   re   rk   rm   r   r   r   r   rd     s   rd   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚInterningTestc                sh   t  ¡ }g ‰ ‡ fdd„}||_||_| dd¡ ˆ d }|  tˆ ƒd¡ xˆ D ]}|  ||k¡ qNW d S )Nc                s   ˆ   | ¡ d S )N)r)   )r+   r;   )ÚLr   r   Ú	collector:  s    z%InterningTest.test.<locals>.collectors   <e> <e/> <e></e> </e>r   r   é   )r   r	   r-   r.   rY   rV   ÚlenÚ
assertTrue)r   Úprp   ÚtagÚentryr   )ro   r   Útest6  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 )N)r
   Úparser_result)r   r
   r   r   r   r'   H  s    z@InterningTest.test_issue9402.<locals>.ExternalOutputter.__init__c             S   s   | j  d¡}| dd¡| _dS )Nrl   ó    r   )r
   ZExternalEntityParserCreaterY   rx   )r   r@   r<   rA   rB   Zexternal_parserr   r   r   rC   L  s    zPInterningTest.test_issue9402.<locals>.ExternalOutputter.ExternalEntityRefHandlerN)r"   r#   r$   r'   rC   r   r   r   r   ÚExternalOutputterG  s   rz   r   )r   r   )r   r	   r   rC   rY   r0   rV   rx   )r   rz   r
   r&   r   r   r   Útest_issue9402E  s    
zInterningTest.test_issue9402N)r"   r#   r$   rw   r{   r   r   r   r   rn   5  s   rn   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   r1   )r   r   r   r   r   Z  s    
zBufferTextTest.setUpc          
   C   s&   |   | j|d|| jtt|ƒf ¡ d S )Nz%s
stuff    = %r
expected = %r)rV   r}   Úmaprh   )r   ÚexpectedZlabelr   r   r   Úcheck`  s    
zBufferTextTest.checkc             C   s   | j  |¡ d S )N)r}   r)   )r   r9   r   r   r   r1   e  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   r+   r,   Zbtr   r   r   r-   h  s    

z"BufferTextTest.StartElementHandlerc             C   s   | j  d| ¡ d S )Nz</%s>)r}   r)   )r   r+   r   r   r   r.   p  s    z BufferTextTest.EndElementHandlerc             C   s   | j  d| ¡ d S )Nz	<!--%s-->)r}   r)   )r   r0   r   r   r   r:   s  s    zBufferTextTest.CommentHandlerc             C   s&   x |D ]}t | j|t| |ƒƒ qW d S )N)r   r
   r    )r   Zhandlersr+   r   r   r   ÚsetHandlersv  s    
zBufferTextTest.setHandlersc             C   s   t  ¡ }|  |j¡ d S )N)r   r	   ÚassertFalser   )r   r
   r   r   r   Útest_default_to_disabledz  s    z'BufferTextTest.test_default_to_disabledc             C   s2   |   | jj¡ | j dd¡ |  | jdgd¡ d S )Ns   <a>1<b/>2<c/>3</a>r   Z123z$buffered text not properly collapsed)rs   r
   r   rY   rV   r}   )r   r   r   r   Útest_buffering_enabled~  s    z%BufferTextTest.test_buffering_enabledc             C   s>   |   dg¡ | j dd¡ |  | jdddddd	d
dgd¡ d S )Nr-   s9   <a>1<b buffer-text='no'/>2
3<c buffer-text='yes'/>4
5</a>r   z<a>Ú1z<b>Ú2Ú
Ú3z<c>z4
5z*buffering control not reacting as expected)rƒ   r
   rY   rV   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>r   z1<2> 
 3z$buffered text not properly collapsed)r
   rY   rV   r}   )r   r   r   r   Útest2Ž  s    zBufferTextTest.test2c          	   C   s:   |   dg¡ | j dd¡ |  | jdddddd	gd
¡ d S )Nr-   s   <a>1<b/>2<c/>3</a>r   z<a>r‡   z<b>rˆ   z<c>rŠ   z buffered text not properly split)rƒ   r
   rY   rV   r}   )r   r   r   r   Útest3“  s    zBufferTextTest.test3c          	   C   sB   |   ddg¡ d | j_| j dd¡ |  | jddddd	d
g¡ d S )Nr-   r.   s   <a>1<b/>2<c/>3</a>r   z<a>z<b>z</b>z<c>z</c>z</a>)rƒ   r
   r1   rY   rV   r}   )r   r   r   r   Útest4™  s
    zBufferTextTest.test4c             C   s@   |   ddg¡ | j dd¡ |  | jddddd	d
dddg	¡ d S )Nr-   r.   s   <a>1<b></b>2<c/>3</a>r   z<a>r‡   z<b>z</b>rˆ   z<c>z</c>rŠ   z</a>)rƒ   r
   rY   rV   r}   )r   r   r   r   Útest5   s    zBufferTextTest.test5c             C   sD   |   dddg¡ | j dd¡ |  | jdddd	d
ddddg	d¡ d S )Nr:   r.   r-   s   <a>1<b/>2<c></c>345</a> r   z<a>r‡   z<b>z</b>rˆ   z<c>z</c>Z345z</a>z buffered text not properly split)rƒ   r
   rY   rV   r}   )r   r   r   r   Útest6¦  s    zBufferTextTest.test6c             C   sL   |   dddg¡ | j dd¡ |  | jdddd	d
ddddddddgd¡ d S )Nr:   r.   r-   s,   <a>1<b/>2<c></c>3<!--abc-->4<!--def-->5</a> r   z<a>r‡   z<b>z</b>rˆ   z<c>z</c>rŠ   z
<!--abc-->Ú4z
<!--def-->Ú5z</a>z buffered text not properly split)rƒ   r
   rY   rV   r}   )r   r   r   r   Útest7®  s    zBufferTextTest.test7N)r"   r#   r$   r   r€   r1   r-   r.   r:   rƒ   r…   r†   r‹   rŒ   r   rŽ   r   r   r“   r   r   r   r   r|   Y  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 )N)ÚRuntimeError)r   r+   r,   r   r   r   r-   º  s    z(HandlerExceptionTest.StartElementHandlerc             C   s,   |   tj |d ¡|¡ |   |d |¡ d S )Nr   r   )rV   ÚosÚpathÚbasename)r   rv   ÚfilenameÚfuncnamer   r   r   Úcheck_traceback_entry½  s    z*HandlerExceptionTest.check_traceback_entryc             C   sà   t  ¡ }| j|_y| dd¡ |  ¡  W n² tk
rÚ } z”|  |jd ddd|jd   ¡ t 	|j
¡}|  t|ƒd¡ |  |d dd	¡ |  |d d
d¡ |  |d dd¡ t ¡ rÊ|  d|d d ¡ W d d }~X Y nX d S )Ns   <a><b><c/></b></a>r   r   Úaz*Expected RuntimeError for element 'a', butz	 found %ré   ztest_pyexpat.pyÚtest_exceptionz	pyexpat.cZStartElementr   r-   zcall_with_frame("StartElement")r   r	   r-   rY   rg   r•   rV   r;   Ú	tracebackÚ
extract_tbÚ__traceback__rr   r›   Ú	sysconfigZis_python_buildZassertIn)r   r
   rj   Úentriesr   r   r   rž   Á  s&    


z#HandlerExceptionTest.test_exceptionN)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d„ Zdd„ Zd	S )
ÚPositionTestc             C   s   |   d¡ d S )NÚs)Ú	check_pos)r   r+   r,   r   r   r   r-   Ú  s    z PositionTest.StartElementHandlerc             C   s   |   d¡ d S )Nrj   )r¦   )r   r+   r   r   r   r.   Ý  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CurrentColumnNumberrs   Úuptorr   Úexpected_listrV   )r   ZeventÚposr   r   r   r   r¦   à  s    
zPositionTest.check_posc             C   sL   t  ¡ | _| j| j_| j| j_d| _ddddddg| _d}| j |d	¡ d S )
Nr   )r¥   r   r   r   )r¥   é   r   r   )r¥   é   r   r   )rj   r   r   rq   )rj   é   é   r   )rj   é   rª   r   s   <a>
 <b>
  <c/>
 </b>
</a>r   )r   r	   r
   r-   r.   r§   r¨   rY   )r   Úxmlr   r   r   rw   ì  s    


zPositionTest.testN)r"   r#   r$   r-   r.   r¦   rw   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 )Nr   )r9   )r±   r   r   rP     s    z7sf1296433Test.test_parse_only_xml_data.<locals>.handlerÚiso8859)Ú	Exceptionr   r	   r1   r   rY   Úencode)r   r¯   rP   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   )rV   Úsmall_buffer_test)r   r   r   r   Útest_1025_bytes  s    z"ChardataBufferTest.test_1025_bytesc             C   s   |   |  d¡d¡ d S )Niè  r   )rV   r·   )r   r   r   r   Útest_1000_bytes  s    z"ChardataBufferTest.test_1000_bytesc          	   C   sŒ   t  ¡ }d|_|  t¡ d|_W d Q R X |  t¡ d|_W d Q R X |  ttf¡ tjd |_W d Q R X |  t	¡ d|_W d Q R X d S )Nr   éÿÿÿÿr   g      €@)
r   r	   r   r   ri   Úbuffer_sizeÚOverflowErrorÚsysÚmaxsizer   )r   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_handlerr1   r»   r   ÚnrY   rV   )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¡ xt
dƒD ]}| |d¡ qŽW |  | jd¡ d|_|  |j¡ |  |jd¡ | |d¡ |  | jd	¡ d S )
Ns+  <?xml version='1.0' encoding='iso8859'?><a>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas   bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbs  cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc</a>r   i   r   é
   r«   é   )r   r	   rÀ   r1   r   r»   rV   rÁ   rY   r„   r   rs   )r   rÂ   rÃ   Zxml3r
   Úir   r   r   Útest_disabling_buffer9  s.    z(ChardataBufferTest.test_disabling_bufferc             C   s   |  j d7  _ d S )Nr   )rÁ   )r   r9   r   r   r   rÀ   W  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>i   r   r   )r   r	   rÀ   r1   r»   r   rÁ   rY   )r   Z
buffer_lenr¯   r
   r   r   r   r·   Z  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>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas  aaa</s><s>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</s></a>r   i   r   r   i   )	r   r	   rÀ   r1   r   r»   rV   rÁ   rY   )r   rÂ   rÃ   r
   r   r   r   Útest_change_size_1e  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>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas  aaa</s><s>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</s></a>r   i   r   r   i   r­   )	r   r	   rÀ   r1   r   r»   rV   rÁ   rY   )r   rÂ   rÃ   r
   r   r   r   Útest_change_size_2u  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  ¡ }y| |d¡ |  ¡  W n4 t jk
rX } z|  t|ƒd¡ W d d }~X Y nX d S )Ns    
Tz unclosed token: line 2, column 0)r   r	   rY   rg   Ú
ExpatErrorrV   rh   )r   r¯   r
   rj   r   r   r   r‹   †  s    zMalformedInputTest.test1c          	   C   s:   d}t  ¡ }d}|  t j|¡ | |d¡ W d Q R X d S )Ns   <?xml versionÂ…='1.0'?>
z3XML declaration not well-formed: line 1, column \d+T)r   r	   ZassertRaisesRegexrÎ   rY   )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 )N)rV   r   ZXML_ERROR_SYNTAXÚmessagesÚcodes)r   r   r   r   Ú
test_codes˜  s    zErrorMessageTest.test_codesc          
   C   sd   d}t  ¡ }y| |d¡ |  ¡  W n: t jk
r^ } z|  |jtjtj	 ¡ W d d }~X Y nX d S )Nó   <T)
r   r	   rY   rg   rÎ   rV   ra   r   rÑ   ZXML_ERROR_UNCLOSED_TOKEN)r   r¯   r
   rj   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 )Nr   )r)   )r@   r<   Ú	system_idÚ	public_id)Úhandler_call_argsr   r   Úresolve_entity³  s    z<ForeignDTDTests.test_use_foreign_dtd.<locals>.resolve_entityTs   <?xml version='1.0'?><element/>)NNN)r   r	   ÚUseForeignDTDÚSetParamEntityParsingÚXML_PARAM_ENTITY_PARSING_ALWAYSrC   rY   rV   )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 )Nr   )r)   )r@   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bazN)r   r	   rÚ   rÛ   rÜ   rC   rY   rV   )r   rÙ   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¢   ZunittestrŸ   Zxml.parsersr   Zxml.parsers.expatr   Ztest.supportr   ZTestCaser   r0   r%   rd   rn   r|   r”   r¤   r°   r¶   rÍ   rÏ   rÕ   r"   Úmainr   r   r   r   Ú<module>   s0   ? ?#$` z4
