B
    u9a/                 @   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.7/test_richcmp.py__init__
   s    zNumber.__init__c             C   s
   | j |k S )N)r   )r   otherr   r   r   __lt__   s    zNumber.__lt__c             C   s
   | j |kS )N)r   )r   r	   r   r   r   __le__   s    zNumber.__le__c             C   s
   | j |kS )N)r   )r   r	   r   r   r   __eq__   s    zNumber.__eq__c             C   s
   | j |kS )N)r   )r   r	   r   r   r   __ne__   s    zNumber.__ne__c             C   s
   | j |kS )N)r   )r   r	   r   r   r   __gt__   s    zNumber.__gt__c             C   s
   | j |kS )N)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   
TestFailed)r   r	   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 )N)data)r   r   r   r   r   r   '   s    zVector.__init__c             C   s
   t | jS )N)lenr   )r   r   r   r   __len__*   s    zVector.__len__c             C   s
   | j | S )N)r   )r   ir   r   r   __getitem__-   s    zVector.__getitem__c             C   s   || j |< d S )N)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)	TypeError)r   r   r   r   __bool__5   s    zVector.__bool__c             C   s   t dd S )Nz%Vector.__cmp__() should not be called)r   r   )r   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>?   s    z!Vector.__lt__.<locals>.<listcomp>)r   zipr   _Vector__cast)r   r	   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   r   r#   B   s    z!Vector.__le__.<locals>.<listcomp>)r   r$   r   r%   )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   r   r#   E   s    z!Vector.__eq__.<locals>.<listcomp>)r   r$   r   r%   )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   r   r#   H   s    z!Vector.__ne__.<locals>.<listcomp>)r   r$   r   r%   )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   r   r#   K   s    z!Vector.__gt__.<locals>.<listcomp>)r   r$   r   r%   )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   r   r#   N   s    z!Vector.__ge__.<locals>.<listcomp>)r   r$   r   r%   )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   
ValueError)r   r	   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 )Nr   )r!   r"   r   r   r   <lambda>X       r*   c             C   s   | |kS )Nr   )r!   r"   r   r   r   r*   Y   r+   c             C   s   | |kS )Nr   )r!   r"   r   r   r   r*   Z   r+   c             C   s   | |kS )Nr   )r!   r"   r   r   r   r*   [   r+   c             C   s   | |kS )Nr   )r!   r"   r   r   r   r*   \   r+   c             C   s   | |kS )Nr   )r!   r"   r   r   r   r*   ]   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(   x"t | D ]}| j||f|  q
W d S )N)opmapassertRaises)r   erroropnameargsopr   r   r   	checkfailb   s    zVectorTest.checkfailc             C   s`   xZt | D ]N}|||}| t|t| x*tt|D ]}| || || k q:W q
W d S )N)r3   assertEqualr   range
assertTrue)r   r6   r!   r"   expresr8   realresr   r   r   r   
checkequalf   s
    
zVectorTest.checkequalc             C   s\  t td}t td}xtD ]}| t||| qW ttd}ddg }|t |ft ||ft |t |fg}x|D ]\}}| d||dddddg | d||dddddg | d||dddddg | d	||dddddg | d
||dddddg | d||dddddg x6t D ]*}x"|D ]}| t	t
||| q0W q&W qxW d S )N         r,   TFr-   r.   r/   r0   r1   )r   r;   r3   r9   r'   listr?   valuesr4   r   bool)r   r!   r"   r6   r7   opsr8   r   r   r   
test_mixedo   s"    

&
zVectorTest.test_mixedN)r   r   r   r9   r?   rG   r   r   r   r   r2   `   s   	r2   c               @   s$   e Zd Zdd Zdd Zdd ZdS )
NumberTestc          
   C   s   xt dD ]}xt dD ]}xttfD ]}xzttfD ]n}||  krLtkrRq4 nq4||}||}x>t D ]2}x,|D ]$}|||}	|||}
| |	|
 qvW qlW q4W q&W qW q
W d S )NrA   )r;   intr   r3   rD   r:   )r   r!   r"   typeatypebtatbrF   r8   ZrealoutcomeZtestoutcomer   r   r   
test_basic   s    


zNumberTest.test_basicc             C   sn   xht tfD ]\}xVt tfD ]J}||}||}x4t| D ](}	|	||}
t|
d|
}
| |
|k q6W qW q
W d S )Nr   )rI   r   r3   getattrr<   )r   r6   r!   r"   r=   rJ   rK   rL   rM   r8   r>   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 )Nr,   r   Fr-   Tr.   r/   r0   r1      )rP   )r   r   r   r   test_values   s$    zNumberTest.test_valuesN)r   r   r   rN   rP   rR   r   r   r   r   rH      s   
rH   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   )self_r	   r   r   r   r
      r+   z-MiscTest.test_misbehavin.<locals>.Misb.__lt__c             S   s   dS )Nr   r   )rT   r	   r   r   r   r      r+   z-MiscTest.test_misbehavin.<locals>.Misb.__gt__c             S   s   dS )Nr   r   )rT   r	   r   r   r   r      r+   z-MiscTest.test_misbehavin.<locals>.Misb.__eq__c                s     d d S )NzThis shouldn't happen)fail)rT   r	   )r   r   r   r      r+   z-MiscTest.test_misbehavin.<locals>.Misb.__le__c                s     d d S )NzThis shouldn't happen)rU   )rT   r	   )r   r   r   r      r+   z-MiscTest.test_misbehavin.<locals>.Misb.__ge__c                s     d d S )NzThis shouldn't happen)rU   )rT   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   rV   r   )r:   )r   rV   r!   r"   r   )r   r   test_misbehavin   s    zMiscTest.test_misbehavinc                sZ   dd l }G dd dt G  fddd}dd }x"||jfD ]}|  ||  q>W 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   rX   c                   s   e Zd Z fddZdS )zMiscTest.test_not.<locals>.Badc                s    d S )Nr   )r   )rX   r   r   r      s    z'MiscTest.test_not.<locals>.Bad.__bool__N)r   r   r   r   r   )rX   r   r   Bad   s   rY   c             S   s
   |   d S )Nr   )Zbadr   r   r   do   s    zMiscTest.test_not.<locals>.do)operator	Exceptionnot_r4   )r   r[   rY   rZ   funcr   )rX   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         )collectionsr`   appendr4   RecursionErrorr[   r.   r/   r,   r-   r0   r1   r<   insert)r   r`   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}xRt |D ]F\}}| j|d, | t|d  |d    W d Q R X W d Q R X qW d S )!Nc               @   s   e Zd ZdS )z-MiscTest.test_exception_message.<locals>.SpamN)r   r   r   r   r   r   r   Spam  s   ri   c               S   s   dd k S )N*   r   r   r   r   r   r*     r+   z1MiscTest.test_exception_message.<locals>.<lambda>z'<' .* of 'int' and 'NoneType'c               S   s   d dk S )Nrj   r   r   r   r   r   r*     r+   z'<' .* of 'NoneType' and 'int'c               S   s   dd kS )Nrj   r   r   r   r   r   r*     r+   z'>' .* of 'int' and 'NoneType'c               S   s   dd k S )Nfoor   r   r   r   r   r*     r+   z'<' .* of 'str' and 'NoneType'c               S   s   ddkS )Nrk   i  r   r   r   r   r   r*   	  r+   z'>=' .* of 'str' and 'int'c               S   s   dd kS )Nrj   r   r   r   r   r   r*   
  r+   z'<=' .* of 'int' and 'NoneType'c               S   s   dd kS )Nrj   r   r   r   r   r   r*     r+   z'>=' .* of 'int' and 'NoneType'c               S   s   dg k S )Nrj   r   r   r   r   r   r*     r+   z'<' .* of 'int' and 'list'c               S   s   dg kS )Nr   r   r   r   r   r   r*     r+   z'>' .* of 'tuple' and 'list'c               S   s   d d kS )Nr   r   r   r   r   r*     r+   z$'>=' .* of 'NoneType' and 'NoneType'c                  s
     dk S )Nrj   r   r   )ri   r   r   r*     r+   z'<' .* of 'Spam' and 'int'c                  s
   d  k S )Nrj   r   r   )ri   r   r   r*     r+   z'<' .* of 'int' and 'Spam'c                  s       kS )Nr   r   )ri   r   r   r*     r+   z'<=' .* of 'Spam' and 'Spam')testrQ   r   )	enumerateZsubTestZassertRaisesRegexr   )r   Ztestsr   rl   r   )ri   r   test_exception_message   s$    









zMiscTest.test_exception_messageN)	r   r   r   rW   r_   r   Z
no_tracingrh   rn   r   r   r   r   rS      s   !rS   c               @   s   e Zd Zdd ZdS )DictTestc             C   s   dd l }i }x,tdD ] }|dd ||dd < qW t| }|| i }x|D ]\}}|||< qZW | }|d ||< | || | || | || | ||k x.dD ]&}	x t	|	 D ]}
| 
t|
|| qW qW d S )Nr   2   d   y              ?g      ?)r,   r-   r0   r1   )randomr;   Z	randrangerC   itemsZshufflecopyr:   r<   r3   r4   r   )r   rr   Zimag1ar   rs   Zimag1bkr   Zimag2r6   r8   r   r   r   
test_dicts  s$     

zDictTest.test_dictsN)r   r   r   rv   r   r   r   r   ro     s   ro   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 )Nrj   FT)assertIs)r   r   yr   r   r   test_coverage4  s    zListTest.test_coveragec                sX   G dd dt  G  fddd}| g}| g}x td D ]}|  ||| q<W d S )Nc               @   s   e Zd ZdS )z#ListTest.test_badentry.<locals>.ExcN)r   r   r   r   r   r   r   rX   H  s   rX   c                   s   e Zd Z fddZdS )z#ListTest.test_badentry.<locals>.Badc                s    d S )Nr   )r   r	   )rX   r   r   r   K  s    z*ListTest.test_badentry.<locals>.Bad.__eq__N)r   r   r   r   r   )rX   r   r   rY   J  s   rY   r.   )r\   r3   r4   )r   rY   r   ry   r8   r   )rX   r   test_badentryE  s    zListTest.test_badentryc             C   sF   G dd d}| g}| g}x"t d D ]}| |||d q(W 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   r
   X  s    z,ListTest.test_goodentry.<locals>.Good.__lt__N)r   r   r   r
   r   r   r   r   GoodW  s   r|   r,   T)r3   rx   )r   r|   r   ry   r8   r   r   r   test_goodentryT  s
    zListTest.test_goodentryN)r   r   r   rz   r{   r}   r   r   r   r   rw   2  s   rw   __main__)Zunittestrl   r   r[   r   r   r,   r
   r-   r   r.   r   r/   r   r0   r   r1   r   r3   ZTestCaser2   rH   rS   ro   rw   r   mainr   r   r   r   <module>   s"   3*5Z0
