o
    ±ó®g¸  ã                   @   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 jƒZG dd„ de jƒZedkrDe  ¡  dS dS )	é    N)ÚDecimal)ÚFractionc                   @   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)ÚselfÚxÚy© r   úM/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_numeric_tower.pyÚcheck_equal_hash   s   
ÿzHashTest.check_equal_hashc                 C   s   |   dd¡ |   dd¡ d S )NFr   Té   )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|ƒ¡ q©d S )Niüÿÿéè  éd   é   r   i,  é
   )Úranger   ÚfloatÚDÚFÚintÚrandomÚ	randrange)r   ÚiÚnÚ_Úer   r   r   Útest_integers   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   r   ÚmathÚexpZ
from_float)r   r   r	   r   r   r   Útest_binary_floatsB   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 )
Nr!   r"   ç      ð?g      ð¿g      Ú?g    €´Àr#   r$   )r"   r!   )r   r   Úcomplex)r   Útest_valuesÚzeroÚvaluer   r   r   Útest_complexW   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.00éÿÿÿÿz-1.00000Z123e2i0  Z1230e1Z12300z12300.0z12300.00z	12300.000)r   r   )r   Zzerosr+   r   r   r   Útest_decimalsb   s   zHashTest.test_decimalsc                 C   sh   |   ttdtƒƒt¡ |   ttddt ƒƒt ¡ |   ttdt dƒƒd¡ |   ttt dƒƒd¡ d S )Nr   r/   é   é   r   )r   r   r   Ú_PyHASH_MODULUSÚ_PyHASH_INFr   r   r   r   Útest_fractionst   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   s   t dƒS ©NÚhalibut)r   r   r   r   r   Ú__hash__‰   ó   z?HashTest.test_hash_normalization.<locals>.HalibutProxy.__hash__c                 S   s   |dkS r7   r   )r   Úotherr   r   r   Ú__eq__‹   r:   z=HashTest.test_hash_normalization.<locals>.HalibutProxy.__eq__N)Ú__name__Ú
__module__Ú__qualname__r9   r<   r   r   r   r   ÚHalibutProxyˆ   s    r@   r8   r   )r   Úlen)r   r@   r	   r   r   r   Útest_hash_normalization|   s   
z HashTest.test_hash_normalizationN)r=   r>   r?   r   r   r    r'   r-   r0   r5   rB   r   r   r   r   r      s    &r   c                   @   r6   )Ú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-1e425000000g Èë…óÌáÿiêÿÿÿr2   g…ëQ¸	Àéþÿÿÿr!   gè      Tz1.2z1.3z1.4i_5 iÑù z1.414213562373095048801688724iC¾ iŽ; i™‚:i‡J gvÜ¼5J¢iZinfinityr   )r   r   r   Ú	enumerateZ
assertLessZassertLessEqualZassertGreaterZassertGreaterEqual)r   r*   r   Ú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ÚgtZassertRaisesÚ	TypeError)r   ÚzÚwÚvÚopr   r   r   r-   ±   s$   ÿþþzComparisonTest.test_complexN)r=   r>   r?   rH   r-   r   r   r   r   rC   ‘   s    rC   Ú__main__)Zunittestr   r%   ÚsysrI   Údecimalr   r   Z	fractionsr   r   Ú	hash_infoÚmodulusr3   r#   r4   ZTestCaser   rC   r=   Úmainr   r   r   r   Ú<module>   s    8ÿ