U
    ½mœd4  ã                   @   s:   d dl Z ddlmZ ddd„Zdd„ ZG d	d
„ d
eƒZdS )é    Né   )ÚTestCaseé   c                 C   s   | j  ¡ | dkS )Nr   )ÚidZ
get_offset)ÚdatasetÚoffset© r   úW/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/h5py/tests/test_file_alignment.pyÚ
is_aligned   s    r
   c                 C   s   d| d›�S )NÚdataZ03r   )Úir   r   r	   Údataset_name
   s    r   c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚTestFileAlignmentzn
        Ensure that setting the file alignment has the desired effect
        in the internal structure.
    c              	   C   sf   |   ¡ }d}t |d¡�D}tdƒD ],}|jt|ƒ|dd�}||d< t|ƒs" qXq"tdƒ‚W 5 Q R X d S )N©iq  Úwéè  Úuint8©Zdtype.z(Data was all found to be aligned to 4096©ÚmktempÚh5pyÚFileÚrangeÚcreate_datasetr   r
   ÚRuntimeError)ÚselfÚfnameÚshapeÚh5filer   r   r   r   r	   Útest_no_alignment_set   s      ÿz'TestFileAlignment.test_no_alignment_setc              
   C   sz   d}d}dD ]h}|   ¡ }tj|d||d��D}tdƒD ]4}|jt|ƒ|dd�}|d |d	< t||d
�s4t‚q4W 5 Q R X qd S )Nr   r   ))i	  )r   )ié  r   ©Úalignment_thresholdÚalignment_intervalr   r   é   .©r   )r   r   r   r   r   r   r
   ÚAssertionError©r   r!   r"   r   r   r   r   r   r   r   r	   Ú"test_alignment_set_above_threshold.   s"    þ  ÿz4TestFileAlignment.test_alignment_set_above_thresholdc              
   C   s†   d}d}dD ]t}|   ¡ }tj|d||d��P}tdƒD ]0}|jt|ƒ|dd�}||d< t||d	�s4 qvq4td
|› d�ƒ‚W 5 Q R X qd S )Nr   i   )r   )iç  r   r    r   r   .r$   z$Data was all found to be aligned to z. This is highly unlikely.r   r&   r   r   r	   Ú"test_alignment_set_below_thresholdG   s*    þ  ÿ
ÿz4TestFileAlignment.test_alignment_set_below_thresholdN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r'   r(   r   r   r   r	   r      s   r   )r   )r   Úcommonr   r
   r   r   r   r   r   r	   Ú<module>   s   
