a
    ze/                     @   s  d dl Z d dlmZ d dlZG dd dZG dd dZdd ejejfd	d ejej	fd
d ej
ejfdd ejejfdd ejejfdd ejejfdZG dd de jZG dd de jZG dd de jZG dd de jZG dd de jZedkr
e   dS )    N)supportc                   @   sT   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S )Numberc                 C   s
   || _ d S Nx)selfr    r   '/usr/lib/python3.9/test/test_richcmp.py__init__
   s    zNumber.__init__c                 C   s
   | j |k S r   r   r   otherr   r   r	   __lt__   s    zNumber.__lt__c                 C   s
   | j |kS r   r   r   r   r   r	   __le__   s    zNumber.__le__c                 C   s
   | j |kS r   r   r   r   r   r	   __eq__   s    zNumber.__eq__c                 C   s
   | j |kS r   r   r   r   r   r	   __ne__   s    zNumber.__ne__c                 C   s
   | j |kS r   r   r   r   r   r	   __gt__   s    zNumber.__gt__c                 C   s
   | j |kS r   r   r   r   r   r	   __ge__   s    zNumber.__ge__c                 C   s   t dd S )Nz%Number.__cmp__() should not be calledr   Z
TestFailedr   r   r   r	   __cmp__   s    zNumber.__cmp__c                 C   s   d| j f S )Nz
Number(%r)r   r   r   r   r	   __repr__"   s    zNumber.__repr__N)__name__
__module____qualname__r
   r   r   r   r   r   r   r   r   r   r   r   r	   r      s   r   c                   @   s   e Zd Zdd Zdd Zdd Zdd 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	S )Vectorc                 C   s
   || _ d S r   data)r   r   r   r   r	   r
   '   s    zVector.__init__c                 C   s
   t | jS r   )lenr   r   r   r   r	   __len__*   s    zVector.__len__c                 C   s
   | j | S r   r   )r   ir   r   r	   __getitem__-   s    zVector.__getitem__c                 C   s   || j |< d S r   r   )r   r   vr   r   r	   __setitem__0   s    zVector.__setitem__Nc                 C   s   t dd S )Nz*Vectors cannot be used in Boolean contexts)	TypeErrorr   r   r   r	   __bool__5   s    zVector.__bool__c                 C   s   t dd S )Nz%Vector.__cmp__() should not be calledr   r   r   r   r	   r   8   s    zVector.__cmp__c                 C   s   d| j f S )Nz
Vector(%r)r   r   r   r   r	   r   ;   s    zVector.__repr__c                 C   s    t dd t| j| |D S )Nc                 S   s   g | ]\}}||k qS r   r   .0abr   r   r	   
<listcomp>?       z!Vector.__lt__.<locals>.<listcomp>r   zipr   _Vector__castr   r   r   r	   r   >   s    zVector.__lt__c                 C   s    t dd t| j| |D S )Nc                 S   s   g | ]\}}||kqS r   r   r%   r   r   r	   r)   B   r*   z!Vector.__le__.<locals>.<listcomp>r+   r   r   r   r	   r   A   s    zVector.__le__c                 C   s    t dd t| j| |D S )Nc                 S   s   g | ]\}}||kqS r   r   r%   r   r   r	   r)   E   r*   z!Vector.__eq__.<locals>.<listcomp>r+   r   r   r   r	   r   D   s    zVector.__eq__c                 C   s    t dd t| j| |D S )Nc                 S   s   g | ]\}}||kqS r   r   r%   r   r   r	   r)   H   r*   z!Vector.__ne__.<locals>.<listcomp>r+   r   r   r   r	   r   G   s    zVector.__ne__c                 C   s    t dd t| j| |D S )Nc                 S   s   g | ]\}}||kqS r   r   r%   r   r   r	   r)   K   r*   z!Vector.__gt__.<locals>.<listcomp>r+   r   r   r   r	   r   J   s    zVector.__gt__c                 C   s    t dd t| j| |D S )Nc                 S   s   g | ]\}}||kqS r   r   r%   r   r   r	   r)   N   r*   z!Vector.__ge__.<locals>.<listcomp>r+   r   r   r   r	   r   M   s    zVector.__ge__c                 C   s.   t |tr|j}t| jt|kr*td|S )Nz*Cannot compare vectors of different length)
isinstancer   r   r   
ValueErrorr   r   r   r	   __castP   s
    
zVector.__cast)r   r   r   r
   r   r    r"   __hash__r$   r   r   r   r   r   r   r   r   r-   r   r   r   r	   r   %   s   r   c                 C   s   | |k S r   r   r'   r(   r   r   r	   <lambda>X   r*   r3   c                 C   s   | |kS r   r   r2   r   r   r	   r3   Y   r*   c                 C   s   | |kS r   r   r2   r   r   r	   r3   Z   r*   c                 C   s   | |kS r   r   r2   r   r   r	   r3   [   r*   c                 C   s   | |kS r   r   r2   r   r   r	   r3   \   r*   c                 C   s   | |kS r   r   r2   r   r   r	   r3   ]   r*   )ltleeqnegtgec                   @   s$   e Zd Zdd Zdd Zdd ZdS )
VectorTestc                 G   s&   t | D ]}| j||g|R   qd S r   )opmapassertRaises)r   erroropnameargsopr   r   r	   	checkfailb   s    zVectorTest.checkfailc                 C   sX   t | D ]J}|||}| t|t| tt|D ]}| || || u  q6qd S r   )r;   assertEqualr   range
assertTrue)r   r>   r'   r(   expresr@   realresr   r   r   r	   
checkequalf   s
    
zVectorTest.checkequalc              
   C   s&  t td}t td}tD ]}| t||| qttd}ddg }|t |ft ||ft |t |fg}|D ]\}}| d||g d | d||g d | d||g d	 | d
||g d | d||g d | d||g d t D ]$}|D ]}| t	t
||| qqqrd S )N         r4   )TTFFFr5   )TTTFFr6   )FFTFFr7   )TTFTTr8   )FFFTTr9   )FFTTT)r   rC   r;   rA   r/   listrG   valuesr<   r#   bool)r   r'   r(   r>   r?   opsr@   r   r   r	   
test_mixedo   s"    
&zVectorTest.test_mixedN)r   r   r   rA   rG   rO   r   r   r   r	   r:   `   s   	r:   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )
NumberTestc              
   C   s   t dD ]}t dD ]}ttfD ]t}ttfD ]f}||  krDtkrJq, nq,||}||}t D ].}|D ]$}|||}	|||}
| |	|
 qjqbq,q qqd S )NrI   )rC   intr   r;   rL   rB   )r   r'   r(   typeatypebtatbrN   r@   ZrealoutcomeZtestoutcomer   r   r	   
test_basic   s    

zNumberTest.test_basicc                 C   sb   t tfD ]T}t tfD ]F}||}||}t| D ](}	|	||}
t|
d|
}
| |
|u  q0qqd S )Nr   )rQ   r   r;   getattrrD   )r   r>   r'   r(   rE   rR   rS   rT   rU   r@   rF   r   r   r	   
checkvalue   s    
zNumberTest.checkvaluec                 C   s$  |  dddd |  dddd |  dddd |  dddd |  dddd |  d	ddd |  ddd
d |  ddd
d |  ddd
d |  ddd
d |  ddd
d |  d	dd
d |  dd
dd |  dd
dd |  dd
dd |  dd
dd |  dd
dd |  d	d
dd d S )Nr4   r   Fr5   Tr6   r7   r8   r9      )rX   r   r   r   r	   test_values   s$    zNumberTest.test_valuesN)r   r   r   rV   rX   rZ   r   r   r   r	   rP      s   
rP   c                   @   s2   e Zd Zdd Zdd Zejdd Zdd Zd	S )
MiscTestc                    sR   G  fddd}| }| }  ||k d   ||kd   ||kd d S )Nc                       sH   e Zd Zdd Zdd Zdd Z fddZ fd	d
Z fddZdS )z&MiscTest.test_misbehavin.<locals>.Misbc                 S   s   dS Nr   r   Zself_r   r   r   r	   r      r*   z-MiscTest.test_misbehavin.<locals>.Misb.__lt__c                 S   s   dS r\   r   r]   r   r   r	   r      r*   z-MiscTest.test_misbehavin.<locals>.Misb.__gt__c                 S   s   dS r\   r   r]   r   r   r	   r      r*   z-MiscTest.test_misbehavin.<locals>.Misb.__eq__c                    s     d d S NzThis shouldn't happenZfailr]   r   r   r	   r      r*   z-MiscTest.test_misbehavin.<locals>.Misb.__le__c                    s     d d S r^   r_   r]   r   r   r	   r      r*   z-MiscTest.test_misbehavin.<locals>.Misb.__ge__c                    s     d d S r^   r_   r]   r   r   r	   r      r*   z-MiscTest.test_misbehavin.<locals>.Misb.__ne__N)	r   r   r   r   r   r   r   r   r   r   r   r   r	   Misb   s   r`   r   )rB   )r   r`   r'   r(   r   r   r	   test_misbehavin   s    zMiscTest.test_misbehavinc                    sV   dd l }G dd dt G  fddd}dd }||jfD ]}|  ||  q<d S )Nr   c                   @   s   e Zd ZdS )zMiscTest.test_not.<locals>.ExcNr   r   r   r   r   r   r	   Exc   s   rc   c                       s   e Zd Z fddZdS )zMiscTest.test_not.<locals>.Badc                    s    d S r   r   r   rc   r   r	   r$      s    z'MiscTest.test_not.<locals>.Bad.__bool__N)r   r   r   r$   r   rd   r   r	   Bad   s   re   c                 S   s
   |   d S r   r   )Zbadr   r   r	   do   s    zMiscTest.test_not.<locals>.do)operator	Exceptionnot_r<   )r   rg   re   rf   funcr   rd   r	   test_not   s    zMiscTest.test_notc                 C   s~  ddl m} | }| }|| || | ttj|| | ttj|| | ttj|| | ttj	|| | ttj
|| | ttj|| |d | ||k  | ||k | ttj|| | ttj	|| | ttj
|| | ttj|| |d | ttj|| | ttj|| |dd |dd | ||k  | ||k | ||k  d S )Nr   )UserList         )collectionsrl   appendr<   RecursionErrorrg   r6   r7   r4   r5   r8   r9   rD   insert)r   rl   r'   r(   r   r   r	   test_recursion   s4    



zMiscTest.test_recursionc                    s  G dd d dd dfdd dfdd d	fd
d dfdd dfdd dfdd dfdd dfdd dfdd df fdddf fdddf fdddfg}t |D ]p\}}| j|dJ | t|d  |d    W d    n1 s0    Y  W d    q1 s0    Y  qd S )!Nc                   @   s   e Zd ZdS )z-MiscTest.test_exception_message.<locals>.SpamNrb   r   r   r   r	   Spam  s   ru   c                   S   s   dd k S N*   r   r   r   r   r	   r3     r*   z1MiscTest.test_exception_message.<locals>.<lambda>z'<' .* of 'int' and 'NoneType'c                   S   s   d dk S rv   r   r   r   r   r	   r3     r*   z'<' .* of 'NoneType' and 'int'c                   S   s   dd kS rv   r   r   r   r   r	   r3     r*   z'>' .* of 'int' and 'NoneType'c                   S   s   dd k S )Nfoor   r   r   r   r	   r3     r*   z'<' .* of 'str' and 'NoneType'c                   S   s   ddkS )Nrx   i  r   r   r   r   r	   r3   	  r*   z'>=' .* of 'str' and 'int'c                   S   s   dd kS rv   r   r   r   r   r	   r3   
  r*   z'<=' .* of 'int' and 'NoneType'c                   S   s   dd kS rv   r   r   r   r   r	   r3     r*   z'>=' .* of 'int' and 'NoneType'c                   S   s   dg k S rv   r   r   r   r   r	   r3     r*   z'<' .* of 'int' and 'list'c                   S   s   dg kS )Nr   r   r   r   r   r	   r3     r*   z'>' .* of 'tuple' and 'list'c                   S   s   d d kS r   r   r   r   r   r	   r3     r*   z$'>=' .* of 'NoneType' and 'NoneType'c                      s
     dk S rv   r   r   ru   r   r	   r3     r*   z'<' .* of 'Spam' and 'int'c                      s
   d  k S rv   r   r   ry   r   r	   r3     r*   z'<' .* of 'int' and 'Spam'c                      s       kS r   r   r   ry   r   r	   r3     r*   z'<=' .* of 'Spam' and 'Spam')testrY   r   )	enumerateZsubTestZassertRaisesRegexr#   )r   Ztestsr   rz   r   ry   r	   test_exception_message   s&    









zMiscTest.test_exception_messageN)	r   r   r   ra   rk   r   Z
no_tracingrt   r|   r   r   r   r	   r[      s
   
 r[   c                   @   s   e Zd Zdd ZdS )DictTestc                 C   s   dd l }i }tdD ] }|dd ||dd < qt| }|| i }|D ]\}}|||< qT| }|d ||< | || | || | || | ||k dD ]"}	t	|	 D ]}
| 
t|
|| qqd S )Nr   2   d   y              ?g      ?)r4   r5   r8   r9   )randomrC   	randrangerK   itemsshufflecopyrB   rD   r;   r<   r#   )r   r   Zimag1ar   r   Zimag1bkr!   Zimag2r>   r@   r   r   r	   
test_dicts  s$    

zDictTest.test_dictsN)r   r   r   r   r   r   r   r	   r}     s   r}   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )ListTestc                 C   s   dg}|  ||k d |  ||kd |  ||kd |  ||kd |  ||kd |  ||kd ddg}|  ||k d |  ||kd |  ||kd |  ||kd |  ||kd |  ||kd d S )Nrw   FT)assertIs)r   r   yr   r   r	   test_coverage4  s    zListTest.test_coveragec                    sT   G dd dt  G  fddd}| g}| g}td D ]}|  ||| q:d S )Nc                   @   s   e Zd ZdS )z#ListTest.test_badentry.<locals>.ExcNrb   r   r   r   r	   rc   H  s   rc   c                       s   e Zd Z fddZdS )z#ListTest.test_badentry.<locals>.Badc                    s    d S r   r   r   rd   r   r	   r   K  s    z*ListTest.test_badentry.<locals>.Bad.__eq__N)r   r   r   r   r   rd   r   r	   re   J  s   re   r6   )rh   r;   r<   )r   re   r   r   r@   r   rd   r	   test_badentryE  s    zListTest.test_badentryc                 C   sB   G dd d}| g}| g}t d D ]}| |||d q&d S )Nc                   @   s   e Zd Zdd ZdS )z%ListTest.test_goodentry.<locals>.Goodc                 S   s   dS )NTr   r   r   r   r	   r   X  s    z,ListTest.test_goodentry.<locals>.Good.__lt__N)r   r   r   r   r   r   r   r	   GoodW  s   r   r4   T)r;   r   )r   r   r   r   r@   r   r   r	   test_goodentryT  s
    zListTest.test_goodentryN)r   r   r   r   r   r   r   r   r   r	   r   2  s   r   __main__)Zunittestrz   r   rg   r   r   r4   r   r5   r   r6   r   r7   r   r8   r   r9   r   r;   ZTestCaser:   rP   r[   r}   r   r   mainr   r   r   r	   <module>   s$   3	*5Z0
