o
    µ+keµ  ã                   @   s€   d dl Z d dlZd dlmZ d dlZddlmZ ddlmZ ej	gZ
ejr+e
 ej¡ ej de
¡dd„ ƒZd	d
„ Zdd„ ZdS )é    N)Ú	unhexlifyé   )Ú	checksums)Ú
bin_to_hexÚimplementationc                 C   s^   t  d¡}t|ƒ}d}tddƒD ]}dD ]}|||| … }t ||¡| ||ƒks+J ‚qqd S )Ni,  ixV4r   é   )-r   é   r   é   r   é   é   é   é   é	   é
   é   é    é!   é"   é#   é$   é%   é&   é'   é(   é)   é?   é@   éA   éB   éC   éD   éE   éF   éG   éH   éI   é   é€   é   é‚   éƒ   é„   é…   é†   é‡   éÿ   é   i  )ÚosÚurandomÚ
memoryviewÚrangeÚzlibÚcrc32)r   ÚdataÚmvZinitial_crcÚstartÚlengthÚd© r<   ú<usr/lib/python3.10/site-packages/borg/testsuite/checksums.pyÚ
test_crc32   s   
úÿr>   c                   C   sL   t t dd¡ƒdksJ ‚t t d¡ƒdksJ ‚t t tdƒ¡ƒdks$J ‚d S )Ns   testé{   Ú2b81b9401bef86cfZ4fdcca5ddb678139ZÈ6f663f01c118abdea553373d5eae44e7dac3b6829b46b9bbeff202b6c592c22d724fb3d25a347cca6c5b8f20d567e4bb04b9cfa85d17f691590f9a9d32e8ccc9102e9dcf8a7e6716280cd642ce48d03fdf114c9f57c20d9472bb0f81c147645e6fa3d331Z35d5d2f545d9511a)r   r   Zxxh64r   r<   r<   r<   r=   Ú
test_xxh64   s   ÿýrA   c                  C   sJ   t  d¡} |  d¡ |  d¡ t|  ¡ ƒ|  ¡   kr dks#J ‚ J ‚d S )Nr?   s   tes   str@   )r   ZStreamingXXH64Úupdater   ÚdigestÚ	hexdigest)Zhasherr<   r<   r=   Útest_streaming_xxh64(   s   


,rE   )r1   r5   Úbinasciir   ZpytestZ
algorithmsr   Úhelpersr   Zcrc32_slice_by_8Zcrc32_implementationsZ
have_clmulÚappendZcrc32_clmulZmarkZparametrizer>   rA   rE   r<   r<   r<   r=   Ú<module>   s    
	