Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_hash.cpython-311.opt-1.pyc
�

�Ket0��f�ddlZddlZddlZddlZddlmZddlmZejdkZ	d5d�Z
d�Zd�ZGd	�d
ej
��ZejZGd�de��Zd
ZGd�de��ZGd�de��ZGd�de��ZGd�dee��ZGd�dee��ZGd�de��ZGd�dej
��ZGd�de��ZGd�dej
��ZGd �d!��ZGd"�d#e��ZGd$�d%eej
��ZGd&�d'eej
��Z Gd(�d)eej
��Z!Gd*�d+e��Z"Gd,�d-e"ej
��Z#Gd.�d/e"ej
��Z$Gd0�d1e"ej
��Z%Gd2�d3ej
��Z&e'd4krej(��dSdS)6�N)�assert_python_ok)�Hashable��c��|dkrt|��St|��}t|��D]}d|zdzdz}|dz	dz||<�t|��S)zLinear congruential generatorri�CiÞ&��r�)�bytes�	bytearray�range)�x�length�out�is    �8/usr/local/apps/python3/lib/python3.11/test/test_hash.py�lcgrsl���A�v�v��V�}�}��
�F�
�
�C�
�6�]�]�"�"��
�a�Z�'�
!�Z�/���r�'�T�!��A�����:�:��c�X�|dkr|dz
}n|}||dz	zdz}|dkr|dz
}n|}||fS)z*Convert SipHash24 output to Py_hash_t
    l����l� l��rr�)�uint64�int64�uint32�int32s    r�	pysiphashrsY��
�
����'�"������v��|�#�z�
1�F�
�
����'�"������%�<�rc�n�tjjdv}d}|r|ntj|��|��S)z8Skip decorator for tests that depend on SipHash24 or FNV>�fnv�	siphash13�	siphash24z$Requires SipHash13, SipHash24 or FNV)�sys�	hash_info�	algorithm�unittest�skip)�test�ok�msgs   r�skip_unless_internalhashr(+s;��	��	 �$E�	E�B�
0�C��3�4�4�-�8�=��-�-�d�3�3�3rc�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�HashEqualityTestCasec��ttt|����}|dd�D]&}||dkr|�d|�����'dS)N�rzhashed values differ: )�list�map�hash�fail)�self�objlist�hashed�hs    r�	same_hashzHashEqualityTestCase.same_hash4sg���c�$��(�(�)�)�������	C�	C�A��F�1�I�~�~��	�	�	���A�B�B�B��	C�	Crc��|�dddd��|�ddd��|�ddd	��|�d
dd��dS)
Nr,g�?y�?r�y���g�y����g�y�)r5�r1s r�test_numeric_literalsz*HashEqualityTestCase.test_numeric_literals<sb�����q�!�S�(�+�+�+����q�#�x�(�(�(����r�4��+�+�+����r�4��+�+�+�+�+rc
��|�td��td��td��td��td��td����|�td��td����|�td��td����|�td��td����|�td��td����|�td��td����|�td	��td	����dS)
Nr,�1z1.0i�i�rll����l�r5�int�float�complexr:s r�test_coerced_integersz*HashEqualityTestCase.test_coerced_integersBs�����s�1�v�v�s�1�v�v�u�Q�x�x������3�x�x��u���	/�	/�	/����s�6�{�{�E�&�M�M�2�2�2����s�7�|�|�U�7�^�^�4�4�4����s�7�|�|�U�7�^�^�4�4�4����s�5�z�z�5��<�<�0�0�0����s�6�{�{�E�&�M�M�2�2�2����s�5�z�z�5��<�<�0�0�0�0�0rc���|�td��td����|�td��tdd����dS)Ng�쏈�b=~g�?r7r>r:s r�test_coerced_floatsz(HashEqualityTestCase.test_coerced_floatsMsL�����s�8�}�}�e�H�o�o�6�6�6����u�S�z�z�7�3��#4�#4�5�5�5�5�5rc��ddz}td��D]k}td��D]Y}||d|z�}t|��|d|z�}|�t|��t|�����Z�ldS)Ns#123456789abcdefghijklmnopqrstuvwxyz�r)r�
memoryview�assertEqualr/)r1�br�j�aligned�	unaligneds      r�test_unaligned_buffersz+HashEqualityTestCase.test_unaligned_buffersQs���
3�S�8���r���	A�	A�A��2�Y�Y�
A�
A���A�c�!�e�G�*��&�q�M�M�!�C��E�'�2�	�� � ��g����Y���@�@�@�@�
A�	A�	ArN)�__name__�
__module__�__qualname__r5r;rBrDrMrrrr*r*2sg������C�C�C�,�,�,�	1�	1�	1�6�6�6�A�A�A�A�Arr*c��eZdZdS)�DefaultHashN�rNrOrPrrrrRrR]��������rrR�*c��eZdZd�ZdS)�	FixedHashc��tS�N)�_FIXED_HASH_VALUEr:s r�__hash__zFixedHash.__hash__as�� � rN�rNrOrPr[rrrrWrW`�#������!�!�!�!�!rrWc��eZdZd�ZdS)�OnlyEqualityc�
�||uSrYr�r1�others  r�__eq__zOnlyEquality.__eq__es���u�}�rN)rNrOrPrcrrrr_r_ds#����������rr_c��eZdZd�ZdS)�OnlyInequalityc�
�||uSrYrras  r�__ne__zOnlyInequality.__ne__is
���5� � rN)rNrOrPrgrrrrerehr]rrec��eZdZdS)�InheritedHashWithEqualityNrSrrrririlrTrric��eZdZdS)�InheritedHashWithInequalityNrSrrrrkrkmrTrrkc��eZdZdZdS)�NoHashNr\rrrrmrmos�������H�H�Hrrmc���eZdZe��e��e��gZe��e��e	��gZ
e��e��gZ
d�Zd�Zd�Zd�Zd�ZdS)�HashInheritanceTestCasec�z�|jD]2}|�t|��t|�����3dSrY)�default_expectedrHr/�
_default_hash�r1�objs  r�test_default_hashz)HashInheritanceTestCase.test_default_hashsE���(�	<�	<�C����T�#�Y�Y�
�c�(:�(:�;�;�;�;�	<�	<rc�j�|jD]*}|�t|��t���+dSrY)�fixed_expectedrHr/rZrss  r�test_fixed_hashz'HashInheritanceTestCase.test_fixed_hash�s>���&�	;�	;�C����T�#�Y�Y�(9�:�:�:�:�	;�	;rc�\�|jD]#}|�tt|���$dSrY)�error_expected�assertRaises�	TypeErrorr/rss  r�test_error_hashz'HashInheritanceTestCase.test_error_hash�s9���&�	4�	4�C����i��s�3�3�3�3�	4�	4rc�d�|j|jz}|D]}|�|t���dSrY)rqrw�assertIsInstancer)r1�objectsrts   r�
test_hashablez%HashInheritanceTestCase.test_hashable�sG���(��&�'���	1�	1�C��!�!�#�x�0�0�0�0�	1�	1rc�P�|jD]}|�|t���dSrY)rz�assertNotIsInstancerrss  r�test_not_hashablez)HashInheritanceTestCase.test_not_hashable�s7���&�	4�	4�C��$�$�S�(�3�3�3�3�	4�	4rN)rNrOrP�objectrRrerqrWrirkrwrmr_rzrurxr}r�r�rrrrorors�����������#��
�
�&��(�(��� �i�k�k�/�/�1�1�1�1�3�3��N��f�h�h�"�l�n�n��N�<�<�<�;�;�;�4�4�4�1�1�1�4�4�4�4�4rroc�0�eZdZed��Zd�Zd�ZdS)�DefaultIterSeq�
c�*�t|j��SrY)�len�seqr:s r�__len__zDefaultIterSeq.__len__�s���4�8�}�}�rc��|j|SrY)r�)r1�indexs  r�__getitem__zDefaultIterSeq.__getitem__�s���x���rN)rNrOrPrr�r�r�rrrr�r��s?������
�%��)�)�C��������rr�c�z�eZdZeed����ee����ed�d��gZd�ZdS)�HashBuiltinsTestCaser�c��dS)Nrrrrr�<lambda>zHashBuiltinsTestCase.<lambda>�s��A�rrc��tj}|jD].}|�t	|��||�����/dSrY)r�r[�hashes_to_checkrHr/)r1rrrts   r�test_hashesz HashBuiltinsTestCase.test_hashes�sN����
��'�	<�	<�C����T�#�Y�Y�
�
�c�(:�(:�;�;�;�;�	<�	<rN)	rNrOrP�	enumerater�iterr�r�r�rrrr�r��se������ �y���r���+�+��t�N�N�,�,�-�-��t�I�I�q�)�)��O�
<�<�<�<�<rr�c�"�eZdZd�Zdd�Zd�ZdS)�HashRandomizationTestsc��d|zS)Nzprint(hash(eval(%a)))r�r1�repr_s  r�get_hash_commandz'HashRandomizationTests.get_hash_command�s
��&��.�.rNc�2�tj���}d|d<|�t|��|d<n|�dd��td|�|��fi|��}|d���}t|��S)NT�
__cleanenv�PYTHONHASHSEEDz-cr,)	�os�environ�copy�str�poprr��stripr?)r1r��seed�envr�stdouts      r�get_hashzHashRandomizationTests.get_hash�s����j�o�o���� ��L����$'��I�I�C� �!�!��G�G�$�d�+�+�+���$�'�'��.�.��������Q��������6�{�{�rc��|�|jd���}|�|jd���}|�||��dS)N�random�r�)r�r��assertNotEqual)r1�run1�run2s   r�test_randomized_hashz+HashRandomizationTests.test_randomized_hash�sL���}�}�T�Z�h�}�7�7���}�}�T�Z�h�}�7�7�����D�$�'�'�'�'�'rrY)rNrOrPr�r�r�rrrr�r��sF������
/�/�/�����(�(�(�(�(rr�c	���eZdZdZdZgd�gd�ggd�gd�gd�gd�gd�ggd	�gd
�gd�gd�gd
�ggd�gd�gd�gd�gd�gd�Zd�Zd�Zed���Z	ed���Z
dS)� StringlikeHashRandomizationTestsN)�\�r�r�r�)iL̇�lLL//+�?iTS�l����qU:~�@[)��0&���O�wq!~r�r�)��u����u�C�-r�r�)�|#|��|#�8�
^r�r�)i=�վl�����BT='8i\e�l\e�+=�")i[�l�����$�E�,�;iwmH�l�����oa�_gv)���pG��n�YD~r�r�)�S���jxY_oW�sr�r�)� ���� �/��lr�r�)i�Jkl�J�:�8`~i��l�����)�wJ�)i�Q	�l���� .�G�UJGiO{�l������]�D])�Г���P'ABS!r�r�)i����l����m]]�R�ii���l�����T�e])i�X0l�����'�W�=>0i�e�l�����;u�)i���lg,��gi5$f�l�����`�bTN�V)i� �l�����9�\R>|iQ���l�����kT<�h4)�djba33xrrrc���|tjjkrd}ntjj}tjdkrt
rdnd}nt
rdnd}|j|||S)Nr��littler,r��)r r!�cutoffr"�	byteorder�IS_64BIT�known_hashes)r1�positionrr"�platforms     r�get_expected_hashz2StringlikeHashRandomizationTests.get_expected_hash�sh���C�M�(�(�(�!�I�I��
�/�I��=�H�$�$�$�+�q�q�!�H�H�%�+�q�q�!�H�� ��+�H�5�h�?�?rc���|�dd��}|�|�|j��|��|�|�|jd���|��dS)Nrr�r�)r�r�r�r�rH)r1�known_hash_of_objs  r�test_null_hashz/StringlikeHashRandomizationTests.test_null_hash
sp�� �2�2�1�a�8�8��	
���D�M�M�$�*�5�5�7H�I�I�I�	
������t�z���:�:�<M�N�N�N�N�Nrc��|�dd��}|�|�|jd���|��dS)Nr,r�rUr�)r�rHr�r��r1r4s  rrxz0StringlikeHashRandomizationTests.test_fixed_hashsG��
�"�"�1�a�(�(��������t�z���;�;�Q�?�?�?�?�?rc��|j�dS|�dd��}|�|�|jd���|��dS)Nr��rUr�)�	repr_longr�rHr�r�s  r�test_long_fixed_hashz5StringlikeHashRandomizationTests.test_long_fixed_hashsR���>�!��F��"�"�1�b�)�)��������t�~�B��?�?��C�C�C�C�Cr)rNrOrPr�r�r�r�r�r(rxr�rrrr�r��sc�������E��I�
:�9�9�N�N�N�	�
M�L�L�N�N�N�N�N�N�Q�Q�Q�P�P�P�
� 
O�N�N�N�N�N�P�P�P�O�O�O�R�R�R�
�
"�
"�
"�
#�
#�
#�
#�
#�
#�
"�
"�
"�
#�
#�
#�
�C2�2�L�h
@�
@�
@�O�O�O��@�@���@��D�D���D�D�Drr�c�|�eZdZed��Zed��Zed��Zed���Zed���Z	dS)�StrHashRandomizationTests�abc�abcdefghijku
äú∑ℇc�L�|�td��d��dS)N�r�rHr/r:s r�test_empty_stringz+StrHashRandomizationTests.test_empty_string)s$������b���1�%�%�%�%�%rc��|�dd��}|�|�|jd���|��|�dd��}|�|�|jd���|��dS)Nr��rr��rU)r�rHr��	repr_ucs2r�s  r�test_ucs2_stringz*StrHashRandomizationTests.test_ucs2_string-s����"�"�1�a�(�(��������t�~�A��>�>��B�B�B��"�"�1�a�(�(��������t�~�B��?�?��C�C�C�C�CrN)
rNrOrP�reprr�r�r�r(r�r�rrrr�r�#sz�������D��K�K�E���]�#�#�I���\�"�"�I��&�&���&��D�D���D�D�Drr�c�P�eZdZed��Zed��Zed���ZdS)�BytesHashRandomizationTestssabcsabcdefghijkc�L�|�td��d��dS�Nrrr�r:s rr�z-BytesHashRandomizationTests.test_empty_string9s$������c���A�&�&�&�&�&rN)rNrOrPr�r�r�r(r�rrrr�r�4sJ�������D��L�L�E���^�$�$�I��'�'���'�'�'rr�c�,�eZdZdZdZed���ZdS)� MemoryviewHashRandomizationTestszmemoryview(b'abc')zmemoryview(b'abcdefghijk')c�f�|�ttd����d��dSr�)rHr/rGr:s rr�z2MemoryviewHashRandomizationTests.test_empty_stringBs,������j��o�o�.�.��2�2�2�2�2rN)rNrOrPr�r�r(r�rrrr�r�=s8������ �E�,�I��3�3���3�3�3rr�c��eZdZd�ZdS)�
DatetimeTestsc��d|zS)Nz import datetime; print(hash(%s))rr�s  rr�zDatetimeTests.get_hash_commandGs
��1�E�9�9rN)rNrOrPr�rrrr�r�Fs#������:�:�:�:�:rr�c�D�eZdZeejddd����ZdS)�DatetimeDateTestsi*r��N)rNrOrPr��datetime�dater�rrrr�r�Js-�������D����t�R��,�,�-�-�E�E�Err�c�L�eZdZeejddddddd����ZdS)	�DatetimeDatetimeTestsr,r�r�r��r��N)rNrOrPr�r�r�rrrr�r�Ms7�������D�"��"�1�a��A�q�!�Q�7�7�8�8�E�E�Err�c�@�eZdZeejd����ZdS)�DatetimeTimeTestsrN)rNrOrPr�r��timer�rrrr�r�Ps)�������D����q�!�!�"�"�E�E�Err�c��eZdZd�ZdS)�HashDistributionTestCasec	�H�d}tdt|����D�]}|d|�}|�|���5t��}t��}td��D]Q}t	|t|��z��}|�|dz��|�|dz���R|�t|��d|��|�t|��d|��ddd��n#1swxYwY��dS)	N�abcdefghabcdefgr,)�prefix��r	�rF)rr��subTest�setr/�chr�add�
assertGreater)r1�baserr�s15�s255�cr4s        r�test_hash_distributionz/HashDistributionTestCase.test_hash_distributionVsP�� ���q�#�d�)�)�$�$�	;�	;�A��"�1�"�X�F����V��,�,�	
;�	
;��e�e���u�u���s���'�'�A��V�c�!�f�f�_�-�-�A��G�G�A��G�$�$�$��H�H�Q��X�&�&�&�&��"�"�3�s�8�8�Q��7�7�7��"�"�3�t�9�9�c�6�:�:�:�	
;�	
;�	
;�	
;�	
;�	
;�	
;�	
;�	
;�	
;�	
;����	
;�	
;�	
;�	
;��	;�	;s�CD�D	�D	N)rNrOrPrrrrr�r�Ts#������;�;�;�;�;rr��__main__)r))r�r�r r#�test.support.script_helperr�collections.abcr�maxsizer�rrr(�TestCaser*r�r[rrrRrZrWr_rerirkrmror�r�r�r�r�r�r�r�r�r�r�r�rN�mainrrr�<module>rs]������	�	�	�	�
�
�
�
�����7�7�7�7�7�7�$�$�$�$�$�$��;�����������$4�4�4�'A�'A�'A�'A�'A�8�,�'A�'A�'A�T��
������&������!�!�!�!�!��!�!�!������6����!�!�!�!�!�V�!�!�!�?�>�>�>�>�	�<�>�>�>�B�B�B�B�B�)�^�B�B�B������V����!4�!4�!4�!4�!4�h�/�!4�!4�!4�J�����V����	<�	<�	<�	<�	<�8�,�	<�	<�	<�(�(�(�(�(�(�(�(�8[D�[D�[D�[D�[D�'=�[D�[D�[D�|D�D�D�D�D� @� (� 1�D�D�D�"'�'�'�'�'�"B�"*�"3�'�'�'�3�3�3�3�3�'G�'/�'8�3�3�3�:�:�:�:�:�*�:�:�:�.�.�.�.�.�
�x�'8�.�.�.�9�9�9�9�9�M�8�+<�9�9�9�#�#�#�#�#�
�x�'8�#�#�#�;�;�;�;�;�x�0�;�;�;�$�z����H�M�O�O�O�O�O��r