B
    18™\¡  ã               @   sö   d dl Z d dlZd dlmZ d dlmZ d dlZd dlZeddgdZedddgd	d
Z	e 
ed¡G dd„ dejƒƒZe 
ed¡G dd„ dejƒƒZe 
ed¡ejG dd„ dejƒƒƒZe 
ed¡ejG dd„ dejƒƒƒZdd„ Zedkròeƒ  dS )é    N)Úsupport)Úimport_fresh_modulezxml.etree.ElementTreeÚ_elementtree)Úfreshzxml.etree.cElementTreez	xml.etreeT)r   Ú
deprecatedzrequires _elementtreec               @   sb   e Zd Zejejd ddd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 )Ú	MiscTestséd   é   F)ÚsizeÚmemuseÚdry_runc             C   s0   d| }t  ¡ }z|  t|j|¡ W d d }X d S )Nó   x)ÚcETÚ	XMLParserÚassertRaisesÚOverflowErrorÚfeed)Úselfr
   ÚdataÚparser© r   úY/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/test/test_xml_etree_c.pyÚtest_length_overflow   s
    zMiscTests.test_length_overflowc          	   C   sF  t  d¡}d|_|  t¡
 |`W d Q R X |  |jd¡ |  t¡
 |`W d Q R X |  |j¡ d|_|  t¡
 |`W d Q R X |  |jd¡ |  t¡
 |`W d Q R X |  |j¡ d|_|  t¡
 |`W d Q R X |  |jd¡ |  t¡
 |`	W d Q R X |  |j	i ¡ dddœ|_	|  t¡
 |`	W d Q R X |  |j	dddœ¡ d S )NÚtagZTAGZTEXTZTAILÚBÚD)ÚAÚC)
r   ÚElementr   r   ÚAttributeErrorÚassertEqualÚtextÚassertIsNoneÚtailÚattrib)r   Úelementr   r   r   Útest_del_attribute   s4    
zMiscTests.test_del_attributec             C   s<   t  d¡ }}xtdƒD ]}t  |d¡}qW ~~t ¡  d S )NÚrooti@ Úx)r   r   ÚrangeÚ
SubElementr   Ú
gc_collect)r   Úer'   Úir   r   r   Útest_trashcan<   s    zMiscTests.test_trashcanc             C   s   dd„ }|ƒ  t  ¡  d S )Nc           
   S   s<   t  ¡ } yt‚W n& tk
r6 } z|}W d d }~X Y nX d S )N)r   r   Ú
ValueError)r   ÚexcÚerrr   r   r   Úparser_ref_cycleJ   s
    z9MiscTests.test_parser_ref_cycle.<locals>.parser_ref_cycle)r   r+   )r   r2   r   r   r   Útest_parser_ref_cycleE   s    
zMiscTests.test_parser_ref_cyclec                s¤   t  d¡‰ G ‡ fdd„dƒ}|ƒ ˆ _ˆ  ¡  |ƒ ˆ _ˆ  ¡  |ƒ ˆ _|ƒ ˆ _ˆ  ¡  |ƒ ˆ _|ƒ ˆ _ˆ  ¡  |ƒ ˆ _ˆ  ddi¡ ˆ  ¡  |ƒ ˆ _ˆ  ddi¡ d S )NÚelemc                   s   e Zd Z‡ fdd„ZdS )z#MiscTests.test_bpo_31728.<locals>.Xc                s   ˆ j  ˆ j ˆ  ¡  d S )N)r!   r#   Úclear)r   )r4   r   r   Ú__del___   s    z+MiscTests.test_bpo_31728.<locals>.X.__del__N)Ú__name__Ú
__module__Ú__qualname__r6   r   )r4   r   r   ÚX^   s   r:   r   é*   )r   r   r!   r5   r#   Ú__setstate__)r   r:   r   )r4   r   Útest_bpo_31728Y   s"    
zMiscTests.test_bpo_31728c          	   C   sª   t j t j¡}x2tdƒD ]&}| dddit  d¡gdddœ¡ qW |  |jd¡ |  |jd¡ |  |jd¡ |  t	|j
 ¡ ƒd	g¡ |  t|ƒd
¡ |  |d jd¡ d S )Nr   ÚfooÚbarr;   Zchildztext goes herezopposite of head)r   r$   Ú	_childrenr!   r#   )r?   r;   r	   r   )r   r   Ú__new__r)   r<   r    r   r!   r#   Úlistr$   ÚitemsÚlen)r   r4   r-   r   r   r   Útest_setstate_leaksy   s    
zMiscTests.test_setstate_leaksc             C   s*   d}t  t |¡¡}t|ƒ ~t ¡  d S )Nz<a></a></b>)r   Ú	iterparseÚioÚStringIOÚnextr   r+   )r   ÚXMLr   r   r   r   Útest_iterparse_leaks‰   s
    zMiscTests.test_iterparse_leaksc             C   s$   d}t  ¡ }| |¡ ~t ¡  d S )Nz<a></a></b>)r   ÚXMLPullParserr   r   r+   )r   rJ   r   r   r   r   Útest_xmlpullparser_leaks“   s
    
z"MiscTests.test_xmlpullparser_leaksN)r7   r8   r9   r   Ú
bigmemtestÚ_2Gr   r&   r.   r3   r=   rE   rK   rM   r   r   r   r   r      s   	 	 
r   c               @   s   e Zd Zdd„ ZdS )ÚTestAliasWorkingc             C   s   t  d¡}|  |jd¡ d S )Nr>   )Ú	cET_aliasr   r    r   )r   r,   r   r   r   Útest_alias_working¡   s    
z#TestAliasWorking.test_alias_workingN)r7   r8   r9   rR   r   r   r   r   rP   ž   s   rP   c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestAcceleratorImportedc             C   s   |   tjjd¡ d S )Nr   )r    r   r*   r8   )r   r   r   r   Útest_correct_import_cETª   s    z/TestAcceleratorImported.test_correct_import_cETc             C   s   |   tjjd¡ d S )Nr   )r    rQ   r*   r8   )r   r   r   r   Útest_correct_import_cET_alias®   s    z5TestAcceleratorImported.test_correct_import_cET_aliasc             C   s   |   tjjtj¡ d S )N)ÚassertNotIsInstancer   r   Ú__init__ÚtypesÚFunctionType)r   r   r   r   Útest_parser_comes_from_C±   s    z0TestAcceleratorImported.test_parser_comes_from_CN)r7   r8   r9   rT   rU   rZ   r   r   r   r   rS   ¦   s   rS   c               @   s2   e Zd Zdd„ ZejZdd„ Zdd„ Zdd„ Zd	S )
Ú
SizeofTestc             C   s   t  d¡| _t d¡| _d S )NZ5PZPnnP4P)r   ÚcalcobjsizeÚelementsizeÚstructÚcalcsizeÚextra)r   r   r   r   ÚsetUp»   s    zSizeofTest.setUpc             C   s   t  d¡}|  || j¡ d S )NÚa)r   r   Úcheck_sizeofr]   )r   r,   r   r   r   Útest_elementÂ   s    
zSizeofTest.test_elementc             C   s&   t jddd}|  || j| j ¡ d S )Nrb   zabout:)Zhref)r   r   rc   r]   r`   )r   r,   r   r   r   Útest_element_with_attribÆ   s    z#SizeofTest.test_element_with_attribc             C   sJ   t  d¡}xtdƒD ]}t  |d¡ qW |  || j| j t d¡ ¡ d S )Nrb   é   ÚspanZ8P)	r   r   r)   r*   rc   r]   r`   r^   r_   )r   r,   r-   r   r   r   Útest_element_with_childrenÊ   s
    
z%SizeofTest.test_element_with_childrenN)	r7   r8   r9   ra   r   rc   rd   re   rh   r   r   r   r   r[   ¸   s
   r[   c              C   s,   ddl m}  t tttt¡ | jt	d d S )Nr   )Útest_xml_etree)Úmodule)
Útestri   r   Úrun_unittestr   rP   rS   r[   Ú	test_mainr   )ri   r   r   r   rm   Ò   s    rm   Ú__main__)rG   r^   rk   r   Ztest.supportr   rX   Úunittestr   rQ   Ú
skipUnlessÚTestCaser   rP   Úcpython_onlyrS   r[   rm   r7   r   r   r   r   Ú<module>   s0   

 


