a
    Rh8                     @   sf  d dl Z d dlmZmZmZ d dlmZ dd Zdd Zdd	 Z	d
d Z
G dd deZG dd de jZG dd dZdd ZG dd deZG dd deedZG dd deZG dd deZee G dd de jZG dd  d eZG d!d" d"eZG d#d$ d$eZG d%d& d&eZG d'd( d(eZG d)d* d*ZG d+d, d,e jZed-krbe   dS ).    N)eqlene)ABCMetac                 C   s   | r||  |  } }q |S N )abr   r   7/opt/python-3.9.24/usr/lib/python3.9/test/test_binop.pygcd   s    r   c                 C   s
   t | tS r   )
isinstanceintxr   r   r
   isint   s    r   c                 C   s$   t ttfD ]}t| |r
 dS q
dS )N   r   )r   floatcomplexr   )r   Tr   r   r
   isnum   s    
r   c                 C   s
   t | tS r   )r   Ratr   r   r   r
   isRat   s    r   c                   @   s   e Zd ZddgZd.ddZdd Zeed	Zd
d Zeed	Z	dd Z
dd Zdd Zdd Zdd ZeZdd Zdd Zdd Ze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 )/r   	_Rat__num	_Rat__denr   r   c                 C   sb   t |std| t |s(td| |dkr8tdt||}t|| | _t|| | _d S )NzRat numerator must be int (%r)z Rat denominator must be int (%r)r   zzero denominator)r   	TypeErrorZeroDivisionErrorr   r   r   r   )selfnumdengr   r   r
   __init__"   s    
zRat.__init__c                 C   s   | j S r   )r   r   r   r   r
   _get_num1   s    zRat._get_numNc                 C   s   | j S r   )r   r!   r   r   r
   _get_den6   s    zRat._get_denc                 C   s   d| j | jf S )NzRat(%d, %d)r   r   r!   r   r   r
   __repr__;   s    zRat.__repr__c                 C   s   t t| S r   )strr   r!   r   r   r
   __str__?   s    zRat.__str__c                 C   s   | j d | j S )N      ?r$   r!   r   r   r
   	__float__C   s    zRat.__float__c                 C   sN   | j dkr:zt| jW S  ty8   tdt|  Y n0 tdt|  d S )Nr   z%s too large to convert to intzcan't convert %s to int)r   r   r   OverflowErrorrepr
ValueErrorr!   r   r   r
   __int__G   s    
zRat.__int__c                 C   sV   t |rt|}t|r>t| j|j |j| j  | j|j S t|rRt| | S tS r   r   r   r   r   r   r   r   NotImplementedr   otherr   r   r
   __add__Q   s    
zRat.__add__c                 C   sV   t |rt|}t|r>t| j|j |j| j  | j|j S t|rRt| | S tS r   r.   r0   r   r   r
   __sub__^   s    
zRat.__sub__c                 C   sV   t |rt|}t|r>t|j| j | j|j  | j|j S t|rR|t|  S tS r   r.   r0   r   r   r
   __rsub__i   s    
zRat.__rsub__c                 C   sT   t |r"t| j|j | j|j S t|r<t| j| | jS t|rPt| | S tS r   r   r   r   r   r   r   r   r/   r0   r   r   r
   __mul__t   s    zRat.__mul__c                 C   sT   t |r"t| j|j | j|j S t|r<t| j| j| S t|rPt| | S tS r   r5   r0   r   r   r
   __truediv__   s    zRat.__truediv__c                 C   sT   t |r"t|j| j |j| j S t|r<t|| j | jS t|rP|t|  S tS r   r5   r0   r   r   r
   __rtruediv__   s    zRat.__rtruediv__c                 C   s2   t |rt|}nt|stS | | }|j|j S r   )r   r   r   r/   r   r   r   r1   r   r   r   r
   __floordiv__   s    
zRat.__floordiv__c                 C   s   ||  }|j |j S r   r$   r9   r   r   r
   __rfloordiv__   s    zRat.__rfloordiv__c                 C   s6   t |rt|}nt|stS | | }|| ||  fS r   )r   r   r   r/   r9   r   r   r
   
__divmod__   s    
zRat.__divmod__c                 C   s(   t |rt|}nt|stS t|| S r   )r   r   r   r/   divmodr0   r   r   r
   __rdivmod__   s
    
zRat.__rdivmod__c                 C   s   t | |d S Nr   r=   r0   r   r   r
   __mod__   s    zRat.__mod__c                 C   s   t || d S r?   r@   r0   r   r   r
   __rmod__   s    zRat.__rmod__c                 C   sT   t |r| jdko| j|kS t|r<| j|jko:| j|jkS t|rPt| |kS tS r?   )r   r   r   r   r   r   r/   r0   r   r   r
   __eq__   s    z
Rat.__eq__)r   r   )__name__
__module____qualname__	__slots__r    r"   propertyr   r#   r   r%   r'   r)   r-   r2   __radd__r3   r4   r6   __rmul__r7   r8   r:   r;   r<   r>   rA   rB   rC   r   r   r   r
   r      s2   






		r   c                   @   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 )RatTestCasec                 C   s   |  tddd |  tddd |  tddd |  tddd |  td	dd
 |  tdd
d |  td	d
d
 tddD ]l}tddD ]\}| t||dk | t| |dk  | t|| dk | t| | dk  qqd S )N
                  r   d      r   )assertEqualr   range
assertTrue)r   ijr   r   r
   test_gcd   s    zRatTestCase.test_gcdc              	   C   sj  t dd}| |jd | |jd t dd}| |jd | |jd t dd}| |jd | |jd t dd}| |jd | |jd t d}| |jd | |jd	 zt d	d
}W n ty   Y n0 | d ddddg i d t tf	D ]f}zt |}W n ty"   Y n0 | d|  zt d	|}W n tyT   Y q0 | d|  qd S )NrL   rO   rN      irT   rS      r   r   z(Rat(1, 0) didn't raise ZeroDivisionError0g        y                r   zRat(%r) didn't raise TypeErrorz!Rat(1, %r) didn't raise TypeError)r   rV   r   r   r   Zfailunittestr   )r   r   Zbadr   r   r
   test_constructor   s>    




zRatTestCase.test_constructorc                 C   s   |  tddtdd d |  tddd tdd |  dtdd tdd |  dtdd d |  tddd d d S )NrN   r\   r   rP   r(         ?rV   r   r!   r   r   r
   test_add   s
    zRatTestCase.test_addc                 C   s   |  tddtdd tdd |  tddd tdd |  dtdd tdd |  tddd d	 |  dtdd d	 d S )
Nr]   rN   rP      rL   r   r\   r(         ?rb   r!   r   r   r
   test_sub  s
    "zRatTestCase.test_subc                 C   s~   |  tddtdd tdd |  tddd d |  dtdd d |  tddd d |  dtdd d d S )	NrN   r\   rP   r]   rL   rd   re   r(   rb   r!   r   r   r
   test_mul	  s
    "zRatTestCase.test_mulc                 C   s   |  tddtdd tdd |  tddd tdd |  dtd tdd |  dtd	d d
 |  td	dd d
 d S )NrL   r\   rP   r]      	   rN         @r   ra   rb   r!   r   r   r
   test_div  s
    "zRatTestCase.test_divc                 C   s`   |  tdtd d |  tddtdd d |  tdd d |  dtd d d S )NrL      rN   r\   rb   r!   r   r   r
   test_floordiv  s    zRatTestCase.test_floordivc                 C   sZ   |  tdtdd |  tdd |  dtd |  tdd |  dtd d S )NrL   rU   rN   g      $@rb   r!   r   r   r
   test_eq  s
    zRatTestCase.test_eqc                 C   s   |  tddtdd tdd |  tddd tdd |  dtd tdd |  dtd	d d
 |  td	dd d
 |  tdd d S )NrL   r\   rP   r]   rh   ri   rN   rj   r   ra   z1/2re   )rV   r   evalr!   r   r   r
   test_true_div$  s    "zRatTestCase.test_true_divN)rD   rE   rF   r[   r`   rc   rf   rg   rk   rm   rn   rp   r   r   r   r
   rK      s   $rK   c                   @   s   e Zd Zdd Zdd ZdS )OperationLoggerc                 C   s
   || _ d S r   logger)r   rs   r   r   r
   r    1  s    zOperationLogger.__init__c                 G   s   | j |  d S r   rr   )r   argsr   r   r
   log_operation3  s    zOperationLogger.log_operationN)rD   rE   rF   r    ru   r   r   r   r
   rq   /  s   rq   c                 G   sF   g }g }|D ]}| ||j  qz| |  W n ty@   Y n0 |S r   )appendr   )opclasseslogZ	instancescr   r   r
   op_sequence6  s    r{   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )Ac                 C   s   |  d tS )NA.__eq__ru   r/   r0   r   r   r
   rC   E  s    
r}   c                 C   s   |  d tS )NA.__le__r~   r0   r   r   r
   __le__H  s    
r   c                 C   s   |  d tS )NA.__ge__r~   r0   r   r   r
   __ge__K  s    
r   NrD   rE   rF   rC   r   r   r   r   r   r
   r|   D  s   r|   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )Bc                 C   s   |  d tS )NB.__eq__r~   r0   r   r   r
   rC   P  s    
r   c                 C   s   |  d tS )NB.__le__r~   r0   r   r   r
   r   S  s    
r   c                 C   s   |  d tS )NB.__ge__r~   r0   r   r   r
   r   V  s    
r   Nr   r   r   r   r
   r   O  s   r   )	metaclassc                   @   s$   e Zd Zdd Zdd Zdd ZdS )Cc                 C   s   |  d tS )NC.__eq__r~   r0   r   r   r
   rC   [  s    
r   c                 C   s   |  d tS )NC.__le__r~   r0   r   r   r
   r   ^  s    
r   c                 C   s   |  d tS )NC.__ge__r~   r0   r   r   r
   r   a  s    
r   Nr   r   r   r   r
   r   Z  s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )Vc                 C   s   |  d tS )NV.__eq__r~   r0   r   r   r
   rC   g  s    
r   c                 C   s   |  d tS )NV.__le__r~   r0   r   r   r
   r   j  s    
r   c                 C   s   |  d tS )NV.__ge__r~   r0   r   r   r
   r   m  s    
r   Nr   r   r   r   r
   r   e  s   r   c                   @   s   e Zd Zdd ZdS )OperationOrderTestsc                 C   s4  |  ttttddg |  ttttddg |  ttttddg |  ttttddg |  ttttddg |  ttttddg |  ttttddg |  ttttddg |  ttttddg |  ttttd	dg | tt	t |  tttt	dd
g |  tttt	ddg d S )Nr}   r   r   r   r   r   r   r   r   r   r   )
rV   r{   r   r|   r   r   r   rX   
issubclassr   r!   r   r   r
   test_comparison_orderst  s    z*OperationOrderTests.test_comparison_ordersN)rD   rE   rF   r   r   r   r   r
   r   s  s   r   c                   @   s   e Zd Zdd ZdS )SupEqc                 C   s   dS NTr   r0   r   r   r
   rC     s    zSupEq.__eq__NrD   rE   rF   rC   r   r   r   r
   r     s   r   c                   @   s   e Zd ZdZdS )SNr   r   r   r   r
   r     s   r   c                   @   s   e Zd ZdS )FN)rD   rE   rF   r   r   r   r
   r     s   r   c                   @   s   e Zd ZdZdS )XNr   r   r   r   r
   r     s   r   c                   @   s   e Zd ZdZdS )SNN)rD   rE   rF   __ne__r   r   r   r
   r     s   r   c                   @   s   e Zd Zdd ZdZdS )XNc                 C   s   dS r   r   r0   r   r   r
   rC     s    z	XN.__eq__N)rD   rE   rF   rC   r   r   r   r   r
   r     s   r   c                   @   s   e Zd Zdd Zdd ZdS )FallbackBlockingTestsc                 C   s   t  t t t f\}}}}| || | || | || | || | tt|| | tt|| | tt|| d S r   )r   r   r   r   rV   assertRaisesr   r   )r   efsr   r   r   r
   test_fallback_rmethod_blocking  s    z4FallbackBlockingTests.test_fallback_rmethod_blockingc                 C   sf   t  t t   }}}| ||k | tt|| | tt|| | ||k | tt|| d S r   )r   r   r   ZassertFalser   r   r   )r   r   ZsnZxnr   r   r
   test_fallback_ne_blocking  s    z/FallbackBlockingTests.test_fallback_ne_blockingN)rD   rE   rF   r   r   r   r   r   r
   r     s   r   __main__) r_   operatorr   r   r   abcr   r   r   r   r   objectr   ZTestCaserK   rq   r{   r|   r   r   r   registerr   r   r   r   r   r   r   r   rD   mainr   r   r   r
   <module>   s4    *j

