o
    HXh<                     @   s  d Z 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	 ZG d
d dejZdd ZG dd dejZG dd dZG dd dZG dd dZG dd deZG dd dZG dd dejZedkre  dS dS )z3
  Test cases for the repr module
  Nick Mathewson
    N)verbose)create_empty_file)repr)Repr)recursive_reprc                 C   s   d}t | D ]}|f}q|S )N )range)Znestingtir   r   ;/opt/python-3.10.19/usr/lib/python3.10/test/test_reprlib.pynestedTuple   s   r   c                   @   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S )	ReprTestsc                 C   s   | j }|tdd |tdd d}t|d d d t|dd   }|t|| |td	td	 d
}t|d d d t|dd   }|t|| d S )Nabcz'abc'Zabcdefghijklmnopz'abcdefghijklmnop'Z<aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbb   ...z"'z""""""""""""""""""""""""""""""''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''assertEqualrr   )selfeqsexpectedr   r   r   test_string   s   $$zReprTests.test_stringc                 C   sZ   | j }|tdd d}|t|d t }d|_t|d d d }|||| d S )N   (1,)r         	(1, 2, 3)r   z...))r   r   r   maxtupler   )r   r   Zt3Zr2r   r   r   r   
test_tuple*   s   zReprTests.test_tuplec                 C   s  ddl m } ddlm} | j}|tdd |tdd |tdd	 |td
d |tdd |tg d |tdgd |tg dd |tg d
d |tg dd |ttg d |ttdgd |ttg dd |ttg d
d |ttg dd |ttg d |ttdgd |ttg dd |ttg d
d |ttg dd |t|g dd |ti d dd d!d"d#}|t|d$ d|d%< |t|d& |t|d'd( |t|d'dgd) |t|d'dd gd* |t|d'g dd+ |t|d'g d,d- |t|d'g d.d/ |t|d'g d
d0 d S )1Nr   )array)dequer   z()r   r   r   r    )r   r   r            z(1, 2, 3, 4, 5, 6))r   r   r   r&   r'   r(      z(1, 2, 3, 4, 5, 6, ...)z[]r   z[1]z	[1, 2, 3]z[1, 2, 3, 4, 5, 6]z[1, 2, 3, 4, 5, 6, ...]zset(){1}	{1, 2, 3}{1, 2, 3, 4, 5, 6}{1, 2, 3, 4, 5, 6, ...}zfrozenset()frozenset({1})frozenset({1, 2, 3})frozenset({1, 2, 3, 4, 5, 6})"frozenset({1, 2, 3, 4, 5, 6, ...})zdeque([1, 2, 3, 4, 5, 6, ...])z{}r   r   r&   )ZaliceZbobZcharlesZdavez/{'alice': 1, 'bob': 2, 'charles': 3, 'dave': 4}Zarthurz6{'alice': 1, 'arthur': 1, 'bob': 2, 'charles': 3, ...}r
   z
array('i')zarray('i', [1])zarray('i', [1, 2])zarray('i', [1, 2, 3]))r   r   r   r&   zarray('i', [1, 2, 3, 4]))r   r   r   r&   r'   zarray('i', [1, 2, 3, 4, 5])z array('i', [1, 2, 3, 4, 5, ...]))r$   collectionsr%   r   r   set	frozenset)r   r$   r%   r   dr   r   r   test_container6   sL   zReprTests.test_containerc                 C   sP   | j }|tdhd |th dd |th dd |th dd d S )	Nr   r*      r   r   r   r+      r   r   r   r&   r'   r(   r,      r   r   r   r&   r'   r(   r)   r-   )r   r   r   r   r   r   r   test_set_literalk   s
   zReprTests.test_set_literalc                 C   s`   | j }|ttdhd |tth dd |tth dd |tth dd d S )	Nr   r.   r7   r/   r8   r0   r9   r1   )r   r   r4   r:   r   r   r   test_frozensetr   s
   zReprTests.test_frozensetc                 C   sz   | j }|tdtd |tdtd |tdtd dd }t|d d d t|dd   }|t|| d S )N{   gUUUUUU?
   d      r   ir   )r   r   nr   r   r   r   test_numbersy   s   $zReprTests.test_numbersc                 C   s   | j }td}|t|t| td}t|d d d t|dd   }|t|| t }|t|dt|  tt}| |d | |d | 	|
dd	dg d S )
NaA  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr   r   r   z&<ClassWithFailingRepr instance at %#x>z<class >   )r   ClassWithReprr   r   ClassWithFailingReprid
assertTrue
startswithendswithZassertInfind)r   r   Zi1Zi2r   Zi3r   r   r   r   test_instance   s   $zReprTests.test_instancec                 C   s"   t dd }| |d| d S )Nc                 S   s   | S Nr   xr   r   r   <lambda>       z'ReprTests.test_lambda.<locals>.<lambda>z0<function ReprTests.test_lambda.<locals>.<lambda)r   rI   rJ   )r   r   r   r   r   test_lambda   s   zReprTests.test_lambdac                 C   s.   | j }|ttd | tdjd d S )Nz<built-in function hash> z*<built-in method split of str object at 0x)r   r   hashrI   splitrJ   r:   r   r   r   test_builtin_function   s
   
zReprTests.test_builtin_functionc                 C   sF   | j }|ttdd |ttddd |ttdddd d S )Nr   zrange(0, 1)r   zrange(1, 2)r&   r   zrange(1, 4, 3))r   r   r   r:   r   r   r   
test_range   s   zReprTests.test_rangec                 C   s   | j }|tg ggggggd |tg gggggggd |ttdd |ttdd |ttdtdid |ttdtdid	 |ti ggggggd
 |ti gggggggd d S )Nz[[[[[[[]]]]]]]z[[[[[[[...]]]]]]]r(   z(((((((),),),),),),)r)   z(((((((...),),),),),),)r'   z&{((((((),),),),),): ((((((),),),),),)}z,{((((((...),),),),),): ((((((...),),),),),)}z[[[[[[{}]]]]]])r   r   r   r:   r   r   r   test_nesting   s    zReprTests.test_nestingc                 C   s8   dd }| j d }| t|d | t|d d S )Nc                     s   d  fdd} | S )N*   c                      s    S rN   r   r   rO   r   r   inner   s   z4ReprTests.test_cell.<locals>.get_cell.<locals>.innerr   )r[   r   rO   r   get_cell   s   z%ReprTests.test_cell.<locals>.get_cellr   z6<cell at 0x[0-9A-Fa-f]+: int object at 0x[0-9A-Fa-f]+>z<cell at 0x.*\.\.\..*>)__closure__ZassertRegexr   r   )r   r\   rP   r   r   r   	test_cell   s   zReprTests.test_cellc                 C   sp   | j }|ttjd G dd d}t|j}|  t|d|jd t|j}|  t|d|jd d S )Nz"<method 'items' of 'dict' objects>c                   @      e Zd Zdd ZdS )z%ReprTests.test_descriptors.<locals>.Cc                 S      d S rN   r   )clsr   r   r   foo   rR   z)ReprTests.test_descriptors.<locals>.C.fooN)__name__
__module____qualname__rb   r   r   r   r   C       rf   z<staticmethod(z)>z<classmethod()r   r   dictitemsstaticmethodrb   classmethod)r   r   rf   rP   r   r   r   test_descriptors   s   

zReprTests.test_descriptorsc                 C   s:   t g d}t|}ddd}t| t| t| d S )N)              ?               @y              @r   r   )rm   rn   )r3   r4   r   )r   rP   yzr   r   r   test_unsortable   s   
zReprTests.test_unsortableN)rc   rd   re   r   r#   r6   r;   r<   rB   rM   rS   rW   rX   rY   r^   rl   rq   r   r   r   r   r      s    5
r   c                 C   s>   t | ddd}|| W d    d S 1 sw   Y  d S )NwASCII)encoding)openwrite)pathtextfpr   r   r   
write_file   s   "rz   c                   @   st   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Ze	
ddd Zdd Zdd Zdd Ze	
ddd ZdS )LongReprTest3areallylongpackageandmodulenametotestreprtruncationc                 C   s   t j| j| _t j| j| j| _tj| jdd t | j t	t j| jd tj| jdd t | j t	t j| jd t 
 | _tjd| j t  d S )NT)ignore_errorsz__init__.pyr   )osrw   joinlongnamepkgname
subpkgnameshutilrmtreemkdirr   getcwdheresysinsert	importlibinvalidate_cachesr   r   r   r   setUp   s   
zLongReprTest.setUpc                 C   s   g }t | jD ]\}}}|| D ]}|t j|| qq|| j |  |  |D ]}t j|r=t 	| q/t 
| q/tjd= d S )Nr   )r~   walkr   appendrw   r   sortreverseisdirrmdirremover   )r   actionsdirpathdirnames	filenamesnamepr   r   r   tearDown   s   zLongReprTest.tearDownc                 C   s   t | j}|dt | jd  7 }|t |d t d 7 }|t tjd t d }tjdkr<|dkr<| d|  d S tjdkrJt	rLt
d| d S d S d S )	Nr   r   .pyzx.pynti  zDtest paths too long (%d characters) for Windows' 260 character limitzcached_path_len =)lenr   r   r   utilcache_from_sourcer~   r   ZskipTestr   print)r   module_nameZsource_path_lenZcached_path_lenr   r   r   _check_path_limitations  s   

z$LongReprTest._check_path_limitationsc                 C   st   d | _ | | j ttj| j| jd  t	  ddl
m} |}| t|d|j|jf  | ttd d S )Nr   r   )r|   z<module %r from %r>z<module 'sys' (built-in)>)ZmaxDiffr   r   r   r~   rw   r   r   r   r   gareallylongpackageandmodulenametotestreprtruncation.areallylongpackageandmodulenametotestreprtruncationr|   r   r   rc   __file__r   )r   r|   moduler   r   r   test_module  s   zLongReprTest.test_modulec                 C   sT   |  d | j}ttj| jdd t  ddl	m
} |t|j
d|j  d S )Nrb   zfoo.pyzclass foo(object):
    pass
r   )rb   z<class '%s.foo'>)r   r   rz   r~   rw   r   r   r   r   r   rb   r   rc   )r   r   rb   r   r   r   	test_type  s   

zLongReprTest.test_typezneed a suitable objectc                 C   r`   rN   r   r   r   r   r   test_object+  s   zLongReprTest.test_objectc                 C   sP   |  d ttj| jdd t  ddlm	} | 
t|j	d|j  d S )Nbarzbar.pyzclass bar:
    pass
r   )r   z<class '%s.bar'>)r   rz   r~   rw   r   r   r   r   r   r   r   r   rc   )r   r   r   r   r   
test_class1  s
   
zLongReprTest.test_classc                 C   sZ   |  d ttj| jdd t  ddlm	} |	 }| 
t|d|j  d S )Nbazzbaz.pyzclass baz:
    pass
r   )r   z<%s.baz object at 0x)r   rz   r~   rw   r   r   r   r   r   r   rI   r   rJ   rc   )r   r   Zibazr   r   r   rM   <  s   

zLongReprTest.test_instancec                 C   s   |  d | j}ttj| jdd t  ddl	m
} t|jj}| |d| | }t|j}| |d|jf | d S )Nquxzqux.pyzclass aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:
    def amethod(self): pass
r   )r   z<function aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.amethoda  <bound method aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.amethod of <%s.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa object at 0x)r   r   rz   r~   rw   r   r   r   r   r   r   r   ZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZamethodrI   rJ   rc   )r   r   r   r   Ziquxr   r   r   test_methodH  s    

zLongReprTest.test_methodz1needs a built-in function with a really long namec                 C   r`   rN   r   r   r   r   r   rW   [  s   z"LongReprTest.test_builtin_functionN)rc   rd   re   r   r   r   r   r   r   unittestskipr   r   rM   r   rW   r   r   r   r   r{      s    

r{   c                   @      e Zd Zdd Zdd ZdS )rF   c                 C   s
   || _ d S rN   r   )r   r   r   r   r   __init__a     
zClassWithRepr.__init__c                 C   s
   d| j  S )NzClassWithRepr(%r)r   r   r   r   r   __repr__c  r   zClassWithRepr.__repr__N)rc   rd   re   r   r   r   r   r   r   rF   `  s    rF   c                   @   r_   )rG   c                 C   s   t d)Nz+This should be caught by Repr.repr_instance)	Exceptionr   r   r   r   r   h  s   zClassWithFailingRepr.__repr__N)rc   rd   re   r   r   r   r   r   rG   g  rg   rG   c                   @   s.   e Zd ZdZdd Zdd Ze dd ZdS )	MyContainerz"Helper class for TestRecursiveReprc                 C   s   t || _d S rN   )listvalues)r   r   r   r   r   r   m  s   zMyContainer.__init__c                 C   s   | j | d S rN   )r   r   )r   valuer   r   r   r   o  s   zMyContainer.appendc                 C      dd tt| j d S N<z, rD   r   mapstrr   r   r   r   r   r   q     zMyContainer.__repr__N)rc   rd   re   __doc__r   r   r   r   r   r   r   r   r   k  s    r   c                   @   s   e Zd Zeddd ZdS )MyContainer2z+++c                 C   r   r   r   r   r   r   r   r   v  r   zMyContainer2.__repr__N)rc   rd   re   r   r   r   r   r   r   r   u  s    r   c                   @   s"   e Zd Zdd ZeZe eZdS )MyContainer3c                 C   s   dS )zTest document contentNr   r   r   r   r   r   {  s   zMyContainer3.__repr__N)rc   rd   re   r   wrappedr   wrapperr   r   r   r   r   z  s    r   c                   @   r   )TestRecursiveReprc                 C   sx   t td}|| |d || | t|d ttd}|| |d || | t|d d S )NZabcderP   z<a, b, c, d, e, ..., x, ...>z<a, b, c, d, e, +++, x, +++>)r   r   r   r   r   r   )r   mr   r   r   test_recursive_repr  s   





z%TestRecursiveRepr.test_recursive_reprc                 C   s>   ddl m} tj}tj}|D ]}| t||t|| qd S )Nr   )WRAPPER_ASSIGNMENTS)	functoolsr   r   r   r   ZassertIsgetattr)r   assignedr   r   r   r   r   r   test_assigned_attributes  s   z*TestRecursiveRepr.test_assigned_attributesN)rc   rd   re   r   r   r   r   r   r   r     s    r   __main__)r   r   r~   r   r   importlib.utilr   Ztest.supportr   Ztest.support.os_helperr   reprlibr   r   r   r   r   ZTestCaser   rz   r{   rF   rG   r   r   r   r   rc   mainr   r   r   r   <module>   s6     C 
