
    dafiu                        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 d dlmZ d dlmZ d dl
mZmZmZ  G d d	ej&                        Zd
Z G d dej&                        Z G d dej&                        Z G d dej&                        Z G d dej&                        Z G d dej&                        Z G d dej&                        Z G d dej&                        Z G d dej&                        Z G d dej&                        Z G d dej&                        Z G d d ej&                        Z  G d! d"ej&                        Z!e"d#k(  r ejF                          yy)$    N)BytesIO)support)	os_helper)expat)errors)sortdictis_emscriptenis_wasic                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)SetAttributeTestc                 :    t        j                  d      | _        y N!namespace_separator)r   ParserCreateparserselfs    ,/root/Python-3.12.4/Lib/test/test_pyexpat.pysetUpzSetAttributeTest.setUp   s    ((SA    c                     | j                  | j                  j                  d       dD ]B  }|| j                  _        | j                  | j                  j                  t        |             D y NF)r         r   )assertIsr   buffer_textboolr   xs     r   test_buffer_textz!SetAttributeTest.test_buffer_text   sQ    dkk--u5 	<A&'DKK#MM$++1147;	<r   c                     | j                  | j                  j                  d       dD ]B  }|| j                  _        | j                  | j                  j                  t        |             D y r   )r   r   namespace_prefixesr   r    s     r   test_namespace_prefixesz(SetAttributeTest.test_namespace_prefixes   S    dkk44e< 	CA-.DKK*MM$++88$q'B	Cr   c                     | j                  | j                  j                  d       dD ]B  }|| j                  _        | j                  | j                  j                  t        |             D y r   )r   r   ordered_attributesr   r    s     r   test_ordered_attributesz(SetAttributeTest.test_ordered_attributes$   r&   r   c                     | j                  | j                  j                  d       dD ]B  }|| j                  _        | j                  | j                  j                  t        |             D y r   )r   r   specified_attributesr   r    s     r   test_specified_attributesz*SetAttributeTest.test_specified_attributes*   sS    dkk66> 	EA/0DKK,MM$++::DGD	Er   c                 "   | j                  t              5  d| j                  _        d d d        | j                  t              5  | j                  j                   d d d        | j                  t        t
        | j                  t        d      d       | j                  t        | j                  j                  t        d      d       | j                  t        t        | j                  t        d             y # 1 sw Y   xY w# 1 sw Y   xY w)Nr      r   )	assertRaisesAttributeErrorr   returns_unicode	TypeErrorsetattrrange__setattr__getattrr   s    r   test_invalid_attributesz(SetAttributeTest.test_invalid_attributes0   s    ~. 	,*+DKK'	,~. 	(KK''	( 	)Wdkk5:qI)T[[%<%<eCj!L)Wdkk5:F	, 	,	( 	(s   C9D9DDN)	__name__
__module____qualname__r   r"   r%   r)   r,   r7    r   r   r   r      s%    B<CCE	Gr   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                   L    e Zd Z G d d      Zg dZd Zd Zd Zd Zd Z	d	 Z
y
)	ParseTestc                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)ParseTest.Outputterc                     g | _         y N)outr   s    r   __init__zParseTest.Outputter.__init__Y   s	    DHr   c                 p    | j                   j                  dt        |      z   dz   t        |      z          y )NzStart element:  )rB   appendreprr   r   nameattrss      r   StartElementHandlerz'ParseTest.Outputter.StartElementHandler\   s/    HHOO-T
:S@$UO, -r   c                 R    | j                   j                  dt        |      z          y )NzEnd element: rB   rF   rG   r   rI   s     r   EndElementHandlerz%ParseTest.Outputter.EndElementHandler`   s    HHOOOd4j89r   c                 x    |j                         }|r(| j                  j                  dt        |      z          y y )NzCharacter data: )striprB   rF   rG   r   datas     r   CharacterDataHandlerz(ParseTest.Outputter.CharacterDataHandlerc   s/    ::<D 2T$Z ?@ r   c                 p    | j                   j                  dt        |      z   dz   t        |      z          y )NzPI: rE   rM   )r   targetrS   s      r   ProcessingInstructionHandlerz0ParseTest.Outputter.ProcessingInstructionHandlerh   s)    HHOOFT&\1C7$t*DEr   c                 p    | j                   j                  dt        |      z   dz   t        |      z          y )Nz	NS decl: rE   rM   )r   prefixuris      r   StartNamespaceDeclHandlerz-ParseTest.Outputter.StartNamespaceDeclHandlerk   s)    HHOOK$v,6<tCyHIr   c                 R    | j                   j                  dt        |      z          y )NzEnd of NS decl: rM   )r   rY   s     r   EndNamespaceDeclHandlerz+ParseTest.Outputter.EndNamespaceDeclHandlern   s    HHOO.f=>r   c                 :    | j                   j                  d       y )NStart of CDATA sectionrB   rF   r   s    r   StartCdataSectionHandlerz,ParseTest.Outputter.StartCdataSectionHandlerq   s    HHOO45r   c                 :    | j                   j                  d       y )NEnd of CDATA sectionr`   r   s    r   EndCdataSectionHandlerz*ParseTest.Outputter.EndCdataSectionHandlert   s    HHOO23r   c                 R    | j                   j                  dt        |      z          y )Nz	Comment: rM   r   texts     r   CommentHandlerz"ParseTest.Outputter.CommentHandlerw   s    HHOOK$t*45r   c                 N    |\  }}}}| j                   j                  d|       y )NzNotation declared: r`   )r   argsrI   basesysidpubids         r   NotationDeclHandlerz'ParseTest.Outputter.NotationDeclHandlerz   s#    '+$D$uHHOOd<=r   c                 P    |\  }}}}}| j                   j                  d|       y )NzUnparsed entity decl: r`   )r   rj   
entityNamerk   systemIdpublicIdnotationNames          r   UnparsedEntityDeclHandlerz-ParseTest.Outputter.UnparsedEntityDeclHandler~   s%    AE>Jh,HHOO?@r   c                 :    | j                   j                  d       y)NNot standaloner   r`   r   s    r   NotStandaloneHandlerz(ParseTest.Outputter.NotStandaloneHandler   s    HHOO,-r   c                 T    |\  }}}}| j                   j                  d|dd         y)NzExternal entity ref: r   r`   )r   rj   contextrk   sysIdpubIds         r   ExternalEntityRefHandlerz,ParseTest.Outputter.ExternalEntityRefHandler   s,    *.'GT5%HHOOQRBCr   c                 >    | j                   j                  d|f       y)NStart doctyper   r`   r   rj   s     r   StartDoctypeDeclHandlerz+ParseTest.Outputter.StartDoctypeDeclHandler   s    HHOO_d34r   c                 :    | j                   j                  d       y)NEnd doctyper   r`   r   s    r   EndDoctypeDeclHandlerz)ParseTest.Outputter.EndDoctypeDeclHandler   s    HHOOM*r   c                 >    | j                   j                  d|f       y)NEntity declarationr   r`   r   s     r   EntityDeclHandlerz%ParseTest.Outputter.EntityDeclHandler   s    HHOO1489r   c                 >    | j                   j                  d|f       y)NXML declarationr   r`   r   s     r   XmlDeclHandlerz"ParseTest.Outputter.XmlDeclHandler   s    HHOO.56r   c                 >    | j                   j                  d|f       y)NElement declarationr   r`   r   s     r   ElementDeclHandlerz&ParseTest.Outputter.ElementDeclHandler   s    HHOO2D9:r   c                 >    | j                   j                  d|f       y)NAttribute list declarationr   r`   r   s     r   AttlistDeclHandlerz&ParseTest.Outputter.AttlistDeclHandler   s    HHOO94@Ar   c                 >    | j                   j                  d|f       y)NSkipped entityr   r`   r   s     r   SkippedEntityHandlerz(ParseTest.Outputter.SkippedEntityHandler   s    HHOO-t45r   c                      y rA   r;   r   userDatas     r   DefaultHandlerz"ParseTest.Outputter.DefaultHandler       r   c                      y rA   r;   r   s     r   DefaultHandlerExpandz(ParseTest.Outputter.DefaultHandlerExpand   r   r   N)r8   r9   r:   rC   rK   rO   rT   rW   r[   r]   ra   rd   rh   rn   rt   rw   r|   r   r   r   r   r   r   r   r   r   r;   r   r   	Outputterr?   X   sy    		-	:	A
	F	J	?	6	4	6	>	A		
									r   r   )rK   rO   rT   rW   rt   rn   r[   r]   rh   ra   rd   r   r   rw   r|   r   r   r   r   r   r   r   c           	      T    | j                   D ]  }t        ||t        ||              y)z{
        Set each of the callbacks defined on handler and named in
        self.handler_names on the given parser.
        N)handler_namesr3   r6   )r   r   handlerrI   s       r   _hookup_callbackszParseTest._hookup_callbacks   s,    
 && 	:DFD''4"89	:r   c                 X    g d}t        ||      D ]  \  }}| j                  ||        y )N))r   )z1.0
iso-8859-1r   z,PI: 'xml-stylesheet' 'href="stylesheet.css"'zComment: ' comment data 'rv   )r~   )
quotationszquotations.dtdNr   )r   )root)r   r   Nr;   )r   )r   attr1CDATANr   )r   )r   attr2r   Nr   z<Notation declared: ('notation', None, 'notation.jpeg', None))r   )acircr      âNNNN)r   )external_entityr   NNzentity.fileNNzPUnparsed entity decl: ('unparsed_entity', None, 'entity.file', None, 'notation')rv   r   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   )skipped_entityr   u   Character data: 'µ'zEnd element: 'root')zipassertEqual)r   
operationsexpected_operations	operationexpected_operations        r   _verify_parse_outputzParseTest._verify_parse_output   s;    !
D .1=P-Q 	<)I)Y(:;	<r   c                    | j                         }t        j                  d      }| j                  ||       |j	                  t
        d       |j                  }| j                  |       | j                  t        t        |d       y )Nr   r   Tu   )r   r   r   r   ParserS   rB   r   r/   r0   r6   r   rB   r   r   s       r   test_parse_byteszParseTest.test_parse_bytes   sg    nn##<vs+T4 WW
!!*-.'68Dr   c                     | j                         }t        j                  d      }| j                  ||       |j	                  t
        j                  d      d       |j                  }| j                  |       y )Nr   r   r   T)	r   r   r   r   r   rS   decoderB   r   r   s       r   test_parse_strzParseTest.test_parse_str   s\    nn##<vs+T[[.5WW
!!*-r   c                     | j                         }t        j                  d      }| j                  ||       t	        t
              }|j                  |       |j                  }| j                  |       y r   )	r   r   r   r   r   rS   	ParseFilerB   r   )r   rB   r   filer   s        r   test_parse_filezParseTest.test_parse_file   s\    nn##<vs+t}WW
!!*-r   c                    t        j                         }t        t              }|j	                  |       | j                  t         j                        5 }|j	                  |       d d d        | j                  t        j                  j                  j                        t         j                  j                         y # 1 sw Y   [xY wrA   )r   r   r   rS   r   r/   errorr   ErrorString	exceptioncoder   XML_ERROR_FINISHED)r   r   r   cms       r   test_parse_againzParseTest.test_parse_again	  s    ##%t} u{{+ 	#rT"	#**2<<+<+<=,,99	;	# 	#s   C  C	N)r8   r9   r:   r   r   r   r   r   r   r   r   r;   r   r   r=   r=   W   s6    S Sj

M:$<L
E.
.
;r   r=   c                       e Zd Zd Zd Zd Zy)NamespaceSeparatorTestc                     t        j                          t        j                  d        t        j                  d       y )Nr   rE   r   r   r   s    r   
test_legalz!NamespaceSeparatorTest.test_legal  s,     	t4s3r   c                 d   	 t        j                  d       | j                          	 t        j                  d       | j                          y # t        $ r%}| j	                  t        |      d       Y d }~Qd }~ww xY w# t        $ r%}| j	                  t        |      d       Y d }~y d }~ww xY w)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   failr2   r   str
ValueError)r   es     r   test_illegalz#NamespaceSeparatorTest.test_illegal  s    	^26IIK
	W:>IIK  	^SV\^ ^	^  	WSVUW W	Ws.   &A &B 	A>A99A>	B/
B**B/c                 0    t        j                  d       y )N r   r   r   s    r   test_zero_lengthz'NamespaceSeparatorTest.test_zero_length,  s     	r2r   N)r8   r9   r:   r   r   r   r;   r   r   r   r     s    4W	3r   r   c                       e Zd Zd Zd Zy)InterningTestc                     t        j                         }g fd}||_        ||_        |j	                  dd       d   }| j                  t              d       D ]  }| j                  ||u         y )Nc                 (    j                  |        y rA   rF   )rI   rj   Ls     r   	collectorz%InterningTest.test.<locals>.collector=  s    HHTNr   s   <e> <e/> <e></e> </e>Tr      )r   r   rK   rO   r   r   len
assertTrue)r   pr   tagentryr   s        @r   testzInterningTest.test9  sv     	 )'	($/dQ# 	*EOOC5L)	*r   c                      G d d      }t        j                  d      }d|_         ||      }|j                  |_        |j	                  t
        d       | j                  |j                  d       y )Nc                       e Zd Zd Zd Zy)7InterningTest.test_issue9402.<locals>.ExternalOutputterc                      || _         d | _        y rA   )r   parser_resultr   r   s     r   rC   z@InterningTest.test_issue9402.<locals>.ExternalOutputter.__init__K  s    $%)"r   c                 h    | j                   j                  d      }|j                  dd      | _        y)Nr   r   Tr   )r   ExternalEntityParserCreater   r   )r   ry   rk   rz   r{   external_parsers         r   r|   zPInterningTest.test_issue9402.<locals>.ExternalOutputter.ExternalEntityRefHandlerO  s.    "&++"H"H"L%4%:%:3%E"r   N)r8   r9   r:   rC   r|   r;   r   r   ExternalOutputterr   J  s    *r   r   r   r   r   T)r   r   r   r|   r   rS   r   r   )r   r   r   rB   s       r   test_issue9402zInterningTest.test_issue9402H  sb    	 	 ##<'*-*F*F'T4 **A.r   N)r8   r9   r:   r   r   r;   r   r   r   r   8  s    */r   r   c                   p    e Zd Zd Zd Zd Zd Zd Zd Zg fdZ	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zy)BufferTextTestc                     g | _         t        j                         | _        d| j                  _        | j
                  | j                  _        y Nr   )stuffr   r   r   r   rT   r   s    r   r   zBufferTextTest.setUp]  s7    
((*"#+/+D+D(r   c                 ~    | j                  | j                  ||d| j                  dt        t        |             y )Nz
stuff    = z
expected = )r   r   mapr   )r   expectedlabels      r   checkzBufferTextTest.checkc  s/    X$**c#x&8:	;r   c                 :    | j                   j                  |       y rA   r   rF   rf   s     r   rT   z#BufferTextTest.CharacterDataHandlerh  s    

$r   c                     | j                   j                  d|z         |j                  d      }|dk(  rd| j                  _        y |dk(  rd| j                  _        y y )Nz<%s>zbuffer-textyesr   nor   )r   rF   getr   r   )r   rI   rJ   bts       r   rK   z"BufferTextTest.StartElementHandlerk  sQ    

&4-(YY}%;&'DKK#4Z&'DKK# r   c                 @    | j                   j                  d|z         y )Nz</%s>r   rN   s     r   rO   z BufferTextTest.EndElementHandlers  s    

'D.)r   c                 @    | j                   j                  d|z         y )Nz	<!--%s-->r   rR   s     r   rh   zBufferTextTest.CommentHandlerv  s    

+,-r   c           	      T    |D ]#  }t        | j                  |t        | |             % y rA   )r3   r   r6   )r   handlersrI   s      r   setHandlerszBufferTextTest.setHandlersy  s(     	<DDKKwtT':;	<r   c                 b    t        j                         }| j                  |j                         y rA   )r   r   assertFalser   r   s     r   test_default_to_disabledz'BufferTextTest.test_default_to_disabled}  s$    ##%++,r   c                     | j                  | j                  j                         | j                  j                  dd       | j	                  | j
                  dgd       y )N   <a>1<b/>2<c/>3</a>T123$buffered text not properly collapsed)r   r   r   r   r   r   r   s    r   test_buffering_enabledz%BufferTextTest.test_buffering_enabled  sI    //0/6eW?	Ar   c                     | j                  dg       | j                  j                  dd       | j                  | j                  g dd       y )NrK   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   r   r   r   r   s    r   test1zBufferTextTest.test1  sG     	/01XZ^_KE	Gr   c                 x    | j                   j                  dd       | j                  | j                  dgd       y )Ns&   <a>1<b/>&lt;2&gt;<c/>&#32;
&#x20;3</a>Tz1<2> 
 3r  )r   r   r   r   r   s    r   test2zBufferTextTest.test2  s3    DdKk]?	Ar   c                     | j                  dg       | j                  j                  dd       | j                  | j                  g dd       y )NrK   r  T)r  r  r  r  r  r   buffered text not properly splitr  r   s    r   test3zBufferTextTest.test3  sC    /01/6%I;	=r   c                     | j                  ddg       d | j                  _        | j                  j                  dd       | j	                  | j
                  g d       y )NrK   rO   r  T)r  r  </b>r  </c></a>)r  r   rT   r   r   r   r   s    r   test4zBufferTextTest.test4  sP    /1DEF+/(/6F	Hr   c                     | j                  ddg       | j                  j                  dd       | j                  | j                  g d       y )NrK   rO   s   <a>1<b></b>2<c/>3</a>T)	r  r  r  r  r  r  r  r  r  r  r   s    r   test5zBufferTextTest.test5  sD    /1DEF2D9H	Jr   c                     | j                  g d       | j                  j                  dd       | j                  | j                  g dd       y )Nrh   rO   rK   s   <a>1<b/>2<c></c>345</a> T)	r  r  r  r  r  r  r  345r  r  r  r   s    r   test6zBufferTextTest.test6  sD     + 	,5t<J.	0r   c                     | j                  g d       | j                  j                  dd       | j                  | j                  g dd       y )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   s    r   test7zBufferTextTest.test7  sG     + 	,I4PH;	=r   N)r8   r9   r:   r   r   rT   rK   rO   rh   r  r  r	  r  r  r  r  r  r#  r'  r;   r   r   r   r   \  s]    E;
 (*. $& <-AGA
=HJ0=r   r   c                   B    e Zd Zd Zd Zej                  d        Zd Zy)HandlerExceptionTestc                      t        d| d      )NzStartElementHandler: <>)RuntimeErrorrH   s      r   rK   z(HandlerExceptionTest.StartElementHandler  s    3D6;<<r   c                     | j                  t        j                  j                  |j                        |       | j                  |j
                  |       y rA   )r   ospathbasenamefilenamerI   )r   r   r1  funcnames       r   check_traceback_entryz*HandlerExceptionTest.check_traceback_entry  s9    ))%..98DX.r   c                    t        j                  d      }|r t        j                  j	                  |      }nd}|r0t        j                  |      5  | j                  |       d d d        y | j                  |       y # 1 sw Y   y xY w)Nabs_builddirF)	sysconfigget_config_varr.  r/  isdirr   
change_cwd_test_exception)r   src_dirhave_sources      r   test_exceptionz#HandlerExceptionTest.test_exception  sw     **>:''--0KK%%g. 2$$[12 2   -2 2s   A>>Bc                    t         j                  j                  dd      }t        j                         }| j
                  |_        	 |j                  dd       | j                  d       | j                  t              d|       | j                  |d   d	d
       | j                  |d   t         j                  j!                  |      d       | j                  |d   d	d       |r@t         j                  j#                  |      r | j%                  d|d   j&                         y y y # t        $ rJ}| j                  |j                  d   d|       t        j                  |j                        }Y d }~d }~ww xY w)NModulesz	pyexpat.cs   <a><b><c/></b></a>Tz%the parser did not raise RuntimeErrorr   zStartElementHandler: <a>   ztest_pyexpat.pyr:  r   StartElementr   rK   zcall_with_frame("StartElement")r.  r/  joinr   r   rK   r   r   r,  r   rj   	traceback
extract_tb__traceback__r   r3  r0  existsassertInline)r   r<  	PYEXPAT_Cr   excentriess         r   r:  z$HandlerExceptionTest._test_exception  sF    GGLLK8	##%%)%=%="	>LL.5II=>
 	Wq'2""71:#46G	I""71:#%77#3#3I#>#1	3 	""71:#46K	M 277>>)4MM:!!*//+ 5;!  	>SXXa[*DcJ**3+<+<=G	>s   #D( (	E;1?E66E;N)	r8   r9   r:   rK   r3  r   cpython_onlyr=  r:  r;   r   r   r)  r)    s+    =/ . . +r   r)  c                   $    e Zd Zd Zd Zd Zd Zy)PositionTestc                 &    | j                  d       y )Ns	check_posrH   s      r   rK   z PositionTest.StartElementHandler      sr   c                 &    | j                  d       y )Nr   rQ  rN   s     r   rO   zPositionTest.EndElementHandler  rS  r   c                 z   || j                   j                  | j                   j                  | j                   j                  f}| j	                  | j
                  t        | j                        k  d       | j                  | j
                     }| j                  ||d|d|       | xj
                  dz  c_        y )Nztoo many parser eventszExpected position z, got position r   )	r   CurrentByteIndexCurrentLineNumberCurrentColumnNumberr   uptor   expected_listr   )r   eventposr   s       r   rR  zPositionTest.check_pos  s    {{++{{,,{{..0 			C(:(:$;;0	2%%dii0h:=xH	J		Q	r   c                     t        j                         | _        | j                  | j                  _        | j                  | j                  _        d| _        g d| _        d}| j                  j                  |d       y )Nr   ))rP  r   r   r   )rP     r   r   )rP     r@  r   )r   r.   r@  r   )r         r   )r      r^  r   s   <a>
 <b>
  <c/>
 </b>
</a>T)r   r   r   rK   rO   rY  rZ  r   )r   xmls     r   r   zPositionTest.test	  sc    ((**.*B*B'(,(>(>%	Q 0#t$r   N)r8   r9   r:   rK   rO   rR  r   r;   r   r   rN  rN    s    
	%r   rN  c                       e Zd Zd Zy)sf1296433Testc                     ddz  } G d dt               fd}t        j                         }||_        | j	                  t         |j
                  |j                  d             y )Nz1<?xml version='1.0' encoding='iso8859'?><s>%s</s>  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac                       e Zd Zy)Asf1296433Test.test_parse_only_xml_data.<locals>.SpecificExceptionN)r8   r9   r:   r;   r   r   SpecificExceptionri    s    r   rj  c                     rA   r;   )rg   rj  s    r   r   z7sf1296433Test.test_parse_only_xml_data.<locals>.handler   s	    ##r   iso8859)	Exceptionr   r   rT   r/   r   encode)r   rc  r   r   rj  s       @r   test_parse_only_xml_dataz&sf1296433Test.test_parse_only_xml_data  sX     BZP		 		$ ##%&-#)V\\3::i3HIr   N)r8   r9   r:   ro  r;   r   r   re  re    s    Jr   re  c                   F    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)ChardataBufferTestz.
    test setting of chardata buffer size
    c                 F    | j                  | j                  d      d       y )Ni  r   r   small_buffer_testr   s    r   test_1025_bytesz"ChardataBufferTest.test_1025_bytes-      //5q9r   c                 F    | j                  | j                  d      d       y )Ni  r   rs  r   s    r   test_1000_bytesz"ChardataBufferTest.test_1000_bytes0  rv  r   c                    t        j                         }d|_        | j                  t              5  d|_        d d d        | j                  t              5  d|_        d d d        | j                  t        t        f      5  t        j                  dz   |_        d d d        | j                  t              5  d|_        d d d        y # 1 sw Y   xY w# 1 sw Y   wxY w# 1 sw Y   GxY w# 1 sw Y   y xY w)Nr   r   g      @)
r   r   r   r/   r   buffer_sizeOverflowErrorsysmaxsizer2   r   s     r   test_wrong_sizez"ChardataBufferTest.test_wrong_size3  s    ##%z* 	$!#F	$z* 	#!"F	#
M:; 	1!$qF	1y) 	'!&F	' 	'	$ 	$	# 	#	1 	1	' 	's/   CCC 7C,CC C),C5c                    d}d}t        j                         }| j                  |_        d|_        d|_        d| _        |j                  |       | j                  | j                  d       |j                  |_        | j                  | j                  d       |j                  |       | j                  | j                  d       y )Ns+  <?xml version='1.0' encoding='iso8859'?><s>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</s>i   r   r   r   )	r   r   counting_handlerrT   r{  r   nr   r   r   xml1xml2r   s       r   test_unchanged_sizez&ChardataBufferTest.test_unchanged_size?  s    J!##%&*&;&;#  T# $//# 	T#r   c                     d}d}d}t        j                         }| j                  |_        d|_        d|_        | j                  |j
                  d       d| _        |j                  |d       | j                  |j
                  d       | j                  | j                  d       d|_        | j                  |j                         | j                  |j
                  d       t        d      D ]  }|j                  |d        | j                  | j                  d	       d|_        | j                  |j                         | j                  |j
                  d       |j                  |d
       | j                  | j                  d       y )Ns+  <?xml version='1.0' encoding='iso8859'?><a>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas   bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbs  cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc</a>r      r   F
   r_  T   )r   r   r  rT   r   r{  r   r  r   r  r4   r   )r   r  r  xml3r   is         r   test_disabling_bufferz(ChardataBufferTest.test_disabling_bufferV  sO   J$##%&*&;&;#!++T2 T5!++T2# ++,++T2r 	&ALLu%	&$**+++T2T4 $r   c                 .    | xj                   dz  c_         y r   )r  rf   s     r   r  z#ChardataBufferTest.counting_handlert  s    !r   c                     dd|z  z   dz   }t        j                         }| j                  |_        d|_        d|_        d| _        |j                  |       | j                  S )Ns+   <?xml version='1.0' encoding='iso8859'?><s>   as   </s>r  r   r   )r   r   r  rT   r{  r   r  r   )r   
buffer_lenrc  r   s       r   rt  z$ChardataBufferTest.small_buffer_testw  s_    <tj?PPSZZ##%&*&;&;#!Svvr   c                    d}d}t        j                         }| j                  |_        d|_        d|_        | j                  |j
                  d       d| _        |j                  |d       |xj
                  dz  c_        | j                  |j
                  d       |j                  |d	       | j                  | j                  d       y )
Ns.  <?xml version='1.0' encoding='iso8859'?><a><s>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  aaa</s><s>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</s></a>r   r  r   Fr      T	r   r   r  rT   r   r{  r   r  r   r  s       r   test_change_size_1z%ChardataBufferTest.test_change_size_1  s    N8##%&*&;&;#!++T2T5!a++T2T4 #r   c                    d}d}t        j                         }| j                  |_        d|_        d|_        | j                  |j
                  d       d| _        |j                  |d       |j
                  dz  |_        | j                  |j
                  d       |j                  |d	       | j                  | j                  d
       y )Ns.  <?xml version='1.0' encoding='iso8859'?><a>a<s>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar  r   r  r   Fr   r  Tra  r  r  s       r   test_change_size_2z%ChardataBufferTest.test_change_size_2  s    O8##%&*&;&;#!++T2T5!#//14++T2T4 #r   N)r8   r9   r:   __doc__ru  rx  r  r  r  r  rt  r  r  r;   r   r   rq  rq  (  s4    ::
'$.%<	$ $r   rq  c                       e Zd Zd Zd Zy)MalformedInputTestc                     d}t        j                         }	 |j                  |d       | j                          y # t         j                  $ r%}| j                  t        |      d       Y d }~y d }~ww xY w)Ns    
Tz unclosed token: line 2, column 0)r   r   r   r   
ExpatErrorr   r   r   rc  r   r   s       r   r  zMalformedInputTest.test1  sb    ##%	ILLd#IIK 	ISV%GHH	Is   "; A3A..A3c                     d}t        j                         }d}| j                  t         j                  |      5  |j	                  |d       d d d        y # 1 sw Y   y xY w)Ns   <?xml version='1.0'?>
z3XML declaration not well-formed: line 1, column \d+T)r   r   assertRaisesRegexr  r   )r   rc  r   err_patterns       r   r  zMalformedInputTest.test2  sS    2##%L##E$4$4kB 	$LLd#	$ 	$ 	$s   AAN)r8   r9   r:   r  r  r;   r   r   r  r    s    I$r   r  c                       e Zd Zd Zd Zy)ErrorMessageTestc                     | j                  t        j                  t        j                  t        j                  t        j                               y rA   )r   r   XML_ERROR_SYNTAXmessagescodesr   s    r   
test_codeszErrorMessageTest.test_codes  s4    00f6M6M)NO	Qr   c                 ,   d}t        j                         }	 |j                  |d       | j                          y # t         j                  $ rE}| j                  |j                  t        j                  t        j                            Y d }~y d }~ww xY w)N   <T)
r   r   r   r   r  r   r   r   r  XML_ERROR_UNCLOSED_TOKENr  s       r   test_expaterrorz ErrorMessageTest.test_expaterror  sw    ##%	LLLd#IIK 	LQVV#\\&*I*IJL L	Ls   "; B;BBN)r8   r9   r:   r  r  r;   r   r   r  r    s    Q
Lr   r  c                       e Zd ZdZd Zd Zy)ForeignDTDTestszE
    Tests for the UseForeignDTD method of expat parser objects.
    c                    g fd}t        j                         }|j                  d       |j                  t         j                         ||_        |j                  d       | j                  dg       g dd t        j                         }|j                          |j                  t         j                         ||_        |j                  d       | j                  dg       y)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                 ,    j                  ||f       yr   r   ry   rk   	system_id	public_idhandler_call_argss       r   resolve_entityz<ForeignDTDTests.test_use_foreign_dtd.<locals>.resolve_entity      $$i%;<r   Ts   <?xml version='1.0'?><element/>)NNNr   r   UseForeignDTDSetParamEntityParsingXML_PARAM_ENTITY_PARSING_ALWAYSr|   r   r   r   r  r   r  s      @r   test_use_foreign_dtdz$ForeignDTDTests.test_use_foreign_dtd  s     	 ##%T"$$U%J%JK*8'78*\N;  "!##%$$U%J%JK*8'78*\N;r   c                     g fd}t        j                         }|j                  d       |j                  t         j                         ||_        |j                  d       | j                  dg       y)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                 ,    j                  ||f       yr   r   r  s       r   r  zCForeignDTDTests.test_ignore_use_foreign_dtd.<locals>.resolve_entity  r  r   Ts@   <?xml version='1.0'?><!DOCTYPE foo PUBLIC 'bar' 'baz'><element/>)barbazNr  r  s      @r   test_ignore_use_foreign_dtdz+ForeignDTDTests.test_ignore_use_foreign_dtd  sn     	 ##%T"$$U%J%JK*8'O	Q*^,<=r   N)r8   r9   r:   r  r  r  r;   r   r   r  r    s    <8>r   r  c                       e Zd Zd Zd Zd Zy)ReparseDeferralTestc                 V   t        j                         }t         j                  dk\  }| j                  |j	                         |       |j                  d       | j                  |j	                         d       |j                  d       | j                  |j	                         |       y )Nr   r   r   FT)r   r   version_infor   GetReparseDeferralEnabledSetReparseDeferralEnabled)r   r   enableds      r   test_getter_setter_round_tripz1ReparseDeferralTest.test_getter_setter_round_trip  s    ##%%%2f668'B((/f668%@((.f668'Br   c                    t         j                  dk  r#| j                  dt         j                   d       g fd}t        j                         }||_        | j                  |j                                dD ]  }|j                  |d        | j                  g        |j                  dd       | j                  d	g       y )
Nr  zExpat z" does not support reparse deferralc                 (    j                  |        y rA   r   rI   _starteds     r   start_elementzHReparseDeferralTest.test_reparse_deferral_enabled.<locals>.start_element      NN4 r   s   <docs   />Fr   Tdoc)	r   r  skipTestr   rK   r   r  r   r   r   r  r   chunkr  s       @r   test_reparse_deferral_enabledz1ReparseDeferralTest.test_reparse_deferral_enabled  s    	)MMF5#5#5"6 75 5 6 	! ##%%2"88:;% 	'ELL&	' 	"%S$5'*r   c                 (   g fd}t        j                         }||_        t         j                  dk\  r|j	                  d       | j                  |j                                dD ]  }|j                  |d        | j                  dg       y )Nc                 (    j                  |        y rA   r   r  s     r   r  zIReparseDeferralTest.test_reparse_deferral_disabled.<locals>.start_element  r  r   r  Fr  r  )	r   r   rK   r  r  r  r  r   r   r  s       @r   test_reparse_deferral_disabledz2ReparseDeferralTest.test_reparse_deferral_disabled  s    	! ##%%2"*,,U399;<% 	'ELL&	' 	5'*r   N)r8   r9   r:   r  r  r  r;   r   r   r  r    s    C+0+r   r  __main__)$r.  platformr}  r6  unittestrC  ior   r   r   test.supportr   xml.parsersr   xml.parsers.expatr   r   r	   r
   TestCaser   rS   r=   r   r   r   r)  rN  re  rq  r  r  r  r  r8   mainr;   r   r   <module>r     sN   
  
      "  $ 9 9%Gx(( %GP6|;!! |;| 3X..  3F!/H%% !/H\=X&& \=@6+8,, 6+t%8$$ %>JH%% J&x$** x$t$** $$Lx(( L"1>h'' 1>h3+(++ 3+l zHMMO r   