o
    GXhE                     @   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rHe   dS 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absZinitc                    s    fdd}|S )Nc                     s   t  j| f  | i |S N)callLstappend__name__)argskwargsf 9/opt/python-3.10.19/usr/lib/python3.10/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 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w 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                   @      e Zd ZdS )z,ClassTests.testListAndDictOps.<locals>.EmptyNr   
__module____qualname__r   r   r   r    Empty  s    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&   rJ   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hexrI   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strrI   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      dS )NZSomeValr   r&   r   r   r   r    __getattr__     z;ClassTests.testGetSetAndDel.<locals>.ExtraTests.__getattr__c                 W      d S r   r   ru   r   r   r    __setattr__  rw   z;ClassTests.testGetSetAndDel.<locals>.ExtraTests.__setattr__c                 W   rx   r   r   ru   r   r   r    __delattr__  rw   z;ClassTests.testGetSetAndDel.<locals>.ExtraTests.__delattr__N)r   rN   rO   r"   rv   ry   rz   r   r   r   r    
ExtraTests  s    

r{   rv   spamzspam, spam, spam and hamry   eggsrz   cardinal)r#   r   r|   r)   r}   r~   )r&   r{   rJ   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   rJ   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   rx   r   r   r%   r   r   r    ra        z<ClassTests.testBadTypeReturned.<locals>.BadTypeClass.__int__N)r   rN   rO   ra   rb   __complex__rk   rj   	__bytes____bool__rc   r   r   r   r    BadTypeClass  s    r   c                 S   s   g |  S r   r   r   r   r   r    index     z-ClassTests.testBadTypeReturned.<locals>.index)re   complexrr   rq   bytesbinrf   rg   boolassertRaisesrZ   )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                   @   rL   )z$ClassTests.testHashStuff.<locals>.C0NrM   r   r   r   r    C0      r   c                   @   s   e Zd Zdd ZdS )z$ClassTests.testHashStuff.<locals>.C2c                 S   rt   )Nr,   r   r&   otherr   r   r    rl     s    z+ClassTests.testHashStuff.<locals>.C2.__eq__N)r   rN   rO   rl   r   r   r   r    C2      r   )rp   r   rZ   )r&   r   r   r   r   r    testHashStuff  s   
zClassTests.testHashStuffc                 C   sJ   G dd d}| |_ | }z|  W n
 ty   Y d S w | d d S )Nc                   @   rL   )z%ClassTests.testSFBug532646.<locals>.ANrM   r   r   r   r    A  r   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y2 } zt|dkr(| d|  W Y d }~nd }~ww G  fddd}| | k G  fd	d
d
}z|  W n
 tyZ   Y d S w | d d S )Nc                 S   s   t d)Nbooh)AttributeErrorr%   r   r   r    r     r   zBClassTests.testForExceptionsRaisedInInstanceGetattr2.<locals>.boohc                          e Zd Ze ZdS )z?ClassTests.testForExceptionsRaisedInInstanceGetattr2.<locals>.AN)r   rN   rO   propertyr   r   r   r   r    r     r   r   r   z(attribute error for A().a got masked: %sc                       r   )z?ClassTests.testForExceptionsRaisedInInstanceGetattr2.<locals>.EN)r   rN   rO   r   rl   r   r   r   r    E
  r   r   c                       r   )z?ClassTests.testForExceptionsRaisedInInstanceGetattr2.<locals>.IN)r   rN   rO   r   r*   r   r   r   r    I  r   r   z)attribute error for I.__init__ got masked)r   r   rr   r(   )r&   r   r   r   r   r   r   r    )testForExceptionsRaisedInInstanceGetattr2  s$   
z4ClassTests.testForExceptionsRaisedInInstanceGetattr2c                 C   s   |  t ||k  W d    n1 sw   Y  |  t ||k W d    n1 s-w   Y  |  t ||k W d    n1 sFw   Y  |  t ||k W d    d S 1 s`w   Y  d S r   )r   rZ   )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   rx   r   r   r%   r   r   r    r   (  r   z3ClassTests.testHashComparisonOfMethods.<locals>.A.fc                 S   rx   r   r   r%   r   r   r    g*  r   z3ClassTests.testHashComparisonOfMethods.<locals>.A.gc                 S   rt   )NTr   r   r   r   r    rl   ,  r   z8ClassTests.testHashComparisonOfMethods.<locals>.A.__eq__c                 S   s   t r   )rZ   r%   r   r   r    ri   .  r   z:ClassTests.testHashComparisonOfMethods.<locals>.A.__hash__N)r   rN   rO   r*   r   r   rl   ri   r   r   r   r    r   %  s    r   c                   @   rL   )z1ClassTests.testHashComparisonOfMethods.<locals>.BNrM   r   r   r   r    B0  r   r   r,   )Z
assertTruer   ZassertFalser   r   r   rp   )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    d S 1 sSw   Y  d S )
Nc                   @   rL   )z2ClassTests.testSetattrWrapperNameIntern.<locals>.ANrM   r   r   r   r    r   M  r   r   c                 S   rt   )Nsummar   r   r   r   r    r   P  r   z4ClassTests.testSetattrWrapperNameIntern.<locals>.adds   __add__asciir-   r,   r   )rr   ZassertIsNottypery   r   rz   r   rZ   )r&   r   r   nameZname2r   r   r    testSetattrWrapperNameInternK  s   

"z'ClassTests.testSetattrWrapperNameInternc                 C   sL   G dd d}|  t t|dd  W d    d S 1 sw   Y  d S )Nc                   @   rL   )z.ClassTests.testSetattrNonStringName.<locals>.ANrM   r   r   r   r    r   `  r   r      x)r   rZ   r   ry   )r&   r   r   r   r    testSetattrNonStringName_  s   "z#ClassTests.testSetattrNonStringNamec                 C   sl  G dd d}d}|  td |d W d    n1 sw   Y  |  td ||d W d    n1 s:w   Y  |  t| | d W d    n1 sVw   Y  |  td t|d W d    n1 srw   Y  |  t| t| d W d    n1 sw   Y  G dd d}d}|  t| |d W d    n1 sw   Y  |  t| ||d W d    n1 sw   Y  |  t| t|d W d    n1 sw   Y  G d	d
 d
}d}|  t| | d W d    n	1 sw   Y  |  t| t| d W d    d S 1 s/w   Y  d S )Nc                   @   rL   )z2ClassTests.testConstructorErrorMessages.<locals>.CNrM   r   r   r   r    Cj  r   r   zHC.__init__\(\) takes exactly one argument \(the instance to initialize\)zC\(\) takes no argumentsrU   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                       t  j|i | d S r   r   r*   r&   r   r   r   r   r    r*        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                    r   r   r   r   r   r   r    r*     r   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assertRaisesRegexrZ   r   r*   object)r&   r   Z	error_msgr   r   r   r   r    testConstructorErrorMessagesf  sH   

$z'ClassTests.testConstructorErrorMessagesN)r   rN   rO   r'   r)   r+   rK   r]   rh   rs   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    