a
    =_                    @   s&  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 d dlm	Z	 d dl
mZ d dlmZ d dl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G dd deZeej d 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$eej! d#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Z,G d:d; d;eZ-G d<d= d=eZ.G d>d? d?eZ/G d@dA dAeZ0G dBdC dCeZ1G dDdE dEeZ2G dFdG dGeZ3G dHdI dIeZ4G dJdK dKeZ5eej! d#G dLdM dMeZ6eej! d#G dNdO dOeZ7eej d G dPdQ dQeZ8eej d G dRdS dSeZ9eej: dTG dUdV dVeZ;eej: dTG dWdX dXeZ<G dYdZ dZeZ=G d[d\ d\eZ>G d]d^ d^eZ?G d_d` d`eZ@G dadb dbeZAG dcdd ddeZBG dedf dfeZCG dgdh dhejeZDG didj djejeZEG dkdl dlejeZFG dmdn dneFZGG dodp dpeFZHG dqdr drejeZIG dsdt dteIZJG dudv dveIZKG dwdx dxeIZLG dydz dzeIZMG d{d| d|eIZNG d}d~ d~eIZOG dd deIZPG dd deIZQG dd deIZRG dd deIZSG dd deIZTG dd deIZUG dd dejeZVG dd deVZWG dd deVZXG dd dejeZYG dd deYZZG dd deYZ[G 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jeZadd Zbecdkr"edeje ef  ejgdd dS )    N)	Int16Atom	Int32AtomFloat64Atom
StringAtom)
byteorders)common)allequal)unittest)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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dd Zdd Z  ZS )BasicTestCaseNnumpyint32   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_earray.pyr   $   s
    
zBasicTestCase.setUpc           	   
   C   s  | j }| j}|d u r<| jdkr,t| jd}q@tj| j}nd }| jj	}tj
| j| j| j| jd}| jj|d|| j||d|d}| j|_t|j| _|d urd| jd< | j| _| jD ]}|dkr|  j|9  _q|j| _|  j| j9  _| j| j|j< | jdkr$tjd| j | jd	|jj d
}ntj| j|jjjd}| j|_tj rp| jdkrbt!d| nt!dt"| t#| j$D ],}| jdkr|%| n|%||  qzd S )Nstringitemsize)	complevelcomplibshuffle
fletcher32Zearray1r   )atomshapetitlefiltersexpectedrowsobjr      aS%sbufferr+   dtyper4   r   zObject to append -->)&r   r/   typer   lengthtablesAtomZ	from_typer    __name__Filterscompressr'   r(   r)   r   create_earrayr+   flavorlistrowshapeobjsizeextdim	chunksizer   ndarrayr*   r%   aranger4   baser   verboseprintreprrangenappendsappend)	r   groupr/   r*   r,   r-   earrayiobjectr!   r!   r"   r   .   sX    




zBasicTestCase.populateFilec                 C   s$   | j d ur| j }nt| jj }|S r   )r+   r   asarrayr/   r   r+   r!   r!   r"   
_get_shapeb   s    
zBasicTestCase._get_shapec                 C   s   | j r|   | jd}|  }t|}| j| j || j< | j	d ur^|| j  t
| j	7  < t|}| |j| j | |j| | |jt
| | |j|| j  | |jj| j d S )N/earray1)r   _reopenr   get_noderS   r?   rC   rK   rB   r/   lentupleassertEqualr>   r+   ndimnrowsr*   r6   )r   r/   r+   r!   r!   r"   test00_attributesj   s    
zBasicTestCase.test00_attributesc              	   C   s<  t jr tdd td| jj  | jr.|   | jd}d|_	t jrlt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jd}| j|_||jd}| jdurt| j}nd}|  }t|D ]F\}}||k r$| t|t| j| | j qt |j!| | j" }|dkrp| jd	krT|}nt |j!| }	||	| j"  }|| }
t jrdrtd|j! t#|
drtd|
j tdt
| tdt
|
 | $|| j%| j"  |j& | t||
| j t#|dr| $t|jt|d  n| $t|d | j'|j(j)krdt jrdtd| jj td| j'|j(j) | $|j(j)| j' | j'dkrt*+| j,r| $|j(j,| j, | j-|j(j-krt jrtd| jj td| j-|j(j- | $| j-|j(j- | j.|j(j.kr$t jr$td| jj td| j.|j(j. | $| j.|j(j. qdS )z$Checking enlargeable array iterator.
<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01_iterEArray...rT      EArray descr:shape of read array ==>reopening?:r#   r0   r1   r2   r5   r   Nnumber of row ==>r+   shape should look as:row in earray ==>Should look like ==>r   zError in compress. Class:zself, earray:zError in shuffle. Class:zError in fletcher32. Class:)/r   rG   rH   r    r:   r   rU   r   rV   
nrowsinbufrI   r+   r6   r   rD   rA   r@   r*   r%   rE   r4   rF   swapaxesrB   r/   rW   rS   	enumerate
assertTruer   rQ   r>   intnrowrC   hasattrrY   rK   r[   r<   r-   r&   r8   Zwhich_lib_versionr'   r(   r)   )r   rN   object_initialrowsr+   idxrowchunkobject__rO   rP   r!   r!   r"   test01_iterEArray|   s    





zBasicTestCase.test01_iterEArrayc              	   C   sP  t jr tdd td| jj  | jr.|   | jd}d|_	t jrlt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jd}| j|_||jd}| jdurt| j}nd}|  }t|j| j| j| jdD ]H\}}||k r8|  t!|t"| j| | j# q | j$dkrJd}nt%|j&| | j$ }| jd	krp|}nt%|j&| }	||	| j$  }|| }
t jrdrtd|j& t'|
drtd|
j tdt
| tdt
|
 | (|| j)| j$  |j* |  t!||
| j# t'|dr8| (t|jt|d  n| (t|d q dS )z<Checking enlargeable array iterator with (start, stop, step)r]   r^   zRunning %s.test02_sssEArray...rT   r_   r`   ra   rb   r#   r0   r1   r2   r5   r   Nstartstopstepr   rc   r+   rd   re   rf   )+r   rG   rH   r    r:   r   rU   r   rV   rg   rI   r+   r6   r   rD   rA   r@   r*   r%   rE   r4   rF   rh   rB   r/   rW   rS   ri   Ziterrowsrv   rw   rx   rj   r   rQ   r>   rC   rk   rl   rm   rY   rK   r[   )r   rN   rn   ro   r+   rp   rq   indexrs   rO   rP   r!   r!   r"   test02_sssEArray   sj    





zBasicTestCase.test02_sssEArrayc                 C   s  t jr tdd td| jj  | jdur6t| j| _| jdurLt| j| _| jdurbt| j| _| j	rp| 
  | jd}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jd}| j|_||jd}| jdurt| j}nd}| j}|| j  | j| 9  < | jd
krdtj|d|jj d}ntj|| jd}|d| j}|r| j|d|< t | jD ]J}||| j!  }| jd
kr||||| j! < n|| |||| j! < q| j}| jrr| jdu r$| jdkr|j"}n
| jd }|| j |k r>|| j }|| j| j| j # }	| j$dkr|	d| j}	ntj| j| jd}	z|%| j| j| j}
W n& t&y   tj| j| jd}
Y n0 t jr t'|	drtd|	j tdt|
 tdt|	 | (|| j| j!  |j" | )t*|
|	| j$ | + }t'|
drx| (t|
jt| | j$dkr| (|
j|jj n| (t|d dS )&Checking read() of enlargeable arrays.r]   r^   zRunning %s.test03_readEArray...NrT   r_   r`   ra   rb   r#   r0   r1   r2   r5   r   r+   r4   r   r   r+   rd   Object read ==>rf   ),r   rG   rH   r    r:   rv   rk   rw   rx   r   rU   r   rV   rg   rI   r+   r6   r   rD   rA   r@   r*   r%   rE   r4   rF   rh   rB   r/   rW   rK   emptyrJ   rC   r[   copyr>   read
IndexErrorrm   rY   rj   r   rS   )r   rN   rn   ro   r@   rs   rO   jrw   rP   rq   r+   r!   r!   r"   test03_readEArray  s    







zBasicTestCase.test03_readEArrayc                 C   s  | j durt| j | _ | jdur,t| j| _| jdurBt| j| _| jrP|   | jd}d|_| j	dkrt
jd| j | jd|jj d}nt
j| j|jjjd}| j|_||jd	}| jdurt| j}nd	}| j}|| j  | j| 9  < | j	dkrt
j|d|jj d
}nt
j|| jd
}|d	| j}|rH| j|d	|< t| jD ]J}||| j  }| j	dkr||||| j < n|| |||| j < qR| j}| jr$| jdu r| j dkr|j}n
| j d }|| j |k r|| j }|| j | j| j  }	| jdkr6|	d	| j}	nt
j| j| jd
}	zlt
j|j|jjd}
tdgt|j }t| j | j| j||j < |
t!|  }
|j"| j | j| j|
d W n& t#y   t
j| j| jd
}
Y n0 t$j%rt&|	drt'd|	j t'dt(|
 t'dt(|	 | )|| j| j  |j | *t+|
|	| j | , }t&|
dr~| )t|
jt| | jdkr| )|
j|jj n| )t|d dS )r{   NrT   r_   r#   r0   r1   r2   r5   r   r|   r}   r   r   )outr+   rd   r~   rf   )-rv   rk   rw   rx   r   rU   r   rV   rg   r6   r   rD   rA   r@   r*   r%   rE   r4   rF   r+   rh   rB   r/   rW   rK   r   rJ   rC   r[   r   r>   sliceZmaindimrX   r   r   r   rG   rm   rH   rI   rY   rj   r   rS   )r   rN   rn   ro   r@   rs   rO   r   rw   rP   rq   Z	slice_objr+   r!   r!   r"   test03_readEArray_out_argument  s    







z,BasicTestCase.test03_readEArray_out_argumentc           
      C   s8  t jr tdd td| jj  t| ds| jdur@t| j| _| jdurVt| j| _| j	durlt| j	| _	t
| j| j| j	f| _| jr|   | 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jd}| j|_||jd}| jdur8t| j}nd}| j}|| j  | j | 9  < | jd
kr~tj!|d|jj d}ntj!|| jd}|d|j}|r| j|d|< t"| j D ]J}||| j#  }| jd
kr||||| j# < n|| |||| j# < q| j rJ| j$dkr*|d| j}n|d| j |%| j& }ntj!| j| jd}z|%| j}	W n& t'y   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 | (|| j | j#  |j) | *t+|	|| j$ t|	ds4| (t| jd dS )z6Checking enlargeable array __getitem__ special method.r]   r^   z"Running %s.test04_getitemEArray...slicesNrT   r`   ra   rb   r#   r0   r1   r2   r5   r   r|   r   Object read:
Should look like:
r+   Original object shape:Shape read:rd   r   ),r   rG   rH   r    r:   rm   rv   rk   rw   rx   r   r   r   rU   r   rV   rI   r+   r6   r   rD   rA   r@   r*   r%   rE   r4   rF   rh   rB   r/   rW   rK   r   rJ   rC   r>   __getitem__r   r   rY   r[   rj   r   
r   rN   rn   ro   r@   rs   rO   r   rP   rq   r!   r!   r"   test04_getitemEArray  s    






z"BasicTestCase.test04_getitemEArrayc           
      C   sj  | j jdkrdS tjr0tdd td| j j  t| ds| jdurPt| j| _| jdurft| j| _| j	dur|t| j	| _	t
| j| j| j	f| _| jr| jdd | jd	}tjrtd
t| td|j td| j | jdkr
tjd| j | jd|jj d}ntj| j|jjjd}| j|_||jd}| jdurNt| j}nd}| j}|| j  | j | 9  < | jdkrtj!|d|jj d}ntj!|| jd}|d|j}t"| j D ]J}||| j#  }| jdkr||||| j# < n|| |||| j# < q|r| j|d|< | j r`| j$dkr@|d| j}n|d| j |%| j& }ntj!| j| jd}| j$dkrt'|}| jdkrt| drd|| j(< d|| j)< n8t*|| j jdkrzd|dd< |j+dkrz||| j< nt| dr.|| j) d d || j)< || j) d d || j)< nLt*|| j jdkrz|d d }t,|jdkrz|| j d d || j< |%| j}	z|%| j}	W n. t-y   td tj!| j| jd}	Y n0 tjrtdt|	 tdt| t|drtd| j td|	j td|j | .|| j | j#  |j/ | 0t1|	|| j$ t|	dsf| .t| jd  dS )!z6Checking enlargeable array __setitem__ special method.Ellipsis6EArrayTestCaseNr]   r^   z"Running %s.test05_setitemEArray...r   amoderT   r`   ra   rb   r#   r0   r1   r2   r5   r   r|   r   wsliceZxXxr   r_   zIndexError!r   r   r+   r   r   rd   r   )2r    r:   r   rG   rH   rm   rv   rk   rw   rx   r   r   r   rU   r   rV   rI   r+   r6   r   rD   rA   r@   r*   r%   rE   r4   rF   rh   rB   r/   rW   rK   r   rJ   rC   r>   r   r   rQ   Zwslizer   sumsizeZprodr   rY   r[   rj   r   r   r!   r!   r"   test05_setitemEArray^  s    







z"BasicTestCase.test05_setitemEArray)r:   
__module____qualname__r/   r>   r6   r4   r+   rv   rw   rx   r7   rC   rK   r<   r'   r(   r)   r   r   r   rS   r\   rt   rz   r   r   r   r   __classcell__r!   r!   r   r"   r      s4   
4VJqmdr   c                   @   s$   e Zd ZdZdZdZdZdZdZdS )BasicWriteTestCaser   r   r   r   r   N)	r:   r   r   r6   r+   rC   rK   rx   r   r!   r!   r!   r"   r     s   r   c                   @   s8   e Zd ZdZdZdZdZdZdZe	ed edZ
dZd	S )
Basic2WriteTestCaser   i4r   r   r   r   r   r   N)r:   r   r   r6   r4   r+   rC   rK   rx   r   r   r   r!   r!   r!   r"   r     s   r   c                   @   s@   e Zd ZddgZeejjZeejj	ZdZ
dZdZdZdS )Basic3WriteTestCaser   r   r   r   r   Nr:   r   r   r/   r   rQ   r4   namer6   strr+   
chunkshaperx   r   r!   r!   r!   r"   r     s   r   c                   @   s:   e Zd ZeddgZejjZejj	ZdZ
dZdZdZdS )Basic4WriteTestCaser   r   Nr   r   r:   r   r   r   arrayr/   r4   r   r6   r   r+   r   rx   r   r!   r!   r!   r"   r     s   r   c                   @   s@   e Zd ZddgZeejjZeejj	ZdZ
dZdZdZdS )Basic5WriteTestCaser   r   r   r   Nr   r!   r!   r!   r"   r     s   r   c                   @   s:   e Zd ZeddgZejjZejj	ZdZ
dZdZdZdS )Basic6WriteTestCaser   r   Nr   r   r!   r!   r!   r"   r     s   r   c                   @   sH   e Zd ZddgddggZeejjZeejj	ZdZ
dZdZdZdS )	Basic7WriteTestCaser   r   r_      r   r   r   r   Nr   r!   r!   r!   r"   r   "  s   r   c                   @   sH   e Zd ZddgddggZeejjZeejj	ZdZ
dZdZdZdS )Basic8WriteTestCaser   r   r_   r   r   r   Nr   r!   r!   r!   r"   r   ,  s   r   c                   @   s2   e Zd ZdZedZdZdZdZdZ	dZ
dZdS )EmptyEArrayTestCaser   r   r   r   r   r   N)r:   r   r   r6   r   r4   r+   rC   rK   rv   rw   rx   r!   r!   r!   r"   r   6  s   
r   c                   @   s&   e Zd ZdZedZdZdZdZdS )NP_EmptyEArrayTestCaser   z()int32r   r   r   N)	r:   r   r   r6   r   r4   r+   rC   rK   r!   r!   r!   r"   r   A  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 )Empty2EArrayTestCaser   r   r   r   r   r   N)r:   r   r   r6   r4   r+   rC   rK   rv   rw   rx   r   r!   r!   r!   r"   r   I  s   r   z%LZO compression library not availablec                   @   s<   e Zd 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 )	SlicesEArrayTestCaser   lzor   r   r   r   r_   Nr:   r   r   r<   r'   r6   r+   rC   rK   r   r   r!   r!   r!   r"   r   U  s   r   z'BLOSC compression library not availablec                   @   sF   e Zd 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 )
Slices2EArrayTestCaser   bloscr   r   r   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eedddfZ	dS )EllipsisEArrayTestCaser   r   r   r   r   N
r:   r   r   r6   r+   rC   rK   Ellipsisr   r   r!   r!   r!   r"   r   l  s
   r   c                   @   s6   e Zd ZdZdZdZdZedddeedddfZ	dS )	Ellipsis2EArrayTestCaser   r   r   r   r   r   r   N
r:   r   r   r6   r+   rC   rK   r   r   r   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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 )Slices3EArrayTestCaser   r   r   r   r_   r   r   r   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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 )Slices4EArrayTestCaser   )r   r_   r   r   r      r   r   r   r   r   Nr   r_      )	r:   r   r   r6   r+   rC   rK   r   r   r!   r!   r!   r"   r     s   r   c                   @   sZ   e Zd 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 )
Ellipsis3EArrayTestCaser   r   r   r   r   r   Nr   r   r   r!   r!   r!   r"   r     s   r   c                   @   sP   e Zd 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 )
Ellipsis4EArrayTestCaser   r   r   r   r   r   Nr   r   r   r!   r!   r!   r"   r     s   r   c                   @   s6   e Zd ZdZdZdZdZedddeddd	efZ	d	S )
Ellipsis5EArrayTestCaser   r   r   r   r   r   r   r   Nr   r!   r!   r!   r"   r     s
   r   c                   @   s8   e Zd ZdZdZdZdZedddeddddefZ	dS )	r   r   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dZedddedddedd	efZ	dS )
Ellipsis7EArrayTestCaser   r   r   r   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S )MD3WriteTestCaser   r   r   r_   r   r   N)r:   r   r   r6   r+   rC   rx   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 )MD5WriteTestCaser   )r   r   r_   r   r   r   r   N
r:   r   r   r6   r+   rC   rK   rv   rw   rx   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 )MD6WriteTestCaser   r   r_   r_   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dZdZdS )NP_MD6WriteTestCasez Testing NumPy scalars as indexesr   r   r   r   N)r:   r   r   __doc__r6   r+   rC   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 )MD6WriteTestCase__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S )MD7WriteTestCaser   )r   r_   r_   r   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dZdZdZdZ	dS )MD10WriteTestCaser   
r   r   r_   r   r   r   r   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dZdS )NP_MD10WriteTestCaser   r   r   r   N)r:   r   r   r6   r+   rC   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S )ZlibComprTestCaser   r   r_   Nr   )r:   r   r   r<   r'   rv   rw   rx   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 )ZlibShuffleTestCaser   r   r_   r   N)	r:   r   r   r(   r<   r'   rv   rw   rx   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 )BloscComprTestCaser   r   r   d   r_   N
r:   r   r   r<   r'   rC   rK   rv   rw   rx   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 )BloscShuffleTestCaser   r   r   r   r_   r   Nr:   r   r   r<   r(   r'   rC   rK   rv   rw   rx   r!   r!   r!   r"   r   5  s   r   c                   @   s(   e Zd 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   B  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   Nr   r!   r!   r!   r"   r   M  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   bzip2r   r   r_      Nr   r!   r!   r!   r"   r   Y  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   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Z	dS )Fletcher32TestCaser   r   2   r   r   r   N)
r:   r   r   r<   r)   rC   rK   rv   rw   rx   r!   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 )	AllFiltersTestCaser   r   r   r   r   c   r   N)r:   r   r   r<   r(   r)   r'   rC   rK   rv   rw   rx   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 )FloatTypeTestCasefloat64r   r   r   r_   r   Nr:   r   r   r6   r4   r+   rC   rK   rv   rw   rx   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 )ComplexTypeTestCaseZ
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	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   r6   r7   r+   rC   rK   rv   rw   rx   r   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Z	dZ
dS )	String2TestCaser#   r   r   r   r   r   r   N)r:   r   r   r6   r7   r+   rC   rK   rv   rw   rx   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 )
StringComprTestCaser#   r   )r   r   r   r   r   r   r}   r   N)r:   r   r   r6   r7   r+   ZcomprrC   rK   rv   rw   rx   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r   r   )  r   ip  )r   r   r   
array_sizer   hdf_overheadr   r   r!   r"   r     s    z(SizeOnDiskInMemoryPropertyTestCase.setUpc                 C   s2   t j|dd}| jjddt | j|| jd| _d S )Nr   )r&   r'   /rN   )r*   r+   r-   r   )r8   r;   r   r=   r   r   r   r   )r   r&   r-   r!   r!   r"   create_array  s    z/SizeOnDiskInMemoryPropertyTestCase.create_arrayc                 C   s2   d}|  | | | jjd | | jjd d S Nr   )r   rY   r   size_on_disksize_in_memoryr   r&   r!   r!   r"   test_zero_length  s    
z3SizeOnDiskInMemoryPropertyTestCase.test_zero_lengthc                 C   sV   d}|  | | jttdg| jd  d  | | jjd | | jjd d S )Nr   r    	r   r   rL   rX   rJ   r   rY   r   r   r   r!   r!   r"   test_no_compression_one_append  s
    
$zASizeOnDiskInMemoryPropertyTestCase.test_no_compression_one_appendc                 C   sz   d}|  | | jttdg| jd  d  | jttdg| jd  d  | | jjd | | jjd d S )Nr   r   r   r   r   r   r!   r!   r"   $test_no_compression_multiple_appends  s    
$$zGSizeOnDiskInMemoryPropertyTestCase.test_no_compression_multiple_appendsc                 C   s   d}|  | | jttdg| jd  d  t| jj	}| 
t| jj| | jk | | jjd | | jj| jj d S )Nr   r   r   r   )r   r   rL   rX   rJ   r   osstatZh5fnamest_sizerj   absr   r   rY   r   Z
assertLess)r   r&   	file_sizer!   r!   r"   test_with_compression  s    
$z8SizeOnDiskInMemoryPropertyTestCase.test_with_compression)
r:   r   r   r   r   r   r   r   r   r   r!   r!   r   r"   r     s   
r   c                       sx   e 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dd Zdd Zdd Z  ZS )OffsetStrideTestCasewr   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   sr  | j }tjr&tdd td| jj  | 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  t	
dd
gddgddgddggg}||ddddf  | }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 earray with offseted numpy strings appends.r]   r^   z Running %s.test01a_StringAtom...stringsr_   r$   r   r   r   Array of stringsr*   r+   r,   r   b12345S3r5   Nr   sabfabcr   Object read:Nrows in:Second row in earray ==>r      123   45   s   abc   fr   r   rG   rH   r    r:   r   r=   r   r   r   rL   r   _v_pathnamer[   tolistrY   rW   r   r   rN   r   rq   r!   r!   r"   test01a_String  sB    




  z#OffsetStrideTestCase.test01a_Stringc                 C   sv  | j }tjr&tdd td| jj  | 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df  t	
dd
gddgddgddggg}||dddddf  | }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 earray with strided numpy strings appends.r]   r^   z Running %s.test01b_StringAtom...r  r_   r$   r  r  r  r   r  r  r	  r
  r5   Nr   r  r  r  r  r  r  r  r  r   r   r0      br  r  r  r  r  r  r!   r!   r"   test01b_String(  sB    




  z#OffsetStrideTestCase.test01b_Stringc                 C   s6  | j }tjr&tdd td| jj  | jj|dt ddd}t	j
g dd	d
}||dd  t	j
ddg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 earray with offseted NumPy ints appends.r]   r^   zRunning %s.test02a_int...EAtomr   r_   array of intsr  )r   r   r   r   r   r_   r   r   r   r"  r   r5   r   Nr$  r}   r   r   r   r  r  r  Third row in vlarray ==>r_   r   r"  r   r   rG   rH   r    r:   r   r=   r   r   r   rL   r   r  r[   rY   rj   r   r  r!   r!   r"   test02a_intH  sF    



z OffsetStrideTestCase.test02a_intc                 C   s:  | j }tjr&tdd td| jj  | jj|dt ddd}t	j
g dd	d
}||ddd  t	j
ddg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 earray with strided NumPy ints appends.r]   r^   zRunning %s.test02b_int...r  r   r!  r  r"  r#  r$  r_   r_   r_   r   r5   Nr_   r$  r%  r   r  r  r  r&  r   r"  r   r*  r'  r  r!   r!   r"   test02b_inti  sF    



z OffsetStrideTestCase.test02b_intc                 C   s   | j }tjr&tdd td| jj  | jj|dt ddd}t	j
g dd	d
}|| | }| }|| |ddddf }|ddddf }tjrtd| td|jj td| td|jj | t|| dS )z/Checking earray with byteswapped appends (ints)r]   r^   zRunning %s.test03a_int...r  r   r!  r  r)  r   r5   Nr   Native rows:Byteorder native rows:Swapped rows:Byteorder swapped rows:)r   r   rG   rH   r    r:   r   r=   r   r   r   rL   byteswapnewbyteorderr4   	byteorderrj   r   r   r   rN   r   nativeswappedr!   r!   r"   test03a_int  s.    






z OffsetStrideTestCase.test03a_intc                 C   s   | j }tjr&tdd td| jj  | jj|dt ddd}t	j
g dd	d
}|| | }| }|| |ddddf }|ddddf }tjrtd| td|jj td| td|jj | t|| dS )z1Checking earray with byteswapped appends (floats)r]   r^   zRunning %s.test03b_float...r  r   array of floatsr  r)  r   r5   Nr   r,  r-  r.  r/  )r   r   rG   rH   r    r:   r   r=   r   r   r   rL   r0  r1  r4   r2  rj   r   r3  r!   r!   r"   test03b_float  s.    






z"OffsetStrideTestCase.test03b_floatc                 C   s
  | j }tjr&tdd td| jj  dddtj }| jj	|dt
 dd	|d
}tjg ddd}|| | }| }|| |ddddf }|ddddf }tjrtdt|jj  td|j | t|jj tj | |j| | t|| dS )z2Checking earray with byteswapped appends (2, ints)r]   r^   zRunning %s.test04a_int...biglittler:  r9  r  r   r!  r*   r+   r,   r2  r)  r   r5   Nr   r-  Byteorder earray on-disk:)r   r   rG   rH   r    r:   sysr2  r   r=   r   r   r   rL   r0  r1  r   r4   rY   rj   r   r   r   r2  rN   r   r4  r5  r!   r!   r"   test04a_int  s2    




z OffsetStrideTestCase.test04a_intc                 C   s"  | j }tjr&tdd td| jj  dddtj }| jj	|dt
 dd	|d
}| jdd | jd}tjg ddd}|| | }| }|| |ddddf }|ddddf }tjrtdt|jj  td|j | t|jj tj | |j| | t|| dS )z:Checking earray with byteswapped appends (2, ints, reopen)r]   r^   zRunning %s.test04b_int...r9  r:  r;  r  r   r!  r<  r   r   /EAtomr)  r   r5   Nr   r-  r=  )r   r   rG   rH   r    r:   r>  r2  r   r=   r   rU   rV   r   r   rL   r0  r1  r   r4   rY   rj   r   r?  r!   r!   r"   test04b_int  s6    




z OffsetStrideTestCase.test04b_intc                 C   s
  | j }tjr&tdd td| jj  dddtj }| jj	|dt
 dd	|d
}tjg ddd}|| | }| }|| |ddddf }|ddddf }tjrtdt|jj  td|j | t|jj tj | |j| | t|| dS )z4Checking earray with byteswapped appends (2, floats)r]   r^   zRunning %s.test04c_float...r9  r:  r;  r  r   r7  r<  r)  r   r5   Nr   r-  r=  )r   r   rG   rH   r    r:   r>  r2  r   r=   r   r   r   rL   r0  r1  r   r4   rY   rj   r   r?  r!   r!   r"   test04c_float  s2    




z"OffsetStrideTestCase.test04c_floatc                 C   s"  | j }tjr&tdd td| jj  dddtj }| jj	|dt
 dd	|d
}| jdd | jd}tjg ddd}|| | }| }|| |ddddf }|ddddf }tjrtdt|jj  td|j | t|jj tj | |j| | t|| dS )z<Checking earray with byteswapped appends (2, floats, reopen)r]   r^   zRunning %s.test04d_float...r9  r:  r;  r  r   r7  r<  r   r   rA  r)  r   r5   Nr   r-  r=  )r   r   rG   rH   r    r:   r>  r2  r   r=   r   rU   rV   r   r   rL   r0  r1  r   r4   rY   rj   r   r?  r!   r!   r"   test04d_float1  s6    




z"OffsetStrideTestCase.test04d_float)r:   r   r   r   r<   r'   r   r  r  r(  r+  r6  r8  r@  rB  rC  rD  r   r!   r!   r   r"   r    s     !   "$"r  c                   @   sL   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S )CopyTestCasec                 C   s  t jr tdd td| jj  t }| jj| jjd|ddd}|	t
jdd	gd
dggd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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|jj | |j|j | t |jt |j dS )zChecking EArray.copy() method.r]   r^   zRunning %s.test01_copy...array1r   title array1r    r   r_     int16r5   (closing file version)r   r   r   array2	array1-->	array2-->attrs array1-->attrs array2-->N)!r   rG   rH   r    r:   r   r   r=   r   rL   r   r   r   rU   rF  r   rL  r   rI   attrsrj   r   rY   r[   r+   rB   r>   r*   r4   r6   r%   r,   r   r   r*   rF  rL  r!   r!   r"   test01_copyX  sH    
 


zCopyTestCase.test01_copyc                 C   s  t jr tdd td| jj  t }| jj| jjd|ddd}|	t
jdd	gd
dggdd | jrt jrtt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 |jj  | |j!|j! | t"|jt"|j dS )z/Checking EArray.copy() method (where specified)r]   r^   zRunning %s.test02_copy...rF  r   rG  r  rH  r   r_   rI  rJ  r5   rK  r   r   r   group1rL  rM  rN  rO  rP  N)#r   rG   rH   r    r:   r   r   r=   r   rL   r   r   r   rU   rF  Zcreate_groupr   rT  rL  r   rI   rQ  rj   r   rY   r[   r+   rB   r>   r*   r4   r6   r%   r,   r   )r   r*   rF  rT  rL  r!   r!   r"   test02_copy  sJ    
 

zCopyTestCase.test02_copyc                 C   s  t jr tdd td| jj  t }| jj| jjd|ddd}d|_	|
d	 | jrzt jrdt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|jj | |j|j | t|jt|j dS )z-Checking EArray.copy() method (python flavor)r]   r^   zRunning %s.test03b_copy...rF  r   rG  r  python))rH  r   )r_   rI  rK  r   r   r   rL  rO  rP  N)r   rG   rH   r    r:   r   r   r=   r   r>   rL   r   rU   rF  r   rL  rI   rQ  rY   r   r[   r+   rB   r*   r4   r6   r%   r,   r   rR  r!   r!   r"   test03a_copy  sF    




zCopyTestCase.test03a_copyc                 C   s  t jr tdd td| jj  tdd}| jj| jjd|ddd	}d
|_	|
ddgddgg | 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|jj | |j|j | t|jt|j dS )z4Checking EArray.copy() method (python string flavor)r]   r^   zRunning %s.test03d_copy...r_   r$   rF  r   rG  r  rV  45623457rK  r   r   r   rL  rO  rP  N)r   rG   rH   r    r:   r   r   r=   r   r>   rL   r   rU   rF  r   rL  rI   rQ  rY   r   r[   r+   rB   r*   r4   r6   r%   r,   r   rR  r!   r!   r"   test03b_copy  sF    




zCopyTestCase.test03b_copyc                 C   s  t jr tdd td| jj  tdd}| jj| jjd|ddd	}d
|_	|
tjddgddgg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|jj | |j|j | t |jt |j dS )z-Checking EArray.copy() method (String flavor)r]   r^   zRunning %s.test03e_copy...r   r$   rF  r   rG  r  r   rX  rY  rZ  r[  ZS4r5   rK  r   r   r   rL  rO  rP  N)!r   rG   rH   r    r:   r   r   r=   r   r>   rL   r   r   r   rU   rF  r   rL  rI   rQ  rj   r   r   rY   r[   r+   rB   r*   r4   r6   r%   r,   r   rR  r!   r!   r"   test03c_copy  sF    

 


zCopyTestCase.test03c_copyc                 C   s   t jr tdd td| jj  t }| jj| jjd|ddd}|	t
jdd	gd
dgg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 EArray.copy() method (checking title copying)r]   r^   zRunning %s.test04_copy...rF  r   rG  r  rH  r   r_   rI  rJ  r5   attr1rK  r   r   r   rL  ztitle array2)r,   ztitle of destination array-->N)r   rG   rH   r    r:   r   r   r=   r   rL   r   r   rQ  r^  attr2r   rU   rF  r   rL  r,   rY   rR  r!   r!   r"   test04_copyM  s4    
 


zCopyTestCase.test04_copyc                 C   s&  t jr tdd td| jj  t }| jj| jjd|ddd}|	t
jdd	gd
dgg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 EArray.copy() method (user attributes copied)r]   r^   zRunning %s.test05_copy...rF  r   rG  r  rH  r   r_   rI  rJ  r5   r^  rK  r   r   r   rL  r   ZcopyuserattrsrO  rP  N)r   rG   rH   r    r:   r   r   r=   r   rL   r   r   rQ  r^  r_  r   rU   rF  r   rL  rI   rY   rR  r!   r!   r"   test05_copys  s8    
 


zCopyTestCase.test05_copyc                 C   s.  t jr tdd td| jj  t }| jj| jjd|ddd}|	t
jdd	gd
dgg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 EArray.copy() method (user attributes not copied)r]   r^   zRunning %s.test05b_copy...rF  r   rG  r  rH  r   r_   rI  rJ  r5   r^  rK  r   r   r   rL  r   ra  rO  rP  r_  N)r   rG   rH   r    r:   r   r   r=   r   rL   r   r   rQ  r^  r_  r   rU   rF  r   rL  rI   rY   rm   rR  r!   r!   r"   test05b_copy  s8    
 


zCopyTestCase.test05b_copyN)r:   r   r   rS  rU  rW  r\  r]  r`  rb  rc  r!   r!   r!   r"   rE  V  s   34/0/&)rE  c                   @   s   e Zd ZdZdS )CloseCopyTestCaser   Nr:   r   r   r   r!   r!   r!   r"   rd    s   rd  c                   @   s   e Zd ZdZdS )OpenCopyTestCaser   Nre  r!   r!   r!   r"   rf    s   rf  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  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 EArray.copy() method with indexes.r]   r^   zRunning %s.test01_index...rF  r   rG  r     r   r5   r   r   r   rL  ru   rM  rN  rO  rP  nrows in array2-->and it should be-->r   N)r   rG   rH   r    r:   r   r   r=   r   r   rE   r+   rL   rg   r   rv   rw   rx   r   rI   rQ  rj   r   r[   rY   r   r*   rF  rrL  Zr2r!   r!   r"   test01_index  s8    

zCopyIndexTestCase.test01_indexc                 C   sB  t jr tdd td| jj  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 }| t||  t jr*td|j td|jd  | |jd |j dS )z?Checking EArray.copy() method with indexes (close file version)r]   r^   z Running %s.test02_indexclosef...rF  r   rG  r  rh  r   r5   ri  r   rL  ru   rM  rN  rO  rP  rj  rk  r   N)r   rG   rH   r    r:   r   r   r=   r   r   rE   r+   rL   rg   r   rv   rw   rx   rU   rF  rL  r   rI   rQ  rj   r   r[   rY   rl  r!   r!   r"   test02_indexclosef  s>    



z$CopyIndexTestCase.test02_indexclosefN)r:   r   r   rg   rn  ro  r!   r!   r!   r"   rg    s   (rg  c                   @   s   e Zd ZdZdZdZdZdS )CopyIndex1TestCaser   r   r   Nr:   r   r   rg   rv   rw   rx   r!   r!   r!   r"   rp  '  s   rp  c                   @   s   e Zd ZdZdZdZdZdS )CopyIndex2TestCaser   r   r}   r   Nrq  r!   r!   r!   r"   rr  .  s   rr  c                   @   s   e Zd ZdZdZdZdZdS )CopyIndex3TestCaser_   r   r   Nrq  r!   r!   r!   r"   rs  5  s   rs  c                   @   s   e Zd ZdZdZdZdZdS )CopyIndex4TestCaser   r   r   r   Nrq  r!   r!   r!   r"   rt  <  s   rt  c                   @   s   e Zd ZdZdZdZdZdS )CopyIndex5TestCaser   r_   r   r   Nrq  r!   r!   r!   r"   ru  C  s   ru  c                   @   s   e Zd ZdZdZdZdZdS )CopyIndex6TestCaser   r_   r   Nrq  r!   r!   r!   r"   rv  J  s   rv  c                   @   s   e Zd ZdZdZdZdS )CopyIndex7TestCaser   r   r   Nr:   r   r   rv   rw   rx   r!   r!   r!   r"   rw  Q  s   rw  c                   @   s   e Zd ZdZdZdZdS )CopyIndex8TestCaser   r}   r   Nrx  r!   r!   r!   r"   ry  W  s   ry  c                   @   s   e Zd ZdZdZdZdS )CopyIndex9TestCaser_   r   r   Nrx  r!   r!   r!   r"   rz  ]  s   rz  c                   @   s   e Zd ZdZdZdZdZdS )CopyIndex10TestCaser   r_   r   r   Nrq  r!   r!   r!   r"   r{  c  s   r{  c                   @   s   e Zd ZdZdZdZdS )CopyIndex11TestCaser}   r   Nrx  r!   r!   r!   r"   r|  j  s   r|  c                   @   s   e Zd ZdZdZdZdS )CopyIndex12TestCaser}   Nr   rx  r!   r!   r!   r"   r~  p  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 )TruncateTestCasec                    sV   t t|   tdd}| jj| jjd|ddd}|tj	ddgdd	ggd
d d S )Nr_   )ZdfltrF  r   rG  r  rH  r   rI  rJ  r5   )
r   r  r   r   r   r=   r   rL   r   r   )r   r*   rF  r   r!   r"   r   x  s    
zTruncateTestCase.setUpc                 C   s|   | j jj}|d | jr:tjr(td |   | j jj}tjrNtd|	  | 
t|dd tjg dddd dS )z8Checking EArray.truncate() method (truncating to 0 rows)r   rK  rM  NrJ  r5   r   )r   r   rF  truncater   r   rG   rH   rU   r   rj   r   r   r   reshaper   rF  r!   r!   r"   test00_truncate  s    


z TruncateTestCase.test00_truncatec                 C   sv   | j jj}|d | jr:tjr(td |   | j jj}tjrNtd|	  | 
t|	 tjddggdd dS )	z8Checking EArray.truncate() method (truncating to 1 rows)r   rK  rM  rH  r   rJ  r5   Nr   r   rF  r  r   r   rG   rH   rU   r   rj   r   r   r   r  r!   r!   r"   test01_truncate  s    


z TruncateTestCase.test01_truncatec                 C   s|   | j jj}|d | jr:tjr(td |   | j jj}tjrNtd|	  | 
t|	 tjddgddggdd d	S )
z?Checking EArray.truncate() method (truncating to == self.nrows)r   rK  rM  rH  r_   rI  rJ  r5   Nr  r  r!   r!   r"   test02_truncate  s    


z TruncateTestCase.test02_truncatec                 C   s   | j jj}|d | jr:tjr(td |   | j jj}tjrNtd|	  | 
|jd | t|dd tjddgddggd	d
 | t|dd tjddgddggd	d
 dS )z>Checking EArray.truncate() method (truncating to > self.nrows)r   rK  rM  Nr   rH  r_   rI  rJ  r5   )r   r   rF  r  r   r   rG   rH   rU   r   rY   r[   rj   r   r   r   r  r!   r!   r"   test03_truncate  s     


"
"z TruncateTestCase.test03_truncate)	r:   r   r   r   r  r  r  r  r   r!   r!   r   r"   r  v  s
   r  c                   @   s   e Zd ZdZdS )TruncateOpenTestCaser   Nre  r!   r!   r!   r"   r    s   r  c                   @   s   e Zd ZdZdS )TruncateCloseTestCaser   Nre  r!   r!   r!   r"   r    s   r  c                       s0   e Zd ZdZdZdZ fddZdd Z  ZS )Rows64bitsTestCaser   @B i  c              	      sn   t t|   | jj| jjdt dtjddd| j	| j
 d}tj| j	dd}t| j
D ]}|| qZd S )	Nr   r   r   r   )r'   r&   )r*   r+   r-   r.   int8r5   )r   r  r   r   r=   r   r8   ZInt8Atomr;   narowsnanumberr   rE   rJ   rL   )r   r   ZnarO   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 earrays 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  r5   )r   r   r   r   r   rG   rH   r[   r6   r+   rU   r  r   rE   r  rY   rj   r   )r   r   rw   rv   r[   r!   r!   r"   test01_basiccheck  sD    


"

z$Rows64bitsTestCase.test01_basiccheck)	r:   r   r   	open_moder  r  r   r  r   r!   r!   r   r"   r    s
   r  c                   @   s   e Zd ZdZdS )Rows64bitsTestCase1r   Nre  r!   r!   r!   r"   r  '	  s   r  c                   @   s   e Zd ZdZdS )Rows64bitsTestCase2r   Nre  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 )ZeroSizedTestCaser   c                    s>   t t|   | jjddt dd}|dgdgdgg d S )Nr   testr_   r   r*   r+   r   r   r_   )r   r  r   r   r=   r   rL   r   ear   r!   r"   r   3	  s
    
zZeroSizedTestCase.setUpc                 C   s:   | j }|jj}tjddd}|| | |jdd dS )zAppending zero length array.r  r   r|   r   zThe number of rows should be 1.N)r   r   r  r   r   rL   rY   r[   r   Zfilehr  Znpr!   r!   r"   test01_canAppend<	  s
    
z"ZeroSizedTestCase.test01_canAppendc                 C   s0   | j }|jj}tjddd}| t|j| dS )z1Appending zero length array with wrong dimension.)r_   r   r_   r   r|   N)r   r   r  r   r   assertRaises
ValueErrorrL   r  r!   r!   r"   test02_appendWithWrongShapeE	  s    z-ZeroSizedTestCase.test02_appendWithWrongShape)r:   r   r   r  r   r  r  r   r!   r!   r   r"   r  0	  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g | |j	d t
jrltd|d  | t|d tddgd	d
ggd dS )z@Append a row to a (unidimensional) EArray with a MD tables.Atom.r   r  r   r   r   r  r   r   r_   r   r   First row-->r   r   Nr   r=   r   r   rU   r   r  rL   rY   r[   r   rG   rH   rj   r   r   r   r  r!   r!   r"   test01a_appendQ	  s    


zMDAtomTestCase.test01a_appendc              	   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 | |j	d	 t
jrptd
|d  | t|d td	d	gd	d	ggd dS )zOAppend several rows to a (unidimensional) EArray with a MD
        tables.Atom.r   r  r  r   r  r   r   r   r_   Third row-->r   Nr  r  r!   r!   r"   test01b_appenda	  s    


zMDAtomTestCase.test01b_appendc              
   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 | |j	d t
jrrtd|d  | t|d tddgd	d
gddggd dS )zJAppend a row to a (multidimensional) EArray with a
        MD tables.Atom.r   r  r   r   r  r   r   r_   r   r   r   	   r  r   r   Nr  r  r!   r!   r"   test02a_appendr	  s    


zMDAtomTestCase.test02a_appendc              
   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 | |j	d t
jrtd|d  | t|d tddgd
dgddggd dS )zQAppend several rows to a (multidimensional) EArray with a MD
        tables.Atom.r   r  r  r   r  r   r   r}  r   ir  r}   r_   r   r   iir  r   r   Nr  r  r!   r!   r"   test02b_append	  s     


"zMDAtomTestCase.test02b_appendc                 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 | |jd tjrtd|d  | t|d |d  dS )zJComplex append of a MD array in a MD EArray with a
        MD tables.Atom.r   r  r   r   )r   r   r_   r  r   0   r   r5   r   r_   r   r   r   r   r_   r  Nr   r=   r   r   rU   r   r  r   rE   r  rL   rY   r[   r   rG   rH   rj   r   r   r  r   r!   r!   r"   test03a_MDMDMD	  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  |
|d  | |jd tjrtd|ddddf  | t|ddddf |	dd  dS )z@Complex append of a MD array in a MD EArray with a MD atom (II).r   r  r  r   r  r   r  r   r5   )r   r   r_   r   r   r   r   r_   r  N.r  r  r  r!   r!   r"   test03b_MDMDMD	  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  |
|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S )zAComplex append of a MD array in a MD EArray with a MD atom (III).r   r  r  )r   r_   r   r  r   r  r   r5   )r   r_   r   r   r   r   r   r_   r  N.r  r  r  r!   r!   r"   test03c_MDMDMD	  s    

zMDAtomTestCase.test03c_MDMDMDN)
r:   r   r   r  r  r  r  r  r  r  r!   r!   r!   r"   r  O	  s   r  c                   @   s   e Zd ZdZdS )MDAtomNoReopenFNr:   r   r   r   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 fddZ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| _| jt	
d d S )Nr   r   r  r   r   )r   r  r   r   r=   r   r   r   rL   r   zerosr   r   r!   r"   r   	  s
    zAccessClosedTestCase.setUpc                 C   s    | j   | tj| jj d S r   )r   r   r  r8   ClosedNodeErrorr   r   r   r!   r!   r"   	test_read	  s    
zAccessClosedTestCase.test_readc                 C   s"   | j   | tj| jjd d S r   )r   r   r  r8   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  r8   r  r   __setitem__r   r!   r!   r"   test_setitem	  s    
z!AccessClosedTestCase.test_setitemc                 C   s(   | j   | tj| jjtd d S )Nr  )	r   r   r  r8   r  r   rL   r   r  r   r!   r!   r"   test_append	  s    
z AccessClosedTestCase.test_append)	r:   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j	
ejZdejdd  Zd	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 ))TestCreateEArrayArgs)r   r   r_   )r   r   r   )r   r   r  r   rN   r   r   Nr,   r   )r   r   Fc              
   C   s   | j | j| j| j| j| j| j| j| j	 | 
  | j | j| j}| |j| j | |j| j | |jd | |j| j | |jj| jj | |j	| j	 d S r   )r   r=   wherer   r*   r+   r,   r-   r.   r   rU   rV   rY   r[   r4   r   ptarrr!   r!   r"   test_positional_args_01
  s    z,TestCreateEArrayArgs.test_positional_args_01c              
   C   s   | j | j| j| j| j| j| j| j| j	}|
| j |   | j | j| j}| }| |j| j | |j| jj | |j| jjd  | |j| j | |jj| jj | |j	| j	 | t| j| d S r   )r   r=   r  r   r*   r+   r,   r-   r.   r   rL   r/   rU   rV   r   rY   r[   r4   rj   r   r   r  Znparrr!   r!   r"   test_positional_args_02
  s$    z,TestCreateEArrayArgs.test_positional_args_02c                 C   s   | j | j| jd d | j| j| j| j| j| j	| j
 |   | j | j| j}| }| |j| j | |j| j
j | |j| j
jd  | |j| j | |jj| jj | |j| j | t| j
| d S r   )r   r=   r  r   r,   r-   r.   r   r2  createparentsr/   rU   rV   r   rY   r+   r[   r*   r4   rj   r   r  r!   r!   r"   test_positional_args_obj(
  s(    
z-TestCreateEArrayArgs.test_positional_args_objc                 C   s   | j j| j| j| j| j| jd |   | j | j| j}|	 }| 
|j| j | 
|j| jj | 
|j| jjd  | 
|j| j | 
|jj| jj | 
|j| j | t| j| d S )N)r,   r   r/   r   )r   r=   r  r   r,   r   r/   rU   rV   r   rY   r+   r[   r*   r4   rj   r   r  r!   r!   r"   test_kwargs_obj@
  s    z$TestCreateEArrayArgs.test_kwargs_objc                 C   s   | j j| j| j| j| j| j| jd}|| j	 | 
  | j | j| j}| }| |j| j | |j| j	j | |j| j	jd  | |j| j | |jj| jj | |j| j | t| j	| d S N)r,   r   r*   r+   r   )r   r=   r  r   r,   r   r*   r+   rL   r/   rU   rV   r   rY   r[   r4   rj   r   r  r!   r!   r"   test_kwargs_atom_shape_01R
  s     z.TestCreateEArrayArgs.test_kwargs_atom_shape_01c                 C   s   | j j| j| j| j| j| j| jd}|   | j 	| j| j}| 
|j| j | 
|j| j | 
|jd | 
|j| j | 
|jj| jj | 
|j| j d S r  )r   r=   r  r   r,   r   r*   r+   rU   rV   rY   r[   r4   r  r!   r!   r"   test_kwargs_atom_shape_02f
  s    z.TestCreateEArrayArgs.test_kwargs_atom_shape_02c                 C   s   | j j| j| j| j| j| j| jd}|   | j 	| j| j}|
 }| |j| j | |j| jj | |j| jjd  | |j| j | |jj| jj | |j| j | t| j| d S )N)r,   r   r/   r*   r   )r   r=   r  r   r,   r   r/   r*   rU   rV   r   rY   r+   r[   r4   rj   r   r  r!   r!   r"   test_kwargs_obj_atomx
  s     z)TestCreateEArrayArgs.test_kwargs_obj_atomc                 C   s   | j j| j| j| j| j| j| jd}|   | j 	| j| j}|
 }| |j| j | |j| jj | |j| jjd  | |j| j | |jj| jj | |j| j | t| j| d S )N)r,   r   r/   r+   r   )r   r=   r  r   r,   r   r/   r+   rU   rV   r   rY   r[   r*   r4   rj   r   r  r!   r!   r"   test_kwargs_obj_shape
  s     z*TestCreateEArrayArgs.test_kwargs_obj_shapec              	   C   s   | j j| j| j| j| j| j| j| jd}| 	  | j 
| j| j}| }| |j| j | |j| jj | |j| jjd  | |j| j | |jj| jj | |j| j | t| j| d S )N)r,   r   r/   r*   r+   r   )r   r=   r  r   r,   r   r/   r*   r+   rU   rV   r   rY   r[   r4   rj   r   r  r!   r!   r"   test_kwargs_obj_atom_shape
  s"    z/TestCreateEArrayArgs.test_kwargs_obj_atom_shapec              	   C   s:   t jtd}| jt| jj| j	| j
| j| j|d d S )Ncomplex)r,   r/   r*   )r8   r9   
from_dtyper   r4   r  	TypeErrorr   r=   r  r   r,   r/   r   r*   r!   r!   r"   test_kwargs_obj_atom_error
  s    z/TestCreateEArrayArgs.test_kwargs_obj_atom_errorc              	   C   s4   | j | j  }| jt| jj| j| j| j| j|d d S )N)r,   r/   r+   )	r+   r  r  r   r=   r  r   r,   r/   rR   r!   r!   r"   test_kwargs_obj_shape_error
  s    z0TestCreateEArrayArgs.test_kwargs_obj_shape_errorc              
   C   s>   t jtd}| jt| jj| j	| j
| j| j|| jd d S Nr  r,   r/   r*   r+   )r8   r9   r  r   r4   r  r  r   r=   r  r   r,   r/   r+   r  r!   r!   r"   #test_kwargs_obj_atom_shape_error_01
  s    z8TestCreateEArrayArgs.test_kwargs_obj_atom_shape_error_01c              
   C   s8   | j | j  }| jt| jj| j| j| j| j| j	|d d S )Nr  )
r+   r  r  r   r=   r  r   r,   r/   r*   rR   r!   r!   r"   #test_kwargs_obj_atom_shape_error_02
  s    z8TestCreateEArrayArgs.test_kwargs_obj_atom_shape_error_02c              
   C   sH   t jtd}| j| j }| jt| jj	| j
| j| j| j||d d S r  )r8   r9   r  r   r4   r+   r  r  r   r=   r  r   r,   r/   )r   r*   r+   r!   r!   r"   #test_kwargs_obj_atom_shape_error_03
  s    z8TestCreateEArrayArgs.test_kwargs_obj_atom_shape_error_03)"r:   r   r   r   r   r/   r  r   r8   r9   r  r4   r*   r+   r,   r-   r.   r   r2  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!   r!   r!   r"   r  	  s2   r  c                  C   sH  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 qt3j4rD| 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 | S )Nr   )Ir	   Z	TestSuiterJ   Z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   rd  rf  rp  rr  rs  rt  ru  r  r  r  r  r  r  r  r   Zheavyr   r   r   r   r   r   r   r   r   r   r   rv  rw  ry  rz  r{  r|  r~  r  r  )ZtheSuiteZniternr!   r!   r"   suite
  s    r  __main__)ZdefaultTest)hr   r>  r   r8   r   r   r   r   Ztables.utilsr   Ztables.testsr   Ztables.tests.commonr   r	   r
   ZTestCaseZTempFileMixinr   r   r   r   r   r   r   r   r   r   r   r   ZskipIfZ	lzo_availr   Zblosc_availr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zbzip2_availr   r   r   r   r   r   r   r   r   r   r  rE  rd  rf  rg  rp  rr  rs  rt  ru  rv  rw  ry  rz  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>   s        Y









	
			



	



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


5  Y  rY`H  }Q
