o
    HXh                     @   s   d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlm	Z
 ejjZejjZG dd deZG dd de jZG dd	 d	e jZed
krLe   dS dS )    N)Decimal)Fractionc                       sH   e Zd ZdZ fddZeZdd ZeZedd Z	edd	 Z
  ZS )
DummyIntegralzADummy Integral class to test conversion of the Rational to float.c                    s   t t |S N)r   super__mul__selfother	__class__ A/opt/python-3.10.19/usr/lib/python3.10/test/test_numeric_tower.pyr      s   zDummyIntegral.__mul__c                 C   s   t S r   )NotImplementedr   r   r   r   __truediv__   s   zDummyIntegral.__truediv__c                 C   s   t | S r   r   r	   r   r   r   	numerator      zDummyIntegral.numeratorc                 C      t dS )N   r   r   r   r   r   denominator!   r   zDummyIntegral.denominator)__name__
__module____qualname____doc__r   __rmul__r   __rtruediv__propertyr   r   __classcell__r   r   r   r   r      s    
r   c                   @   sL   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S )HashTestc                 C   s.   |  t|t|d|| |  || d S )Nz&got different hashes for {!r} and {!r})assertEqualhashformat)r	   xyr   r   r   check_equal_hash'   s   
zHashTest.check_equal_hashc                 C   s   |  dd |  dd d S )NFr   Tr   )r&   r   r   r   r   
test_bools-   s   zHashTest.test_boolsc                 C   s  t ddD ]}| |t| | |t| | |t| qt dD ]}d| d }|tt|krF| |t| | | t|  | |t| | |t| | | t|  | | t|  d| }| |t| | | t|  | |t| | |t| | | t|  | | t|  q$t dD ]2}td}td|  d| }| |t| | |t| |tt|kr| |t| qd S )Ni  d      r   i,  
   )ranger&   floatDFintrandom	randrange)r	   in_er   r   r   test_integers1   s:   
zHashTest.test_integersc                 C   s   |  dd |  dtd |  dtd |  dtd |  dtd |  tdtd |  tdtd tdD ]#}t tt d d	  }|  |t| |  |t| q>d S )
N               r   z-0.0inf-infr(   g      i@g      Y@)	r&   r.   r/   r-   r,   r1   mathexpZ
from_float)r	   r5   r$   r   r   r   test_binary_floatsW   s   zHashTest.test_binary_floatsc              	   C   sF   ddddddt dt dg}d	D ]}|D ]}| |t|| qqd S )
Nr8   r9         ?g      g      ?g    r:   r;   )r9   r8   )r-   r&   complex)r	   test_valueszerovaluer   r   r   test_complexl   s   zHashTest.test_complexc                 C   s   g d}|D ]}|  t|td q|  tdtd |  tdtd |  tdtd |  tdtd |  td	td
 |  tdtd
 |  tdtd
 |  tdtd
 |  tdtd
 |  tdtd
 d S )N)0z-0z0.0z-0.0e10z000e-10r   z1.00r   z1.00000z-1.00z-1.00000Z123e2i0  Z1230e1Z12300z12300.0z12300.00z	12300.000)r&   r.   )r	   ZzerosrB   r   r   r   test_decimalsw   s   zHashTest.test_decimalsc                    s   |  ttdtt |  ttddt t  |  ttdt dd |  ttt dd ttdtddd | t fd	d
 |  t d d S )Nr   rF         r   r*   F)Z
_normalizec                      s    j  j S r   )r   r   r   r$   r   r   <lambda>   s    z)HashTest.test_fractions.<locals>.<lambda>g      ?)	r!   r"   r/   _PyHASH_MODULUS_PyHASH_INFr   assertRaises	TypeErrorr-   r   r   rJ   r   test_fractions   s   zHashTest.test_fractionsc                 C   s,   G dd d}d| h}|  t|d d S )Nc                   @      e Zd Zdd Zdd ZdS )z6HashTest.test_hash_normalization.<locals>.HalibutProxyc                 S   r   Nhalibut)r"   r   r   r   r   __hash__      z?HashTest.test_hash_normalization.<locals>.HalibutProxy.__hash__c                 S   s   |dkS rR   r   r   r   r   r   __eq__   rU   z=HashTest.test_hash_normalization.<locals>.HalibutProxy.__eq__N)r   r   r   rT   rV   r   r   r   r   HalibutProxy   s    rW   rS   r   )r!   len)r	   rW   r$   r   r   r   test_hash_normalization   s   
z HashTest.test_hash_normalizationN)r   r   r   r&   r'   r7   r>   rD   rG   rP   rY   r   r   r   r   r    &   s    &r    c                   @   rQ   )ComparisonTestc                 C   s   t dtddtdddddd	d
tdtdt dtddtdtddtdddtdg}t|D ]'\}}||d d  D ]}| || | || | || | || q>q2d S )Nr;   z-1e425000000girI   gQ	r8   g      Tz1.2z1.3z1.4i_5 i z1.414213562373095048801688724iC i; i:iJ gvܼ5JiZinfinityr   )r-   r.   r/   	enumerateZ
assertLessZassertLessEqualZassertGreaterZassertGreaterEqual)r	   rA   r3   firstsecondr   r   r   test_mixed_comparisons   s6   z%ComparisonTest.test_mixed_comparisonsc                 C   s  d}d}ddt dtdtdfD ]}| || | || qddt dtdtdfD ]}| || | || | || | || q-ddt dtdtdddt dtdtd|fD ]}tjtjtjtj	fD ]}| 
t||| | 
t||| qmqad S )Ny      ?        yQ	@r   r?   r*   g       @)r/   r.   r@   r!   ZassertNotEqualoperatorleltgegtrN   rO   )r	   zwvopr   r   r   rD      s$   zComparisonTest.test_complexN)r   r   r   r_   rD   r   r   r   r   rZ      s    rZ   __main__)Zunittestr1   r<   sysr`   decimalr   r.   Z	fractionsr   r/   	hash_infomodulusrL   r:   rM   r0   r   ZTestCaser    rZ   r   mainr   r   r   r   <module>   s     8