a
    =_o                    @   s  d dl Z d dlZd dlm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mZ d dlmZ d dlmZ G dd	 d	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e ej! dG dd deZ"e ej! dG dd deZ#e ej! de eej$k dej$ G dd deZ%e ej! dG dd deZ&e ej! de de' vdG dd deZ(e ej! de de' vdG d d! d!eZ)e ej! de d"e' vd#G d$d% d%eZ*e ej! de d&e' vd'G d(d) d)eZ+e ej! de d*e' vd+G d,d- d-eZ,e ej- d.G d/d0 d0eZ.e ej/ d1G d2d3 d3eZ0G d4d5 d5eZ1G d6d7 d7eZ2G d8d9 d9eZ3G d:d; d;ejeZ4G d<d= d=e4Z5G d>d? d?e4Z6G d@dA dAejeZ7G dBdC dCe7Z8G dDdE dEejeZ9G dFdG dGe9Z:G dHdI dIe9Z;G dJdK dKejeZ<G dLdM dMe<Z=G dNdO dOe<Z>G dPdQ dQejeZ?G dRdS dSejeZ@G dTdU dUejeZAG dVdW dWejeZBG dXdY dYeBZCG dZd[ d[eBZDG d\d] d]ejeZEG d^d_ d_eEZFG d`da daeEZGG dbdc dceEZHG ddde deeEZIG dfdg dgeEZJG dhdi dieEZKG djdk dkeEZLG dldm dmeEZMG dndo doeEZNG dpdq dqeEZOG drds dseEZPG dtdu dueEZQG dvdw dwejeZRG dxdy dyeZSG dzd{ d{ejeZTG d|d} d}eTZUG d~d deTZVG dd dejeZWG dd dejeZXG dd dejeZYG dd dejeZZG dd dejeZ[dd Z\e]dkre^e j_ e`  ejadd dS )    N)	Atom
StringAtomBoolAtomIntAtom	Int16Atom	Int32Atom
ObjectAtomVLStringAtomVLUnicodeAtom)common)allequal)unittesttest_filenameblosc_version)PyTablesTestCase)
byteordersc                   @   s   e Zd ZdZdS )C)   g      @N)__name__
__module____qualname__c r   r   8lib/python3.9/site-packages/tables/tests/test_vlarray.pyr      s   r   c                       sl   e 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 )BasicTestCaser   zlibnumpyc                    s.   t t|   | jj| _|   | j  d S N)superr   setUph5fileroot	rootgrouppopulateFilecloseself	__class__r   r   r       s    
zBasicTestCase.setUpc                 C   s   | j }tj| j| j| j| j| jd}| jj	|dt
 d|dd}| j|_|ddg | jdkr|tjg d	d
d |tjg d
d n| jdkr|d	 |d |g d |g d d S )N)	complevelcomplibshuffle
bitshuffle
fletcher32Zvlarray1ragged array if ints  )atomtitlefiltersexpectedrows      r   r         int32dtypepythonr            	   
               )r"   tablesFilterscompressr*   r+   r,   r-   r    create_vlarrayr   flavorappendr   array)r&   groupr2   vlarrayr   r   r   r#   (   s.    




zBasicTestCase.populateFilec                 C   sj   t | jd| _| jd}| |j| j | |jd | |jd | |j	d | |j
jd d S )Nr	/vlarray1)r8   r4   r8   r9   )rH   	open_fileh5fnamer    get_nodeassertEqualrL   shapendimnrowsr0   type)r&   objr   r   r   test00_attributesA   s    zBasicTestCase.test00_attributesc                 C   s  t jr tdd td| jj  t| jd| _| j	d}d|_
|dd }|dd }t jrtd	|j td
|jd|j td| d}| ||j | jdkr| t|tj | t|tjddgdd| j | t|tjg dd| j n(| jdkr$| |ddg | |g  | t|d | j|jjkrlt jrlt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 | j|jjkrvt jrvtd| jj td| j|jj | | j|jj dS )zChecking vlarray read.
<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01_read...rQ   rR   r   r   r5   Flavor:Nrows in:First row in vlarray ==>r8   r   r4   r9   r:   r<   zError in compress. Class:zself, vlarray:zError in shuffle. Class:zError in fletcher32. Class:N)r   verboseprintr(   r   rH   rS   rT   r    rU   
nrowsinbufreadrL   _v_pathnamerY   rV   rZ   r   Zndarray
assertTruer   rN   lenrJ   r2   r)   Zwhich_lib_versionr*   r+   r,   r-   )r&   rP   rowrow2rY   r   r   r   test01_readK   s\    


zBasicTestCase.test01_readc           
      C   s  t jr tdd td| jj  t| jd| _| j	d}ddgg dg g d	g d
g}t
dddt
dddt
dddt
dddt
dddt
dddt
dddt
dddt
dddt
dddt
dddt
dddg}|D ]}|| }|| }g }t jr,td|j td|jd|j td| td| | jdkr|D ]}|tj|dd q<tt|D ]"}	| t||	 ||	 | j qdq| jdkr| || qdS )z%Checking vlarray __getitem__ (slices)r]   r^   zRunning %s.test02a_getitem...rQ   rR   r4   r5   r6   r=   rB   N   r   r   r_   r`   ra   Original rows ==>Rows read in vlarray ==>r   r9   r:   r<   )r   rc   rd   r(   r   rH   rS   rT   r    rU   slicerL   rg   rY   rM   r   rN   rangeri   rh   r   rV   )
r&   rP   rowsZslicesslcrows2rows1Zrows1fvalir   r   r   test02a_getitem   s6    


"
zBasicTestCase.test02a_getitemc                 C   s   t jr tdd td| jj  | jdkr.dS t| jd| _	| j	
d}tj|dd tjd}d	td
dtdgdgfD ]z}|| }|| }t jrtd|j td|jd|j td| td| tt|D ] }| t|| || | j qqdS )z&Checking vlarray __getitem__ (scalars)r]   r^   zRunning %s.test02b_getitem...r   NrQ   rR   r:   r   r4   r5   r   r7   r_   r`   ra   rn   ro   )r   rc   rd   r(   r   rL   rH   rS   rT   r    rU   r   rN   objectrg   rY   rq   ri   rh   r   )r&   rP   rr   rs   rt   ru   rw   r   r   r   test02b_getitem   s$    

"

zBasicTestCase.test02b_getitemc                 C   s  t jr tdd td| jj  t| jd| _| j	d}|
g d d|_|d }|d	 }|d
 }t jrtd|j td|jd|j td| d}| ||j | jdkr6| t|ttdd	g | t|tjdd	gdd| j | t|tjg dd| j | t|tjg ddd| j n8| jdkrn| |dd	g | |g  | |g d | t|d dS )zChecking vlarray append.r]   r^   zRunning %s.test03_append...arR   )r?   r@   rA   rC   r   r   r5   r_   r`   ra   rb   r>   r   r4   r9   r:   r<   r7   N)r   rc   rd   r(   r   rH   rS   rT   r    rU   rM   re   rL   rg   rY   rV   rZ   r   rN   rh   r   ri   )r&   rP   Zrow1rk   Zrow3rY   r   r   r   test03_append   sH    

zBasicTestCase.test03_appendc                 C   s   t | jd| _| jd}| |dd|jj  | |dd|jj  | |dd|jj  | |dd|jj  | |dd|jj  d	S )
zChecking get_row_size method.r{   rR   r   r5   r4   r   r7   r8   N)	rH   rS   rT   r    rU   rV   Zget_row_sizer0   sizer&   rP   r   r   r   test04_get_row_size   s    z!BasicTestCase.test04_get_row_size)r   r   r   rJ   r*   r+   r,   r-   rL   r   r#   r\   rl   rx   rz   r}   r   __classcell__r   r   r'   r   r      s   
7&,r   c                   @   s   e Zd ZdZdS )BasicNumPyTestCaser   Nr   r   r   rL   r   r   r   r   r      s   r   c                   @   s   e Zd ZdZdS )BasicPythonTestCaser<   Nr   r   r   r   r   r     s   r   c                   @   s   e Zd ZdZdZdS )ZlibComprTestCaser4   r   Nr   r   r   rJ   r*   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S )BloscComprTestCaserA   r   bloscNr   r   r   rJ   r+   r*   r   r   r   r   r     s   r   c                   @   s   e Zd ZdZdZdZdS )BloscShuffleComprTestCaser>   r4   r   Nr   r   r   r   r   r     s   r   zBLOSC >= %s requiredc                   @   s   e Zd ZdZdZdZdS )BloscBitShuffleComprTestCaserA   r4   r   N)r   r   r   rJ   r,   r*   r   r   r   r   r     s   r   c                   @   s   e Zd ZdZdZdZdS )BloscBloscLZComprTestCaserA   r4   zblosc:blosclzNr   r   r   r   r   r   %  s   r   Zlz4zlz4 requiredc                   @   s   e Zd ZdZdZdZdS )BloscLZ4ComprTestCaserA   r4   z	blosc:lz4Nr   r   r   r   r   r   -  s   r   c                   @   s   e Zd ZdZdZdZdS )BloscLZ4HCComprTestCaserA   r4   zblosc:lz4hcNr   r   r   r   r   r   6  s   r   Zsnappyzsnappy requiredc                   @   s   e Zd ZdZdZdZdS )BloscSnappyComprTestCaserA   r4   zblosc:snappyNr   r   r   r   r   r   ?  s   r   r   zzlib requiredc                   @   s   e Zd ZdZdZdZdS )BloscZlibComprTestCaserA   r4   z
blosc:zlibNr   r   r   r   r   r   I  s   r   Zzstdzzstd requiredc                   @   s   e Zd ZdZdZdZdS )BloscZstdComprTestCaserA   r4   z
blosc:zstdNr   r   r   r   r   r   Q  s   r   z%LZO compression library not availablec                   @   s   e Zd ZdZdZdS )LZOComprTestCaser4   ZlzoNr   r   r   r   r   r   Z  s   r   z'BZIP2 compression library not availablec                   @   s   e Zd ZdZdZdS )Bzip2ComprTestCaser4   Zbzip2Nr   r   r   r   r   r   `  s   r   c                   @   s   e Zd ZdZdZdS )ShuffleComprTestCaser4   N)r   r   r   rJ   r+   r   r   r   r   r   g  s   r   c                   @   s   e Zd ZdZdS )Fletcher32TestCaser4   N)r   r   r   r-   r   r   r   r   r   l  s   r   c                   @   s   e Zd ZdZdZdZdS )AllFiltersTestCaser4   N)r   r   r   rJ   r+   r-   r   r   r   r   r   p  s   r   c                   @   s   e 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 d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Z d:d; Z!d<S )=TypesTestCasewr   r   c                 C   s2  t jr tdd td| jj  | jjddtdddd	}d
|_|	t
g d |	t
ddg | jr|j}|   | j|}| }t jrtd| td|jd|j td|d  | |jd t|d t
g dd t|d t
ddgd | t|d d | t|d d dS )z9Checking vlarray with NumPy string atoms ('numpy' flavor)r]   r^   Running %s.test01_StringAtom.../
stringAtomr   itemsizeRagged array of stringsr0   r1   r   112123Z123412345r   r   Object read:r`   ra   rb   r   r5   )r   r   r   r   r   Sr4   r   r8   Nr   rc   rd   r(   r   r    rK   r   rL   rM   r   rN   reopenrg   _reopenrU   rf   rY   rV   nptassert_array_equalri   r&   rP   namerj   r   r   r   test01_StringAtom{  s4    


zTypesTestCase.test01_StringAtomc                 C   sF  t jr tdd td| jj  | jjddtdddd	}d
|_|	t
g dddd  |	t
g dddd  | jr|j}|   | j|}| }t jrtd| td|jd|j td|d  | |jd t|d t
g dd t|d t
ddgd | t|d d | t|d d dS )zJChecking vlarray with NumPy string atoms ('numpy' flavor,
        strided)r]   r^   z Running %s.test01a_StringAtom...r   r   r   r   r   r   r   r   Nr5   )r   r   2321r   r`   ra   rb   r   )r   r   r   r   r4   r   r   r   r   r   r   r   test01a_StringAtom  s0    


z TypesTestCase.test01a_StringAtomc                 C   s2  t jr tdd td| jj  | jjddtdddd	}d
|_|	t
g d |	t
g d | jr|j}|   | j|}| }t jrtd| td|jd|j td|d  | |jd t|d t
g dd t|d t
g dd | t|d d | t|d d dS )z@Checking vlarray with NumPy string atoms (NumPy flavor, no conv)r]   r^   z"Running %s.test01a_2_StringAtom...r   r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   r`   ra   rb   r   r5   r   r4   r7   Nr   r   r   r   r   test01a_2_StringAtom  s8    


z"TypesTestCase.test01a_2_StringAtomc                 C   s  t jr tdd td| jj  | jjddtdddd	}d
|_|	g d |	ddg | j
r||j}|   | j|}| }t jrtd td| td|jd|j td|d  | |jd | |d g d | |d ddg | t|d d | t|d d dS )z8Checking vlarray with NumPy string atoms (python flavor)r]   r^    Running %s.test01b_StringAtom...r   stringAtom2r   r   r   r   r<   r   r   r   Testing String flavorr   r`   ra   rb   r   r5   )   1   12   123r   r   r4   r   r   r8   Nr   rc   rd   r(   r   r    rK   r   rL   rM   r   rg   r   rU   rf   rY   rV   ri   r   r   r   r   test01b_StringAtom  s2    


z TypesTestCase.test01b_StringAtomc                 C   s^  t jr tdd td| jj  | jjddtdddd	}d
|_|	t
g d |	t
ddg t
g d|d< t
ddg|d< | jr|j}|   | j|}| }t jrtd| td|jd|j td|d  | |jd | t|d t
g d | t|d t
jddgdd | t|d d | t|d d dS )zJChecking updating vlarray with NumPy string atoms
        ('numpy' flavor)r]   r^    Running %s.test01c_StringAtom...r   r   r   r   r   r   r   r   r   r   r   r   r    r   r   444r4   r   r`   ra   rb   r5   r   r   r       r   S3r:   r8   N)r   rc   rd   r(   r   r    rK   r   rL   rM   r   rN   r   rg   r   rU   rf   rY   rV   rh   r   ri   r   r   r   r   test01c_StringAtom   s8    


"z TypesTestCase.test01c_StringAtomc                 C   s6  t jr tdd td| jj  | jjddtdddd	}d
|_|	g d |	ddg g d|d< ddg|d< | j
r|j}|   | j|}| }t jrtd td| td|jd|j td|d  | |jd | |d g d | |d ddg | t|d d | t|d d dS )z;Checking updating vlarray with string atoms (String flavor)r]   r^    Running %s.test01d_StringAtom...r   r   r   r   r   r   r<   r   r   r   r   r   r   r   r4   r   r   r`   ra   rb   r5   r   s   44   4r8   Nr   r   r   r   r   test01d_StringAtom&  s6    


z TypesTestCase.test01d_StringAtomc                 C   s(  t jr tdd td| jj  | jjddt dd}|g d |d	d
g | j	rr|j
}|   | j|}| }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dd
gdd | t|d
 d | t|d d dS )z$Checking vlarray with boolean atoms.r]   r^   Running %s.test02_BoolAtom...r   r   Ragged array of Booleansr   r4   r   r   r|   r   r   r`   ra   rb   r5   r4   r   r4   boolr:   r4   r   Nr   rc   rd   r(   r   r    rK   r   rM   r   rg   r   rU   rf   rY   rV   rh   r   r   rN   ri   r   r   r   r   test02_BoolAtomK  s,    

""zTypesTestCase.test02_BoolAtomc                 C   s8  t jr tdd td| jj  | jjddt dd}|g d |d	d
g d|d
< d|d< | j	r|j
}|   | j|}| }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d
dgdd | t|d
 d | t|d d dS )z,Checking setting vlarray with boolean atoms.r]   r^   Running %s.test02b_BoolAtom...r   r   r   r   r   r|   r   )r   r4   r   r   r|   r4   r   r`   ra   rb   r5   )r   r4   r4   r   r:   r   Nr   r   r   r   r   test02b_BoolAtomi  s0    

""zTypesTestCase.test02b_BoolAtomc              	   C   sL  g d}t jr(tdd td| jj  |D ]}| jjd|t|d}|	g d |	dd	g | j
r|j}| jd
d | j|}| }t jrtd| td| td|jd|j td|d	  | |jd | t|d	 tjg d|d | t|d tjdd	g|d | t|d	 d | t|d d q,dS )z$Checking vlarray with integer atoms.int8uint8int16uint16r9   uint32int64r]   r^   Running %s.test03_IntAtom...r   r0   r4   r5   r   r|   r   r{   modeTesting type:r   r`   ra   rb   r5   r:   r4   r   Nr   rc   rd   r(   r   r    rK   r   from_sctyperM   r   rg   r   rU   rf   rY   rV   rh   r   r   rN   ri   r&   ttypesatyperP   r   rj   r   r   r   test03_IntAtom  sB    





zTypesTestCase.test03_IntAtomc              	   C   s  t jt jt jt jt jt jt jd}tj	rBt
dd t
d| jj  |D ]b}| jjd|t|| d}t jg d|d}| }| }|| t jd	d
g|d}| }| }|| | jr|j}| jdd | j|}| }tj	r(t
d| t
d| t
d|jd|j t
d|d
  | |jd | t|d
 t jg d|| d | t|d t jd	d
g|| d | t|d
 d | t|d d qFdS )z7Checking vlarray with integer atoms (byteorder swapped)r   r]   r^   zRunning %s.test03a_IntAtom...r   r   r   r:   r|   r   r{   r   r   r   r`   ra   rb   r5   r4   r   N)r   r   r   r   r   r9   r   r   r   rc   rd   r(   r   r    rK   r   r   rN   byteswapnewbyteorderrM   r   rg   r   rU   rf   rY   rV   rh   r   ri   r&   r   r   rP   a0a1r   rj   r   r   r   test03a_IntAtom  sT    






zTypesTestCase.test03a_IntAtomc              	   C   s\  g d}t jr(tdd td| jj  |D ](}| jjd|t|d}|	g d |	dd	g d
|d	< d|d< | j
r|j}| jdd | j|}| }t jrtd| td| td|jd|j td|d	  | |jd | t|d	 tjg d
|d | t|d tjd	dg|d | t|d	 d | t|d d q,dS )z-Checking updating vlarray with integer atoms.r   r]   r^   r   r   r   r   r|   r   r   r5   r4   r   r4   r{   r   r   r   r`   ra   rb   r5   r:   r   Nr   r   r   r   r   test03b_IntAtom  sF    




zTypesTestCase.test03b_IntAtomc              	   C   s  t jt jt jt jt jt jt jd}tj	rBt
dd t
d| jj  |D ]}| jjd|t|| d}t jg d|d}|| t jd	d
g|d}|| t jg d|d}| }| }||d
< t jd
d	g|d}| }| }||d< | jr|j}| jdd | j|}| }tj	r^t
d| t
d| t
d|jd|j t
d|d
  | |jd | t|d
 t jg d|| d | t|d t jd
d	g|| d | t|d
 d | t|d d qFdS )z@Checking updating vlarray with integer atoms (byteorder swapped)r   r]   r^   zRunning %s.test03c_IntAtom...r   r   r   r:   r|   r   r   r4   r{   r   r   r   r`   ra   rb   r5   r   N)r   r   r   r   r   r9   r   r   r   rc   rd   r(   r   r    rK   r   r   rN   rM   r   r   r   rg   r   rU   rf   rY   rV   rh   r   ri   r   r   r   r   test03c_IntAtom  s\    






zTypesTestCase.test03c_IntAtomc           
   	   C   s:  t jt jt jt jt jt jt jd}tj	rBt
dd t
d| jj  dddtj }|D ]}| jjd|t|| |d	}t jg d
|d}|| t jddg|d}|| t jg d|d}| }| }||d< t jddg|d}| }| }||d< | jr,|j}| jdd | j|}| }tj	rpt
d| t
d| t
d|jd|j t
d|d  t|d jj }	|	dkr| t|d jj tj | |j| | |jd |  t!|d t jg d|| d |  t!|d t jddg|| d | t"|d d | t"|d d qVdS )z@Checking updating vlarray with integer atoms (another byteorder)r   r]   r^   zRunning %s.test03d_IntAtom...biglittler   r   r   r0   	byteorderr   r:   r|   r   r   r4   r{   r   r   r   r`   ra   rb   Z
irrelevantr5   r   N)#r   r   r   r   r   r9   r   r   r   rc   rd   r(   r   sysr   r    rK   r   r   rN   rM   r   r   r   rg   r   rU   rf   rY   r   r;   rV   rh   r   ri   )
r&   r   r   r   rP   r   r   r   rj   Z
byteorder2r   r   r   test03d_IntAtomQ  sl    







zTypesTestCase.test03d_IntAtomc              	   C   sr  ddg}dD ]$}|  d }tt|r|| qtjrRtdd td| jj  |D ]}| j	j
d|t|d	}|g d
 |ddg | jr|j}| jdd | j	|}| }tjrtd| td| td|jd|j td|d  | |jd | t|d tg d
| | t|d tddg| | t|d d | t|d d qVdS )z+Checking vlarray with floating point atoms.float32float64float16float96float128r   r]   r^   Running %s.test04_FloatAtom...r   r   ?皙@gffffff
@σً3#I9r{   r   r   r   r`   ra   rb   r   r5   r4   r   N
capitalizehasattrrH   rM   r   rc   rd   r(   r   r    rK   r   r   r   rg   r   rU   rf   rY   rV   rh   r   r   rN   ri   r&   r   r   atomnamer   rP   rj   r   r   r   test04_FloatAtom  sN    




zTypesTestCase.test04_FloatAtomc              	   C   s  t jt jd}ttdr"t j|d< ttdr6t j|d< ttdrJt j|d< tj	rjt
dd	 t
d
| jj  |D ]d}| jjd|t|| d}t jg d|d}| }| }|| t jddg|d}| }| }|| | jr|j}| jdd | j|}| }tj	rRt
d| t
d| t
d|jd|j t
d|d  | |jd | t|d t jg d|| d | t|d t jddg|| d | t|d d | t|d d qndS )z5Checking vlarray with float atoms (byteorder swapped)r   r   Float16Atomr   Float96Atomr   Float128Atomr   r]   r^   zRunning %s.test04a_FloatAtom...r   r   r   r:   r   r   r{   r   r   r   r`   ra   rb   r   r5   r4   r   N)r   r   r   r  rH   r   r   r   r   rc   rd   r(   r   r    rK   r   r   rN   r   r   rM   r   rg   r   rU   rf   rY   rV   rh   r   ri   r   r   r   r   test04a_FloatAtom  sV    













zTypesTestCase.test04a_FloatAtomc              	   C   s  ddg}dD ]$}|  d }tt|r|| qtjrRtdd td| jj  |D ]&}| j	j
d|t|d	}|g d
 |ddg d|d< d|d< | jr|j}| jdd | j	|}| }tjrtd| td| td|jd|j td|d  | |jd | t|d tg d| | t|d tddg| | t|d d | t|d d qVdS )z4Checking updating vlarray with floating point atoms.r   r   r   r   r]   r^   zRunning %s.test04b_FloatAtom...r   r   r   r   r   333333@r   r  r   )眪' z9GP9r4   r{   r   r   r   r`   ra   rb   r5   r  r  r   Nr   r  r   r   r   test04b_FloatAtom  sN    




zTypesTestCase.test04b_FloatAtomc              	   C   s  t jt jd}ttdr"t j|d< ttdr6t j|d< ttdrJt j|d< tj	rjt
dd	 t
d
| jj  |D ]}| jjd|t|| d}t jg d|d}|| t jddg|d}|| t jg d|d}| }| }||d< t jddg|d}| }| }||d< | jrB|j}| jdd | j|}| }tj	rt
d| t
d| t
d|jd|j t
d|d  | |jd | t|d t jg d|| d | t|d t jddg|| d | t|d d | t|d d qndS )z>Checking updating vlarray with float atoms (byteorder swapped)r  r  r   r  r   r	  r   r]   r^   zRunning %s.test04c_FloatAtom...r   r   r   r:   r|   r   r  r  r  r4   r{   r   r   r   r`   ra   rb   r5   r   N)r   r   r   r  rH   r   r   r   r   rc   rd   r(   r   r    rK   r   r   rN   rM   r   r   r   rg   r   rU   rf   rY   rV   rh   r   ri   r   r   r   r   test04c_FloatAtom  s^    













zTypesTestCase.test04c_FloatAtomc           	   	   C   sH  t jt jd}ttdr"t j|d< ttdr6t j|d< ttdrJt j|d< tj	rjt
dd	 t
d
| jj  dddtj }|D ]}| jjd|t|| |d}t jg d|d}|| t jddg|d}|| t jg d|d}| }| }||d< t jddg|d}| }| }||d< | jrT|j}| jdd | j|}| }tj	rt
d| t
d| t
d|jd|j t
d|d  | |j| | t|d jj tj | |jd |  t!|d t jg d|| d |  t!|d t jddg|| d | t"|d d  | t"|d d q~d!S )"z>Checking updating vlarray with float atoms (another byteorder)r  r  r   r  r   r	  r   r]   r^   zRunning %s.test04d_FloatAtom...r   r   r   r   r   r   r:   r|   r   r  r  r  r4   r{   r   r   r   r`   ra   rb   r5   r   N)#r   r   r   r  rH   r   r   r   r   rc   rd   r(   r   r   r   r    rK   r   r   rN   rM   r   r   r   rg   r   rU   rf   rY   rV   r   r;   rh   r   ri   )	r&   r   r   r   rP   r   r   r   rj   r   r   r   test04d_FloatAtomV  sf    













zTypesTestCase.test04d_FloatAtomc              	   C   sp  ddg}t tdr|d t tdr0|d tjrPtdd td	| jj  |D ]}| jj	d
|t
|d}|g d |ddg | jr|j}| jdd | j|}| }tjrtd| td| td|jd|j td|d  | |jd | t|d tg d| | t|d tddg| | t|d d | t|d d qTdS )z.Checking vlarray with numerical complex atoms.	complex64
complex128Complex192Atom
complex192Complex256Atom
complex256r]   r^   z Running %s.test04_ComplexAtom...r   r   y?        y        @yffffff
@ffffff
@        σً3#I9        r{   r   r   r   r`   ra   rb   r   r5   r4   r   Nr  rH   rM   r   rc   rd   r(   r   r    rK   r   r   r   rg   r   rU   rf   rY   rV   rh   r   r   rN   ri   r   r   r   r   test04_ComplexAtom  sR    








z TypesTestCase.test04_ComplexAtomc              	   C   s  ddg}t tdr|d t tdr0|d tjrPtdd td	| jj  |D ]&}| jj	d
|t
|d}|g d |ddg d|d< d|d< | jr|j}| jdd | j|}| }tjrtd| td| td|jd|j td|d  | |jd | t|d tg d| | t|d tddg| | t|d d | t|d d qTdS )z8Checking modifying vlarray with numerical complex atoms.r  r  r  r  r  r  r]   r^   z!Running %s.test04b_ComplexAtom...r   r   r  r  r  )yffffff?        y        @yffffff
@333333@r   )      @σً3#I9      @r4   r{   r   r   r   r`   ra   rb   r5   r  r  r   Nr  r   r   r   r   test04b_ComplexAtom  sZ    








z!TypesTestCase.test04b_ComplexAtomc                 C   s  t  dkrdS tjr0tdd td| jj  | jjddt	 d}|
d	 |
d
 |
d |
d | t|j
ddg | t|j
d | jr|j}|   | j|}| }tjrtd| td|jd|j td|d  | |jd | |d d	 | |d d
 | |d d | |d d | t|d d | t|d d | t|d d | t|d d dS )z.Checking vlarray with variable length strings.asciiNr]   r^   z!Running %s.test05_VLStringAtom...r   r	   r      asds   asd   aaanar   s   foos   bar   asdär   r`   ra   rb   r   r7   r4   r5   r   r8   )r   getdefaultencodingr   rc   rd   r(   r   r    rK   r	   rM   assertRaises	TypeErrorUnicodeEncodeErrorr   rg   r   rU   rf   rY   rV   ri   r   r   r   r   test05_VLStringAtom  sD    





z!TypesTestCase.test05_VLStringAtomc                 C   sD  t jr tdd td| jj  | jjddt d}|d |d d	|d
< d|d< | 	t
|jdd | 	t
|jdd | jr|j}|   | j|}| }t jrtd| td|jd|j tdt|d
  tdt|d  | |jd | |d
 d	 | |d d | t|d
 d | t|d d dS )z7Checking updating vlarray with variable length strings.r]   r^   z"Running %s.test05b_VLStringAtom...r   r	   r   r!  r"  s   as4r   s   aaancr4   s   shrts   toolongr   r`   ra   rb   Second row in vlarray ==>r5   r   r8   N)r   rc   rd   r(   r   r    rK   r	   rM   r%  
ValueError__setitem__r   rg   r   rU   rf   rY   reprrV   ri   r   r   r   r   test05b_VLStringAtom#  s:    



z"TypesTestCase.test05b_VLStringAtomc                 C   sh  t jr tdd td| jj  | jjddt d}|g ddd	g |d
dt	 g |d | j
r|j}|   | j|}| }t jrtd| td|jd|j td|d  | |jd
 | |d g ddd	g t|d }| }| |d
dg | |jt	 j | |d d | t|d d
 | t|d d
 | tt|d  dS )z#Checking vlarray with object atoms.r]   r^   zRunning %s.test06a_Object...r   Objectr   r   aaau	   aaaçççr   r7   *   r   r`   ra   rb   r   r4   r5   N)r   rc   rd   r(   r   r    rK   r   rM   r   r   rg   r   rU   rf   rY   rV   listpopr   ri   r%  r&  r&   rP   r   rj   Zlist1r[   r   r   r   test06a_ObjectI  s8    


zTypesTestCase.test06a_Objectc                 C   sZ  t jr tdd td| jj  | jjddt d}|g ddd	f |d
ddgg g dddf|d< dddgg|d< | j	r|j
}|   | j|}| }t jrtd| td|j
d|j td|d  | |jd | |d g dddf t|d }| }| |ddg | |dg | t|d d
 | t|d d
 dS )z,Checking updating vlarray with object atoms.r]   r^   zRunning %s.test06b_Object...r   r.  r   r   r/  u   çç4r   r7      )r4   r5   r7   Zaa4u   çç5r   r4   r   r`   ra   rb   r5   N)r   rc   rd   r(   r   r    rK   r   rM   r   rg   r   rU   rf   rY   rV   r1  r2  ri   r3  r   r   r   test06b_Objectm  s2    

zTypesTestCase.test06b_Objectc              	   C   sH  t jr tdd td| jj  | jjddt d}|t	
ddgd	d
ggd |t	
g dd |t	
dd | jr|j}|   | j|}| }t jrtd| td|jd|j td|d	  | |jd | t|d	 t	
ddgd	d
ggd | t|d t	
g dd | t|d t	
dd dS )z;Checking vlarray with object atoms (numpy arrays as values)r]   r^   zRunning %s.test06c_Object...r   r.  r   r4   r5   r   r7   i4r   r4   r5   r   i8r0  i1r   r`   ra   rb   r   Nr   rc   rd   r(   r   r    rK   r   rM   r   rN   r   rg   r   rU   rf   rY   rV   rh   r   r   r   r   r   test06c_Object  s(    

( zTypesTestCase.test06c_Objectc              	   C   s  t jr tdd td| jj  | jjddt d}|t	
ddgd	d
ggd |t	
g dd |t	
dd t	
dd	gd	d
ggd|d	< t	
g dd|d< t	
dd|d< | jr|j}|   | j|}| }t jrtd| td|jd|j td|d	  | |jd | t|d	 t	
dd	gd	d
ggd | t|d t	
g dd | t|d t	
dd dS )z:Checking updating vlarray with object atoms (numpy arrays)r]   r^   zRunning %s.test06d_Object...r   r.  r   r4   r5   r   r7   r7  r8  r9  r0  r:  )r   r4   r   r      r   r`   ra   rb   r   Nr;  r   r   r   r   test06d_Object  s.    

( zTypesTestCase.test06d_Objectc                 C   s  t  dkrdS tjr0tdd td| jj  | jjddt	 d}|
d	 |
d
 |
d |
d | t|j
ddg | t|j
d | jr|j}|   | j|}| }tjrtd| td|jd|j td|d  | |jd | |d d	 | |d d
 | |d d | |d d | t|d d | t|d d | t|d d | t|d d dS )z6Checking vlarray with variable length Unicode strings.r   Nr]   r^   z"Running %s.test07_VLUnicodeAtom...r   r
   r   asdu   asdŀZaaanar   ZfooZbarr#  r   r`   ra   rb   r   r7   r4   r5   r   r8   )r   r$  r   rc   rd   r(   r   r    rK   r
   rM   r%  r&  UnicodeDecodeErrorr   rg   r   rU   rf   rY   rV   ri   r   r   r   r   test07_VLUnicodeAtom  sD    





z"TypesTestCase.test07_VLUnicodeAtomc                 C   sD  t jr tdd td| jj  | jjddt d}|d |d d	|d
< d|d< | 	t
|jdd | 	t
|jdd | jr|j}|   | j|}| }t jrtd| td|jd|j tdt|d
  tdt|d  | |jd | |d
 d	 | |d d | t|d
 d | t|d d dS )z?Checking updating vlarray with variable length Unicode strings.r]   r^   z#Running %s.test07b_VLUnicodeAtom...r   r
   r   r?  u   aaanäu   asär   u   aaanŀr4   ZshrtZtoolongr   r`   ra   rb   r)  r5   r   r8   N)r   rc   rd   r(   r   r    rK   r
   rM   r%  r*  r+  r   rg   r   rU   rf   rY   r,  rV   ri   r   r   r   r   test07b_VLUnicodeAtom  s:    



z#TypesTestCase.test07b_VLUnicodeAtomN)"r   r   r   	open_moderJ   r*   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r  r  r  r(  r-  r4  r6  r<  r>  rA  rB  r   r   r   r   r   v  s>   !!"!&%",208?+3/9=/4-&$,$-r   c                   @   s   e Zd ZdZdZdS )TypesReopenTestCaseZReopenTNr   r   r   r1   r   r   r   r   r   rD  .  s   rD  c                   @   s   e Zd ZdZdZdS )TypesNoReopenTestCasez	No reopenFNrE  r   r   r   r   rF  3  s   rF  c                       sp   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  ZS )MDTypesTestCaser   r   r   c                    s   t t|   | jj| _d S r   )r   rG  r   r    r!   r"   r%   r'   r   r   r   =  s    zMDTypesTestCase.setUpc              
   C   s>  | j }tjr&tdd td| jj  | j|dtdddd}|	d	d
gd
d	gg |	ddgddgddgddgg |
 }tjrtd| td|jd|j td|d  | |jd t|d td	d
gd
d	ggd t|d tddgddgddgddggd | t|d d | t|d d dS )z,Checking vlarray with MD NumPy string atoms.r]   r^   r   r   r   r5   r   rW   r   r   45sabcfabr   r`   ra   r)  r4   r5   r   r   r7   N)r"   r   rc   rd   r(   r   r    rK   r   rM   rf   rg   rY   rV   r   r   r   rN   ri   r&   r!   rP   rj   r   r   r   r   A  s<    

z!MDTypesTestCase.test01_StringAtomc                 C   s4  | j }tjr&tdd td| jj  | j|dtdddd}d	|_	|
d
dgdd
gg |
ddgddgddgddgg | }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ddgddgg | t|d d | t|d d dS )z=Checking vlarray with MD NumPy string atoms ('python' flavor)r]   r^   r   r   r   rH  rI  r   r<   r   rJ  rK  rL  rM  rN  r   r`   ra   r)  r4   r5   r   r      45   s   abc   f   abr7   N)r"   r   rc   rd   r(   r   r    rK   r   rL   rM   rf   rg   rY   rV   ri   rO  r   r   r   r   a  s2    

z"MDTypesTestCase.test01b_StringAtomc              	   C   sn  | j }tjr&tdd td| jj  | j|dtdddd}d	|_	t
jd
dgddgddggdd}||dd  t
dd
gddgddgddgddgddgg}||d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dd!gd!d gg | t|d d | t|d d" dS )#z9Checking vlarray with MD NumPy string atoms (with offset)r]   r^   r   r   r   rH  rI  r   r<   r{   br   rJ  r   r:   r4   NrK  rN  rM  rL  r5   r   r`   ra   r)  r   r   rP  rQ  rR  rS  rT  r7   r"   r   rc   rd   r(   r   r    rK   r   rL   r   rN   rM   rf   rg   rY   rV   ri   r&   r!   rP   r{   rj   r   r   r   r     s8    
 
z"MDTypesTestCase.test01c_StringAtomc              	   C   s`  | j }tjr&tdd td| jj  | j|dtdddd}d	|_	t
jd
dgddgddggdd}||ddd  t
dd
gddgddgddgddgddgg}||ddd  | }tjrtd| td|jd|j td|d  | |jd | |d ddgg | |d ddgd d!gg | t|d d | t|d d dS )"z9Checking vlarray with MD NumPy string atoms (with stride)r]   r^   r   r   r   rH  rI  r   r<   r{   rU  r   rJ  r   r:   r4   Nr5   rK  rN  rM  rL  r   r`   ra   r)  r   r   rP  rQ     arR  rS  rV  rW  r   r   r   r     s4    
 
z"MDTypesTestCase.test01d_StringAtomc              	   C   s  | j }tjr&tdd td| jj  | j|dtddd}|	g d |	d	g |
 }tjrtd
| td|jd|j td|d  | |jd | t|d tjg dg dg dgdd | t|d tjg dgdd | t|d d | t|d d dS )z'Checking vlarray with MD boolean atoms.r]   r^   r   r   r   rW   r   )r   r4   r4   r4   r   r   r   r|   r   r   r   r`   ra   r)  r4   r5   r   r   r[  r\  r   r:   r4   r   r   r   N)r"   r   rc   rd   r(   r   r    rK   r   rM   rf   rg   rY   rV   rh   r   r   rN   ri   rO  r   r   r   r     s4    


 zMDTypesTestCase.test02_BoolAtomc              	   C   sL  | j }tjr&tdd td| 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g dg dgd	d
 | t|d t	j
g dgd	d
 | t|d d | t|d d dS )z4Checking vlarray with MD boolean atoms (with offset)r]   r^   r   r   rY  rZ  r   r\  r   r[  r\  r   r:   r4   Nr[  r]  r   r`   ra   r)  r5   r   r   r\  r^  r   r"   r   rc   rd   r(   r   r    rK   r   r   rN   rM   rf   rg   rY   rV   rh   r   ri   rW  r   r   r   r     s@    



 z MDTypesTestCase.test02b_BoolAtomc                 C   sP  | j }tjr&tdd td| jj  | j|dtddd}t	j
g dd	d
}||ddd  t	j
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g dgd	d
 | t|d t	j
g dg dgd	d
 | t|d d | t|d d dS )z5Checking vlarray with MD boolean atoms (with strides)r]   r^   zRunning %s.test02c_BoolAtom...r   rY  rZ  r   r_  r   r:   r4   Nr5   )r[  r]  r\  r   r`   ra   r)  r   r   r\  r[  r`  rW  r   r   r   test02c_BoolAtom  s@    



z MDTypesTestCase.test02c_BoolAtomc                 C   sT  g d}| j }tjr.tdd td| jj  |D ]}| jj||t	|dd}|
td|td|g |
td|d g | }tjrtd| td	|jd
|j tdt|d  | |jd | t|d ttdtdg| | t|d ttdd g| | t|d d | t|d d q2dS )z'Checking vlarray with MD integer atoms.r   r]   r^   r   r5   r   r   d   r   r`   ra   r)  r4   r5   r   N)r"   r   rc   rd   r(   r   r    rK   r   r   rM   r   oneszerosrf   rg   rY   r,  rV   rh   r   rN   ri   )r&   r   r!   r   rP   rj   r   r   r   r   '  s>    




 zMDTypesTestCase.test03_IntAtomc           	      C   s  g d}dD ]$}|  d }tt|r|| qdD ]$}d| }tt|r6|d|  q6| j}tjrtdd td	| jj	  |D ] }| j
j||t|d
d}|td
|d td
|g |td
|d g | }tjrtd| td|jd|j td|d  | |jd | t|d ttd
d td
g| | t|d ttd
d g| | t|d d | t|d d qdS )z.Checking vlarray with MD floating point atoms.r   r   r  r  r   r         Complex%dAtom	complex%dr]   r^   r   )r8   r5   r>   r   r   g     @r   r`   ra   r)  r4   r5   r   N)r  r  rH   rM   r"   r   rc   rd   r(   r   r    rK   r   r   r   rd  re  rf   rg   rY   rV   rh   r   rN   ri   )	r&   r   r   r  r   r!   r   rP   rj   r   r   r   r  R  sR    





z MDTypesTestCase.test04_FloatAtom)r   r   r   rC  rJ   r*   r   r   r   r   r   r   r   ra  r   r  r   r   r   r'   r   rG  8  s    "!"#+rG  c                   @   s   e Zd ZdZdS )MDTypesNumPyTestCaseZMDTypesN)r   r   r   r1   r   r   r   r   rl    s   rl  c                       sH   e Zd ZdZ fddZdd Zdd Zdd	 Zd
d Zdd Z	  Z
S )AppendShapeTestCaser   c                    s   t t|   | jj| _d S r   )r   rm  r   r    r!   r"   r%   r'   r   r   r     s    zAppendShapeTestCase.setUpc                 C   s  | j }tjr&tdd td| jj  | j|dt d}d|_	|
d |
g d |
tjg ddd	 | jrtjrtd
 |   | jjj}| }tjrtd| td|jd|j td|d  | |jd | |d g d | |d g d | |d g d dS )z0Checking vlarray.append() with different inputs.r]   r^   zRunning %s.test00_difinputs...rP   Ragged array of intsr<   r   r9   r:   (closing file version)r   r`   ra   rb   r   r   r4   r5   N)r"   r   rc   rd   r(   r   r    rK   r   rL   rM   r   rN   r$   r   r!   rP   rf   rg   rY   rV   rO  r   r   r   test00_difinputs  s4    




z$AppendShapeTestCase.test00_difinputsc                 C   s   | j }tjr&tdd td| jj  | j|dtddd}| 	t
  |g dg W d	   n1 sn0    Y  | jrtjrtd
 |   | jjj}| }tjrtd| td|jd|j | |jd d	S )z3Checking vlarray.append() with too many dimensions.r]   r^   z Running %s.test01_toomanydims...rP   r   r   r   )r   Z4563Nro  r   r`   ra   r   )r"   r   rc   rd   r(   r   r    rK   r   r%  r*  rM   r$   r   r!   rP   rf   rg   rY   rV   rO  r   r   r   test01_toomanydims  s(    

.

z&AppendShapeTestCase.test01_toomanydimsc                 C   s   | j }tjr&tdd td| jj  | j|dt d}|	t
jddd | jrttjrbtd	 |   | jjj}|d
d
 }tjrtd| td|jd|j tdt| | |jd | t|t
jddd | t|d
 dS )z7Checking vlarray.append() with a zero-dimensional arrayr]   r^   zRunning %s.test02_zerodims...rP   rn  r9   )r>   r   )r;   rW   ro  r   r   r`   ra   rb   r4   r   N)r"   r   rc   rd   r(   r   r    rK   r   rM   r   re  r$   r   r!   rP   rf   rg   rY   r,  rV   rh   r   ri   rO  r   r   r   test02_zerodims  s,    



z#AppendShapeTestCase.test02_zerodimsc                 C   s   | j }tjr&tdd td| jj  | j|dt d}|	t
jddgdd	 | jrxtjrftd
 |   | jjj}|dd }tjrtd| td|jd|j tdt| | |jd | t|t
jddgdd	 | t|d dS )z>Checking vlarray.append() with a casted array (upgrading case)r]   r^   zRunning %s.test03a_cast...rP   rn  r4   r5   r   r:   ro  r   r   r`   ra   rb   r9   Nr"   r   rc   rd   r(   r   r    rK   r   rM   r   rN   r$   r   r!   rP   rf   rg   rY   r,  rV   rh   r   ri   rO  r   r   r   test03a_cast  s,    



z AppendShapeTestCase.test03a_castc                 C   s   | j }tjr&tdd td| jj  | j|dt d}|	t
jddgdd	 | jrxtjrftd
 |   | jjj}|dd }tjrtd| td|jd|j tdt| | |jd | t|t
jddgdd	 | t|d dS )z@Checking vlarray.append() with a casted array (downgrading case)r]   r^   zRunning %s.test03b_cast...rP   rn  r4   r5   r   r:   ro  r   r   r`   ra   rb   r9   Nru  rO  r   r   r   test03b_cast  s,    



z AppendShapeTestCase.test03b_cast)r   r   r   rC  r   rp  rr  rt  rv  rw  r   r   r   r'   r   rm    s   & rm  c                   @   s   e Zd ZdZdS )OpenAppendShapeTestCaser   Nr   r   r   r$   r   r   r   r   rx  4  s   rx  c                   @   s   e Zd ZdZdS )CloseAppendShapeTestCaser4   Nry  r   r   r   r   rz  8  s   rz  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  ZS )FlavorTestCaser   r   r   c                    s   t t|   | jj| _d S r   )r   r{  r   r    r!   r"   r%   r'   r   r   r   A  s    zFlavorTestCase.setUpc                 C   s   | j }tjr&tdd td| jj  | j|dtj	ddd}| j
|_
| j  t| jd| _| jjj}| }tjrtd	| j
 td
|t| td|jd|j | |jd | |g  dS )zAChecking empty vlarrays with different flavors (closing the file)r]   r^   !Running %s.test01_EmptyVLArray...rP   intr7   r   rQ   Testing flavor:r   r`   ra   r   N)r"   r   rc   rd   r(   r   r    rK   r   	from_kindrL   r$   rH   rS   rT   r!   rP   rf   r,  rg   rY   rV   rO  r   r   r   test01a_EmptyVLArrayE  s(    



z#FlavorTestCase.test01a_EmptyVLArrayc                 C   s   | j }tjr&tdd td| jj  | j|dtj	ddd}| j
|_
| }tjr~td| j
 td	| td
|jd|j | |jd | |g  dS )z@Checking empty vlarrays with different flavors (no closing file)r]   r^   r|  rP   r}  r7   r   r~  r   r`   ra   r   N)r"   r   rc   rd   r(   r   r    rK   r   r  rL   rf   rg   rY   rV   rO  r   r   r   test01b_EmptyVLArraya  s"    


z#FlavorTestCase.test01b_EmptyVLArrayc                 C   s  | j }tjr&tdd td| jj  | j|dt }| j	|_	|
g d |
d |
ddg | }tjrtd	| j	 td
| td|jd|j td|d  | |jd | t|d d | t|d d | t|d d | j	dkrg d}g }ddg}n>| j	dkrTtjg ddd}tjg dd}tjddgdd}| j	dkr| t|d || j	 | t|d || j	 | t|d || j	 n0| |d | | |d | | |d | dS )z:Checking vlarray with different flavors (boolean versions)r]   r^   r   ZBoolr   r   rc  r   r~  r   r`   ra   rb   r   r4   r5   r<   r[  r   r   r:   N)r"   r   rc   rd   r(   r   r    rK   r   rL   rM   rf   rg   rY   rV   ri   r   rN   rh   r   )r&   r!   rP   rj   arr1arr2arr3r   r   r   test02_BooleanAtomz  sD    



z!FlavorTestCase.test02_BooleanAtomc           	      C   s  g d}| j }tjr.tdd td| jj  |D ]}| j||t	|}| j
|_
|g d |d |ddg | }tjrtd	| j
 td
| td|jd|j td|d  | |jd | t|d d | t|d d | t|d d | j
dkr,g d}g }ddg}n>| j
dkrjtjg d|d}tjg |d}tjddg|d}| j
dkr| t|d || j
 | t|d || j
 | t|d || j
 q2| |d | | |d | | |d | q2dS )z:Checking vlarray with different flavors (integer versions)r   r]   r^   r   r   r   rc  r   r~  r   r`   ra   rb   r   r4   r5   r<   r   r:   N)r"   r   rc   rd   r(   r   r    rK   r   r   rL   rM   rf   rg   rY   rV   ri   r   rN   rh   r   	r&   r   r!   r   rP   rj   r  r  r  r   r   r   r     sL    





zFlavorTestCase.test03_IntAtomc           	      C   s  g d}| j }tjr.tdd td| jj  |D ]}| j||t	|}| j
|_
|g d |d |ddg | jd	d
 | jj}| j|t|}| }tjrtd| j
 td| td|jd|j td|d  | |jd | t|d d | t|d d | t|d d | j
dkrRg d}g }ddg}n>| j
dkrtjg d|d}tjg |d}tjddg|d}| j
dkr| t|d || j
 | t|d || j
 | t|d || j
 q2| |d | | |d | | |d | q2dS )z;Checking vlarray flavors (integer versions and closed file)r   r]   r^   r   r   r   rc  r   r{   r   r~  r   r`   ra   rb   r   r4   r5   r<   r   r:   N)r"   r   rc   rd   r(   r   r    rK   r   r   rL   rM   r   r!   rU   strrf   rg   rY   rV   ri   r   rN   rh   r   r  r   r   r   r     sR    





zFlavorTestCase.test03b_IntAtomc                 C   sp  g d}dD ]$}|  d }tt|r|| qdD ]$}d| }tt|r6|d|  q6| j}tjrtdd td	| jj	  |D ]}| j
||t|}| j|_|g d
 |d |ddg | }tjrtd| j td| td|jd|j td|d  | |jd | t|d d | t|d d | t|d d | jdkrttg d
|}	ttg |}
ttddg|}n>| jdkrtjg d
|d}	tjg |d}
tjddg|d}| jdkr:| t|d |	| j | t|d |
| j | t|d || j q| |d |	 | |d |
 | |d | qdS )zAChecking vlarray with different flavors (floating point versions)rf  r   r   rg  rj  rk  r]   r^   r   r   r   r   r   r~  r   r`   ra   rb   r   r   r4   r5   r<   r   r:   N)r  r  rH   rM   r"   r   rc   rd   r(   r   r    rK   r   r   rL   rf   rg   rY   rV   ri   r1  r   rN   rh   r   )r&   r   r   r  r   r!   r   rP   rj   r  r  r  r   r   r   r  #	  s\    






zFlavorTestCase.test04_FloatAtom)r   r   r   rC  rJ   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 )NumPyFlavorTestCaser   Nr   r   r   r   r   r  e	  s   r  c                   @   s   e Zd ZdZdS )PythonFlavorTestCaser<   Nr   r   r   r   r   r  i	  s   r  c                       s   e 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dd Zdd Zdd Zdd  Z  ZS )!ReadRangeTestCaserc  r   r   r   c                    s,   t t|   | jj| _|   |   d S r   )r   r  r   r    r!   r"   r#   r   r%   r'   r   r   r   s	  s    
zReadRangeTestCase.setUpc                 C   sX   | j }tj| j| jd}| jj|dt d|dd}t| j	D ]}|
tt| q<d S Nr)   r*   rP   r.   r/   )r2   r3   r"   rH   rI   rJ   r*   r    rK   r   rq   rY   rM   r1  r&   rO   r2   rP   rw   r   r   r   r#   y	  s    zReadRangeTestCase.populateFilec                 C   s:  t jr tdd td| jj  | jjj}g }||	dd  ||	dd  ||	dd  t jrtd|j
d|j td	|d
  | |j| j | t|d d | t|d
 d | t|d d | t|d tjddd | t|d
 tjddd | t|d tjddd dS z&Checking reads with only a start valuer]   r^   Running %s.test01_start...r   rC   c   r`   ra   r)  r4   r5   r9   r:   Nr   rc   rd   r(   r   r    r!   rP   rM   rf   rg   rY   rV   ri   rh   r   r   aranger&   rP   rj   r   r   r   test01_start	  s$    

zReadRangeTestCase.test01_startc                 C   s(  t jr tdd td| jj  | jjj}g }||d  ||d  ||d  t jr~td|j	d|j
 td	|d
  | |j
| j
 | t|d d | t|d
 d | t|d d | t|d tjddd | t|d
 tjddd | t|d tjddd dS z1Checking reads with only a start value in a slicer]   r^   zRunning %s.test01b_start...r   rC   r  r`   ra   r)  r4   r5   r9   r:   Nr   rc   rd   r(   r   r    r!   rP   rM   rg   rY   rV   ri   rh   r   r   r  r  r   r   r   test01b_start	  s$    

zReadRangeTestCase.test01b_startc                 C   s:  t jr tdd td| jj  | jjj}g }||t	
d  ||t	d  ||t	d  t jrtd|jd|j td	|d
  | |j| j | t|d d | t|d
 d | t|d d | t|d t	jddd | t|d
 t	jddd | t|d t	jddd dS )zAChecking reads with only a start value in a slice (numpy indexes)r]   r^   Running %s.test01np_start...r   rC   r  r`   ra   r)  r4   r5   r9   r:   N)r   rc   rd   r(   r   r    r!   rP   rM   r   r   r9   r   rg   rY   rV   ri   rh   r   r  r  r   r   r   test01np_start	  s$    

z ReadRangeTestCase.test01np_startc              	   C   st  t jr tdd td| jj  | jjj}d|_g }|	|j
dd |	|j
dd |	|j
dd t jrtd	|jd
|j td|d  td|d  | |j| j | t|d d | t|d d | t|d d | t|d d tjddd tdD ](}| t|d | tj|dd qtdD ](}| t|d | tj|dd qFdS )%Checking reads with only a stop valuer]   r^   Running %s.test02_stop...r   r4   )stoprC   r  r`   ra   rb   r   r)  r5   r9   r:   N)r   rc   rd   r(   r   r    r!   rP   _nrowsinbufrM   rf   rg   rY   rV   ri   rh   r   r   r  rq   r&   rP   rj   xr   r   r   test02_stop	  s<    

"
zReadRangeTestCase.test02_stopc              	   C   st  t jr tdd td| jj  | jjj}d|_g }|	|dd  |	|dd  |	|dd  t jrtd	|j
d
|j td|d  | |j| j | t|d d | t|d d | t|d d tdD ]&}| t|d | tjddd qtdD ](}| t|d | tj|dd qtdD ](}| t|d | tj|dd qFdS z0Checking reads with only a stop value in a slicer]   r^   zRunning %s.test02b_stop...r   Nr4   rC   r  r`   ra   r)  r   r5   r9   r:   r   rc   rd   r(   r   r    r!   rP   r  rM   rg   rY   rV   ri   rq   rh   r   r   r  r  r   r   r   test02b_stop	  sD    


zReadRangeTestCase.test02b_stopc              	   C   s~  t jr tdd td| jj  | jjj}d|_g }|	|
dd |	|
dd |	|
dd	 t jrtd
|jd|j td|d  | |j| j | t|d d | t|d d | t|d d	 tddD ]&}| t|d | tj|dd qtddD ],}| t|d |d  tj|dd qtdd	D ](}| t|d | tj|dd qPdS z+Checking reads with a start and stop valuesr]   r^   zRunning %s.test03_startstop...r   r   rC   r8      rc  r`   ra   r)  r4   r5   r9   r:   Nr   rc   rd   r(   r   r    r!   rP   r  rM   rf   rg   rY   rV   ri   rq   rh   r   r   r  r  r   r   r   test03_startstop
  s@    

z"ReadRangeTestCase.test03_startstopc              	   C   s~  t jr tdd td| jj  | jjj}d|_g }|	|dd  |	|dd  |	|d	d	  t jrtd
|j
d|j td|d  | |j| j | t|d d | t|d d | t|d d tddD ]&}| t|d | tj|dd qtddD ],}| t|d |d  tj|dd qtddD ](}| t|d | tj|dd qPd	S z5Checking reads with a start and stop values in slicesr]   r^   zRunning %s.test03b_startstop...r   r   rC   r8   r  Nr`   ra   r)  r4   r5   rc  r9   r:   r  r  r   r   r   test03b_startstop;
  s@    

z#ReadRangeTestCase.test03b_startstopc              	   C   s  t jr tdd td| jj  | jjj}d|_g }|	|
ddd |	|
dd	d |	|
dd
d t jrtd|jd|j td|d  | |j| j | t|d d | t|d d | t|d d tdddD ]*}| t|d |d  tj|dd qtdd	dD ]0}| t|d |d d  tj|dd q&tdd
dD ],}| t|d |d  tj|dd qddS )/Checking reads with a start, stop & step valuesr]   r^   z"Running %s.test04_startstopstep...r   r   rC   r5   r8   r  rc     r`   ra   r)  r4   r7   r9   r:   Nr  r  r   r   r   test04_startstopstep^
  s<    

"z&ReadRangeTestCase.test04_startstopstepc              	   C   s  t jr tdd td| jj  | jjj}d|_g }|	|
tdtdtd |	|
tdtd	td |	|
tdtd
td t jrtd|jd|j td|d  | |j| j | t|d d | t|d d | t|d d tdddD ],}| t|d |d  tj|dd q$tdd	dD ]0}| t|d |d d  tj|dd q^tdd
dD ],}| t|d |d  tj|dd qdS )z?Checking reads with a start, stop & step values (numpy indices)r]   r^   z$Running %s.test04np_startstopstep...r   r   rC   r5   r8   r  rc  r  r`   ra   r)  r4   r7   r9   r:   N)r   rc   rd   r(   r   r    r!   rP   r  rM   rf   r   r   rg   rY   rV   ri   rq   rh   r   r  r  r   r   r   test04np_startstopstep
  sD    

&&"z(ReadRangeTestCase.test04np_startstopstepc              	   C   s  t jr tdd td| jj  | jjj}d|_g }|	|ddd  |	|dd	d  |	|dd
d  t jrtd|j
d|j td|d  | |j| j | t|d d | t|d d | t|d d tdddD ]*}| t|d |d  tj|dd qtdd	dD ]0}| t|d |d d  tj|dd q&tdd
dD ],}| t|d |d  tj|dd qddS )z7Checking reads with start, stop & step values in slicesr]   r^   zRunning %s.test04b_slices...r   r   rC   r5   r8   r  rc  r  r`   ra   r)  r4   r7   r9   r:   Nr  r  r   r   r   test04b_slices
  s8    

"z ReadRangeTestCase.test04b_slicesc              	   C   s  t jr tdd td| jj  | jjj}d|_g }|	|t
dt
dt
d  |	|t
dt
d	t
d  |	|t
dt
d
t
d  t jrtd|jd|j td|d  | |j| j | t|d d | t|d d | t|d d tdddD ],}| t|d |d  t
j|dd q$tdd	dD ]0}| t|d |d d  t
j|dd q^tdd
dD ],}| t|d |d  t
j|dd qdS )z[Checking reads with start, stop & step values in slices.

        (numpy indices)

        r]   r^   zRunning %s.test04bnp_slices...r   r   rC   r5   r8   r  rc  r  r`   ra   r)  r4   r7   r9   r:   N)r   rc   rd   r(   r   r    r!   rP   r  rM   r   r   r9   r   r   r   rg   rY   rV   ri   rq   rh   r   r  r  r   r   r   test04bnp_slices
  s8    

&&&"z"ReadRangeTestCase.test04bnp_slicesc                 C   s   t jr tdd td| jj  | jjj}t jrBtd|jd|j	 | 
t( |dd }td| W d	   n1 sz0    Y  d	S )
Checking out of range readsr]   r^   !Running %s.test05_out_of_range...r`   ra   r/   r   row-->N)r   rc   rd   r(   r   r    r!   rP   rg   rY   r%  
IndexErrorrf   r  r   r   r   test05_out_of_range
  s    

z%ReadRangeTestCase.test05_out_of_range)r   r   r   rY   r   rJ   r*   r   r#   r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r'   r   r  m	  s$   !###$%#'r  c                       s   e 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dd Zdd Z  ZS )GetItemRangeTestCaserc  r   r   r   c                    s,   t t|   | jj| _|   |   d S r   )r   r  r   r    r!   r"   r#   r   r%   r'   r   r   r   	  s    
zGetItemRangeTestCase.setUpc                 C   sX   | j }tj| j| jd}| jj|dt d|dd}t| j	D ]}|
tt| q<d S r  r  r  r   r   r   r#     s    z!GetItemRangeTestCase.populateFilec                 C   s.  t jr tdd td| jj  | jjj}g }||d  ||t	
d  ||d  t jrtd|jd|j td	|d
  | |j| j | t|d d | t|d
 d | t|d d | t|d t	jddd | t|d
 t	jddd | t|d t	jddd dS r  )r   rc   rd   r(   r   r    r!   rP   rM   r   rN   rg   rY   rV   ri   rh   r   r  r  r   r   r   r    s0    

z!GetItemRangeTestCase.test01_startc                 C   s(  t jr tdd td| jj  | jjj}g }||d  ||d  ||d  t jr~td|j	d|j
 td	|d
  | |j
| j
 | t|d d | t|d
 d | t|d d | t|d tjddd | t|d
 tjddd | t|d tjddd dS r  r  r  r   r   r   r  <  s$    

z"GetItemRangeTestCase.test01b_startc              	   C   st  t jr tdd td| jj  | jjj}d|_g }|	|dd  |	|dd  |	|dd  t jrtd	|j
d
|j td|d  td|d  | |j| j | t|d d | t|d d | t|d d | t|d d tjddd tdD ](}| t|d | tj|dd qtdD ](}| t|d | tj|dd qFdS )r  r]   r^   r  r   Nr4   rC   r  r`   ra   rb   r   r)  r5   r9   r:   )r   rc   rd   r(   r   r    r!   rP   r  rM   rg   rY   rV   ri   rh   r   r   r  rq   r  r   r   r   r  V  s<    

"
z GetItemRangeTestCase.test02_stopc              	   C   st  t jr tdd td| jj  | jjj}d|_g }|	|dd  |	|dd  |	|dd  t jrtd	|j
d
|j td|d  | |j| j | t|d d | t|d d | t|d d tdD ]&}| t|d | tjddd qtdD ](}| t|d | tj|dd qtdD ](}| t|d | tj|dd qFdS r  r  r  r   r   r   r  x  sD    


z!GetItemRangeTestCase.test02b_stopc              	   C   s~  t jr tdd td| jj  | jjj}d|_g }|	|dd  |	|dd  |	|dd	  t jrtd
|j
d|j td|d  | |j| j | t|d d | t|d d | t|d d	 tddD ]&}| t|d | tj|dd qtddD ],}| t|d |d  tj|dd qtdd	D ](}| t|d | tj|dd qPdS r  r  r  r   r   r   r    s@    

z%GetItemRangeTestCase.test03_startstopc              	   C   s~  t jr tdd td| jj  | jjj}d|_g }|	|dd  |	|dd  |	|d	d	  t jrtd
|j
d|j td|d  | |j| j | t|d d | t|d d | t|d d tddD ]&}| t|d | tj|dd qtddD ],}| t|d |d  tj|dd qtddD ](}| t|d | tj|dd qPd	S r  r  r  r   r   r   r    s@    

z&GetItemRangeTestCase.test03b_startstopc              	   C   s  t jr tdd td| jj  | jjj}d|_g }|	|ddd  |	|dd	d  |	|dd
d  t jrtd|j
d|j td|d  | |j| j | t|d d | t|d d | t|d d tdddD ]*}| t|d |d  tj|dd qtdd	dD ]0}| t|d |d d  tj|dd q&tdd
dD ],}| t|d |d  tj|dd qddS )r  r]   r^   zRunning %s.test04_slices...r   r   rC   r5   r8   r  rc  r  r`   ra   r)  r4   r7   r9   r:   Nr  r  r   r   r   test04_slices  s8    

"z"GetItemRangeTestCase.test04_slicesc              	   C   s  t jr tdd td| jj  | jjj}d|_g }|	|t
dt
dt
d  |	|t
dt
d	t
d  |	|t
dt
d
t
d  t jrtd|jd|j td|d  | |j| j | t|d d | t|d d | t|d d tdddD ],}| t|d |d  t
j|dd q$tdd	dD ]0}| t|d |d d  t
j|dd q^tdd
dD ],}| t|d |d  t
j|dd qdS )z=Checking reads with start, stop & step values (numpy indices)r]   r^   zRunning %s.test04np_slices...r   r   rC   r5   r8   r  rc  r  r`   ra   r)  r4   r7   r9   r:   N)r   rc   rd   r(   r   r    r!   rP   r  rM   r   r   rg   rY   rV   ri   rq   rh   r   r  r  r   r   r   r    s8    

&&&"z%GetItemRangeTestCase.test04bnp_slicesc                 C   s   t jr tdd td| jj  | jjj}t jrBtd|jd|j	 | 
t" |d }td| W d   n1 st0    Y  dS )	r  r]   r^   r  r`   ra   r/   r  Nr   rc   rd   r(   r   r    r!   rP   rg   rY   r%  r  r  r   r   r   r  '  s    

z(GetItemRangeTestCase.test05_out_of_rangec                 C   s   t jr tdd td| jj  | jjj}t jrBtd|jd|j	 | 
t( |td }td| W d   n1 sz0    Y  dS )	z+Checking out of range reads (numpy indexes)r]   r^   z#Running %s.test05np_out_of_range...r`   ra   r/   r  N)r   rc   rd   r(   r   r    r!   rP   rg   rY   r%  r  r   r9   r  r   r   r   test05np_out_of_range8  s    

z*GetItemRangeTestCase.test05np_out_of_range)r   r   r   rY   rC  rJ   r*   r   r#   r  r  r  r  r  r  r  r  r  r  r   r   r   r'   r   r    s    "#####r  c                       st   e 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 )SetRangeTestCaserc  r   r   r   c                    s0   t t|   | jj| _|   | jdd d S )Nr{   r   )r   r  r   r    r!   r"   r#   r   r%   r'   r   r   r   P  s    
zSetRangeTestCase.setUpc                 C   sX   | j }tj| j| jd}| jj|dt d|dd}t| j	D ]}|
tt| q<d S r  r  r  r   r   r   r#   V  s    zSetRangeTestCase.populateFilec                 C   s  t jr tdd td| jj  | jjj}|d d d |d< |d d d |d< |d d d |d< g }||	dd  ||	dd  ||	dd  t jrtd	|j
d
|j td|d  | |j| j | t|d d | t|d d | t|d d | t|d tjdddd d  | t|d tjdddd d  | t|d tjdddd d  dS )-Checking updates that modifies a complete rowr]   r^   r  r   r5   r   rC   r  r`   ra   r)  r4   r9   r:   Nr  r  r   r   r   r  c  s6    

zSetRangeTestCase.test01_startc                 C   s  t jr tdd td| jj  | jjj}|t	d d d |t
d< |t
d d d |t
d< |td d d |td< g }||t
dd  ||t
dd  ||t
dd  t jrtd	|jd
|j td|d  | |j| j | t|d d | t|d d | t|d d | t|d tjdddd d  | t|d tjdddd d  | t|d tjdddd d  dS )r  r]   r^   r  r   r5   r   rC   r  r`   ra   r)  r4   r9   r:   N)r   rc   rd   r(   r   r    r!   rP   r   r   r   r   r9   rM   rf   rg   rY   rV   ri   rh   r   r  r  r   r   r   r    s6    

   zSetRangeTestCase.test01np_startc                 C   s  t jr tdd td| jj  | jjj}|d d d |d< |d d d |d< |d dd	 d d |d
< g }||	dd  ||	dd  ||	d
d  t jrtd|j
d|j td|d  | |j| j | t|d d | t|d d | t|d d
 | t|d tjdddd d  | t|d tjdddd d  tjdddd}|d d }| t|d | d	S )z*Checking updates with only a part of a rowr]   r^   zRunning %s.test02_partial...r   r5   r   rC   r  N`   r`   ra   r)  r4   r9   r:   r  )r&   rP   rj   r{   r   r   r   test02_partial  s6    

zSetRangeTestCase.test02_partialc                 C   s  t jr tdd td| jj  | jjj}|d d d |d d d |d d d f|dd< g }||	dd	  ||	dd	  ||	dd	  t jrtd
|j
d|j td|d  | |j| j | t|d	 d | t|d d | t|d d | t|d	 tjdddd d  | t|d tjdddd d  | t|d tjdddd d  dS )z4Checking updating several rows at once (slice style)r]   r^   z"Running %s.test03a_several_rows...r   r5   r7   r8   r>   r   r`   ra   r)  r4   r9   r:   Nr  r  r   r   r   test03a_several_rows  s0    

&&z%SetRangeTestCase.test03a_several_rowsc                 C   s  t jr tdd td| jj  | jjj}|d d d |d d d |d d d f|g d	< g }||	dd  ||	dd  ||	dd  t jrtd
|j
d|j td|d  | |j| j | t|d d | t|d d | t|d d | t|d tjdddd d  | t|d tjdddd d  | t|d tjdddd d  dS )z3Checking updating several rows at once (list style)r]   r^   z"Running %s.test03b_several_rows...r   r5   r   rC   r  r   rC   r  r`   ra   r)  r4   r9   r:   Nr  r  r   r   r   test03b_several_rows  s<    

z%SetRangeTestCase.test03b_several_rowsc                 C   s  t jr tdd td| jj  | jjj}|d d d |d d d |d d d f|t	g d	f< g }|
|dd  |
|dd  |
|dd  t jrtd
|jd|j td|d  | |j| j | t|d d | t|d d | t|d d | t|d tjdddd d  | t|d tjdddd d  | t|d tjdddd d  dS )z<Checking updating several rows at once (NumPy's where style)r]   r^   z"Running %s.test03c_several_rows...r   r5   r   rC   r  r  r`   ra   r)  r4   r9   r:   N)r   rc   rd   r(   r   r    r!   rP   r   rN   rM   rf   rg   rY   rV   ri   rh   r   r  r  r   r   r   test03c_several_rows  s<    

z%SetRangeTestCase.test03c_several_rowsc                 C   sz   t jr tdd td| jj  | jjj}t jrBtd|jd|j	 | 
t dg|d< W d   n1 sl0    Y  dS )	z+Checking out of range updates (first index)r]   r^   z!Running %s.test04_out_of_range...r`   ra   r4   r/   Nr  r   r   r   r   test04_out_of_range0  s    

z$SetRangeTestCase.test04_out_of_rangec                 C   s~   t jr tdd td| jj  | jjj}t jrBtd|jd|j	 | 
t dgd |d< W d	   n1 sp0    Y  d	S )
zChecking out value errorsr]   r^   z Running %s.test05_value_error...r`   ra   r4   rc  rC   N)r   rc   rd   r(   r   r    r!   rP   rg   rY   r%  r*  r   r   r   r   test05_value_error@  s    

z#SetRangeTestCase.test05_value_error)r   r   r   rY   rC  rJ   r*   r   r#   r  r  r  r  r  r  r  r  r   r   r   r'   r   r  J  s   ""# ##r  c                   @   sH   e 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S )CopyTestCaseTc                 C   s  t jr tdd td| jj  tdd}| j| jjd|d}d|_	|
dd	gg |
d
 |
d	dgddgg | 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rDtdt| tdt| tdt|  tdt|  tdt|j tdt|j | | |  | |j|j | |j|j | |j	|j	 | |jj|jj | t|jt|j | |j|j dS )zChecking VLArray.copy() method.r]   r^   zRunning %s.test01a_copy...r5   rZ  array1title array1r<   r   r     r7   ro  r{   r   r   array2	array1-->	array2-->array1[:]-->array2[:]-->attrs array1-->attrs array2-->N)r   rc   rd   r(   r   r   r    rK   r!   rL   rM   r$   r   r  copyr  r,  rf   attrsrV   rY   rW   r0   r;   r1   r&   arrr  r  r   r   r   test01a_copyS  sJ    





zCopyTestCase.test01a_copyc                 C   s  t jr tdd td| jj  t }| j| jjd|d}d|_	|
d |
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| tdt| tdt|  tdt|  tdt|j tdt|j | | |  | |j|j | |j|j | |j	|j	 | |jj|jj | t|jt|j | |j|j dS )z1Checking VLArray.copy() method (Pseudo-atom case)r]   r^   zRunning %s.test01b_copy...r  r  r<   s   a stringr   s   another stringro  r{   r   r   r  r  r  r  r  r  r  N)r   rc   rd   r(   r   r	   r    rK   r!   rL   rM   r$   r   r  r  r  r,  rf   r  rV   rY   rW   r0   rZ   r1   r  r   r   r   test01b_copy  sJ    






zCopyTestCase.test01b_copyc                 C   s  t jr tdd td| jj  tdd}| j| jjd|d}d|_	|
dd	gg |
d
 |
d	dgddgg | 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rLtdt| tdt| td|  td|  tdt|j tdt|j | | |  | |j|j | |j|j | |j	|j	 | |jj|jj | t|jt|j | |j|j dS )z0Checking VLArray.copy() method (where specified)r]   r^   zRunning %s.test02_copy...r5   rZ  r  r  r<   r   r   r  r7   ro  r{   r   r   group1r  r  r  r  r  N)r   rc   rd   r(   r   r   r    rK   r!   rL   rM   r$   r   r  Zcreate_groupr  r  r  r,  rf   r  rV   rY   rW   r0   r;   r1   )r&   r  r  r  r  r   r   r   test02_copy  sL    




zCopyTestCase.test02_copyc                 C   sb  t jr tdd td| jj  tdd}| jj| jjd|dd}d	|_	|
d
 |
d |
d | jrt jrzt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 | t|jt|j | |j|j dS )z0Checking VLArray.copy() method ('python' flavor)r]   r^   zRunning %s.test03_copy...r5   rZ  r  r  r1   r<   rb  r   )r   r  )r5   r7   ro  r{   r   r   r  r  r  N)r   rc   rd   r(   r   r   r    rK   r!   rL   rM   r$   r   r  r  r  r,  r  rV   rY   rW   r0   r;   r1   r&   r0   r  r  r   r   r   test03_copy  s@    







zCopyTestCase.test03_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|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 )z7Checking VLArray.copy() method (checking title copying)r]   r^   zRunning %s.test04_copy...r5   rZ  r  r  r   r  r   r  attr1ro  r{   r   r   r  ztitle array2r  ztitle of destination array-->N)r   rc   rd   r(   r   r   r    rK   r!   rM   r  r  attr2r$   r   r  r  r  r1   rV   r  r   r   r   test04_copy  s6    







zCopyTestCase.test04_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|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 )z7Checking VLArray.copy() method (user attributes copied)r]   r^   zRunning %s.test05_copy...r5   rZ  r  r  r   r  r   r  r  ro  r{   r   r   r  r4   Zcopyuserattrsr  r  Nr   rc   rd   r(   r   r   r    rK   r!   rM   r  r  r  r$   r   r  r  r  r,  rV   r  r   r   r   test05_copyC  s:    







zCopyTestCase.test05_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|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 )z;Checking VLArray.copy() method (user attributes not copied)r]   r^   zRunning %s.test05b_copy...r5   rZ  r  r  r   r  r   r  r  ro  r{   r   r   r  r   r  r  r  Nr  r  r   r   r   notest05b_copyn  s:    







zCopyTestCase.notest05b_copyN)r   r   r   r$   r  r  r  r  r  r  r  r   r   r   r   r  P  s   444,(+r  c                   @   s   e Zd ZdZdS )CloseCopyTestCaser4   Nry  r   r   r   r   r    s   r  c                   @   s   e Zd ZdZdS )OpenCopyTestCaser   Nry  r   r   r   r   r    s   r  c                   @   s   e Zd Zdd ZdS )CopyIndexTestCasec                 C   s^  t jr tdd td| jj  tdd}| j| jjd|d}d|_	g }t
d	D ]*}|||d
 gg |||d
 g qR| jrt jrtd | jdd | jjj}|jdd| j| j| jd}|| j| j| j }t jr4td| td|dd  tdt|j tdt|j td|j tdt| | ||dd  | t||j dS )z,Checking VLArray.copy() method with indexes.r]   r^   zRunning %s.test01_index...rH  rZ  r  t array1r<   r  r4   ro  r{   r   r   r  )startr  stepzr2-->r  Nr  r  znrows in array2-->zand it should be-->)r   rc   rd   r(   r   r   r    rK   r!   rL   rq   rM   r$   r   r  r  r  r  r  r,  r  rY   ri   rV   )r&   r0   r  rQ   rj   r  Zr2r   r   r   test01_index  s@    



zCopyIndexTestCase.test01_indexN)r   r   r   r  r   r   r   r   r    s   r  c                   @   s   e Zd ZdZdZdZdZdS )CopyIndex1TestCaser   r?   r4   Nr   r   r   r$   r  r  r  r   r   r   r   r    s   r  c                   @   s   e Zd ZdZdZdZdZdS )CopyIndex2TestCaser4   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 )CopyIndex3TestCaser   r4   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 )CopyIndex4TestCaser4   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 )CopyIndex5TestCaser   r   r?   r4   Nr  r   r   r   r   r    s   r  c                   @   s   e Zd ZdZdZdZdZdS )CopyIndex6TestCaser4   r   r>   r5   Nr  r   r   r   r   r    s   r  c                   @   s   e Zd ZdZdZdZdZdS )CopyIndex7TestCaser   r?   rC   Nr  r   r   r   r   r    s   r  c                   @   s   e Zd ZdZdZdZdZdS )CopyIndex8TestCaser4   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 )CopyIndex9TestCaser   r   r7   r4   Nr  r   r   r   r   r    s   r  c                   @   s   e Zd ZdZdZdZdZdS )CopyIndex10TestCaser4   r   r7   r5   Nr  r   r   r   r   r    s   r  c                   @   s   e Zd ZdZdZdZdZdS )CopyIndex11TestCaser   r|   r5   Nr  r   r   r   r   r    s   r  c                   @   s   e Zd ZdZdZdZdZdS )CopyIndex12TestCaser4   r|   Nr  r   r   r   r   r     s   r  c                       s,   e Zd Z fddZdd Zdd Z  ZS )ChunkshapeTestCasec                    s2   t t|   tdd}| jjdd|ddd d S )NrH  rZ  r   rP   r  rF   )r0   r1   
chunkshape)r   r  r   r   r    rK   r&   r0   r'   r   r   r   )  s    
zChunkshapeTestCase.setUpc                 C   s.   | j jj}tjrtd|j | |jd dS )z3Test setting the chunkshape in a table (no reopen).chunkshape-->rF   N)r    r!   rP   r   rc   rd   r  rV   r&   Zvlar   r   r   test000  s    
zChunkshapeTestCase.test00c                 C   sH   | j   t| jd| _ | j jj}tjr6t	d|j
 | |j
d dS )z0Test setting the chunkshape in a table (reopen).rQ   r  r  N)r    r$   rH   rS   rT   r!   rP   r   rc   rd   r  rV   r  r   r   r   test018  s    

zChunkshapeTestCase.test01)r   r   r   r   r  r  r   r   r   r'   r   r  '  s   r  c                       s0   e Zd Z fddZ fddZdd Z  ZS )VLUEndianTestCasec                    s*   t t|   td| _t| j| _d S )Nzvlunicode_endian.h5)r   r   r   r   rT   rH   rS   r    r%   r'   r   r   r   D  s    
zVLUEndianTestCase.setUpc                    s   | j   tt|   d S r   )r    r$   r   r   tearDownr%   r'   r   r   r  I  s    
zVLUEndianTestCase.tearDownc                 C   s8   | j jjd }| j jjd }| |d | |d dS )z7Accessing ``vlunicode`` data of a different endianness.r   u	   paraŀlelN)r    r!   Zvlunicode_bigZvlunicode_littlerV   )r&   ZbedataZledatar   r   r   testM  s    zVLUEndianTestCase.test)r   r   r   r   r  r  r   r   r   r'   r   r   C  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                    s`   t t|   tdd}| j| jjd|d}|tj	ddgdd |tj	dgdd d S )	Nr   )Zdfltr  r    r5   r   r:   )
r   r  r   r   r    rK   r!   rM   r   rN   )r&   r  r  r'   r   r   r   X  s    
zTruncateTestCase.setUpc                 C   st   | j jj}|d | jr:tjr(td |   | j jj}tjrNtd|	  | 
|jd | 
|dd g  dS )z9Checking VLArray.truncate() method (truncating to 0 rows)r   ro  r  N)r    r!   r  truncater$   r   rc   rd   r   rf   rV   rY   r&   r  r   r   r   test00_truncated  s    


z TruncateTestCase.test00_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 tjddgdd d	S )
z9Checking VLArray.truncate() method (truncating to 1 rows)r4   ro  r  r   r  r5   r   r:   Nr    r!   r  r  r$   r   rc   rd   r   rf   rV   rY   rh   r   r   rN   r  r   r   r   test01_truncatew  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|	  | 
|jd | t|d tjddgdd | t|d tjd	gdd d
S )z@Checking VLArray.truncate() method (truncating to == self.nrows)r5   ro  r  r   r  r   r:   r4   r   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 tjddgdd | t|d	 tjd
gdd | t|d tjg dd | t|d
 tjg dd dS )z?Checking VLArray.truncate() method (truncating to > self.nrows)r7   ro  r  r   r  r5   r   r:   r4   r   Nr  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   Nry  r   r   r   r   r    s   r  c                   @   s   e Zd ZdZdS )TruncateCloseTestCaser4   Nry  r   r   r   r   r    s   r  c                       s,   e Zd Z fddZdd Zdd Z  ZS )PointSelectionTestCasec                    s   t t|   g dgddgddgddgftjg ddtjdgddtg dg| _g dg dfg| _tjd	d
gdd}tjg ddd}tjg ddd}tj|||gdd| _| j	| jj
dt | _| j| | j| | j| d S )Nr5   r   r7  r:   r4   )TFT)r4   r5   rc  r8   r>   )r8   r>   r?   )r8   r>   rA   r@   ry   rP   )r   r  r   r   rN   working_keysetnot_working_keysetnparrr    rK   r!   r   vlarrrM   )r&   r  r  r  r'   r   r   r     s.    zPointSelectionTestCase.setUpc                 C   sZ   | j }| j}| jD ]B}tjr*tdt| ||  }|| }| t|t|d qdS )z/Test for point-selections (read, boolean keys).Selection to test:z3NumPy array and PyTables selections does not match.N)	r  r  r  r   rc   rd   r,  tolistrV   )r&   r  r  keyr{   rU  r   r   r   test01a_read  s    
z#PointSelectionTestCase.test01a_readc                 C   s6   | j }| jD ]$}tjr td| | t|j| qdS )z9Test for point-selections (not working selections, read).r  N)r  r  r   rc   rd   r%  r  __getitem__)r&   r  r  r   r   r   test01b_read  s
    

z#PointSelectionTestCase.test01b_read)r   r   r   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 )SizeInMemoryPropertyTestCasec                 C   s(   t j|dd}| jjdd||d| _d S )Nr   r  r   rP   )r0   r2   )rH   rI   r    rK   rN   r&   r0   r)   r2   r   r   r   create_array  s    z)SizeInMemoryPropertyTestCase.create_arrayc                 C   s*   t  }d}| || | | jjd d S Nr   )r   r  rV   rN   size_in_memoryr&   r0   r)   r   r   r   test_zero_length	  s    z-SizeInMemoryPropertyTestCase.test_zero_lengthc                 C   s\   t  }| || || j_d}tdD ]0}tj|d d dd}| j| ||j7 }q&|S )Nr   rC   r4   r7  r:   )	r   r  rN   rL   rq   r   r  rM   nbytes)r&   r)   rL   r0   expected_sizerw   rj   r   r   r   	int_tests  s    z&SizeInMemoryPropertyTestCase.int_testsc                 C   s(   d}d}|  ||}| | jj| d S )Nr   r   r#  rV   rN   r  r&   r)   rL   r"  r   r   r   test_numpy_int_numpy_flavor  s    z8SizeInMemoryPropertyTestCase.test_numpy_int_numpy_flavorc                 C   s(   d}d}|  ||}| | jj| d S )Nr4   r   r$  r%  r   r   r   &test_numpy_int_numpy_flavor_compressed!  s    zCSizeInMemoryPropertyTestCase.test_numpy_int_numpy_flavor_compressedc                 C   s(   d}d}|  ||}| | jj| d S )Nr   r<   r$  r%  r   r   r   test_numpy_int_python_flavor(  s    z9SizeInMemoryPropertyTestCase.test_numpy_int_python_flavorc                 C   s`   t  }d}| || g d}tdD ]}| j| q&||}d|j }| | jj| d S )Nr   r   rC   )	r   r  rq   rN   rM   Ztoarrayr!  rV   r  )r&   r0   r)   r[   rw   Zpickle_arrayr"  r   r   r   test_object_atom0  s    

z-SizeInMemoryPropertyTestCase.test_object_atomN)
r   r   r   r  r   r#  r&  r'  r(  r)  r   r   r   r   r    s   r  c                   @   s   e Zd Zdd Zdd ZdS )SizeOnDiskPropertyTestCasec                 C   s6   t j|dd}| jjdd||d | jdd| _d S )Nr   r  r   rP   )r2   )rH   rI   r    rK   rU   rN   r  r   r   r   r  =  s    z'SizeOnDiskPropertyTestCase.create_arrayc                 C   s,   t  }d}| || | tt| jd d S )Nr   Zsize_on_disk)r   r  r%  NotImplementedErrorgetattrrN   r  r   r   r   test_not_implementedB  s    z/SizeOnDiskPropertyTestCase.test_not_implementedN)r   r   r   r  r-  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                    sL   t t|   | jj| jjdtdd| _| jdd t	dddD  d S )	NrN   r@   r   c                 S   s   g | ]}t |qS r   )r  ).0rw   r   r   r   
<listcomp>O  r   z.AccessClosedTestCase.setUp.<locals>.<listcomp>r8   i  rc  )
r   r.  r   r    rK   r!   r   rN   rM   rq   r%   r'   r   r   r   K  s
    zAccessClosedTestCase.setUpc                 C   s    | j   | tj| jj d S r   )r    r$   r%  rH   ClosedNodeErrorrN   rf   r%   r   r   r   	test_readQ  s    

zAccessClosedTestCase.test_readc                 C   s"   | j   | tj| jjd d S r  )r    r$   r%  rH   r1  rN   r  r%   r   r   r   test_getitemV  s    
z!AccessClosedTestCase.test_getitemc                 C   s$   | j   | tj| jjdd d S )Nr   0)r    r$   r%  rH   r1  rN   r+  r%   r   r   r   test_setitem[  s    
z!AccessClosedTestCase.test_setitemc                 C   s"   | j   | tj| jjd d S )NZ	xxxxxxxxx)r    r$   r%  rH   r1  rN   rM   r%   r   r   r   test_append`  s    
z AccessClosedTestCase.test_append)	r   r   r   r   r2  r3  r5  r6  r   r   r   r'   r   r.  J  s
   r.  c                   @   s   e Zd Zeg dZdZdZe	ej
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S )TestCreateVLArrayArgsr   r   rP   r1   NFc                 C   s   | j | j| j| j| j| j| j | j   t	
| j| _ | j | j| j}| |j| j | |jd | |jd | |j| j | |jj| jj d S )Nrs  r   )r    rK   wherer   r0   r1   r2   r3   r$   rH   rS   rT   rU   rV   rW   rY   r;   r&   ptarrr   r   r   test_positional_args_01r  s    
z-TestCreateVLArrayArgs.test_positional_args_01c                 C   s   | j | j| j| j| j| j| j}|| j	 | j 
  t| j| _ | j | j| j}| d }| |j| j | |jd | |d j| j	j | |jd | |j| j | |jj| jj | t| j	| d S Nr   r4   r4   )r    rK   r8  r   r0   r1   r2   r3   rM   r[   r$   rH   rS   rT   rU   rf   rV   rW   rY   r;   rh   r   r&   r:  r  r   r   r   test_positional_args_02  s$    
z-TestCreateVLArrayArgs.test_positional_args_02c                 C   s   | j | j| jd | j| j| j| j| j| j	| j

 | j   t| j| _ | j | j| j}| d }| |j| j | |jd | |d j| j
j | |jd | |j| j | |jj| jj | t| j
| d S r<  )r    rK   r8  r   r1   r2   r3   r  r   createparentsr[   r$   rH   rS   rT   rU   rf   rV   rW   rY   r0   r;   rh   r   r>  r   r   r   test_positional_args_obj  s*    	
z.TestCreateVLArrayArgs.test_positional_args_objc                 C   s   | j j| j| j| j| jd | j   t| j	| _ | j 
| j| j}| d }| |j| j | |jd | |d j| jj | |jd | |j| j | |jj| jj | t| j| d S )N)r1   r[   r   r=  r4   )r    rK   r8  r   r1   r[   r$   rH   rS   rT   rU   rf   rV   rW   rY   r0   r;   rh   r   r>  r   r   r   test_kwargs_obj  s    
z%TestCreateVLArrayArgs.test_kwargs_objc                 C   s   | j j| j| j| j| jd}|| j | j   t	
| j| _ | j | j| j}| d }| |j| j | |jd | |d j| jj | |jd | |j| j | |jj| jj | t| j| d S )Nr1   r0   r   r=  r4   )r    rK   r8  r   r1   r0   rM   r[   r$   rH   rS   rT   rU   rf   rV   rW   rY   r;   rh   r   r>  r   r   r   test_kwargs_atom_01  s     
z)TestCreateVLArrayArgs.test_kwargs_atom_01c                 C   s   | j j| j| j| j| jd}| j   t| j	| _ | j 
| j| j}| |j| j | |jd | |jd | |j| j | |jj| jj d S )NrC  rs  r   )r    rK   r8  r   r1   r0   r$   rH   rS   rT   rU   rV   rW   rY   r;   r9  r   r   r   test_kwargs_atom_02  s    
z)TestCreateVLArrayArgs.test_kwargs_atom_02c                 C   s   | j j| j| j| j| j| jd}| j   t	| j
| _ | j | j| j}| d }| |j| j | |jd | |d j| jj | |jd | |j| j | |jj| jj | t| j| d S )Nr1   r[   r0   r   r=  r4   )r    rK   r8  r   r1   r[   r0   r$   rH   rS   rT   rU   rf   rV   rW   rY   r;   rh   r   r>  r   r   r   test_kwargs_obj_atom  s     
z*TestCreateVLArrayArgs.test_kwargs_obj_atomc              	   C   s8   t td}| jt| jj| j| j	| j
| j|d d S )NcomplexrF  )r   
from_dtyper   r;   r%  r&  r    rK   r8  r   r1   r[   r  r   r   r   test_kwargs_obj_atom_error  s    z0TestCreateVLArrayArgs.test_kwargs_obj_atom_error)r   r   r   r   rN   r[   r8  r   r   rI  r;   r0   r1   r2   r3   r  r   r@  r;  r?  rA  rB  rD  rE  rG  rJ  r   r   r   r   r7  f  s$   r7  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 q| S )Nr4   )7r   Z	TestSuiterq   ZaddTestZ	makeSuiter   r   r   r   r   r   r   r   r   r   r   r   r   r   rD  rF  rl  rx  rz  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.  r7  )ZtheSuiteZniternr   r   r   suite  sl    rL  __main__)ZdefaultTest)br   r   Znumpy.testingZtestingr   rH   r   r   r   r   r   r   r   r	   r
   Ztables.testsr   Ztables.tests.commonr   r   r   r   r   ZTestCaseZtables.utilsr   r   ZTempFileMixinr   r   r   r   ZskipIfZblosc_availr   r   Zmin_blosc_bitshuffle_versionr   r   Zblosc_compressor_listr   r   r   r   r   Z	lzo_availr   Zbzip2_availr   r   r   r   r   rD  rF  rG  rl  rm  rx  rz  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.  r7  rL  r   Z
parse_argvargvZprint_versionsmainr   r   r   r   <module>   s  , i









         A  O ,  +     I    L1f?9 ;
