
    daf                     4   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e      Z G d de j$                        Z G d d	e j$                        Zed
k(  r e j,                          yy)    N)Decimal)Fractionc                   P     e Zd ZdZ fdZeZd ZeZed        Z	ed        Z
 xZS )DummyIntegralzADummy Integral class to test conversion of the Rational to float.c                 4    t        t        | 	  |            S N)r   super__mul__)selfother	__class__s     2/root/Python-3.12.4/Lib/test/test_numeric_tower.pyr
   zDummyIntegral.__mul__   s    UW_U344    c                     t         S r   )NotImplementedr   r   s     r   __truediv__zDummyIntegral.__truediv__   s    r   c                     t        |       S r   r   r   s    r   	numeratorzDummyIntegral.numerator   s    T""r   c                     t        d      S )N   r   r   s    r   denominatorzDummyIntegral.denominator!   s    Qr   )__name__
__module____qualname____doc__r
   __rmul__r   __rtruediv__propertyr   r   __classcell__)r   s   @r   r   r      s@    K5HL# #    r   r   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
HashTestc                     | j                  t        |      t        |      dj                  ||             | j                  ||       y )Nz&got different hashes for {!r} and {!r})assertEqualhashformat)r   xys      r   check_equal_hashzHashTest.check_equal_hash'   s=    a$q'AHHAN	PAr   c                 L    | j                  dd       | j                  dd       y )NFr   Tr   )r+   r   s    r   
test_boolszHashTest.test_bools-   s"    eQ'dA&r   c                 *   t        dd      D ]S  }| j                  |t        |             | j                  |t        |             | j                  |t	        |             U t        d      D ]w  }d|z  dz
  }|t        t        |            k(  r8| j                  |t        |             | j                  | t        |              | j                  |t        |             | j                  |t	        |             | j                  | t        |              | j                  | t	        |              d|z  }| j                  |t        |             | j                  | t        |              | j                  |t        |             | j                  |t	        |             | j                  | t        |              | j                  | t	        |              z t        d      D ]  }t        j                  d      }t        j                  d|z   d|z        }| j                  |t        |             | j                  |t	        |             |t        t        |            k(  s| j                  |t        |              y )Ni  d      r   i,  
   )ranger+   floatDFintrandom	randrange)r   in_es        r   test_integerszHashTest.test_integers1   s&    ud# 	+A!!!U1X.!!!QqT*!!!QqT*	+ s 	-A1qACaM!%%aq2%%qb58)4!!!QqT*!!!QqT*!!1"ae,!!1"ae,1A!!!U1X.!!1"uQxi0!!!QqT*!!!QqT*!!1"ae,!!1"ae,!	-& t 	3A  %A  "a%Q/A!!!QqT*!!!QqT*CaM!%%aq2	3r   c                    | j                  dd       | j                  dt        d             | j                  dt        d             | j                  dt        d             | j                  dt        d             | j                  t        d      t        d             | j                  t        d      t        d             t	        d      D ]  }t        j
                         t        j                  t        j
                         dz  d	z
        z  }| j                  |t        j                  |             | j                  |t        j                  |              y )
N               r   z-0.0inf-infr/   g      i@g      Y@)	r+   r5   r6   r4   r3   r8   mathexp
from_float)r   r<   r)   s      r   test_binary_floatszHashTest.test_binary_floatsW   s    	c4( 	c1Q4(dAaD)dAfI.c1Q4( 	eElAeH5eFmQvY7t 	6A$((6==?5+@5+H"IIA!!!Q\\!_5!!!Q\\!_5	6r   c           
          ddddddt        d      t        d      g}d	D ]%  }|D ]  }| j                  |t        ||               ' y )
Nr@   rA         ?g      g      ?g    rB   rC   )rA   r@   )r4   r+   complex)r   test_valueszerovalues       r   test_complexzHashTest.test_complexl   s`     D#tWgU|U6]4  	CD$ C%%eWUD-ABC	Cr   c                 2   g d}|D ]&  }| j                  t        |      t        d             ( | j                  t        d      t        d             | j                  t        d      t        d             | j                  t        d      t        d             | j                  t        d      t        d             | j                  t        d	      t        d
             | j                  t        d      t        d
             | j                  t        d      t        d
             | j                  t        d      t        d
             | j                  t        d      t        d
             | j                  t        d      t        d
             y )N)0z-0z0.0z-0.0e10z000e-10r   z1.00r   z1.00000z-1.00z-1.00000123e2i0  1230e112300z12300.0z12300.00z	12300.000)r+   r5   )r   zerosrL   s      r   test_decimalszHashTest.test_decimalsw   s"    9 	1D!!!D'1Q40	1 	ai1.a	lAaD1aj!B%0a
mQrU3aj!E(3ak1U84aj!E(3a	lAeH5a
mQuX6anah7r   c           	      &   | j                  t        t        dt                    t               | j                  t        t        ddt        z              t                | j                  t        t        dt        z  d            d       | j                  t        t        t         d            d       t        j
                  t        d      t        d            | j                  t        fd       | j                  t              d       y )	Nr   rQ         r   r1   c                  6     j                    j                  z  S r   )r   r   )r)   s   r   <lambda>z)HashTest.test_fractions.<locals>.<lambda>   s    Q[[-F r   g      ?)
r&   r'   r6   _PyHASH_MODULUS_PyHASH_INF_from_coprime_intsr   assertRaises	TypeErrorr4   )r   r)   s    @r   test_fractionszHashTest.test_fractions   s     	a?34kBaAo$567+Fa/ 1156:a 0!45q9
   q!1=3CD)%FGq3'r   c                 `     G d d      }d |       h}| j                  t        |      d       y )Nc                       e Zd Zd Zd Zy)6HashTest.test_hash_normalization.<locals>.HalibutProxyc                     t        d      S Nhalibut)r'   r   s    r   __hash__z?HashTest.test_hash_normalization.<locals>.HalibutProxy.__hash__   s    I&r   c                     |dk(  S rf    r   s     r   __eq__z=HashTest.test_hash_normalization.<locals>.HalibutProxy.__eq__   s    	))r   N)r   r   r   rh   rk   rj   r   r   HalibutProxyrd      s    '*r   rl   rg   r   )r&   len)r   rl   r)   s      r   test_hash_normalizationz HashTest.test_hash_normalization   s.    	* 	* 'Q#r   N)r   r   r   r+   r-   r>   rG   rN   rV   ra   rn   rj   r   r   r$   r$   &   s,    '$3L6*	C8$($r   r$   c                       e Zd Zd Zd Zy)ComparisonTestc                    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 ]Z  \  }}||dz   d  D ]J  }| j	                  ||       | j                  ||       | j                  ||       | j                  ||       L \ y )NrC   z-1e425000000girY   gQ	r@   g      Tz1.2z1.3z1.4i_5 i z1.414213562373095048801688724iC i; i:iJ gvܼ5Jiinfinityr   )r4   r5   r6   	enumerate
assertLessassertLessEqualassertGreaterassertGreaterEqual)r   rK   r:   firstseconds        r   test_mixed_comparisonsz%ComparisonTest.test_mixed_comparisons   s    
 &Mnc1IeHeH%Lff-.feijM%( "+. 	7HAu%acd+ 7v.$$UF3""651''6	7	7r   c                    d}d}ddt        d      t        d      t        d      fD ]&  }| j                  ||       | j                  ||       ( ddt        d      t        d      t        d      fD ]J  }| j	                  ||       | j	                  ||       | j	                  ||       | j	                  ||       L ddt        d      t        d      t        d      ddt        d      t        d      t        d      |fD ]u  }t
        j                  t
        j                  t
        j                  t
        j                  fD ]2  }| j                  t        |||       | j                  t        |||       4 w y )Ny      ?        yQ	@r   rI   r1   g       @)r6   r5   rJ   r&   assertNotEqualoperatorleltgegtr_   r`   )r   zwvops        r   rN   zComparisonTest.test_complex   sO    C1qtWQZ/ 	#AQ"Q"	# C1qtWQZ/ 	&A1%1%1%1%		& S!A$!gajS!A$!gaj!5 	7Akk8;;X[[H 7!!)RA6!!)RA67	7r   N)r   r   r   r{   rN   rj   r   r   rp   rp      s    7>7r   rp   __main__)unittestr8   rD   sysr~   decimalr   r5   	fractionsr   r6   	hash_infomodulusr\   rB   r]   r7   r   TestCaser$   rp   r   mainrj   r   r   <module>r      s       
    # --''mm C  (E$x   E$N57X&& 57p zHMMO r   