
    0hh                     6   S SK r S SKrS SKrS SKrS SKrS SKJr  S SKJ	r
  \R                  R                  r\R                  R                  r " S S\5      r " S S\ R$                  5      r " S S	\ R$                  5      r\S
:X  a  \ R,                  " 5         gg)    N)Decimal)Fractionc                   Z   ^  \ rS rSrSrU 4S jr\rS r\r\	S 5       r
\	S 5       rSrU =r$ )DummyIntegral   zADummy Integral class to test conversion of the Rational to float.c                 4   > [        [        TU ]	  U5      5      $ N)r   super__mul__)selfother	__class__s     @/opt/python-3.13.8/usr/lib/python3.13/test/test_numeric_tower.pyr   DummyIntegral.__mul__   s    UW_U344    c                     [         $ r	   )NotImplementedr   r   s     r   __truediv__DummyIntegral.__truediv__   s    r   c                     [        U 5      $ r	   r   r   s    r   	numeratorDummyIntegral.numerator   s    T""r   c                     [        S5      $ )N   r   r   s    r   denominatorDummyIntegral.denominator!   s    Qr    )__name__
__module____qualname____firstlineno____doc__r   __rmul__r   __rtruediv__propertyr   r   __static_attributes____classcell__)r   s   @r   r   r      s@    K5HL# #    r   r   c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)HashTest&   c                     U R                  [        U5      [        U5      SR                  X5      5        U R                  X5        g )Nz&got different hashes for {!r} and {!r})assertEqualhashformat)r   xys      r   check_equal_hashHashTest.check_equal_hash'   s9    a$q'AHHN	Pr   c                 L    U R                  SS5        U R                  SS5        g )NFr   Tr   )r4   r   s    r   
test_boolsHashTest.test_bools-   s"    eQ'dA&r   c                 @   [        SS5       HT  nU R                  U[        U5      5        U R                  U[        U5      5        U R                  U[	        U5      5        MV     [        S5       GHy  nSU-  S-
  nU[        [        U5      5      :X  a8  U R                  U[        U5      5        U R                  U* [        U5      * 5        U R                  U[        U5      5        U R                  U[	        U5      5        U R                  U* [        U* 5      5        U R                  U* [	        U* 5      5        SU-  nU R                  U[        U5      5        U R                  U* [        U5      * 5        U R                  U[        U5      5        U R                  U[	        U5      5        U R                  U* [        U* 5      5        U R                  U* [	        U* 5      5        GM|     [        S5       H  n[        R                  " S5      n[        R                  " SU-  * SU-  5      nU R                  U[        U5      5        U R                  U[	        U5      5        U[        [        U5      5      :X  d  M  U R                  U[        U5      5        M     g )Ni  d      r   i,  
   )ranger4   floatDFintrandom	randrange)r   in_es        r   test_integers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A  %A  "a%Q/A!!!QqT*!!!QqT*CaM!%%aq2 r   c                    U R                  SS5        U R                  S[        S5      5        U R                  S[        S5      5        U R                  S[        S5      5        U R                  S[        S5      5        U R                  [        S5      [        S5      5        U R                  [        S5      [        S5      5        [	        S5       H  n[
        R
                  " 5       [        R                  " [
        R
                  " 5       S-  S	-
  5      -  nU R                  U[        R                  " U5      5        U R                  U[        R                  " U5      5        M     g )
N               r   z-0.0inf-infr:   g      i@g      Y@)	r4   r@   rA   r?   r>   rC   mathexp
from_float)r   rG   r2   s      r   test_binary_floatsHashTest.test_binary_floatsW   s     	c4( 	c1Q4(dAaD)dAfI.c1Q4( 	eElAeH5eFmQvY7tA$((6==?5+@5+H"IIA!!!Q\\!_5!!!Q\\!_5 r   c           
          SSSSSS[        S5      [        S5      /nS	 H'  nU H  nU R                  U[        X25      5        M      M)     g )
NrL   rM         ?g      g      ?g    rN   rO   )rM   rL   )r?   r4   complex)r   test_valueszerovalues       r   test_complexHashTest.test_complexl   sP     D#tWgU|U6]4 D$%%eWU-AB % r   c                 6   / SQnU H'  nU R                  [        U5      [        S5      5        M)     U R                  [        S5      [        S5      5        U R                  [        S5      [        S5      5        U R                  [        S5      [        S5      5        U R                  [        S5      [        S5      5        U R                  [        S	5      [        S
5      5        U R                  [        S5      [        S
5      5        U R                  [        S5      [        S
5      5        U R                  [        S5      [        S
5      5        U R                  [        S5      [        S
5      5        U R                  [        S5      [        S
5      5        g )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)r4   r@   )r   zerosrY   s      r   test_decimalsHashTest.test_decimalsw   s    9D!!!D'1Q40  	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           	      *  ^ U R                  [        [        S[        5      5      [        5        U R                  [        [        SS[        -  5      5      [        * 5        U R                  [        [        S[        -  S5      5      S5        U R                  [        [        [        * S5      5      S5        [        R
                  " [        S5      [        S5      5      mU R                  [        U4S j5        U R                  [        T5      S5        g )	Nr   r_         r   r<   c                  6   > T R                   T R                  -  $ r	   )r   r   )r2   s   r   <lambda>)HashTest.test_fractions.<locals>.<lambda>   s    Q[[-Fr   g      ?)
r/   r0   rA   _PyHASH_MODULUS_PyHASH_INF_from_coprime_intsr   assertRaises	TypeErrorr?   )r   r2   s    @r   test_fractions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                 `     " S S5      nSU" 5       1nU R                  [        U5      S5        g )Nc                        \ rS rSrS rS rSrg)6HashTest.test_hash_normalization.<locals>.HalibutProxy   c                     [        S5      $ Nhalibut)r0   r   s    r   __hash__?HashTest.test_hash_normalization.<locals>.HalibutProxy.__hash__   s    I&r   c                     US:H  $ rx   r    r   s     r   __eq__=HashTest.test_hash_normalization.<locals>.HalibutProxy.__eq__   s    	))r   r    N)r!   r"   r#   r$   rz   r}   r)   r    r   r   HalibutProxyru      s    '*r   r   ry   r   )r/   len)r   r   r2   s      r   test_hash_normalization HashTest.test_hash_normalization   s.    	* 	* 'Q#r   r    N)r!   r"   r#   r$   r4   r7   rI   rS   r[   rd   rq   r   r)   r    r   r   r,   r,   &   s,    '$3L6*	C8$($r   r,   c                        \ rS rSrS rS rSrg)ComparisonTest   c                    [        S5      [        S5      S[        SS5      SSSS	S
[        S5      [        S5      [        S5      [        SS5      [        S5      [        SS5      [        SS5      S[        S5      /n[        U5       HW  u  p#XS-   S   HG  nU R	                  X45        U R                  X45        U R                  XC5        U R                  XC5        MI     MY     g )NrO   z-1e425000000girh   gQ	rL   g      Tz1.2z1.3z1.4i_5 i z1.414213562373095048801688724iC i; i:iJ gvܼ5Jiinfinityr   )r?   r@   rA   	enumerate
assertLessassertLessEqualassertGreaterassertGreaterEqual)r   rX   rE   firstseconds        r   test_mixed_comparisons%ComparisonTest.test_mixed_comparisons   s    
 &Mnc1IeHeH%Lff-.feijM%( "+.HA%cd+.$$U3""61''6	 , /r   c                    SnSnSS[        S5      [        S5      [        S5      4 H%  nU R                  X5        U R                  X15        M'     SS[        S5      [        S5      [        S5      4 HG  nU R	                  X5        U R	                  X15        U R	                  X#5        U R	                  X25        MI     SS[        S5      [        S5      [        S5      SS[        S5      [        S5      [        S5      U4 Hv  n[
        R                  [
        R                  [
        R                  [
        R                  4 H1  nU R                  [        XAU5        U R                  [        XCU5        M3     Mx     g )Ny      ?        yQ	@r   rV   r<   g       @)rA   r@   rW   r/   assertNotEqualoperatorleltgegtro   rp   )r   zwvops        r   r[   ComparisonTest.test_complex   s,    C1qtWQZ/AQ"Q" 0 C1qtWQZ/A%%%%	 0 S!A$!gajS!A$!gaj!5Akk8;;X[[H!!)RA6!!)RA6 I5r   r    N)r!   r"   r#   r$   r   r[   r)   r    r   r   r   r      s    7>7r   r   __main__)unittestrC   rP   sysr   decimalr   r@   	fractionsr   rA   	hash_infomodulusrl   rN   rm   rB   r   TestCaser,   r   r!   mainr    r   r   <module>r      s       
    # --''mm C  (E$x   E$N57X&& 57p zMMO r   