a
    zeE                     @   s   d dl Z g dZg Zdd ZdZdZi Zeee e eD ]Z	eee	 e e q:e
defeZ[[[	[G dd	 d	e jZed
kre   dS )    N)$addZraddsubZrsubmulZrmulmatmulZrmatmultruedivZrtruedivfloordivZ	rfloordivmodZrmoddivmodZrdivmodpowZrpowrshiftZrrshiftlshiftZrlshiftandZrandorZrorxorZrxorcontainsgetitemsetitemdelitemnegposabsinitc                    s    fdd}|S )Nc                     s   t  j| f  | i |S N)callLstappend__name__)argskwargsf %/usr/lib/python3.9/test/test_class.pytrackC   s    ztrackCall.<locals>.trackr    )r   r"   r    r   r!   	trackCallB   s    r#   a  
@trackCall
def __hash__(self, *args):
    return hash(id(self))

@trackCall
def __str__(self, *args):
    return "AllTests"

@trackCall
def __repr__(self, *args):
    return "AllTests"

@trackCall
def __int__(self, *args):
    return 1

@trackCall
def __index__(self, *args):
    return 1

@trackCall
def __float__(self, *args):
    return 1.0

@trackCall
def __eq__(self, *args):
    return True

@trackCall
def __ne__(self, *args):
    return False

@trackCall
def __lt__(self, *args):
    return False

@trackCall
def __le__(self, *args):
    return True

@trackCall
def __gt__(self, *args):
    return False

@trackCall
def __ge__(self, *args):
    return True
z-@trackCall
def __%s__(self, *args):
    pass
AllTestsc                   @   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d Zdd  Zd!d" Zd#d$ Zd%S )&
ClassTestsc                 C   s   g t d d < d S r   )r   selfr    r    r!   setUp   s    zClassTests.setUpc                 C   s*   t d d  }||kr&| d||f  d S )Nz=Expected call list:
  %s
does not match actual call list
  %s)r   fail)r'   Zexpected_callsZactualCallListr    r    r!   assertCallStack   s
    zClassTests.assertCallStackc                 C   s   t  }| d|ffg d S )N__init__)r$   r*   )r'   Zfoor    r    r!   testInit   s    zClassTests.testInitc                 C   sn  t  }g td d < |d  | d|dffg g td d < d|  | d|dffg g td d < |d  | d|dffg g td d < d|  | d|dffg g td d < |d  | d|dffg g td d < d|  | d|dffg g td d < |d  | d|dffg g td d < d|  | d	|dffg g td d < |d  | d
|dffg g td d < d|  | d|dffg g td d < |d  | d|dffg g td d < d|  | d|dffg g td d < |d  | d|dffg g td d < d|  | d|dffg g td d < t|d | d|dffg g td d < td| | d|dffg g td d < |d  | d|dffg g td d < d|  | d|dffg g td d < |d?  | d|dffg g td d < d|?  | d|dffg g td d < |d>  | d|dffg g td d < d|>  | d|dffg g td d < |d@  | d|dffg g td d < d|@  | d|dffg g td d < |dB  | d|dffg g td d < d|B  | d|dffg g td d < |dA  | d|dffg g td d < d|A  | d|dffg d S )N   __add____radd____sub____rsub____mul____rmul__
__matmul____rmatmul____truediv____rtruediv____floordiv____rfloordiv____mod____rmod__
__divmod____rdivmod____pow____rpow__
__rshift____rrshift__
__lshift____rlshift____and____rand____or____ror____xor____rxor__)r$   r   r*   r	   r'   testmer    r    r!   testBinaryOps   s    

zClassTests.testBinaryOpsc              
   C   s  t  }G dd d}zd| v  | d W n ty>   Y n0 g td d < d|v  | d|dffg g td d < |d  | d|dffg g td d < d|d< | d|ddffg g td d < |d= | d|dffg g td d < |d d	  | d|td d	ffg g td d < d
|d d	< | d|td d	d
ffg g td d < |d d	= | d|td d	ffg g td d < |ddd  | d|tdddffg g td d < d|ddd< | d|tddddffg g td d < |ddd= | d|tdddffg g td d < |d d	dd dddf  | d|td d	d ttd dd ddfffg g td d < d|d d	dd dddf< | d|td d	d ttd dd ddfdffg g td d < |d d	dd dddf= | d|td d	d ttd dd ddfffg d S )Nc                   @   s   e Zd ZdS )z,ClassTests.testListAndDictOps.<locals>.EmptyNr   
__module____qualname__r    r    r    r!   Empty      rP   r-   z$failed, should have raised TypeError__contains____getitem____setitem____delitem__*   z
The Answer   i   
   zA lot.   d   ZStrange)r$   r)   	TypeErrorr   r*   sliceEllipsis)r'   rK   rP   r    r    r!   testListAndDictOps  s    







zClassTests.testListAndDictOpsc                 C   s  t  }g td d < |  | d|ffg g td d < |
  | d|ffg g td d < t| | d|ffg g td d < t| | d|ffg g td d < t| | d|ffg g td d < t| | d|ffg g td d < t| | d|ffg d S )N__neg____pos____abs____int__	__float__	__index__)r$   r   r*   r   intfloatocthexrJ   r    r    r!   testUnaryOpsX  s,    zClassTests.testUnaryOpsc                 C   s  t  }g td d < t| | d|ffg g td d < t| | d|ffg g td d < t| | d|ffg g td d < |dk | d|dffg g td d < |dk  | d|dffg g td d < |dk | d|dffg g td d < |dk | d|dffg g td d < d|k | dd|ffg g td d < d|k  | dd|ffg g td d < d|k | dd|ffg g td d < d|k | dd|ffg d S )	N__hash____repr____str__r-   __eq____lt____gt____ne__)r$   r   hashr*   reprstrrJ   r    r    r!   testMiscr  sD    zClassTests.testMiscc                 C   s   G dd dt }| }g td d < |j | d|dffg g td d < d|_| d|ddffg g td d < |`| d|d	ffg d S )
Nc                   @   s0   e Zd Zedd Zedd Zedd ZdS )z/ClassTests.testGetSetAndDel.<locals>.ExtraTestsc                 W   s   dS )NZSomeValr    r'   r   r    r    r!   __getattr__  s    z;ClassTests.testGetSetAndDel.<locals>.ExtraTests.__getattr__c                 W   s   d S r   r    ru   r    r    r!   __setattr__  s    z;ClassTests.testGetSetAndDel.<locals>.ExtraTests.__setattr__c                 W   s   d S r   r    ru   r    r    r!   __delattr__  s    z;ClassTests.testGetSetAndDel.<locals>.ExtraTests.__delattr__N)r   rN   rO   r#   rv   rw   rx   r    r    r    r!   
ExtraTests  s   

ry   rv   spamzspam, spam, spam and hamrw   eggsrx   cardinal)r$   r   rz   r*   r{   r|   )r'   ry   rK   r    r    r!   testGetSetAndDel  s    

zClassTests.testGetSetAndDelc                    s@   g  G  fddd}| }~dd l }|  | dg  d S )Nc                       s   e Zd Z fddZdS )z#ClassTests.testDel.<locals>.DelTestc                    s     d d S )Ncrab people, crab people)r   r&   xr    r!   __del__  s    z+ClassTests.testDel.<locals>.DelTest.__del__N)r   rN   rO   r   r    r   r    r!   DelTest  s   r   r   r~   )gcZcollectassertEqual)r'   r   rK   r   r    r   r!   testDel  s    zClassTests.testDelc              
   C   sH   G dd d}dd }t tttttttt|f
D ]}| 	t
||  q.d S )Nc                   @   s0   e Zd Zdd ZeZeZeZeZeZeZ	eZ
dS )z4ClassTests.testBadTypeReturned.<locals>.BadTypeClassc                 S   s   d S r   r    r&   r    r    r!   rb     s    z<ClassTests.testBadTypeReturned.<locals>.BadTypeClass.__int__N)r   rN   rO   rb   rc   __complex__rl   rk   	__bytes____bool__rd   r    r    r    r!   BadTypeClass  s   r   c                 S   s   g |  S r   r    r   r    r    r!   index  s    z-ClassTests.testBadTypeReturned.<locals>.index)rf   complexrs   rr   bytesbinrg   rh   boolassertRaisesr[   )r'   r   r   r   r    r    r!   testBadTypeReturned  s    
zClassTests.testBadTypeReturnedc                 C   s:   G dd d}t |  G dd d}| tt |  d S )Nc                   @   s   e Zd ZdS )z$ClassTests.testHashStuff.<locals>.C0NrM   r    r    r    r!   C0  s   r   c                   @   s   e Zd Zdd ZdS )z$ClassTests.testHashStuff.<locals>.C2c                 S   s   dS )Nr-   r    r'   otherr    r    r!   rm     rQ   z+ClassTests.testHashStuff.<locals>.C2.__eq__N)r   rN   rO   rm   r    r    r    r!   C2  s   r   )rq   r   r[   )r'   r   r   r    r    r!   testHashStuff  s    
zClassTests.testHashStuffc                 C   sH   G dd d}| |_ | }z
|  W n ty8   Y n0 | d d S )Nc                   @   s   e Zd ZdS )z%ClassTests.testSFBug532646.<locals>.ANrM   r    r    r    r!   A  s   r   zFailed to raise RecursionError)__call__RecursionErrorr)   )r'   r   ar    r    r!   testSFBug532646  s    
zClassTests.testSFBug532646c              
      s   dd  G  fddd}z| j  W n> tyd } z&t|dkrP| d|  W Y d }~n
d }~0 0 G  fddd}| | k G  fd	d
d
}z
|  W n ty   Y n0 | d d S )Nc                 S   s   t dd S )Nbooh)AttributeErrorr&   r    r    r!   r     s    zBClassTests.testForExceptionsRaisedInInstanceGetattr2.<locals>.boohc                       s   e Zd Ze ZdS )z?ClassTests.testForExceptionsRaisedInInstanceGetattr2.<locals>.AN)r   rN   rO   propertyr   r    r   r    r!   r     s   r   r   z(attribute error for A().a got masked: %sc                       s   e Zd Ze ZdS )z?ClassTests.testForExceptionsRaisedInInstanceGetattr2.<locals>.EN)r   rN   rO   r   rm   r    r   r    r!   E
  s   r   c                       s   e Zd Ze ZdS )z?ClassTests.testForExceptionsRaisedInInstanceGetattr2.<locals>.IN)r   rN   rO   r   r+   r    r   r    r!   I  s   r   z)attribute error for I.__init__ got masked)r   r   rs   r)   )r'   r   r   r   r   r    r   r!   )testForExceptionsRaisedInInstanceGetattr2  s    $
z4ClassTests.testForExceptionsRaisedInInstanceGetattr2c                 C   s   |  t ||k  W d    n1 s(0    Y  |  t ||k W d    n1 sZ0    Y  |  t ||k W d    n1 s0    Y  |  t ||k W d    n1 s0    Y  d S r   )r   r[   )r'   r   br    r    r!   assertNotOrderable  s    &&&zClassTests.assertNotOrderablec                 C   sv  G dd d}G dd d|}|d}|d}|  |j|jk | |j|jk | |j|jk |  |j|jk | |j|jk |  |j|jk | |j|j | t|jt|j | |j|jk |  |j|jk | |j|jk |  |j|jk |  |j|jk | |j|jk | |j|j | t|jt|j |t|jdA }t|j d S )Nc                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )z1ClassTests.testHashComparisonOfMethods.<locals>.Ac                 S   s
   || _ d S r   r   )r'   r   r    r    r!   r+   &  s    z:ClassTests.testHashComparisonOfMethods.<locals>.A.__init__c                 S   s   d S r   r    r&   r    r    r!   r   (  s    z3ClassTests.testHashComparisonOfMethods.<locals>.A.fc                 S   s   d S r   r    r&   r    r    r!   g*  s    z3ClassTests.testHashComparisonOfMethods.<locals>.A.gc                 S   s   dS )NTr    r   r    r    r!   rm   ,  s    z8ClassTests.testHashComparisonOfMethods.<locals>.A.__eq__c                 S   s   t d S r   )r[   r&   r    r    r!   rj   .  s    z:ClassTests.testHashComparisonOfMethods.<locals>.A.__hash__N)r   rN   rO   r+   r   r   rm   rj   r    r    r    r!   r   %  s
   r   c                   @   s   e Zd ZdS )z1ClassTests.testHashComparisonOfMethods.<locals>.BNrM   r    r    r    r!   B0  s   r   r-   )Z
assertTruer   ZassertFalser   r   r   rq   )r'   r   r   Za1Za2r   r    r    r!   testHashComparisonOfMethods#  s,    z&ClassTests.testHashComparisonOfMethodsc                 C   s   G dd d}dd }t dd}| |d t||| | | d d	 t dd}| |d | || t|| | t | d  W d    n1 s0    Y  d S )
Nc                   @   s   e Zd ZdS )z2ClassTests.testSetattrWrapperNameIntern.<locals>.ANrM   r    r    r    r!   r   M  s   r   c                 S   s   dS )Nsummar    r   r    r    r!   r   P  s    z4ClassTests.testSetattrWrapperNameIntern.<locals>.adds   __add__asciir.   r-   r   )rs   ZassertIsNottyperw   r   rx   r   r[   )r'   r   r   nameZname2r    r    r!   testSetattrWrapperNameInternK  s    

z'ClassTests.testSetattrWrapperNameInternc                 C   sJ   G dd d}|  t t|dd  W d    n1 s<0    Y  d S )Nc                   @   s   e Zd ZdS )z.ClassTests.testSetattrNonStringName.<locals>.ANrM   r    r    r    r!   r   `  s   r      x)r   r[   r   rw   )r'   r   r    r    r!   testSetattrNonStringName_  s    z#ClassTests.testSetattrNonStringNamec                 C   sr  G dd d}d}|  td |d W d    n1 s<0    Y  |  td ||d W d    n1 st0    Y  |  t| | d W d    n1 s0    Y  |  td t|d W d    n1 s0    Y  |  t| t| d W d    n1 s 0    Y  G dd d}d}|  t| |d W d    n1 sh0    Y  |  t| ||d W d    n1 s0    Y  |  t| t|d W d    n1 s0    Y  G d	d
 d
}d}|  t| | d W d    n1 s(0    Y  |  t| t| d W d    n1 sd0    Y  d S )Nc                   @   s   e Zd ZdS )z2ClassTests.testConstructorErrorMessages.<locals>.CNrM   r    r    r    r!   Cj  s   r   zHC.__init__\(\) takes exactly one argument \(the instance to initialize\)zC\(\) takes no argumentsrV   c                       s(   e Zd Z fddZ fddZ  ZS )z2ClassTests.testConstructorErrorMessages.<locals>.Dc                    s   t  j| g|R i | d S r   )super__new__)clsr   r   	__class__r    r!   r     s    z:ClassTests.testConstructorErrorMessages.<locals>.D.__new__c                    s   t  j|i | d S r   r   r+   r'   r   r   r   r    r!   r+     s    z;ClassTests.testConstructorErrorMessages.<locals>.D.__init__)r   rN   rO   r   r+   __classcell__r    r    r   r!   D  s   r   zIobject.__new__\(\) takes exactly one argument \(the type to instantiate\)c                       s   e Zd Z fddZ  ZS )z2ClassTests.testConstructorErrorMessages.<locals>.Ec                    s   t  j|i | d S r   r   r   r   r    r!   r+     s    z;ClassTests.testConstructorErrorMessages.<locals>.E.__init__)r   rN   rO   r+   r   r    r    r   r!   r     s   r   zMobject.__init__\(\) takes exactly one argument \(the instance to initialize\))ZassertRaisesRegexr[   r   r+   object)r'   r   Z	error_msgr   r   r    r    r!   testConstructorErrorMessagesf  s4    &***.(,,,z'ClassTests.testConstructorErrorMessagesN)r   rN   rO   r(   r*   r,   rL   r^   ri   rt   r}   r   r   r   r   r   r   r   r   r   r   r    r    r    r!   r%      s$   wI0
(r%   __main__)ZunittestZ	testmethsr   r#   ZstatictestsZmethod_templatedexecglobalsmethodr   r   r$   ZTestCaser%   r   mainr    r    r    r!   <module>   s$   ;4    