U
    ½mœd)   ã                   @   s¶   d dl Z d dlZd dlZd dlZddlmZmZ e e jj	dkd¡G dd„ deƒƒZ
e e jj	dkd	¡e d
e jjkd¡G dd„ deƒƒƒZejje jj	dk dd�G dd„ dƒƒZdS )é    Né   )ÚutÚTestCase)r   é   é   z,Direct Chunk Writing requires HDF5 >= 1.8.11c                   @   s   e Zd Zdd„ ZdS )ÚTestWriteDirectChunkc           	   	   C   sÐ   |   ¡  ¡ }t |d¡�j}|jdddddd�}t d¡}td	ƒD ]<}tj 	d
d
¡ 
d¡}|jj|ddf| ¡ dd� |||< q@W 5 Q R X t |d¡�2}td	ƒD ]"}|d | }tj || |¡ qžW 5 Q R X d S )NÚwÚdata)éd   r
   r
   )Nr
   r
   )r   r
   r
   Zfloat32)ÚmaxshapeÚchunksÚdtype)é
   r
   r
   r   r
   r   r   ©Úfilter_maskÚr)ÚmktempÚencodeÚh5pyÚFileÚcreate_datasetÚnumpyZzerosÚrangeÚrandomZrandZastypeÚidÚwrite_direct_chunkÚtobytesÚtestingÚassert_array_equal)	ÚselfÚfilenameÚ
filehandleÚdatasetÚarrayÚindexÚaÚiÚ	read_data© r(   úY/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/h5py/tests/test_h5d_direct_chunk.pyÚtest_write_direct_chunk   s     ý
z,TestWriteDirectChunk.test_write_direct_chunkN)Ú__name__Ú
__module__Ú__qualname__r*   r(   r(   r(   r)   r   	   s   r   )r   r   é   z,Direct Chunk Reading requires HDF5 >= 1.10.2ÚgzipúDEFLATE is not installedc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestReadDirectChunkc           
   	   C   sÊ   |   ¡  ¡ }t |d¡�¨}t d¡ dd¡}|jd|ddd�}|jd|||gddd	|j d
�}|j	 
d¡\}}|  |d¡ t|jd ƒD ]2}|j	 
|ddf¡\}}	|  ||	¡ |  |d¡ qˆW 5 Q R X d S )Nr   é   é   Úframer/   é	   ©r	   ÚcompressionÚcompression_optsZcompressed_chunked©r   )r	   r7   r8   r   ©r   r   r   )r   r   r   r   r   ÚarangeÚreshaper   Úshaper   Úread_direct_chunkÚassertEqualr   )
r   r    r!   r4   Úframe_datasetr"   r   Úcompressed_framer&   r	   r(   r(   r)   Útest_read_compressed_offsets'   s(    ýüz0TestReadDirectChunk.test_read_compressed_offsetsc              	   C   sÀ   |   ¡  ¡ }t d¡ dd¡}t |d¡�@}|jdd|j d|j ddd�}d	}|j	j
d
| ¡ |d� W 5 Q R X t |d¡�}|d }|j	 d
¡\}}W 5 Q R X |  |d¡ |  || ¡ ¡ d S )Nr2   r3   r   r4   r9   r/   r5   )r   r=   r7   r8   l   ÿÿ )r   r   r   r   r   r   )r   r   r   r;   r<   r   r   r   r=   r   r   r   r>   ZassertNotEqualr?   )r   r    r4   r!   r"   ZDISABLE_ALL_FILTERSr   rA   r(   r(   r)   Útest_read_uncompressed_offsets@   s     ü z2TestReadDirectChunk.test_read_uncompressed_offsetsc              
   C   sÀ   |   ¡  ¡ }t |d¡�l}t d¡ dd¡}|jd|ddd�}|j 	d¡\}}|jd	|j
|j
|j|jddd
�}|jjd||d� W 5 Q R X t |d¡� }|d	 d }tj ||¡ W 5 Q R X d S )Nr   r2   r3   Úsourcer/   r5   r6   r:   Úcreated)r=   r   r   r   r7   r8   r   r   .)r   r   r   r   r   r;   r<   r   r   r>   r=   r   r   r   r   r   )r   r    r!   r4   r@   r   rA   r"   r(   r(   r)   Útest_read_write_chunkY   s*    ýú	z)TestReadDirectChunk.test_read_write_chunkN)r+   r,   r-   rB   rC   rF   r(   r(   r(   r)   r1   $   s   r1   z)Direct chunk read requires HDF5 >= 1.10.2©Úreasonc                   @   sd   e Zd Zdd„ Zejjejj	dk dd�ejjdej
jkdd�dd	„ ƒƒZd
d„ Zdd„ Zdd„ ZdS )ÚTestReadDirectChunkToOutc                 C   sˆ   t  d¡ dd¡}|jd||jd�}t|jƒ}|jjd|d�\}}t  	t j
||jd� |j¡|¡sft‚|dksrt‚t|ƒ|jks„t‚d S )	Nr2   r3   Úuncompressed©r	   r   r:   ©Úout©r   r   )r   r;   r<   r   r=   Ú	bytearrayÚnbytesr   r>   Zarray_equalZ
frombufferr   ÚAssertionErrorÚlen)r   Úwritable_fileÚref_datar"   rM   r   Úchunkr(   r(   r)   Útest_uncompressed_data}   s      ÿ
þz/TestReadDirectChunkToOut.test_uncompressed_data)r   r   é   z"chunk info requires HDF5 >= 1.10.5rG   r/   r0   c                 C   s’   t  d¡ dd¡}|jd||jddd�}|j d¡}t|jƒ}|jj	|j
|d�\}}||jksbt‚t|ƒ|jkstt‚||j 	|j
¡d ksŽt‚d S )	Nr2   r3   r/   r5   )r	   r   r7   r8   r   rL   r   )r   r;   r<   r   r=   r   Zget_chunk_inforO   Úsizer>   Zchunk_offsetr   rQ   rR   )r   rS   rT   r"   Z
chunk_inforM   r   rU   r(   r(   r)   Útest_compressed_dataŒ   s"    	û
þ
z-TestReadDirectChunkToOut.test_compressed_datac              	   C   s\   t  d¡ dd¡}|jd||jd�}t|jd ƒ}t t	¡� |j
jd|d� W 5 Q R X d S )Nr2   r3   rJ   rK   r.   r:   rL   )r   r;   r<   r   r=   rO   rP   ÚpytestÚraisesÚ
ValueErrorr   r>   ©r   rS   rT   r"   rM   r(   r(   r)   Útest_fail_buffer_too_small¨   s      ÿz3TestReadDirectChunkToOut.test_fail_buffer_too_smallc              	   C   sX   t  d¡ dd¡}|jd||jd�}t|jƒ}t t	¡� |j
jd|d� W 5 Q R X d S )Nr2   r3   rJ   rK   r:   rL   )r   r;   r<   r   r=   ÚbytesrP   rZ   r[   ÚBufferErrorr   r>   r]   r(   r(   r)   Útest_fail_buffer_readonly±   s      ÿ
z2TestReadDirectChunkToOut.test_fail_buffer_readonlyc              	   C   s€   t  d¡ dd¡}|jd||jd�}t j|jd |jd�}|d d …d d …d d d…f }t t	¡� |j
jd|d	� W 5 Q R X d S )
Nr2   r3   rJ   rK   )r.   rN   r.   r:   rL   )r   r;   r<   r   r=   Úemptyr   rZ   r[   r\   r   r>   )r   rS   rT   r"   r#   rM   r(   r(   r)   Útest_fail_buffer_not_contiguousº   s      ÿz8TestReadDirectChunkToOut.test_fail_buffer_not_contiguousN)r+   r,   r-   rV   rZ   ÚmarkÚskipifr   ÚversionÚhdf5_version_tupleÚfiltersr   rY   r^   ra   rc   r(   r(   r(   r)   rI   w   s   
þ
þ		rI   )r   r   Znumpy.testingrZ   Úcommonr   r   Z
skipUnlessrf   rg   r   ZskipIfrh   r   r1   rd   re   rI   r(   r(   r(   r)   Ú<module>   s   Q
þ