o
    i e)                      @   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v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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 d    n1 sIw   Y  t|d}td	D ]}|d | }tj|| | qYW d    d S 1 svw   Y  d S )Nwdata)d   r
   r
   )Nr
   r
   )r   r
   r
   float32)maxshapechunksdtype)
   r
   r
   r   r
   r   r   filter_maskr)mktempencodeh5pyFilecreate_datasetnumpyzerosrangerandomrandastypeidwrite_direct_chunktobytestestingassert_array_equal)	selffilename
filehandledatasetarrayindexai	read_data r,   O/var/www/myenv/lib/python3.10/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Z}tddd}|jd|ddd}|jd|||gddd	|j d
}|j	
d\}}| |d t|jd D ]}|j	
|ddf\}}	| ||	 | |d qDW d    d S 1 siw   Y  d S )Nr         framer3   	   r	   compressioncompression_optscompressed_chunkedr   )r	   r;   r<   r   r   r   r   )r   r   r   r   r   arangereshaper   shaper   read_direct_chunkassertEqualr   )
r#   r$   r%   r8   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 d    n1 s=w   Y  t|d}|d }|j	d
\}}W d    n1 s_w   Y  | |d | ||  d S )Nr6   r7   r   r8   r>   r3   r9   )r   rB   r;   r<   l    )r   r   r   r   r   r   )r   r   r   r@   rA   r   r   r   rB   r   r   r    rC   assertNotEqualrD   )r#   r$   r8   r%   r&   DISABLE_ALL_FILTERSr   rF   r,   r,   r-   test_read_uncompressed_offsets@   s$   z2TestReadDirectChunk.test_read_uncompressed_offsetsc              
   C   s   |    }t|d;}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 d    n1 sJw   Y  t|d}|d	 d }tj|| W d    d S 1 snw   Y  d S )Nr   r6   r7   sourcer3   r9   r:   r?   created)rB   r   r   r   r;   r<   r   r   .)r   r   r   r   r   r@   rA   r   r   rC   rB   r   r   r   r!   r"   )r#   r$   r%   r8   rE   r   rF   r&   r,   r,   r-   test_read_write_chunkY   s.   	"z)TestReadDirectChunk.test_read_write_chunkN)r/   r0   r1   rG   rJ   rM   r,   r,   r,   r-   r5   $   s    r5   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v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|s3J |dks9J t||jksBJ d S )	Nr6   r7   uncompressedr	   r   r?   outr   r   )r   r@   rA   r   rB   	bytearraynbytesr   rC   array_equal
frombufferr   len)r#   writable_fileref_datar&   rT   r   chunkr,   r,   r-   test_uncompressed_data}   s   
z/TestReadDirectChunkToOut.test_uncompressed_data)r   r      z"chunk info requires HDF5 >= 1.10.5rN   r3   r4   c                 C   s   t ddd}|jd||jddd}|jd}t|j}|jj	|j
|d\}}||jks1J t||jks:J ||j	|j
d ksGJ d S )	Nr6   r7   r3   r9   )r	   r   r;   r<   r   rS   r   )r   r@   rA   r   rB   r   get_chunk_inforV   sizerC   chunk_offsetr   rZ   )r#   r[   r\   r&   
chunk_inforT   r   r]   r,   r,   r-   test_compressed_data   s"   	

z-TestReadDirectChunkToOut.test_compressed_datac                 C   sr   t ddd}|jd||jd}t|jd }tt	 |j
jd|d W d    d S 1 s2w   Y  d S )Nr6   r7   rQ   rR   r2   r?   rS   )r   r@   rA   r   rB   rV   rW   pytestraises
ValueErrorr   rC   r#   r[   r\   r&   rT   r,   r,   r-   test_fail_buffer_too_small   s   "z3TestReadDirectChunkToOut.test_fail_buffer_too_smallc                 C   sn   t ddd}|jd||jd}t|j}tt	 |j
jd|d W d    d S 1 s0w   Y  d S )Nr6   r7   rQ   rR   r?   rS   )r   r@   rA   r   rB   bytesrW   re   rf   BufferErrorr   rC   rh   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 d    d S 1 sDw   Y  d S )
Nr6   r7   rQ   rR   )r2   rU   r2   r?   rS   )r   r@   rA   r   rB   emptyr   re   rf   rg   r   rC   )r#   r[   r\   r&   r'   rT   r,   r,   r-   test_fail_buffer_not_contiguous   s   "z8TestReadDirectChunkToOut.test_fail_buffer_not_contiguousN)r/   r0   r1   r^   re   markskipifr   versionhdf5_version_tuplefiltersr   rd   ri   rl   rn   r,   r,   r,   r-   rP   w   s    

		rP   )r   r   numpy.testingre   commonr   r   
skipUnlessrq   rr   r   skipIfrs   r   r5   ro   rp   rP   r,   r,   r,   r-   <module>   s    Q
