o
    gI                      @   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 dS )    N)support)import_fresh_modulezxml.etree.ElementTree_elementtree)freshzxml.etree.cElementTreez	xml.etreeT)r   Z
deprecatedzrequires _elementtreec                   @   sp   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
ejdd Zdd Zdd Zdd ZdS )	MiscTestsd      F)sizeZmemusedry_runc                 C   s2   d| }t  }z| t|j| W d }d S d }w )N   x)cET	XMLParserassertRaisesOverflowErrorfeed)selfr	   dataparser r   K/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_xml_etree_c.pytest_length_overflow   s
   zMiscTests.test_length_overflowc                 C   s  t d}d|_| t
 |`W d    n1 sw   Y  | |jd | t
 |`W d    n1 s8w   Y  | |j d|_| t
 |`W d    n1 sXw   Y  | |jd | t
 |`W d    n1 svw   Y  | |j d|_| t
 |`W d    n1 sw   Y  | |jd | t
 |`	W d    n1 sw   Y  | |j	i  ddd|_	| t
 |`	W d    n1 sw   Y  | |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   sB   
zMiscTests.test_del_attributec                 C   s8   t d }}tdD ]}t |d}q~~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   s8   t  } zt ty } z	|}W Y d }~d S d }~ww 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   r1   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 r-   )r   r!   clearr   r3   r   r   __del___   s   z+MiscTests.test_bpo_31728.<locals>.X.__del__N)__name__
__module____qualname__r7   r   r6   r   r   X^   s    r;   r   *   )r   r   r   r4   r!   __setstate__)r   r;   r   r6   r   test_bpo_31728Y   s"   
zMiscTests.test_bpo_31728c                 C   sx   t jt j}| t|j | t|jd G dd d}| t|j|  | t|jd  | 	|j
 | 	|j d S )Nfooc                   @      e Zd Zdd ZdS )z5MiscTests.test_uninitialized_parser.<locals>.MockFilec                  W   s   dS )N r   )argsr   r   r   read   s   z:MiscTests.test_uninitialized_parser.<locals>.MockFile.readN)r8   r9   r:   rC   r   r   r   r   MockFile   s    rD   )r   r   __new__r   r.   closer   Z_parse_wholeZ
_seteventsr    Zentitytarget)r   r   rD   r   r   r   test_uninitialized_parsery   s   z#MiscTests.test_uninitialized_parserc              	   C   s   t jt j}tdD ]}|dddit dgddd q| |jd | |jd | |jd | t	|j
 d	g | t|d
 | |d jd d S )Nr   r?   barr<   childztext goes herezopposite of head)r   r"   	_childrenr   r!   )rI   r<   r   r   )r   r   rE   r'   r=   r   r   r   r!   listr"   itemslen)r   r3   r+   r   r   r   test_setstate_leaks   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   ZXMLr   r   r   r   test_iterparse_leaks   s
   zMiscTests.test_iterparse_leaksc                 C   s$   d}t  }|| ~t  d S rP   )r   ZXMLPullParserr   r   r)   rT   r   r   r   test_xmlpullparser_leaks   s
   
z"MiscTests.test_xmlpullparser_leaksN)r8   r9   r:   r   Z
bigmemtestZ_2Gr   r$   r,   r2   r>   cpython_onlyrH   rO   rU   rV   r   r   r   r   r      s    
 	 

r   c                   @   r@   )TestAliasWorkingc                 C   s   t d}| |jd d S )Nr?   )	cET_aliasr   r   r   r   r*   r   r   r   test_alias_working      
z#TestAliasWorking.test_alias_workingN)r8   r9   r:   r[   r   r   r   r   rX      s    rX   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestAcceleratorImportedc                 C      |  tjjd d S Nr   )r   r   r(   r9   r5   r   r   r   test_correct_import_cET   s   z/TestAcceleratorImported.test_correct_import_cETc                 C   r^   r_   )r   rY   r(   r9   r5   r   r   r   test_correct_import_cET_alias   s   z5TestAcceleratorImported.test_correct_import_cET_aliasc                 C   s   |  tjjtj d S r-   )ZassertNotIsInstancer   r   __init__typesFunctionTyper5   r   r   r   test_parser_comes_from_C   s   z0TestAcceleratorImported.test_parser_comes_from_CN)r8   r9   r:   r`   ra   re   r   r   r   r   r]      s    r]   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extrar5   r   r   r   setUp   s   zSizeofTest.setUpc                 C   s   t d}| || j d S )Na)r   r   check_sizeofrg   rZ   r   r   r   test_element   r\   zSizeofTest.test_elementc                 C   s&   t jddd}| || j| j  d S )Nrl   zabout:)Zhref)r   r   rm   rg   rj   rZ   r   r   r   test_element_with_attrib   s   z#SizeofTest.test_element_with_attribc                 C   sF   t d}tdD ]}t |d q	| || j| j td  d S )Nrl      spanZ8P)	r   r   r'   r(   rm   rg   rj   rh   ri   )r   r*   r+   r   r   r   test_element_with_children   s   

z%SizeofTest.test_element_with_childrenN)	r8   r9   r:   rk   r   rm   rn   ro   rr   r   r   r   r   rf      s    rf   c                  C   s,   ddl m}  ttttt | jt	d d S )Nr   test_xml_etree)module)
testrt   r   Zrun_unittestr   rX   r]   rf   	test_mainr   rs   r   r   r   rw      s   rw   __main__)rQ   rh   rv   r   Ztest.support.import_helperr   rc   Zunittestr   rY   Z
skipUnlessZTestCaser   rX   rW   r]   rf   rw   r8   r   r   r   r   <module>   s8   
 



