o
    +ke                     @   sd   d dl mZ d dlmZ ddlmZ ddlmZ ddlmZ ddl	T dd	l
mZ G d
d deZdS )    )BytesIO)	unhexlify   )cf   )Chunkerblake2b_256)*)BaseTestCasec                   @   s   e Zd Zdd ZdS )ChunkerRegressionTestCasec                 C   s   dd }|d}g }ddt dfD ]?}dD ]:}dD ]5}||krqd	D ]+}d
D ]&}t|}	t|||||}
dd t|
|	dD }|tdd| q%q!qqqtdd|}| |t	d d S )Nc                 S   s:   d}t | }t| D ]}|d d d@ }|d@ ||< q
|S )Nr   imNAi90  i   )	bytearrayrange)sizexai r   ?usr/lib/python3.10/site-packages/borg/testsuite/chunker_slow.pytwist   s   zCChunkerRegressionTestCase.test_chunkpoints_unchanged.<locals>.twisti A      i  )               )      )r   r   
   r   )irc6niIc                 S   s   g | ]}t d |qS )    r   ).0cr   r   r   
<listcomp>"   s    zHChunkerRegressionTestCase.test_chunkpoints_unchanged.<locals>.<listcomp>r!   Z@b559b0ac8df8daaa221201d018815114241ea5c6609d98913cd2246a702af4e3)
ZHASH_WINDOW_SIZEr   r   r   Zchunkifyappendr	   joinZassert_equalr   )selfr   datarunsZwinsizeZminexpZmaxexpZmaskbitsseedZfhchunkerchunksZoverall_hashr   r   r   test_chunkpoints_unchanged   s(   z4ChunkerRegressionTestCase.test_chunkpoints_unchangedN)__name__
__module____qualname__r.   r   r   r   r   r      s    r   N)ior   binasciir   r,   r   r   Zcrypto.low_levelr	   	constants r   r   r   r   r   r   <module>   s    