B
    u9a¡  ã               @   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   Z
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)ÚsizeZmemuseZ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   ú&/usr/lib/python3.7/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ÚtextZassertIsNoneÚtailÚattrib)r   Z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   r-   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   )r/   r   r   Ú__del___   s    z+MiscTests.test_bpo_31728.<locals>.X.__del__N)Ú__name__Ú
__module__Ú__qualname__r1   r   )r/   r   r   ÚX^   s   r5   r   é*   )r   r   r   r0   r   Ú__setstate__)r   r5   r   )r/   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Úbarr6   Zchildztext goes herezopposite of head)r   r    Z	_childrenr   r   )r:   r6   r   r   )r   r   Ú__new__r$   r7   r   r   r   r   Úlistr    ÚitemsÚlen)r   r/   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   Z	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   ZXMLPullParserr   r   r&   )r   rC   r   r   r   r   Útest_xmlpullparser_leaks“   s
    
z"MiscTests.test_xmlpullparser_leaksN)r2   r3   r4   r   Z
bigmemtestZ_2Gr   r!   r)   r.   r8   r?   rD   rE   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 )Nr9   )Ú	cET_aliasr   r   r   )r   r'   r   r   r   Útest_alias_working¡   s    
z#TestAliasWorking.test_alias_workingN)r2   r3   r4   rH   r   r   r   r   rF   ž   s   rF   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%   r3   )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   rG   r%   r3   )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)ZassertNotIsInstancer   r   Ú__init__ÚtypesÚFunctionType)r   r   r   r   Útest_parser_comes_from_C±   s    z0TestAcceleratorImported.test_parser_comes_from_CN)r2   r3   r4   rJ   rK   rO   r   r   r   r   rI   ¦   s   rI   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   Z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_sizeofrQ   )r   r'   r   r   r   Útest_elementÂ   s    
zSizeofTest.test_elementc             C   s&   t jddd}|  || j| j ¡ d S )NrV   zabout:)Zhref)r   r   rW   rQ   rT   )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 )NrV   é   ÚspanZ8P)	r   r   r$   r%   rW   rQ   rT   rR   rS   )r   r'   r(   r   r   r   Útest_element_with_childrenÊ   s
    
z%SizeofTest.test_element_with_childrenN)	r2   r3   r4   rU   r   rW   rX   rY   r\   r   r   r   r   rP   ¸   s
   rP   c              C   s,   ddl m}  t tttt¡ | jt	d d S )Nr   )Útest_xml_etree)Úmodule)
Útestr]   r   Zrun_unittestr   rF   rI   rP   Ú	test_mainr   )r]   r   r   r   r`   Ò   s    r`   Ú__main__)r@   rR   r_   r   Ztest.supportr   rM   Zunittestr   rG   Z
skipUnlessZTestCaser   rF   Zcpython_onlyrI   rP   r`   r2   r   r   r   r   Ú<module>   s0   

 


