U
    md)                      @   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|| | qW 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 qW 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st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st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
