a
    =_@{                    @   s8	  d dl Z d dlZd dlZd dlZd dlmZmZmZmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZ d dlmZmZ d dlmZ G dd dejeZG d	d
 d
eZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZ e!ej" dG dd deZ#G d d! d!eZ$e!ej" dG d"d# d#eZ%G d$d% d%eZ&e!ej" dG d&d' d'eZ'G d(d) d)eZ(G d*d+ d+eZ)G d,d- d-eZ*G d.d/ d/eZ+G d0d1 d1eZ,G d2d3 d3eZ-G d4d5 d5eZ.G d6d7 d7eZ/G d8d9 d9eZ0G d:d; d;eZ1G d<d= d=eZ2G d>d? d?eZ3G d@dA dAeZ4G dBdC dCeZ5e!ej6 dDG dEdF dFeZ7e!ej6 dDG dGdH dHeZ8e!ej6 dDe!eej9k dIej9 G dJdK dKeZ:e!ej6 dDG dLdM dMeZ;e!ej6 dDG dNdO dOeZ<e!ej6 dDe!dPe= vdQG dRdS dSeZ>e!ej6 dDe!dPe= vdQG dTdU dUeZ?e!ej6 dDe!dVe= vdWG dXdY dYeZ@e!ej6 dDe!dZe= vd[G d\d] d]eZAe!ej6 dDe!d^e= vd_G d`da daeZBe!ej" dG dbdc dceZCe!ej" dG ddde deeZDe!ejE dfG dgdh dheZFe!ejE dfG didj djeZGG dkdl dleZHG dmdn dneZIG dodp dpeZJG dqdr dreZKG dsdt dteZLG dudv dveZMG dwdx dxeZNG dydz dzeZOG d{d| d|eZPG d}d~ d~eZQeReSeddG dd deZTG dd deZUG dd deZVeReSeddG dd deZWeReSeddG dd deZXG dd deZYG dd deZZeReSeddG dd deZ[eReSeddG dd deZ\G dd deZ]G dd dejeZ^G dd dejeZ_G dd dejeZ`G dd dejeZaG dd deaZbG dd deaZcG dd dejeZdG dd dedZeG dd dedZfG dd dedZgG dd dedZhG dd dedZiG dd dedZjG dd dedZkG dd dedZlG dd dedZmG dd dedZnG dd dedZoG dd dedZpG ddĄ dejeZqG ddƄ deqZrG ddȄ deqZsG ddʄ dejeZtG dd̄ dejeZuG dd΄ deuZvG ddЄ deuZwG dd҄ dejeZxG ddԄ dexZyG ddք dexZzG dd؄ dejeZ{G ddڄ dejeZ|G dd܄ de|Z}G ddބ de|Z~G dd dejeZG dd deZG dd deZG dd dejeZG dd dejeZdd Zedk	r4eej e  ejdd dS )    N)	Atom
StringAtomIntAtomInt8Atom	Int16Atom	Int32Atom	Int64Atom	FloatAtomFloat32Atom)common)allequal)unittestblosc_version)PyTablesTestCasec                       s   e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZd	ZdZdZdZdZ fd
dZdd Zdd Zdd Zdd Zdd Zdd Zdd Z  ZS )BasicTestCaseNnumpyint32   r   r   
         r   zlibc                    s4   t t|   | jj| _|   | jr0| j  d S N)	superr   setUph5fileroot	rootgrouppopulateFilereopencloseself	__class__ 7lib/python3.9/site-packages/tables/tests/test_carray.pyr   %   s
    
zBasicTestCase.setUpc              
   C   s   | j }| j}|d u r:| jdkr,t| jd}q>t| j}nd }| jj}t	j
| j| j| j| j| jd}| jj|d|| j||| j|d}| j|_t|j| _| jt|j | _| jdkr| jdkrtjd| j | jd|jj d	}ntj| j|jjd
}|j|_tj rt!dt"| ||d< d S )Nstringitemsize)	complevelcomplibshuffle
bitshuffle
fletcher32Zcarray1)atomshapetitlefilters
chunkshapeobjr      aS%sbufferr2   dtyper;   zObject to append -->.)#r   r6   typer   lengthr   Z	from_typer&   __name__tablesFilterscompressr-   r.   r/   r0   r   create_carrayr2   r5   flavorlistZrowshaper   prodobjsizendarrayr1   r+   aranger;   r   verboseprintrepr)r$   groupr6   r1   r3   r4   carrayobjectr'   r'   r(   r    .   sB    




zBasicTestCase.populateFilec                 C   s$   | j d ur| j }nt| jj }|S r   )r2   r   asarrayr6   r$   r2   r'   r'   r(   
_get_shapeU   s    
zBasicTestCase._get_shapec                 C   s   | j rt| jd| _| jd}|  }| |j| j | |j	| | |j
t| | |j| j | |j|d  | |jj| j d S )Nr/carray1r   )r!   r@   	open_fileh5fnamer   get_noderR   assertEqualrD   r2   ndimlenr5   nrowsr1   r=   )r$   r6   r2   r'   r'   r(   test00_attributes]   s    zBasicTestCase.test00_attributesc                 C   s  t jr tdd td| jj  | jr6t| jd| _	| j	
d}d|_t jrttdt| td|j td	| j |  }| jd
kr| jdkrtjd| j | jd|jj d}ntj| j|jjd}||_| j}| jdu r| jdkr|j}n
| jd }|j|k rt|j}|| j|| j  }z|| j|| j}W nF ty   | jd
krjtj | j| jd}ntj | j| jd}Y n0 t jrt!|drtd|j tdt| tdt| t!|dr| "t#|jt#| n| "t#| jd | "|j$| j$ | %t&||| j dS ))Checking read() of chunked layout arrays.
<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01_readCArray...rS   rT      CArray descr:shape of read array ==>reopening?:r   r)   r7   r8   r9   r<   Nr   r2   r;   r2   shape should look as:zObject read ==>zShould look like ==>)'r   rJ   rK   r&   r?   r!   r@   rU   rV   r   rW   
nrowsinbufrL   r2   rR   rD   r=   r   rH   rG   r1   r+   rI   r;   stopstartr[   intstepcopyread
IndexErroremptyhasattrrX   rZ   r5   
assertTruer   r$   rN   r2   object_rh   r6   datar'   r'   r(   test01_readCArrayk   sX    







zBasicTestCase.test01_readCArrayc                 C   s  | j rt| jd| _| jd}|  }d|_| jdkr| j	dkrft
jd| j | jd|jj d}nt
j| j|jjd	}||_| j}| jd
u r| jdkr|j}n
| jd }|j|k rt|j}|| j|| j  }zBt
j||jjd	}|| j|| j  }|j| j|| j|d W nB tyZ   | jdkrFt
j|| j	d}nt
j|| j	d}Y n0 t|dr| t|jt| n| t|d | |j| j | t ||| j d
S )r]   rS   rT   r`   r   r)   r7   r8   r9   r<   Nrd   r   outre   r2   )!r!   r@   rU   rV   r   rW   rR   rg   rD   r=   r   rH   rG   r2   r1   r+   rI   r;   rh   ri   r[   rj   rk   rl   ro   rm   rn   rp   rX   rZ   r5   rq   r   rr   r'   r'   r(   test01_readCArray_out_argument   sD    







z,BasicTestCase.test01_readCArray_out_argumentc                 C   s  t jr tdd td| jj  t| ds@t| j| j| j	f| _
| jrVt| jd| _| jd}t jrtdt| td|j td	| j |  }| jd
krtjd| j | jd|jj d}ntj| j|jjd}||_|| j
 }z|| j
}W nN tyJ   td | jdkr4tj | j| jd}ntj | j| jd}Y n0 t jrtdt| tdt| t|drtd| j td|j td|j t|ds| !t"| jd | !|j#| j# | $t%||| j dS )z9Checking chunked layout array __getitem__ special method.r^   r_   z"Running %s.test02_getitemCArray...slicesrS   rT   ra   rb   rc   r)   r7   r8   r9   r<   IndexError!r   re   Object read:
Should look like:
r2   Original object shape:Shape read:rf   r   N)&r   rJ   rK   r&   r?   rp   sliceri   rh   rk   ry   r!   r@   rU   rV   r   rW   rL   r2   rR   r=   r   rH   rG   r1   r+   rI   r;   __getitem__rl   rn   rD   ro   rX   rZ   r5   rq   r   r$   rN   r2   rs   r6   rt   r'   r'   r(   test02_getitemCArray   sR    



z"BasicTestCase.test02_getitemCArrayc                 C   s  t jr tdd td| jj  t| ds@t| j| j| j	f| _
| jrVt| jd| _| jd}t jrtdt| td|j td	| j |  }| jd
krtjd| j | jd|jj d}ntj| j|jjd}||_|| j
 }| jd
krTt| drd|| j< d|| j< n8t || j
 jdkrd|dd< |j!dkr||| j
< nt| dr|| j d d || j< || j d d || j< nLt || j
 jdkr|d d }t"|jdkr|| j
 d d || j
< tj#||jjd}z|| j
}W nN t$yN   td | j%dkr8tj&| j| jd}ntj&| j| jd}Y n0 t jrtdt| tdt| t|drtd| j td|j td|j t|ds| 't(| jd | '|j)| j) | *t+||| j% dS )z9Checking chunked layout array __setitem__ special method.r^   r_   z"Running %s.test03_setitemCArray...ry   arT   ra   rb   rc   r)   r7   r8   r9   r<   wsliceZxXxr   Nr   r`   rz   r   re   r{   r|   r2   r}   r~   rf   r   ),r   rJ   rK   r&   r?   rp   r   ri   rh   rk   ry   r!   r@   rU   rV   r   rW   rL   r2   rR   r=   r   rH   rG   r1   r+   rI   r;   r   rl   Zwslizer   sumsizerF   arrayrn   rD   ro   rX   rZ   r5   rq   r   r   r'   r'   r(   test03_setitemCArray+  sr    




z"BasicTestCase.test03_setitemCArray)r?   
__module____qualname__r6   rD   r=   r2   ri   rh   rk   r>   r5   rB   r-   r.   r/   r0   r!   r   r    rR   r\   ru   rx   r   r   __classcell__r'   r'   r%   r(   r      s.   	'H;=r   c                   @   s    e Zd ZdZdZdZdZdZdS )BasicWriteTestCaser   r   r   r   N)r?   r   r   r=   r2   r5   rk   r   r'   r'   r'   r(   r   {  s
   r   c                   @   s8   e Zd ZdZdZdZdZeed d ed dZdZ	dS )BasicWrite2TestCaser   r   r   r   r   r   N)
r?   r   r   r=   r2   r5   rk   r   r   r!   r'   r'   r'   r(   r     s   r   c                   @   s2   e Zd ZddgZeejjZdZ	dZ
dZdZdS )BasicWrite3TestCaser   r   Nr   r   r?   r   r   r6   r   rP   r;   namer=   r2   r5   rk   r!   r'   r'   r'   r(   r     s   r   c                   @   s2   e Zd ZeddgZejjZdZ	dZ
dZdZdS )BasicWrite4TestCaser   r   Nr   r   r?   r   r   r   r   r6   r;   r   r=   r2   r5   rk   r!   r'   r'   r'   r(   r     s   r   c                   @   s:   e Zd ZddgddggZeejjZdZ	dZ
dZdZdS )BasicWrite5TestCaser   r   r`      Nr   r   r   r   r'   r'   r'   r(   r     s   r   c                   @   s2   e Zd ZddgZeejjZdZ	dZ
dZdZdS )BasicWrite6TestCaser   r   Nr   r   r'   r'   r'   r(   r     s   r   c                   @   s2   e Zd ZeddgZejjZdZ	dZ
dZdZdS )BasicWrite7TestCaser   r   Nr   r   r'   r'   r'   r(   r     s   r   c                   @   s:   e Zd ZddgddggZeejjZdZ	dZ
dZdZdS )BasicWrite8TestCaser   r   r`   r   Nr   r   r'   r'   r'   r(   r     s   r   c                   @   s$   e Zd ZdZdZdZdZdZdZdS )EmptyCArrayTestCaser   r   r   r   r   r   N	r?   r   r   r=   r2   r5   ri   rh   rk   r'   r'   r'   r(   r     s   r   c                   @   s(   e Zd ZdZdZdZdZdZdZdZ	dS )EmptyCArray2TestCaser   r   r   r   r   r   N)
r?   r   r   r=   r2   r5   ri   rh   rk   r!   r'   r'   r'   r(   r     s   r   z%LZO compression library not availablec                   @   s8   e Zd ZdZdZdZdZdZedddedddfZ	dS )	SlicesCArrayTestCaser   lzor   r   r   r   r`   N
r?   r   r   rB   r-   r=   r2   r5   r   ry   r'   r'   r'   r(   r     s   r   c                   @   s(   e Zd ZdZdZdZeedddfZdS )EllipsisCArrayTestCaser   r   r   r   r   N	r?   r   r   r=   r2   r5   Ellipsisr   ry   r'   r'   r'   r(   r     s   r   c                   @   sB   e Zd ZdZdZdZdZdZedddedddedddfZ	dS )	Slices2CArrayTestCaser   r   r   r   r   r   r   r   r   r   Nr   r   r'   r'   r'   r(   r     s   r   c                   @   s2   e Zd ZdZdZdZedddeedddfZdS )Ellipsis2CArrayTestCaser   r   r   r   r   r   N	r?   r   r   r=   r2   r5   r   r   ry   r'   r'   r'   r(   r     s   r   c                   @   s   e Zd ZdZdZdZdZdZedddedddedd	dfZ	edddedd	dedd	dfZ	edddedd	dedd	dfZ	dS )
Slices3CArrayTestCaser   r   r   r   r`   r   r   r   r   r   r   r   r   Nr   r   r'   r'   r'   r(   r     s   
"r   c                	   @   sX   e Zd ZdZdZdZedddedddedddeddded	d
dedddfZdS )Slices4CArrayTestCaser   )r   r`   r   r   r      )r   r   r   r   r   r   r   r   r   Nr   r`   r      )r?   r   r   r=   r2   r5   r   ry   r'   r'   r'   r(   r     s   r   c                   @   sV   e Zd ZdZdZdZeedddedddfZedddedddedddefZdS )	Ellipsis3CArrayTestCaser   r   r   r   r   Nr   r   r   r'   r'   r'   r(   r     s
   r   c                   @   sL   e Zd ZdZdZdZeedddedddfZedddeedddfZdS )	Ellipsis4CArrayTestCaser   r   r`   r   r   r   r   r   Nr   r   r   r'   r'   r'   r(   r     s
   r   c                   @   s2   e Zd ZdZdZdZedddedddefZdS )	Ellipsis5CArrayTestCaser   r   r   r   r   r   r   Nr   r'   r'   r'   r(   r   &  s   r   c                   @   s4   e Zd ZdZdZdZedddeddddefZdS )	Ellipsis6CArrayTestCaser   r   r   r   r   r   r   Nr   r'   r'   r'   r(   r   -  s   r   c                   @   s:   e Zd ZdZdZdZedddedddedd	efZdS )
Ellipsis7CArrayTestCaser   r   r   r   r   r   r   Nr`   r   r'   r'   r'   r(   r   7  s   r   c                   @   s   e Zd ZdZdZdZdZdS )MD3WriteTestCaser   )r   r   r`   )r   r   r   r   N)r?   r   r   r=   r2   r5   rk   r'   r'   r'   r(   r   >  s   r   c                   @   s$   e Zd ZdZdZdZdZdZdZdS )MD5WriteTestCaser   )r   r   r`   r   r   )r   r   r   r   r   r   r   Nr   r'   r'   r'   r(   r   E  s   r   c                   @   s$   e Zd ZdZdZdZdZdZdZdS )MD6WriteTestCaser   )r   r`   r`   r   r   r   )r   r   r   r   r   r   r   r   r`   Nr   r'   r'   r'   r(   r   Q  s   r   c                   @   s$   e Zd ZdZdZdZdZdZdZdS )MD6WriteTestCase__r   r   )r   r   r   r`   Nr   r'   r'   r'   r(   r   Z  s   r   c                   @   s$   e Zd ZdZdZdZdZdZdZdS )MD7WriteTestCaser   )r   r`   r`   r   r   r   r`   )r   r   r   r   r   r   r   r   r   r   Nr   r'   r'   r'   r(   r   c  s   r   c                   @   s$   e Zd ZdZdZdZdZdZdZdS )MD10WriteTestCaser   )
r   r   r`   r   r   r   r   r`   r   r   )
r   r   r   r   r   r   r   r   r   r   rd   r   Nr   r'   r'   r'   r(   r   l  s   r   c                   @   s    e Zd ZdZdZdZdZdZdS )ZlibComprTestCaser   r   r`   Nr   )r?   r   r   rB   r-   ri   rh   rk   r'   r'   r'   r(   r   u  s
   r   c                   @   s$   e Zd ZdZdZdZdZdZdZdS )ZlibShuffleTestCaser   r   r`   r   N)	r?   r   r   r.   rB   r-   ri   rh   rk   r'   r'   r'   r(   r   ~  s   r   z'BLOSC compression library not availablec                   @   s$   e Zd ZdZdZdZdZdZdZdS )BloscComprTestCaser   bloscr   r   r`   r   N	r?   r   r   rB   r-   r5   ri   rh   rk   r'   r'   r'   r(   r     s   r   c                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )	BloscShuffleTestCase      r   r   d   r   r`   r   r   Nr?   r   r   r2   rB   r.   r-   r5   ri   rh   rk   r'   r'   r'   r(   r     s   r   zBLOSC >= %s requiredc                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )	BloscBitShuffleTestCaser   r   r      r   r      r   N)r?   r   r   r2   rB   r/   r-   r5   ri   rh   rk   r'   r'   r'   r(   r     s   r   c                   @   s0   e Zd ZdZdZdZdZdZdZdZ	dZ
dZdS )	BloscFletcherTestCase)r   i,  r   r   r   r`   r   r   N)r?   r   r   r2   rB   r.   r0   r-   r5   ri   rh   rk   r'   r'   r'   r(   r     s   r   c                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )	BloscBloscLZTestCaser   r   zblosc:blosclzr   r   r   r   Nr   r'   r'   r'   r(   r     s   r   Zlz4zlz4 requiredc                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )	BloscLZ4TestCaser   r   z	blosc:lz4r   r`   r   r   Nr   r'   r'   r'   r(   r     s   r   c                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )	BloscLZ4HCTestCaser   r   zblosc:lz4hcr   r`   r   r   Nr   r'   r'   r'   r(   r     s   r   Zsnappyzsnappy requiredc                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )	BloscSnappyTestCaser   r   zblosc:snappyr   r`   r   r   Nr   r'   r'   r'   r(   r     s   r   r   zzlib requiredc                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )	BloscZlibTestCaser   r   z
blosc:zlibr   r`   r   r   Nr   r'   r'   r'   r(   r     s   r   Zzstdzzstd requiredc                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )	BloscZstdTestCaser   r   z
blosc:zstdr   r`   r   r   Nr   r'   r'   r'   r(   r     s   r   c                   @   s$   e Zd ZdZdZdZdZdZdZdS )LZOComprTestCaser   r   r   r`   r   Nr   r'   r'   r'   r(   r     s   r   c                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )	LZOShuffleTestCaser   r   r   r   r`   r   r   Nr   r'   r'   r'   r(   r     s   r   z'BZIP2 compression library not availablec                   @   s(   e Zd ZdZdZdZdZdZdZdZ	dS )	Bzip2ComprTestCaser   r   bzip2r   r`   r      N)
r?   r   r   r2   rB   r-   r5   ri   rh   rk   r'   r'   r'   r(   r   '  s   r   c                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )	Bzip2ShuffleTestCaser   r   r   r   r`   r   r   Nr   r'   r'   r'   r(   r   3  s   r   c                   @   s(   e Zd ZdZdZdZdZdZdZdZ	dS )	Fletcher32TestCase)<   2   r   r   r   r   r   r   r   N)
r?   r   r   r2   rB   r0   r5   ri   rh   rk   r'   r'   r'   r(   r   @  s   r   c                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )AllFiltersTestCaser   r   )r   r   r   c   r   N)r?   r   r   rB   r.   r0   r-   r5   ri   rh   rk   r'   r'   r'   r(   r   J  s   r   c                   @   s$   e Zd ZdZdZdZdZdZdZdS )FloatTypeTestCasefloat64r   r   r`   r   r   Nr   r'   r'   r'   r(   r   U  s   r   c                   @   s$   e Zd ZdZdZdZdZdZdZdS )ComplexTypeTestCase
complex128r   r   r`   r   r   Nr   r'   r'   r'   r(   r   ^  s   r   c                   @   s<   e Zd ZdZdZdZdZdZdZdZ	e
dde
dd	fZd
S )StringTestCaser)   r   r   r   r`   r   r   r   r   N)r?   r   r   r=   r>   r2   r5   ri   rh   rk   r   ry   r'   r'   r'   r(   r   g  s   r   c                   @   s(   e Zd ZdZdZdZdZdZdZdZ	dS )	String2TestCaser)   r   )r   r   r   r   r   r   N)
r?   r   r   r=   r>   r2   r5   ri   rh   rk   r'   r'   r'   r(   r   s  s   r   c                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )	StringComprTestCaser)   r   )r   r   r   r   )r   r   r   rd   r   N)r?   r   r   r=   r>   r2   comprr5   ri   rh   rk   r'   r'   r'   r(   r   }  s   r   c                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )	Int8TestCaseint8r   r   r   rd   r   r   Nr?   r   r   r=   r2   rB   r.   r5   ri   rh   rk   r'   r'   r'   r(   r     s   r   c                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )Int16TestCaseint16r   r   r   r   Nr   r'   r'   r'   r(   r     s   r   c                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )	Int32TestCaser   r   r   r   rd   r   r   Nr   r'   r'   r'   r(   r     s   r   ZFloat16AtomzFloat16Atom not availablec                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )	Float16TestCaseZfloat16r   r   r   rd   r   r   Nr   r'   r'   r'   r(   r     s   r   c                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )	Float32TestCaseZfloat32r   r   r   rd   r   r   Nr   r'   r'   r'   r(   r     s   r   c                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )	Float64TestCaser   r   r   r   rd   r   r   Nr   r'   r'   r'   r(   r     s   r   ZFloat96AtomzFloat96Atom not availablec                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )	Float96TestCaseZfloat96r   r   r   rd   r   r   Nr   r'   r'   r'   r(   r     s   r   ZFloat128AtomzFloat128Atom not availablec                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )	Float128TestCaseZfloat128r   r   r   rd   r   r   Nr   r'   r'   r'   r(   r     s   r   c                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )	Complex64TestCaseZ	complex64)r   r   r   rd   r   r   Nr   r'   r'   r'   r(   r     s   r   c                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )	Complex128TestCaser   r   r   r   rd   r   r   Nr   r'   r'   r'   r(   r     s   r   ZComplex192AtomzComplex192Atom not availablec                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )	Complex192TestCaseZ
complex192r   r   r   rd   r   r   Nr   r'   r'   r'   r(   r     s   r   ZComplex256AtomzComplex256Atom not availablec                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )	Complex256TestCaseZ
complex256r   r   r   rd   r   r   Nr   r'   r'   r'   r(   r     s   r   c                   @   s0   e Zd ZdZdZdZdZdZdZdZ	dZ
dZdS )	ComprTestCaser   r   r   )   3   r   r   N)r?   r   r   r=   rB   r.   r2   r   r5   ri   rh   rk   r'   r'   r'   r(   r     s   r   c                       s<   e Zd Z fddZdd Zdd Zdd Zd	d
 Z  ZS )ReadOutArgumentTestsc                    s(   t t|   d| _tjddd| _d S )N  r   r   r,   r-   )r   r   r   r   r@   rA   r4   r#   r%   r'   r(   r   (  s    zReadOutArgumentTests.setUpc                 C   sB   t j| jdd}| jjddt | jf| jd}||d d < ||fS )Ni8r<   /r   r1   r2   r4   )r   rI   r   r   rC   r   r4   )r$   r   
disk_arrayr'   r'   r(   create_array-  s    z!ReadOutArgumentTests.create_arrayc                 C   s:   |   \}}t| jfd}|j|d tj|| d S )Nr   rv   )r  r   ro   r   rm   ZtestingZassert_equal)r$   r   r  
out_bufferr'   r'   r(   test_read_entire_array5  s    z+ReadOutArgumentTests.test_read_entire_arrayc              
   C   s   |   \}}t| jfd}|d| jd }| t|jd| jd| z|d| jd| W n4 ty } z| dt| W Y d }~n
d }~0 0 d S )Nr   r   r   zoutput array not C contiguous)	r  r   ro   r   assertRaises
ValueErrorrm   rX   str)r$   r   r  r  Zout_buffer_sliceexcr'   r'   r(   test_read_non_contiguous_buffer;  s    z4ReadOutArgumentTests.test_read_non_contiguous_bufferc              
   C   s   |   \}}t| jd fd}| t|jd| jd| z|d| jd| W n4 ty } z| dt| W Y d }~n
d }~0 0 d S )Nr   r   r   r   zoutput array size invalid, got)	r  r   ro   r   r  r  rm   ZassertInr  )r$   r   r  r  r  r'   r'   r(   test_buffer_too_smallH  s    z*ReadOutArgumentTests.test_buffer_too_small)	r?   r   r   r   r  r  r	  r
  r   r'   r'   r%   r(   r   &  s
   r   c                       sD   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Z  Z	S )"SizeOnDiskInMemoryPropertyTestCasec                    s$   t t|   d| _d| _d| _d S )N)i'  r   )r   r   ip  )r   r  r   
array_sizer5   hdf_overheadr#   r%   r'   r(   r   U  s    z(SizeOnDiskInMemoryPropertyTestCase.setUpc                 C   s2   t j|dd}| jjddt | j|| jd| _d S )Nr   r   r   Z	somearray)r1   r2   r4   r5   )r@   rA   r   rC   r   r  r5   r   )r$   r,   r4   r'   r'   r(   r  ^  s    
z/SizeOnDiskInMemoryPropertyTestCase.create_arrayc                 C   s2   d}|  | | | jjd | | jjd d S )Nr   @ )r  rX   r   size_on_disksize_in_memoryr$   r,   r'   r'   r(   test_no_dataf  s    
z/SizeOnDiskInMemoryPropertyTestCase.test_no_datac                 C   s@   d}|  | d| jd d < | | jjd | | jjd d S )Nr   r   r  )r  r   rX   r  r  r  r'   r'   r(   test_data_no_compressionl  s
    
z;SizeOnDiskInMemoryPropertyTestCase.test_data_no_compressionc                 C   sz   d}|  | d| jd d < | j  t| jj}| t	| jj
| | jk | | jj
| jjk  | | jjd d S )Nr   r  )r  r   r   flushosstatrV   st_sizerq   absr  r  r  rX   r$   r,   	file_sizer'   r'   r(   test_highly_compressible_datas  s    

z@SizeOnDiskInMemoryPropertyTestCase.test_highly_compressible_datac                 C   s   d}|  | tjdd| j| jd d < | j  t	| j
j}| t| jj| | jk tdd ur~| | jjd n| t| jjd dk  d S )Nr   r   g    .Ar   r  r   )r  r   ZrandomZrandintr  r   r   r  r  r  rV   r  rq   r  r  r  r@   Zwhich_lib_versionZassertAlmostEqualr  r'   r'   r(   test_random_data  s    

z3SizeOnDiskInMemoryPropertyTestCase.test_random_data)
r?   r   r   r   r  r  r  r  r  r   r'   r'   r%   r(   r  S  s   	r  c                       sD   e Zd ZdZdZ fddZdd Zdd Zd	d
 Zdd Z	  Z
S )OffsetStrideTestCaser   r   c                    s   t t|   | jj| _d S r   )r   r  r   r   r   r   r#   r%   r'   r(   r     s    zOffsetStrideTestCase.setUpc                 C   sl  | j }tjr&tdd td| jj  d}| jj|dtdd|dd	d
}t	j
ddgddgddgggdd}|dddf |d< t	
ddgddgddgddggg}|dddf |d< | }tjrtd| td|jd|j td|d   | |jd | |d  ddgddgg | |d  dd gd d!gg | t|d d | t|d d dS )"z4Checking carray with offseted NumPy strings appends.r^   r_   zRunning %s.test01a_String...r`   r   r   stringsr`   r*   Array of stringsr   r   r   r1   r2   r3   r5   r   b12345S3r<   r   r   Nsabfabcr   Object read:Nrows in:Second row in carray ==>   123   45   s   abc   fr   r   rJ   rK   r&   r?   r   rC   r   r   r   rm   _v_pathnamer[   tolistrX   rZ   r$   r   r2   rN   r   rt   r'   r'   r(   test01a_String  sF    




  z#OffsetStrideTestCase.test01a_Stringc                 C   sp  | j }tjr&tdd td| jj  d}| jj|dtdd|dd	d
}t	j
ddgddgddgggdd}|ddddf |d< t	
ddgddgddgddggg}|ddddf |d< | }tjrtd| td|jd|j td|d   | |jd | |d  ddgdd gg | |d  d!dgd!d"gg | t|d d | t|d d dS )#z3Checking carray with strided NumPy strings appends.r^   r_   zRunning %s.test01b_String...r  r  r`   r*   r   r!  r"  r   r#  r$  r%  r&  r<   r   Nr   r'  r(  r)  r*  r   r+  r,  r-  r.  r7      br0  r/  r1  r2  r4  r7  r'   r'   r(   test01b_String  sF    




  z#OffsetStrideTestCase.test01b_Stringc                 C   s@  | j }tjr&tdd td| jj  d}| jj|dt |ddd}t	j
g d	d
d}|dd |dd< t	j
ddgd
d}|dd |dd< | }tjrtd| td|jd|j td|d  | |jd | t|d t	j
g dd
d | t|d t	j
g dd
d | t|d t	j
g dd
d dS )z1Checking carray with offseted NumPy ints appends.r^   r_   zRunning %s.test02a_int...r`   r`   CAtomarray of intsr   r`   r"  )r   r   r   r   r   r`   r   r   r   r?  r   r<   r   Nr   rA  rd   r   r   r   r`   r+  r,  r-  Third row in carray ==>r?  r   r   rJ   rK   r&   r?   r   rC   r   r   r   rm   r5  r[   rX   rq   r   r7  r'   r'   r(   test02a_int  sJ    



z OffsetStrideTestCase.test02a_intc                 C   sD  | j }tjr&tdd td| jj  d}| jj|dt |ddd}t	j
g d	d
d}|ddd |dd< t	j
ddgd
d}|ddd |dd< | }tjrtd| td|jd|j td|d  | |jd | t|d t	j
g dd
d | t|d t	j
g dd
d | t|d t	j
g dd
d dS )z0Checking carray with strided NumPy ints appends.r^   r_   zRunning %s.test02b_int...r;  r<  r=  r>  r"  )r?  r@  rA  r`   r`   r`   r   r<   Nr`   r   r   rA  rB  r+  r,  r-  rC  r?  r   rF  rD  r7  r'   r'   r(   test02b_int  sJ    



z OffsetStrideTestCase.test02b_int)r?   r   r   rB   r-   r   r8  r:  rE  rG  r   r'   r'   r%   r(   r    s   #$$r  c                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )CopyTestCasec                 C   s  t jr tdd td| jj  d}t }| jj| jjd||ddd}t	j
dd	gd
dggdd|d< | jrt jrxtd | jdd | jjj}|dd}| jrt jrtd |   | jjj}| jjj}t jrtd|  td|  tdt|j tdt|j | t| |  | |j|j | |j|j | |j|j | |j|j | |jj|jj | |jj|jj | |j|j | t|jt|j dS )Checking CArray.copy() method.r^   r_   zRunning %s.test01a_copy...r   array1title array1r"    r   r`     r   r<   .(closing file version)r   moder   array2	array1-->	array2-->attrs array1-->attrs array2-->Nr   rJ   rK   r&   r?   r   r   rC   r   r   r   r"   _reopenrJ  rl   rQ  rm   rL   attrsrq   r   rX   r[   r2   extdimrD   r1   r;   r=   r3   r  r$   r2   r1   rJ  rQ  r'   r'   r(   test01a_copy+  sH    



zCopyTestCase.test01a_copyc                 C   s  t jr tdd td| jj  d}t }| jj| jjd||ddd}t	j
d	d
gddggdd|d< | jrt jrxtd | jdd | jjj}|dd}| jrt jrtd |   | jjj}| jjj}t jrtd|  td|  tdt|j tdt|j | t| |  | |j|j | |j|j | |j|j | |j|j | |jj|jj | |jj|jj | |j|j | t|jt|j | |j|j dS )rI  r^   r_   zRunning %s.test01b_copy...r   rJ  rK  r   r"  rL  r   r`   rM  r   r<   .z(closing h5fname version)r   rO  r   rQ  rR  rS  rT  rU  N) r   rJ   rK   r&   r?   r   r   rC   r   r   r   r"   rW  rJ  rl   rQ  rm   rL   rX  rq   r   rX   r[   r2   rY  rD   r1   r;   r=   r3   r  r5   rZ  r'   r'   r(   test01b_copyb  sJ    



zCopyTestCase.test01b_copyc                 C   s  t jr tdd td| jj  d}t }| jj| jjd||ddd}t	j
d	d
gddggdd|dd
dd
f< | jrt jrtd | jdd | jjj}|dd}| jrt jrtd |   | jjj}| jjj}t jrtd|  td|  tdt|j tdt|j | t| |  | |j|j | |j|j | |j|j | |j|j | |jj|jj | |jj|jj | |j|j | t|jt|j dS )rI  r^   r_   zRunning %s.test01c_copy...r   rJ  rK  r   r"  rL  r   r`   rM  r   r<   NrN  r   rO  r   rQ  rR  rS  rT  rU  rV  rZ  r'   r'   r(   test01c_copy  sH    
*


zCopyTestCase.test01c_copyc                 C   s  t jr tdd td| jj  d}t }| jj| jjd||ddd}t	j
d	d
gddggdd|dd
dd
f< | jrt jrtd | jdd | jjj}| jdd}||d}| jrt jrtd |   | jjj}| jjjj}t jr*td|  td|  tdt|j tdt|j | t| |  | |j|j | |j|j | |j|j | |j|j | |jj|jj | |jj|jj | |j|j | t |jt |j dS )z/Checking CArray.copy() method (where specified)r^   r_   zRunning %s.test02_copy...r   rJ  rK  r   r"  rL  r   r`   rM  r   r<   NrN  r   rO  r   group1rQ  rR  rS  rT  rU  )!r   rJ   rK   r&   r?   r   r   rC   r   r   r   r"   rW  rJ  Zcreate_grouprl   r^  rQ  rm   rL   rX  rq   r   rX   r[   r2   rY  rD   r1   r;   r=   r3   r  )r$   r2   r1   rJ  r^  rQ  r'   r'   r(   test02_copy  sJ    
*

zCopyTestCase.test02_copyc                 C   s  t jr tdd td| jj  d}t }| jj| jjd||ddd}d|_	d	d
gddgg|d< | j
rt jrttd | jdd | jjj}|dd}| j
rt jrtd |   | jjj}| jjj}t jrtdt|j tdt|j | | |  | |j|j | |j|j | |j|j | |j	|j	 | |jj|jj | |jj|jj | |j|j | t|jt|j dS )z-Checking CArray.copy() method (python flavor)r^   r_   zRunning %s.test03c_copy...r   rJ  rK  r"  pythonrL  r   r`   rM  .rN  r   rO  r   rQ  rT  rU  N)r   rJ   rK   r&   r?   r   r   rC   r   rD   r"   rW  rJ  rl   rQ  rL   rX  rX   rm   r[   r2   rY  r1   r;   r=   r3   r  rZ  r'   r'   r(   test03a_copy  sF    



zCopyTestCase.test03a_copyc                 C   s  t jr tdd td| jj  d}tdd}| jj| jjd||ddd	}d
|_	ddgddgg|d< | j
rt jrxtd | jdd | jjj}|dd}| j
rt jrtd |   | jjj}| jjj}t jr"tdt|dd d d  td|dd  tdt|j tdt|j | | |  | |j|j | |j|j | |j|j | |j	|j	 | |jj|jj | |jj|jj | |j|j | t|jt|j dS )z4Checking CArray.copy() method (string python flavor)r^   r_   zRunning %s.test03d_copy...r   r   r*   rJ  rK  r"  r`  45623457.rN  r   rO  r   rQ  ztype value-->Nr   zvalue-->rT  rU  )r   rJ   rK   r&   r?   r   r   rC   r   rD   r"   rW  rJ  rl   rQ  r=   rL   rX  rX   rm   r[   r2   rY  r1   r;   r3   r  rZ  r'   r'   r(   test03b_copy9  sJ    




zCopyTestCase.test03b_copyc                 C   s  t jr tdd td| jj  d}tdd}| jj| jjd||ddd	}t	j
d
dgddggdd|d< | jrt jr|td | jdd | jjj}|dd}| jrt jrtd |   | jjj}| jjj}t jrtdt|j tdt|j | t| |  | |j|j | |j|j | |j|j | |j|j | |jj|jj | |jj|jj | |j|j | t|jt|j dS )z0Checking CArray.copy() method (chararray flavor)r^   r_   zRunning %s.test03e_copy...r   r   r*   rJ  rK  r"  rb  rc  rd  re  ZS4r<   .rN  r   rO  r   rQ  rT  rU  N)r   rJ   rK   r&   r?   r   r   rC   r   r   r   r"   rW  rJ  rl   rQ  rL   rX  rq   r   rm   rX   r[   r2   rY  rD   r1   r;   r=   r3   r  rZ  r'   r'   r(   test03c_copyo  sD    




zCopyTestCase.test03c_copyc                 C   s  t jr tdd td| jj  d}t }| jj| jjd||ddd}t	j
dd	gd
dggdd|d< d|j_d	|j_| jrt jrtd | jdd | jjj}|jdddd}| jrt jrtd |   | jjj}| jjj}t jrtd|j | |jd dS )z6Checking CArray.copy() method (checking title copying)r^   r_   zRunning %s.test04_copy...r   rJ  rK  r"  rL  r   r`   rM  r   r<   .attr1rN  r   rO  r   rQ  ztitle array2)r3   ztitle of destination array-->N)r   rJ   rK   r&   r?   r   r   rC   r   r   r   rX  rh  attr2r"   rW  rJ  rl   rQ  r3   rX   rZ  r'   r'   r(   test04_copy  s6    



zCopyTestCase.test04_copyc                 C   s*  t jr tdd td| jj  d}t }| jj| jjd||ddd}t	j
dd	gd
dggdd|d< d|j_d	|j_| jrt jrtd | jdd | jjj}|jdddd}| jrt jrtd |   | jjj}| jjj}t jrtdt|j tdt|j | |jjd | |jjd	 dS )z6Checking CArray.copy() method (user attributes copied)r^   r_   zRunning %s.test05_copy...r   rJ  rK  r"  rL  r   r`   rM  r   r<   .rh  rN  r   rO  r   rQ  r   ZcopyuserattrsrT  rU  N)r   rJ   rK   r&   r?   r   r   rC   r   r   r   rX  rh  ri  r"   rW  rJ  rl   rQ  rL   rX   rZ  r'   r'   r(   test05_copy  s:    



zCopyTestCase.test05_copyc                 C   s2  t jr tdd td| jj  d}t }| jj| jjd||ddd}t	j
dd	gd
dggdd|d< d|j_d	|j_| jrt jrtd | jdd | jjj}|jdddd}| jrt jrtd |   | jjj}| jjj}t jrtdt|j tdt|j | t|jdd | t|jdd dS )z:Checking CArray.copy() method (user attributes not copied)r^   r_   zRunning %s.test05b_copy...r   rJ  rK  r"  rL  r   r`   rM  r   r<   .rh  rN  r   rO  r   rQ  r   rk  rT  rU  ri  N)r   rJ   rK   r&   r?   r   r   rC   r   r   r   rX  rh  ri  r"   rW  rJ  rl   rQ  rL   rX   rp   rZ  r'   r'   r(   test05b_copy  s:    



zCopyTestCase.test05b_copyN)r?   r   r   r[  r\  r]  r_  ra  rf  rg  rj  rl  rm  r'   r'   r'   r(   rH  )  s   7578362(+rH  c                   @   s   e Zd ZdZdS )CloseCopyTestCaser   Nr?   r   r   r"   r'   r'   r'   r(   rn     s   rn  c                   @   s   e Zd ZdZdS )OpenCopyTestCaser   Nro  r'   r'   r'   r(   rp  $  s   rp  c                   @   s    e Zd ZdZdd Zdd ZdS )CopyIndexTestCaser   c                 C   s*  t jr tdd td| jj  d}t }| jj| jjd||ddd}t	j
d	d
d}||_||d< | j|_|jdd| j| j| jd}t jrtd|  td|  tdt|j tdt|j || j| j| j }| t||  t jrtd|j td|jd  | |jd |j dS )z+Checking CArray.copy() method with indexes.r^   r_   zRunning %s.test01_index...r   r   rJ  rK  r   r"  r   r   r<   .r   rQ  ri   rh   rk   rR  rS  rT  rU  nrows in array2-->and it should be-->r   N)r   rJ   rK   r&   r?   r   r   rC   r   r   rI   r2   rg   rl   ri   rh   rk   rm   rL   rX  rq   r   r[   rX   r$   r2   r1   rJ  rS   rQ  Zr2r'   r'   r(   test01_index+  s:    
zCopyIndexTestCase.test01_indexc                 C   sV  t jr tdd td| jj  d}t }| jj| jjd||ddd}t	j
d	d
d}||_||d< | j|_|jdd| j| j| jd}|   | jjj}| jjj}t jrtd|  td|  tdt|j tdt|j || j| j| j }| |j|j | t||  t jr>td|j td|jd  | |jd |j dS )z?Checking CArray.copy() method with indexes (close file version)r^   r_   z Running %s.test02_indexclosef...rr  rJ  rK  r   r"  r   r   r<   .r   rQ  rs  rR  rS  rT  rU  rt  ru  r   N)r   rJ   rK   r&   r?   r   r   rC   r   r   rI   r2   rg   rl   ri   rh   rk   rW  rJ  rQ  rm   rL   rX  rX   r5   rq   r   r[   rv  r'   r'   r(   _test02_indexclosefY  sB    


z%CopyIndexTestCase._test02_indexclosefN)r?   r   r   rg   rw  rx  r'   r'   r'   r(   rq  (  s   .rq  c                   @   s   e Zd ZdZdZdZdZdS )CopyIndex1TestCaser   r   r   Nr?   r   r   rg   ri   rh   rk   r'   r'   r'   r(   ry    s   ry  c                   @   s   e Zd ZdZdZdZdZdS )CopyIndex2TestCaser   r   rd   r   Nrz  r'   r'   r'   r(   r{    s   r{  c                   @   s   e Zd ZdZdZdZdZdS )CopyIndex3TestCaser`   r   r   Nrz  r'   r'   r'   r(   r|    s   r|  c                   @   s   e Zd ZdZdZdZdZdS )CopyIndex4TestCaser   r   r   r   Nrz  r'   r'   r'   r(   r}    s   r}  c                   @   s   e Zd ZdZdZdZdZdS )CopyIndex5TestCaser   r`   r   r   Nrz  r'   r'   r'   r(   r~    s   r~  c                   @   s   e Zd ZdZdZdZdZdS )CopyIndex6TestCaser   r`   r   Nrz  r'   r'   r'   r(   r    s   r  c                   @   s   e Zd ZdZdZdZdS )CopyIndex7TestCaser   r   r   Nr?   r   r   ri   rh   rk   r'   r'   r'   r(   r    s   r  c                   @   s   e Zd ZdZdZdZdS )CopyIndex8TestCaser   rd   r   Nr  r'   r'   r'   r(   r    s   r  c                   @   s   e Zd ZdZdZdZdS )CopyIndex9TestCaser`   r   r   Nr  r'   r'   r'   r(   r    s   r  c                   @   s   e Zd ZdZdZdZdZdS )CopyIndex10TestCaser   r`   r   r   Nrz  r'   r'   r'   r(   r    s   r  c                   @   s   e Zd ZdZdZdZdS )CopyIndex11TestCaserd   r   Nr  r'   r'   r'   r(   r    s   r  c                   @   s   e Zd ZdZdZdZdS )CopyIndex12TestCaserd   Nr   r  r'   r'   r'   r(   r    s   r  c                       s,   e Zd ZdZdZ fddZdd Z  ZS )Rows64bitsTestCase@B i  c              	      s   t t|   | j| j f}| jj| jjdt |t	j
dddd}tj| jdd}td| j}|||< t| jd | j | j| j }|||< d S )	Nr   r   r   )r-   r,   r   r   r<   r   )r   r  r   narowsnanumberr   rC   r   r   r@   rA   r   rI   r   )r$   r2   r   Znar'  r%   r'   r(   r     s    zRows64bitsTestCase.setUpc              	   C   s  | j jj}| jrptjrPtd td|jt|j td|jd d td|j	 | 
  | j jj}tjrptd tjrtd|jt|j td|jd d td|j	 td|dd	  | jd
 }|dkr|d
8 }|d }tdtj||dd | j| j }| |j| | |j	|f | t|d	d tjddd | jd
 }|dkrZ|d
8 }|d }| t|dd	 tj||dd d	S )z2Some basic checks for carrays exceeding 2**31 rowszBefore closingzEntries:r  ZMillionszShape:zAfter re-openzLast 10 elements-->iN      r   zShould look like:r   r<   )r   r   r   r"   r   rJ   rK   r[   r=   r2   rW  r  r   rI   r  rX   rq   r   )r$   r   rh   ri   r[   r'   r'   r(   test01_basiccheck  s@    


"

z$Rows64bitsTestCase.test01_basiccheck)r?   r   r   r  r  r   r  r   r'   r'   r%   r(   r    s   r  c                   @   s   e Zd ZdZdS )Rows64bitsTestCase1r   Nro  r'   r'   r'   r(   r  '  s   r  c                   @   s   e Zd ZdZdS )Rows64bitsTestCase2r   Nro  r'   r'   r'   r(   r  +  s   r  c                       s0   e Zd ZdZ fddZdd Zdd Z  ZS )BigArrayTestCase)l    ^e c                    s*   t t|   | jjddt | jd d S )Nr   r   r1   r2   )r   r  r   r   rC   r   r2   r#   r%   r'   r(   r   2  s    
zBigArrayTestCase.setUpc              	   C   sl   |  | jjjj| j z |  t| jjj| jd  W n0 tyf   | | jd t	t
jkd Y n0 dS )z&Check that the shape doesn't overflow.r   z3Array length overflowed but ``int`` is wide enough.N)rX   r   r   r   r2   rZ   OverflowErrorrq   r   Ziinforj   maxr#   r'   r'   r(   test00_shape9  s     zBigArrayTestCase.test00_shapec                 C   s   |  d |   dS )z6Check that the shape doesn't overflow after reopening.rS   N)rW  r  r#   r'   r'   r(   test01_shape_reopenE  s    
z$BigArrayTestCase.test01_shape_reopen)r?   r   r   r2   r   r  r  r   r'   r'   r%   r(   r  /  s   r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )DfltAtomTestCasec                 C   sv   | j jddtddddd | jr*|   | j jjdd }tjrLt	d	| | 
t|td
gd ddd dS )z1Check that Atom.dflt is honored (string version).r   barr   s   abdef)r+   dfltr   r  NRead values:Zabdefr   ZS5r   )r   rC   r   r!   rW  r   r  r   rJ   rK   rq   r   r   r   reshaper$   valuesr'   r'   r(   test00_dfltN  s    


zDfltAtomTestCase.test00_dfltc                 C   sf   | j jddtdddd | jr(|   | j jjdd }tjrJt	d| | 
t|tdd	 dS )
z.Check that Atom.dflt is honored (int version).r   r  r   r  r   r  Nr  i4)r   rC   r   r!   rW  r   r  r   rJ   rK   rq   r   r   onesr  r'   r'   r(   test01_dflt`  s    


zDfltAtomTestCase.test01_dfltc                 C   sj   | j jddtdddd | jr(|   | j jjdd }tjrJt	d| | 
t|tdd	d  dS )
z0Check that Atom.dflt is honored (float version).r   r  g/$?r  r   r  Nr  Zf8)r   rC   r	   r!   rW  r   r  r   rJ   rK   rq   r   r   r  r  r'   r'   r(   test02_dfltp  s    


zDfltAtomTestCase.test02_dfltN)r?   r   r   r  r  r  r'   r'   r'   r(   r  L  s   r  c                   @   s   e Zd ZdZdS )DfltAtomNoReopenFNr?   r   r   r!   r'   r'   r'   r(   r    s   r  c                   @   s   e Zd ZdZdS )DfltAtomReopenTNr  r'   r'   r'   r(   r    s   r  c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )AtomDefaultReprTestCasec                 C   s   d}t d|dd}| jjdd|dd}| jr@| d	 | jjj}tjrjt	d
t
|d  t	dt
|jj | t|d t|d | t|jjt|d dS )z(Testing default values.  Zeros (scalar).r'   r`       r+   r2   r  r   testr   r  r   First row-->r   Defaults-->r&  N)r   r   rC   r!   rW  r   r  r   rJ   rK   rL   r1   r  rq   r   r   zerosr$   Nr1   car'   r'   r(   test00a_zeros  s    

z%AtomDefaultReprTestCase.test00a_zerosc                 C   s   d}t d|dd}| jjdd|dd}| jr@| d	 | jjj}tjrbt	d
|d  t	d|j
j | t|d t|d | t|j
jt|d dS )z'Testing default values.  Zeros (array).r   r`   r  r  r   r  r  r  r   r  r   r  r&  N)r   r   rC   r!   rW  r   r  r   rJ   rK   r1   r  rq   r   r   r  r  r'   r'   r(   test00b_zeros  s    

z%AtomDefaultReprTestCase.test00b_zerosc                 C   s   d}t |dd}| jjdd|dd}| jr>| d | jjj}tjr`t	d	|d
  t	d|j
j | t|d
 t|d | t|j
jt|d dS )zTesting default values.  Ones.r   r   r2   r  r   r  r  r  r   r  r   r  r  N)r   r   rC   r!   rW  r   r  r   rJ   rK   r1   r  rq   r   r   r  r  r'   r'   r(   test01a_values  s    

z&AtomDefaultReprTestCase.test01a_valuesc                 C   s   d}d}t ||d}| jjdd|dd}| jrB| d | jjj}tjrdt	d	|d
  t	d|j
j | t|d
 t|d|  | t|j
jt|d|  dS )z'Testing default values.  Generic value.r   gGz\@r  r   r  r  r  r   r  r   r  Zf4N)r
   r   rC   r!   rW  r   r  r   rJ   rK   r1   r  rq   r   r   r  )r$   r  Zgenericr1   r  r'   r'   r(   test01b_values  s    

 z&AtomDefaultReprTestCase.test01b_valuesc                 C   s   d}t |dd}| jjdd|dd}| jr>| d | jjj}tjrht	d	t
|d
  t	dt
|jj | t|jjt|d dS )z'Testing default values.  None (scalar).r'   Nr  r   r  r  r  r   r  r   r  r  )r   r   rC   r!   rW  r   r  r   rJ   rK   rL   r1   r  rq   r   r   r  r  r'   r'   r(   test02a_None  s    

z$AtomDefaultReprTestCase.test02a_Nonec                 C   s   d}t |dd}| jjdd|dd}| jr>| d | jjj}tjr`t	d	|d
  t	d|j
j | t|j
jt|d dS )z&Testing default values.  None (array).r   Nr  r   r  r  r  r   r  r   r  r  )r   r   rC   r!   rW  r   r  r   rJ   rK   r1   r  rq   r   r   r  r  r'   r'   r(   test02b_None  s    

z$AtomDefaultReprTestCase.test02b_NoneN)	r?   r   r   r  r  r  r  r  r  r'   r'   r'   r(   r    s   r  c                   @   s   e Zd ZdZdS )AtomDefaultReprNoReopenFNr  r'   r'   r'   r(   r    s   r  c                   @   s   e Zd ZdZdS )AtomDefaultReprReopenTNr  r'   r'   r'   r(   r    s   r  c                   @   s   e Zd Zdd ZdS )TruncateTestCasec                 C   s,   | j ddt ddg}| t|jd dS )z-Test for unability to truncate Array objects.r   rJ  r   r   N)r   rC   r   r  	TypeErrortruncate)r$   rJ  r'   r'   r(   r    s    zTruncateTestCase.testN)r?   r   r   r  r'   r'   r'   r(   r    s   r  c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )MDAtomTestCasec              	   C   s   | j jddtddd}| jr2| d | j jj}ddgd	d
gg|d< | |jd t	j
rhtd|d  | t|d tddgd	d
ggd dS )z9Assign a row to a (unidimensional) CArray with a MD atom.r   r  r   r  r  r   r   r`   r   r   r   r  r  Nr   rC   r   r!   rW  r   r  rX   r[   r   rJ   rK   rq   r   r   r   r$   r  r'   r'   r(   test01a_assign  s    


zMDAtomTestCase.test01a_assignc              	   C   s   | j jddtddd}| jr2| d | j jj}dggdggd	ggg|d
d
< | |jd	 t	j
rrtd|d  | t|d td	d	gd	d	ggd d
S )z@Assign several rows to a (unidimensional) CArray with a MD atom.r   r  r   )r`   r  r   r   r   r`   NThird row-->r  r  r  r'   r'   r(   test01b_assign	  s    


zMDAtomTestCase.test01b_assignc              
   C   s   | j jddtddd}| jr2| d | j jj}ddgd	d
gddggg|dd< | |jd t	j
rttd|d  | t|d tddgd	d
gddggd dS )z;Assign a row to a (multidimensional) CArray with a MD atom.r   r  r   r>  r  r   r   r`   r   r   r   	   Nr  r   r  r  r  r'   r'   r(   test02a_assign	  s    


 zMDAtomTestCase.test02a_assignc              
   C   s   | j jddtddd}| jr2| d | j jj}ddgd	d
gddggddgddgddggddgd
dgddggg|dd< | |jd t	j
rtd|d  | t|d tddgd
dgddggd dS )zJAssign several rows to a (multidimensional) CArray with
        a MD atom.r   r  r   r;  r  r   r   r  r   ir  rd   r`   r   r   iiNr  r   r  r  r  r'   r'   r(   test02b_assign0	  s     


&zMDAtomTestCase.test02b_assignc                 C   s   | j jddtddd}| jr2| d | j jj}tjddd		d
}|d |d |d g|dd< | 
|jd tjrtd|d  | t|d |d  dS )z;Complex assign of a MD array in a MD CArray with a MD atom.r   r  r   r   )r`   r   r`   r  r   0   r  r<   )r   r`   r   r   r   r   r`   Nr  r   rC   r   r!   rW  r   r  r   rI   r  rX   r[   r   rJ   rK   rq   r   r$   r  r   r'   r'   r(   test03a_MDMDMDD	  s    


zMDAtomTestCase.test03a_MDMDMDc                 C   s   | j jddtddd}| jr2| d | j jj}tjddd		d
}||dd< | 
|jd tjr~td|ddddf  | t|ddddf |ddddf  dS )z@Complex assign of a MD array in a MD CArray with a MD atom (II).r   r  r  )r   r`   r`   r  r      r  r<   )r   r`   r`   r   r   Nr   r  .r  r  r'   r'   r(   test03b_MDMDMDW	  s    

zMDAtomTestCase.test03b_MDMDMDc              	   C   s   | j jddtddd}| jr2| d | j jj}tjddd		d
}||dd< | 
|jd tjrtd|ddddddf  | t|ddddddf |ddddddf  dS )zAComplex assign of a MD array in a MD CArray with a MD atom (III).r   r  r  )r`   r   r   r  r   r  r  r<   )r`   r   r   r   r   Nr`   zSecond row-->r   .r  r  r'   r'   r(   test03c_MDMDMDj	  s    


zMDAtomTestCase.test03c_MDMDMDN)
r?   r   r   r  r  r  r  r  r  r  r'   r'   r'   r(   r    s   r  c                   @   s   e Zd ZdZdS )MDAtomNoReopenFNr  r'   r'   r'   r(   r  ~	  s   r  c                   @   s   e Zd ZdZdS )MDAtomReopenTNr  r'   r'   r'   r(   r  	  s   r  c                   @   s   e Zd Zdd ZdS )MDLargeAtomTestCasec                 C   sl   d}| j jddt|ddd}| jr8| d | j jj}tjrLt	d|d	  | 
t|d	 t|d
 dS )z*Create a CArray with a very large MD atom.i   r   r  )r2   r  r  r   r  r   r  N)r   rC   r   r!   rW  r   r  r   rJ   rK   rq   r   r   r  )r$   r  r  r'   r'   r(   test01_create	  s    



z!MDLargeAtomTestCase.test01_createN)r?   r   r   r  r'   r'   r'   r(   r  	  s   r  c                   @   s   e Zd ZdZdS )MDLargeAtomNoReopenFNr  r'   r'   r'   r(   r  	  s   r  c                   @   s   e Zd ZdZdS )MDLargeAtomReopenTNr  r'   r'   r'   r(   r  	  s   r  c                       s4   e Zd Z fddZdd Zdd Zdd Z  ZS )	AccessClosedTestCasec                    s>   t t|   | jj| jjdt dd| _t	d| jd< d S )Nr   r   r  .)
r   r  r   r   rC   r   r   r   r   r  r#   r%   r'   r(   r   	  s    zAccessClosedTestCase.setUpc                 C   s    | j   | tj| jj d S r   )r   r"   r  r@   ClosedNodeErrorr   rm   r#   r'   r'   r(   	test_read	  s    
zAccessClosedTestCase.test_readc                 C   s"   | j   | tj| jjd d S Nr   )r   r"   r  r@   r  r   r   r#   r'   r'   r(   test_getitem	  s    
z!AccessClosedTestCase.test_getitemc                 C   s$   | j   | tj| jjdd d S r  )r   r"   r  r@   r  r   __setitem__r#   r'   r'   r(   test_setitem	  s    
z!AccessClosedTestCase.test_setitem)r?   r   r   r   r  r  r  r   r'   r'   r%   r(   r  	  s   r  c                   @   s   e Zd Zeg dg dg dgZdZdZe	ej
ZejZdZdZdZdZd	Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% ZdS )&TestCreateCArrayArgs)r   r   r`   )r   r   r   )r   r   r  r   rN   r3   N)r   r   Fc              	   C   s   | j | j| j| j| j| j| j| j | j 	  t
| j| _ | j | j| j}| }| |j| j | |j| j | |j| j | |jj| jj | |j| j | tt| j| d S r   )r   rC   wherer   r1   r2   r3   r4   r5   r"   r@   rU   rV   rW   rm   rX   r;   rq   r   r   
zeros_liker6   r$   ZptarrZnparrr'   r'   r(   test_positional_args_01	  s    
z,TestCreateCArrayArgs.test_positional_args_01c              	   C   s   | j | j| j| j| j| j| j| j}| j	|d< | j 
  t| j| _ | j | j| j}| }| |j| j | |j| j | |j| j | |jj| jj | |j| j | t| j	| d S )N.)r   rC   r  r   r1   r2   r3   r4   r5   r6   r"   r@   rU   rV   rW   rm   rX   r;   rq   r   r  r'   r'   r(   test_positional_args_02	  s     

z,TestCreateCArrayArgs.test_positional_args_02c                 C   s   | j | j| jd d | j| j| j| j| j| j	
 | j 
  t| j| _ | j | j| j}| }| |j| j | |j| j | |j| j | |jj| jj | |j| j | t| j	| d S r   )r   rC   r  r   r3   r4   r5   	byteordercreateparentsr6   r"   r@   rU   rV   rW   rm   rX   r2   r1   r;   rq   r   r  r'   r'   r(   test_positional_args_obj	  s"    
z-TestCreateCArrayArgs.test_positional_args_objc                 C   s   | j j| j| j| j| j| jd | j   t	| j
| _ | j | j| j}| }| |j| j | |j| j | |j| j | |jj| jj | |j| j | t| j| d S )N)r3   r5   r6   )r   rC   r  r   r3   r5   r6   r"   r@   rU   rV   rW   rm   rX   r2   r1   r;   rq   r   r  r'   r'   r(   test_kwargs_obj	  s    
z$TestCreateCArrayArgs.test_kwargs_objc                 C   s   | j j| j| j| j| j| j| jd}| j|d< | j 	  t
| j| _ | j | j| j}| }| |j| j | |j| j | |j| j | |jj| jj | |j| j | t| j| d S )Nr3   r5   r1   r2   .)r   rC   r  r   r3   r5   r1   r2   r6   r"   r@   rU   rV   rW   rm   rX   r;   rq   r   r  r'   r'   r(   test_kwargs_atom_shape_01
  s     

z.TestCreateCArrayArgs.test_kwargs_atom_shape_01c                 C   s   | j j| j| j| j| j| j| jd}| j   t	
| j| _ | j | j| j}| }| |j| j | |j| j | |j| j | |jj| jj | |j| j | tt| j| d S )Nr  )r   rC   r  r   r3   r5   r1   r2   r"   r@   rU   rV   rW   rm   rX   r;   rq   r   r   r  r6   r  r'   r'   r(   test_kwargs_atom_shape_02
  s    
z.TestCreateCArrayArgs.test_kwargs_atom_shape_02c                 C   s   | j j| j| j| j| j| j| jd}| j   t	
| j| _ | j | j| j}| }| |j| j | |j| j | |j| j | |jj| jj | |j| j | t| j| d S )N)r3   r5   r6   r1   )r   rC   r  r   r3   r5   r6   r1   r"   r@   rU   rV   rW   rm   rX   r2   r;   rq   r   r  r'   r'   r(   test_kwargs_obj_atom2
  s     
z)TestCreateCArrayArgs.test_kwargs_obj_atomc                 C   s   | j j| j| j| j| j| j| jd}| j   t	
| j| _ | j | j| j}| }| |j| j | |j| j | |j| j | |jj| jj | |j| j | t| j| d S )N)r3   r5   r6   r2   )r   rC   r  r   r3   r5   r6   r2   r"   r@   rU   rV   rW   rm   rX   r1   r;   rq   r   r  r'   r'   r(   test_kwargs_obj_shapeE
  s     
z*TestCreateCArrayArgs.test_kwargs_obj_shapec              	   C   s   | j j| j| j| j| j| j| j| jd}| j 	  t
| j| _ | j | j| j}| }| |j| j | |j| j | |j| j | |jj| jj | |j| j | t| j| d S )N)r3   r5   r6   r1   r2   )r   rC   r  r   r3   r5   r6   r1   r2   r"   r@   rU   rV   rW   rm   rX   r;   rq   r   r  r'   r'   r(   test_kwargs_obj_atom_shapeX
  s"    
z/TestCreateCArrayArgs.test_kwargs_obj_atom_shapec              	   C   s8   t td}| jt| jj| j| j	| j
| j|d d S )Ncomplex)r3   r6   r1   )r   
from_dtyper   r;   r  r  r   rC   r  r   r3   r6   r$   r1   r'   r'   r(   test_kwargs_obj_atom_errorl
  s    z/TestCreateCArrayArgs.test_kwargs_obj_atom_errorc              	   C   s4   | j | j  }| jt| jj| j| j| j| j|d d S )N)r3   r6   r2   )	r2   r  r  r   rC   r  r   r3   r6   rQ   r'   r'   r(   test_kwargs_obj_shape_errorw
  s    z0TestCreateCArrayArgs.test_kwargs_obj_shape_errorc              
   C   s<   t td}| jt| jj| j| j	| j
| j|| jd d S Nr  r3   r6   r1   r2   )r   r  r   r;   r  r  r   rC   r  r   r3   r6   r2   r  r'   r'   r(   #test_kwargs_obj_atom_shape_error_01
  s    z8TestCreateCArrayArgs.test_kwargs_obj_atom_shape_error_01c              
   C   s8   | j | j  }| jt| jj| j| j| j| j| j	|d d S )Nr  )
r2   r  r  r   rC   r  r   r3   r6   r1   rQ   r'   r'   r(   #test_kwargs_obj_atom_shape_error_02
  s    z8TestCreateCArrayArgs.test_kwargs_obj_atom_shape_error_02c              
   C   sF   t td}| j| j }| jt| jj| j	| j
| j| j||d d S r  )r   r  r   r;   r2   r  r  r   rC   r  r   r3   r6   )r$   r1   r2   r'   r'   r(   #test_kwargs_obj_atom_shape_error_03
  s    z8TestCreateCArrayArgs.test_kwargs_obj_atom_shape_error_03) r?   r   r   r   r   r6   r  r   r   r  r;   r1   r2   r3   r4   r5   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r'   r'   r'   r(   r  	  s0   r  c                  C   s  t  } d}t|D ]}| t t | t t | t t | t t | t t	 | t t
 | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t  | t t! | t t" | t t# | t t$ | t t% | t t& | t t' | t t( | t t) | t t* | t t+ | t t, | t t- | t t. | t t/ | t t0 | t t1 | t t2 | t t3 | t t4 | t t5 | t t6 | t t7 | t t8 | t t9 | t t: | t t; | t t< | t t= | t t> | t t? | t t@ | t tA | t tB | t tC | t tD | t tE | t tF | t tG | t tH | t tI | t tJ | t tK | t tL | t tM qtNjOr| t tP | t tQ | t tR | t tS | t tT | t tU | t tV | t tW | t tX | t tY | t tZ | t t[ | t t\ | t t] | t t^ | t t_ | t t` | t ta | t tb | t tc | S )Nr   )dr   Z	TestSuiterangeZaddTestZ	makeSuiter   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r  rn  rp  ry  r{  r|  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r   Zheavyr   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  )ZtheSuiteZniternr'   r'   r(   suite
  s    r  __main__)ZdefaultTest)r  sysr   r@   r   r   r   r   r   r   r   r	   r
   Ztables.testsr   Ztables.tests.commonr   r   r   r   ZTestCaseZTempFileMixinr   r   r   r   r   r   r   r   r   r   r   ZskipIfZ	lzo_availr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zblosc_availr   r   Zmin_blosc_bitshuffle_versionr   r   r   Zblosc_compressor_listr   r   r   r   r   r   r   Zbzip2_availr   r   r   r   r   r   r   r   r   r   r   r   Z
skipUnlessrp   r   r   r   r   r   r   r   r   r   r   r   r  r  rH  rn  rp  rq  ry  r{  r|  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r?   Z
parse_argvargvZprint_versionsmainr'   r'   r'   r(   <module>   sz  ,  j								
		
					

	









	



		
-=    zbM5b	  qj
