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                       sF   e Zd Z	  fddZeZdd ZeZedd Zedd Z	  Z
S )	DummyIntegralc                    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__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+   r0   mathexpZ
from_float)r	   r4   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 )
Nr7   r8         ?g      g      ?g    r9   r:   )r8   r7   )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zerosrA   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   rE         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   rI   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 rQ   r   r   r   r   r   __eq__   rT   z=HashTest.test_hash_normalization.<locals>.HalibutProxy.__eq__N)r   r   r   rS   rU   r   r   r   r   HalibutProxy   s    rV   rR   r   )r    len)r	   rV   r#   r   r   r   test_hash_normalization   s   
z HashTest.test_hash_normalizationN)r   r   r   r%   r&   r6   r=   rC   rF   rO   rX   r   r   r   r   r   &   s    &r   c                   @   rP   )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-1e425000000girH   gQ	r7   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	   r@   r2   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gtrM   rN   )r	   zwvopr   r   r   rC      s$   zComparisonTest.test_complexN)r   r   r   r^   rC   r   r   r   r   rY      s    rY   __main__)Zunittestr0   r;   sysr_   Zdecimalr   r-   Z	fractionsr   r.   	hash_infomodulusrK   r9   rL   r/   r   ZTestCaser   rY   r   mainr   r   r   r   <module>   s     8