a
    =_a                    @   sN
  d dl Z d dlZd dlZd dlmZ d dlZd dlZd dlZd dlm	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mZmZmZmZmZ d dlmZmZ d dlm Z  d dl!m"Z"m#Z# d d	l!m$Z$m%Z%m&Z& d d
l!m'Z( d dl)m*Z* dd Z+dd Z,G dd dej-Z.eddd dedddedddedddedddedddeddddeddded d!d ded"d#d$dd%
Z/e0ed&rej1d'd(e/d)< e0ed*rej2d'd(e/d+< e0ed,rej3d'd(e/d-< e0ed.rejd/d#d0e/d1< e0ed2rejd3d#d0e/d4< G d5d6 d6ej-Z4G d7d8 d8e j5e(Z6G d9d: d:e6Z7G d;d< d<e6Z8G d=d> d>e6Z9G d?d@ d@e6Z:G dAdB dBe6Z;G dCdD dDe6Z<G dEdF dFe6Z=G dGdH dHe6Z>e$?e j@ dIG dJdK dKe6ZAe$?e j@ dIG dLdM dMe6ZBe$?e j@ dIe$?e&e jCk dNe jC G dOdP dPe6ZDe$?e j@ dIG dQdR dRe6ZEe$?e j@ dIe$?dSeF vdTG dUdV dVe6ZGe$?e j@ dIe$?dSeF vdTG dWdX dXe6ZHe$?e j@ dIe$?dYeF vdZG d[d\ d\e6ZIe$?e j@ dIe$?d]eF vd^G d_d` d`e6ZJe$?e j@ dIe$?daeF vdbG dcdd dde6ZKe$?e jL deG dfdg dge6ZMe$?e jL deG dhdi die6ZNe$?e jO djG dkdl dle6ZPe$?e jO djG dmdn dne6ZQG dodp dpe6ZRG dqdr dre6ZSG dsdt dte6ZTG dudv dve6ZUG dwdx dxe6ZVG dydz dze6ZWG d{d| d|e j5e(ZXG d}d~ d~e j5e(ZYG dd de j5e(ZZG dd de j5e(Z[G dd de[Z\G dd de[Z]G dd de[Z^G dd de j5e(Z_G dd dej-Z`G dd de j5e(ZaG dd deaZbG dd deaZcG dd deaZdG dd deaZeG dd de j5e(ZfG dd defZgG dd defZhG dd defZiG dd defZjG dd de j5e(ZkG dd dekZlG dd dekZmG dd de j5e(ZnG dd denZoG dd denZpG dd denZqG dd denZrG dd denZsG dd de j5e(ZtG dd detZuG dd detZvG dd detZwG dd detZxG dd detZyG dd detZzG dd detZ{G ddĄ detZ|G ddƄ detZ}G ddȄ detZ~G ddʄ detZG dd̄ detZG dd΄ de j5e(ZG ddЄ de j5e(ZG dd҄ deZG ddԄ dej-ZG ddք de j5e(ZG dd؄ deZG ddڄ deZG dd܄ de j5e(ZG ddބ de j5e(ZG dd de j5e(ZG dd de j5e(ZG dd de j5e(ZG dd de j5e(ZG dd de j5e(ZG dd deZG dd deZG dd deZG dd deZG dd de j5e(ZG dd de j5e(ZG dd deZG dd deZG dd de j5e(ZG dd de j5e(ZG dd de j5e(ZG dd  d e j5e(ZG dd de j5e(ZG dd de j5e(Zdd Zedk
rJe ej e   e$jdd dS (	      Ngroupby)rec)testing)Col	StringColBoolColIntColFloatCol
ComplexColColsColumnInt8ColInt16ColInt32Col	UInt16Col
Float32Col
Float64Col)SizeType
byteorders)common)allequalareArraysEqual)unittesthdf5_versionblosc_version)PyTablesTestCase)descr_from_dtypec                   C   s   t ddkS )NP   )structZcalcsize r!   r!   7lib/python3.9/site-packages/tables/tests/test_tables.pyis_python_64bit   s    r#   c                   C   s   t  dS )NZ64)platformmachineendswithr!   r!   r!   r"   is_os_64bit    s    r'   c                   @   s   e Zd ZeddddZedddZedddZe	dd	dZ
ed
ddZedddZeddddZedddZeddddZeddddZeedrejddZeedrejddZeedrejddZeedrejdddZeedrejdddZdS ) Record      abcdr   itemsizedfltpos   r-   r.      @   @      e   T   r                 ?         ?        	   
Float16Col皙@r-   
Float96ColFloat128ColComplex192Col   r,   r-   Complex256Col    N)__name__
__module____qualname__r   var1r	   var2r   var3r   var4r   var5r   var6var7r   var8r   var9var10hasattrtablesr=   var11r@   var12rA   var13var14var15r!   r!   r!   r"   r(   %   s8   




r(   r)   r*   r+   r/   r0   r1   r2   r3   r4   r5   r6   r7   Tr8   r   r9   r:   r;   r<   )
rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   r=   r>   r?   rV   r@   rW   rA   rX   rB   rC   rD   rY   rE   rF   rZ   c                   @   s0  e Zd ZeddddZejdddddZejd	dd
d
dZejdddddZ	ejdddddZ
ejdddddZeddddZejdddddZedddddZedddddZeedredddZeed red!ddZeed"red#ddZeed$red%ddd&Zeed'r,ed(ddd&Zd)S )*	OldRecordr)   r*   r   r+   int32r!   r/   r.   Zint16r1   Zfloat64r2   r3   float32r4   Zuint16r5   r6   r7   boolr8   )shaper-   r.   r   r9   )r,   r`   r-   r.   r:   r;   r<   r=   float16r>   r@   float96rA   float128rB   rC   )r,   r`   r-   rE   rF   N)rG   rH   rI   r   rJ   r   Z	from_typerK   rL   rM   rN   rO   rP   rQ   r   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r!   r!   r!   r"   r[   d   s(   


r[   c                       sD  e Zd ZdZdZdZdZdZdZdZ	dZ
dZ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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<d= Z*d>d? Z+d@dA Z,dBdC Z-dDdE Z.dFdG Z/  Z0S )HBasicTestCasewThis is the table titled      r   zlib   c                    s.   t t|   | jj| _|   | j  d S N)superrd   setUph5fileroot	rootgrouppopulateFilecloseself	__class__r!   r"   rm      s    
zBasicTestCase.setUpc           
      C   sv  | j }|d }g }t| jD ]<}g }d| j|  }|| |}|| || j }|| t|d tjr|t|t|| g n|t| t|d tjr|t	t|fd  n|t| ||d? d@ |d> d@   |d	 }	||	 t|d
 tjr&|ddg n
|d t|d tjrf|dt|d  t|d g n|t|d  t|d tjr|t|d dt|d  g n|dt|d   t
tdrt|d tjr|t	t|fd  n|t| t
tdrTt|d tjrF|t	t|fd  n|t| t
tdrt|d tjr|t	t|fd  n|t| t
tdrt|d tjr|t|d dt|d  g n|dt|d   t
tdrLt|d tjr6|t|d dt|d  g n|dt|d   |t| qtj	||j| jd| _d S )Nr   %04drM   rN   r)   r         rQ   
   rR           r9                   rS   r/   r=   rV   r@   rW   rA   rX   rB   rY   rE   rZ   )dtyper`   )recordtemplaterangeexpectedrowsappendmaxshort
isinstancenpndarrayfloatarrayrT   rU   tuplerecordsr~   record)
rt   r   rowZbuflistiZtmplistrJ   rK   rL   rP   r!   r!   r"   initRecArray   sj    





$$$$
zBasicTestCase.initRecArrayc           
   
   C   s  | j }| jr|   tdD ]}tj| j| j| j| j	| j
d}|dk rPtj}ndddtj }| jj|dt| | j| j|| j|d}| js|j}t| jD ]}d	| j|  }|d
|d< |d d
|d< ||d< || j |d< t|d tjrt|t|| g|d< nt||d< t|d tjrBddg|d< nd|d< t|d tjr~dt|d  t|d g|d< nt|d |d< t|d tjrt|d dt|d  g|d< ndt|d  |d< t|d tjrtt|fd |d< nt||d< ttdrRt|d tjrFtt|fd |d< nt||d< ttdrt|d tjrtt|fd |d< nt||d< ttd rt|d! tjrtt|fd |d!< nt||d!< ttd"r.t|d# tjrt|d dt|d  g|d#< ndt|d  |d#< ttd$rt|d% tjrnt|d dt|d  g|d%< ndt|d  |d%< |d d&? d'@ |d d&> d(@  |d)< |  q|  | j|d*t| }	|	}qd S )+Nr3   )	complevelshuffle
bitshuffle
fletcher32complibr1   biglittler   r   table)titlefiltersr   	byteorderrw   asciirJ   rz   rP   rK   rL   rM   rQ   r   r/   rR   r|   r9   r}   rS         ?rN   r)   r=   rV   r@   rW   rA   rX   rB   rY   rE   rZ   r   rx   ry   rO   group)rp   recarrayinitr   r   rU   Filterscompressr   r   r   r   sysr   rn   create_tablestrr   r   r   r   encoder   r   r   r   r   r   rT   r   flushcreate_group)
rt   r   jfilterpropsr   r   r   r   sgroup2r!   r!   r"   rq      s    """"
zBasicTestCase.populateFilec                    s  t | j| _| jdjt| jtr4| j nRt| jt	j
rZt| jj\}}|j n,t| jt	jr~t| j\}}|j n| jj d}dd td|d D }d}t||d D ],\}}| d }tt |r|d|  q| |tj | |tj |D ]"}	| j|	 j|	u  q
 fd	d|D }
| |
fd
d|D  | |
fdd|D   fdd|D }
| |
fdd|D  | |
fdd|D  |D ]}tjrtd | jt  | j tdj!| t j!|  tdj"| t j"|  | t#j!|  | j | t#j"|  | j q| |tj$ |D ]8} | }j| }| |j|j | |j |j  qpdS )z2Checking table description and descriptive fields./table0r{   c                 S   s   g | ]}d | qS )var%dr!   .0nr!   r!   r"   
<listcomp>L      z4BasicTestCase.test00_description.<locals>.<listcomp>r/   )ra   rb   rc   Z
complex192Z
complex256r   r   c                    s   g | ]} | j qS r!   r~   r   colnamecolumnsr!   r"   r   \  s   c                    s   g | ]} j | qS r!   )	coldtypesr   vtblr!   r"   r   _  r   c                    s   g | ]} j | qS r!   )Z	_v_dtypesr   descr!   r"   r   a  r   c                    s   g | ]} | j qS r!   )typer   r   r!   r"   r   d  s   c                    s   g | ]} j | qS r!   )Zcoltypesr   r   r!   r"   r   g  r   c                    s   g | ]} j | qS r!   )Z_v_typesr   r   r!   r"   r   i  r   zdflt-->zcoldflts-->zdesc.dflts-->N)%rU   	open_fileh5fnamern   get_nodedescriptionr   r   dictr   r   r   r~   Z_v_colobjectsr   r   	enumerate
capitalizerT   r   assertEquallistcolnamesZ_v_names
assertTruecolinstancescolsZ_f_colr   verboseprintr-   r   coldfltsZ_v_dfltsr   Z_v_pathnames)rt   Zdescr_Zfix_n_columnZexpectedNamestypesr   typenamenamer   ZexpectedTypesr   ZcolNameZexpectedColcolr!   )r   r   r   r"   test00_description3  st    




 
z BasicTestCase.test00_descriptionc              	   C   s  t jr tdd td| jj  t| jd| _| j	d}d|_
dd | D }t jrtd	|jd
|j td| tdt| | jd }t| d }| |d |d |d fd|df t|d tjr| t|d tt|fd tj n| |d t| t|d tjrZ| t|d tdt|d  t|d gtj n| |d t|d  | t|d dS )zChecking table read.
<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01_readTable...rr   r3   c                 S   s    g | ]}|d  dk r|d  qS rK   rh   r!   r   r   r!   r!   r"   r     r   z2BasicTestCase.test01_readTable.<locals>.<listcomp>Nrows in:Last record in table ==>$Total selected records in table ==> r/   rz   rJ   rK   rP      0001   1rN   r)   rR   r|   r9   r}   rh   N)r   r   r   rv   rG   rU   r   r   rn   r   
nrowsinbufiterrows_v_pathnamenrowslenr   r   r   r   r   r   r   r   r   r   r^   	complex64rt   r   resultr   r   r!   r!   r"   test01_readTable  s>    


zBasicTestCase.test01_readTablec              	   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d|j td| tdt| d}d| j|  }|d}| |d |d |d f||df t|d tjr| t|d tt|fd tj n| |d t| t|d tjrf| t|d tdt|d  t|d gtj n| |d t|d  | t|d dS )z0Checking table read (using Row.fetch_all_fields)r   r   z&Running %s.test01a_fetch_all_fields...r   r   r3   c                 S   s    g | ]}|d  dk r|  qS r   )Zfetch_all_fieldsr   r!   r!   r"   r     s   z:BasicTestCase.test01a_fetch_all_fields.<locals>.<listcomp>rz   r   r   r   r      rw   r   rJ   rK   rP   r   rN   r)   rR   r|   r9   r}   rh   Nr   r   r   rv   rG   rU   r   r   rn   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r^   r   rt   r   r   r   r   Zstrnrowsr!   r!   r"   test01a_fetch_all_fields  sF    


z&BasicTestCase.test01a_fetch_all_fieldsc                 C   s   t jr tdd td| jj  t| jd| _| j	d}d|_
dd | D }t jrtd	|jd
|j tdt| td| | t|d | |ttd dS )z(Checking table read (using Row[integer])r   r   zRunning %s.test01a_integer...r   r   r3   c                 S   s    g | ]}|d  dk r|d qS )rK   rh   r/   r!   r   r!   r!   r"   r     s   z1BasicTestCase.test01a_integer.<locals>.<listcomp>r   r   r   zAll results ==>rh   N)r   r   r   rv   rG   rU   r   r   rn   r   r   r   r   r   r   r   r   r   rt   r   r   r!   r!   r"   test01a_integer  s    

zBasicTestCase.test01a_integerc              	   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d|j td| tdt| d}d| j|  }|d}| |dd |df | |d d t|d tjr| t|d tt|fd tj n| |d | t|d tjrf| t|d tdt|d  t|d gtj n| |d t|d  | t|d dS )z$Checking table read (using Row[::2])r   r   zRunning %s.test01a_extslice...r   r   r3   c                 S   s&   g | ]}|d  dk r|ddd qS )rK   rh   Nr1   r!   r   r!   r!   r"   r     s   z2BasicTestCase.test01a_extslice.<locals>.<listcomp>rz   r   r   r   r   r   rw   r   Nr1   r   r)   r|   r9   r}   rh   r   r   r!   r!   r"   test01a_extslice  s@    


zBasicTestCase.test01a_extslicec                 C   s   t jr tdd td| jj  t| jd| _| j	d}| 
t. dd |D }t jrftd| W d	   n1 sz0    Y  d	S )
z+Checking table read (using Row['no-field'])r   r   zRunning %s.test01a_nofield...r   r   c                 S   s   g | ]}|d  qS )zno-fieldr!   r   r!   r!   r"   r     r   z1BasicTestCase.test01a_nofield.<locals>.<listcomp>result:N)r   r   r   rv   rG   rU   r   r   rn   r   assertRaisesKeyErrorr   r!   r!   r"   test01a_nofield  s    
zBasicTestCase.test01a_nofieldc                 C   s   t jr tdd td| jj  t| jd| _| j	d}| 
t. dd |D }t jrftd| W d	   n1 sz0    Y  d	S )
z#Checking table read (using Row[{}])r   r   z"Running %s.test01a_badtypefield...r   r   c                 S   s   g | ]}|i  qS r!   r!   r   r!   r!   r"   r   0  r   z6BasicTestCase.test01a_badtypefield.<locals>.<listcomp>r   N)r   r   r   rv   rG   rU   r   r   rn   r   r   	TypeErrorr   r!   r!   r"   test01a_badtypefield   s    
z"BasicTestCase.test01a_badtypefieldc              
   C   sN  t jr tdd td| jj  t| jd| _| j	d}d|_
dd | D }t jrtd	|jd
|j td| td|d dd td|j tdt| |j}t| d }t|d tjrt|d ttdfd tj t|d ttdfd tj t|d ttdfd tj t|d ttdfd tj t|d ttdfd tj t|d tt|d fd tj n| |d t|d  dd | D }t|d tjrt|d ttdd dtdd  gtj t|d ttdd dtdd  gtj t|d ttdd dtdd  gtj t|d ttdd dtdd  gtj t|d ttdd dtdd  gtj t|d tt|d d dt|d d  gtj n | |d dt|d d   | t|d dS )z<Checking table read and cuts (multidimensional columns case)r   r   zRunning %s.test01b_readTable...r   r   r3   c                 S   s    g | ]}|d  dk r|d qS )rK   rh   rN   r!   r   r!   r!   r"   r   B  s   z3BasicTestCase.test01b_readTable.<locals>.<listcomp>r   r   r   zrec['var5'] ==>rN    )endz	nrows ==>r   rz   r   r)   r/   r1   r{   c                 S   s    g | ]}|d  dk r|d qS )rK   rh   rS   r!   )r   r   r!   r!   r"   r   ]  s   rS   r}   r   r9   rh   N)r   r   r   rv   rG   rU   r   r   rn   r   r   r   r   r   r   r   r   r   r   nptassert_array_equalr   r   r^   r   Z
complex128r   r!   r!   r"   test01b_readTable4  s    







$$$$$& zBasicTestCase.test01b_readTablec                 C   s   t jr tdd td| jj  t| jd| _| j	d}g }|j
ddD ]8}|j
ddD ]&}|d d	k r\||d |d g q\qLt jrtd
| | |ddgddgddgddgg dS )z#Checking nested iterators (reading)r   r   zRunning %s.test01c_readTable...r   r   r1   stoprK   rh   
result ==>r   r/   N)r   r   r   rv   rG   rU   r   r   rn   r   r   r   r   rt   r   r   r   Zrec2r!   r!   r"   test01c_readTablew  s    

zBasicTestCase.test01c_readTablec                 C   s   t jr tdd td| jj  t| jd| _| j	d}g }|j
ddD ].}|jdddD ]}||d	 |d	 g q^qLt jrtd
| | |ddgddgddgddgg dS )z5Checking nested iterators (reading, mixed conditions)r   r   zRunning %s.test01d_readTable...r   r   r1   r   z	var2 < 20rK   r   r   r/   N)r   r   r   rv   rG   rU   r   r   rn   r   r   wherer   r   r   r!   r!   r"   test01d_readTable  s    

zBasicTestCase.test01d_readTablec              
   C   s   t jr tdd td| jj  t| jd| _| j	d}g }|
dD ]*}|
dD ]}||d |d	 g qXqJt jrtd
| | |ddgddgddgddgddgddgg dS )z4Checking nested iterators (reading, both conditions)r   r   zRunning %s.test01e_readTable...r   r   var3 < 2zvar2 < 3rK   rL   r   r   r/   r1   Nr   r   r   rv   rG   rU   r   r   rn   r   r   r   r   r   r!   r!   r"   test01e_readTable  s    

&zBasicTestCase.test01e_readTablec              
   C   s   t jr tdd td| jj  t| jd| _| j	d}g }|
dD ]:}|
dD ]*}|d d	krl qJ||d |d
 g qXqJt jrtd| | |ddgddgddgddgddgddgg dS )z6Checking nested iterators (reading, break in the loop)r   r   zRunning %s.test01f_readTable...r   r   r  zvar2 < 4rK   r3   rL   r   r   r/   r1   Nr  r   r!   r!   r"   test01f_readTable  s     

&zBasicTestCase.test01f_readTablec                 C   sZ   t jr tdd td| jj  t| jd| _dd | j	dD }| 
t|d d	S )
z+Checking iterator with an evanescent table.r   r   zRunning %s.test01g_readTable...r   c                 S   s    g | ]}|d  dk r|d  qS r   r!   r   r!   r!   r"   r     s   z3BasicTestCase.test01g_readTable.<locals>.<listcomp>r   rh   N)r   r   r   rv   rG   rU   r   r   rn   r   r   r   )rt   r   r!   r!   r"   test01g_readTable  s    
zBasicTestCase.test01g_readTablec                 C   sL  t j| jdd| _| jj| _tjr<tdd td| j	j
  | jd}|j}tjrtd|jd|j td	|jj td
|j t| jD ]}d| j|  }|d|d< |d d|d< ||d< || j |d< t|d tjrt|t|| g|d< nt||d< t|d tjr*ddg|d< nd|d< t|d tjrfdt|d  t|d g|d< nt|d |d< t|d tjrt|d dt|d  g|d< ndt|d  |d< t|d tjrtt|fd |d< nt||d< tt dr:t|d tjr.tt|fd |d< nt||d< tt d r~t|d! tjrrtt|fd |d!< nt||d!< tt d"rt|d# tjrtt|fd |d#< nt||d#< tt d$rt|d% tjrt|d dt|d  g|d%< ndt|d  |d%< tt d&rjt|d' tjrVt|d dt|d  g|d'< ndt|d  |d'< |  q|  d(d) | D }| jd }t| d }|  |d |d |d fd*|d+f t|d tjr| !t"|d tt|fd tj# n|  |d t| | jd,kr0| j}nd,}|  t$|d,|  d-S ).z4Checking whether appending record rows works or not.amoder   r   zRunning %s.test02_AppendRows.../group0/table1Nrows in oldr   Record Format ==>Record Size ==>rw   r   rJ   rz   rP   rK   rL   rM   rQ   r   r/   rR   r|   r9   r}   rS   r   rN   r)   r=   rV   r@   rW   rA   rX   rB   rY   rE   rZ   c                 S   s    g | ]}|d  dk r|d  qS r   r!   r   r   r!   r!   r"   r   +  r   z3BasicTestCase.test02_AppendRows.<locals>.<listcomp>r   r   rh   N)%rU   r   r   rn   ro   rp   r   r   r   rv   rG   r   r   r   r   r   _v_nested_formatsrowsizer   
appendrowsr   r   r   r   r   r   r   rT   r   r   r   r   r   r   r   r^   r   )rt   r   r   r   r   r   r   addr!   r!   r"   test02_AppendRows  s    

""""

zBasicTestCase.test02_AppendRowsc                 C   s  t j| jdd| _| jj| _tjr<tdd td| j	j
  | j}tdD ]Z}| j|dt| }| j|dt| }|j}tjrtd	|jd
|j td|jj td|j t| jD ]}d| j|  |d< |d d |d< ||d< || j |d< t|d tjr(t|t|| g|d< nt||d< t|d tjrTddg|d< nd|d< t|d tjrdt|d  t|d g|d< nt|d |d< t|d tjrt|d dt|d  g|d< ndt|d  |d< t|d tjrtt|fd |d< nt||d< tt drdt|d  tjrXtt|fd |d < nt||d < tt d!rt|d" tjrtt|fd |d"< nt||d"< tt d#rt|d$ tjrtt|fd |d$< nt||d$< tt d%r@t|d& tjr,t|d dt|d  g|d&< ndt|d  |d&< tt d'rt|d( tjrt|d dt|d  g|d(< ndt|d  |d(< |  q|  qJ| j  t j| jdd| _| jjj}d)d* |  D }| jd }| !|d |d |d fd+|d,f t|d tjrJ| "t#|d tt|fd tj$ n| !|d t| | jd-krr| j}nd-}| !t%|d-|  d.S )/z8Checking appending records without flushing explicitely.r  r  r   r   z Running %s.test02a_AppendRows...r3   r   r   r  r   r  r  rw   rJ   rz   rP   rK   rL   rM   rQ   r   r/   rR   r|   r9   r}   rS   r   rN   r)   r=   rV   r@   rW   rA   rX   rB   rY   rE   rZ   c                 S   s    g | ]}|d  dk r|d  qS r   r!   r  r!   r!   r"   r     r   z5BasicTestCase._test02a_AppendRows.<locals>.<listcomp>Z00011rh   N)&rU   r   r   rn   ro   rp   r   r   r   rv   rG   r   r   r   r   r   r   r   r  r  r  r   r   r   r   r   r   rT   r   r   rr   table0r   r   r   r   r^   r   )rt   r   r   r   r   r   r   r  r!   r!   r"   _test02a_AppendRows?  s    

""""




z!BasicTestCase._test02a_AppendRowsc                 C   s8  t j| jdd| _| jj| _tjr<tdd td| j	j
  | jd}tjrztd|jd|j td	|jj td
|j d|_|j}td|j D ]}d| j|  }|d|d< |d d|d< ||d< || j |d< t|d tjr
t|t|| g|d< nt||d< t|d tjr6ddg|d< nd|d< t|d tjrrdt|d  t|d g|d< nt|d |d< t|d tjrt|d dt|d  g|d< ndt|d  |d< t|d tjrtt|fd |d< nt||d< tt drFt|d  tjr:tt|fd |d < nt||d < tt d!rt|d" tjr~tt|fd |d"< nt||d"< tt d#rt|d$ tjrtt|fd |d$< nt||d$< tt d%r"t|d& tjrt|d dt|d  g|d&< ndt|d  |d&< tt d'rvt|d( tjrbt|d dt|d  g|d(< ndt|d  |d(< |  d)d* |D }q|  d+d* | D }tjrtd,t | td-| | !t |d.d|j   | !|g d/ d0d* | D }tjr$td1t | td2| | !|g d3 d4S )5z:Checking whether appending *and* reading rows works or notr  r  r   r   z Running %s.test02b_AppendRows...r
  r  r   r  r  r3   rw   r   rJ   rz   rP   rK   rL   rM   rQ   r   r/   rR   r|   r9   r}   rS   r   rN   r)   r=   rV   r@   rW   rA   rX   rB   rY   rE   rZ   c                 S   s   g | ]}|d  qS rK   r!   )r   Zrow2r!   r!   r"   r     r   z4BasicTestCase.test02b_AppendRows.<locals>.<listcomp>c                 S   s    g | ]}|d  dk r|d  qS r   r!   )r   Zrow3r!   r!   r"   r     s   Result length ==>Result contents ==>rh   )r   r/   r1   r3   r)   r5   r7   r8   r   r<   r{                  r:         r   r   r/   r1   r3   r)   r5   r7   r8   r   c                 S   s    g | ]}|d  dk r|d qS )rK   rh   rP   r!   )r   Zrow4r!   r!   r"   r   	  s   zResult7 length ==>zResult7 contents ==>)   0   9   8   7   6   5   4   3   2r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  N)"rU   r   r   rn   ro   rp   r   r   r   rv   rG   r   r   r   r   r  r  r   r   r   r  r   r   r   r   r   r   r   rT   r   r   r   r   r   )rt   r   r   r   r   r   Zresult7r!   r!   r"   test02b_AppendRows  s    

""""

z BasicTestCase.test02b_AppendRowsc                 C   s^  t j| jdd| _| jj| _tjr<tdd td| j	j
  | jd}tjrztd|jd|j td	|jj td
|j d|_|j}tdD ]}d| |d< |  q|  tdD ]}d| |d< |  q|  dd | D }tjrtdt| td| |jdkr:| t|d | |g d n | t|d | |g d dS )z<Checking appending using the same Row object after flushing.r  r  r   r   z Running %s.test02d_AppendRows...r
  r  r   r  r  r3   r{   rg   rK   r<   n   c                 S   s0   g | ](}d |d   kr dk rn q|d qS )rg   rK   x   r!   r  r!   r!   r"   r   6  s   z4BasicTestCase.test02d_AppendRows.<locals>.<listcomp>r  r  w   '   )'rg   e   f   g   h   i   j   k   l   m   r+  o   p   q   r   s   t   u   v   r-  rg   r/  r0  r1  r2  r3  r4  r5  r6  r7  r+  r8  r9  r:  r;  r<  r=  r>  r?  r   )rg   r/  r0  r1  r2  r3  r4  r5  r6  r7  r+  r8  r9  r:  r;  r<  r=  r>  r?  N)rU   r   r   rn   ro   rp   r   r   r   rv   rG   r   r   r   r   r  r  r   r   r   r   r   r   r   r   )rt   r   r   r   r   r!   r!   r"   test02d_AppendRows  sF    




z BasicTestCase.test02d_AppendRowsc                 C   s   t j| jdd| _| jd}|j}|j}|  |  |j}| 	||d d | jj
jjdkrfdS ~|  | jd}|  |j}| 	||d d	 dS )
z:Checking appending using the Row of an unreferenced table.r  r  r
  r/   zAppend to alive table failed.r   Nr1   zAppend to dead table failed.)rU   r   r   rn   r   r   r   r   r   r   Z_node_managercacheZnslots)rt   r   Zoldnrowsr   Znewnrowsr!   r!   r"   test02e_AppendRowsJ  s(    z BasicTestCase.test02e_AppendRowsc                 C   s   t jr tdd td| jj  t| jd| _| j	d}dd |
 D }t jrtd|jd	|j td
|j td| td| tdt| | jd }| |jdddtj  t|
 d }| |d |d fd|f | t|d dS )z%Checking if table is endianess aware.r   r   zRunning %s.test03_endianess...r   z/group0/group1/table2c                 S   s    g | ]}|d  dk r|d qS )rL   rh   rK   r!   r   r!   r!   r"   r   z  r   z2BasicTestCase.test03_endianess.<locals>.<listcomp>r   r   zOn-disk byteorder ==>r   zSelected records ==>#Total selected records in table ==>r/   r   r   r   rz   rJ   rL   r   rh   N)r   r   r   rv   rG   rU   r   r   rn   r   r   r   r   r   r   r   r   r   r   r   r!   r!   r"   test03_endianessn  s&    



zBasicTestCase.test03_endianessc                 C   s6  t jr tdd td| jj  t| jd| _| j	d}dd |
 D }t jrtd|jd	|j td
|d  tdt| |j}d|_|dd dd |
 D }t jrtd|jd	|j td
|d  tdt| | |j|d  | |j|d f | t|t|d  | |dd | dS )-Checking whether a single row can be deleted.r   r   Running %s.test04_delete...r  r   c                 S   s    g | ]}|d  dk r|d  qS r   r!   r  r!   r!   r"   r     r   z/BasicTestCase.test04_delete.<locals>.<listcomp>r   r   Last selected value ==>rz   rC  r3   r   rh   c                 S   s    g | ]}|d  dk r|d  qS r   r!   r  r!   r!   r"   r     r   r/   Nr   r   r   rv   rG   rU   r   r   rn   r   r   r   r   r   r   remove_rowsr   r`   rt   r   r   r   result2r!   r!   r"   test04_delete  s,    
zBasicTestCase.test04_deletec                 C   s4  t jr tdd td| jj  t| jd| _| j	d}dd |
 D }t jrtd|jd	|j td
|d  tdt| |j}d|_|d dd |
 D }t jrtd|jd	|j td
|d  tdt| | |j|d  | |j|d f | t|t|d  | |dd | dS )rE  r   r   rF  r  r   c                 S   s    g | ]}|d  dk r|d  qS r   r!   r  r!   r!   r"   r     r   z0BasicTestCase.test04a_delete.<locals>.<listcomp>r   r   rG  rz   rC  r3   r   c                 S   s    g | ]}|d  dk r|d  qS r   r!   r  r!   r!   r"   r     r   r/   N)r   r   r   rv   rG   rU   r   r   rn   r   r   r   r   r   r   Z
remove_rowr   r`   rJ  r!   r!   r"   test04a_delete  s,    

zBasicTestCase.test04a_deletec                 C   s6  t jr tdd td| jj  t| jd| _| j	d}dd |
 D }t jrtd|jd	|j td
|d  tdt| |j}d|_|dd dd |
 D }t jrtd|jd	|j td
|d  tdt| | |j|d  | |j|d f | t|t|d  | |dd | dS )z0Checking whether a range of rows can be deleted.r   r   zRunning %s.test04b_delete...r  r   c                 S   s    g | ]}|d  dk r|d  qS r   r!   r  r!   r!   r"   r     r   z0BasicTestCase.test04b_delete.<locals>.<listcomp>r   r   rG  rz   rC  r)   r{   rh   c                 S   s    g | ]}|d  dk r|d  qS r   r!   r  r!   r!   r"   r     r   NrH  rJ  r!   r!   r"   test04b_delete  s,    
zBasicTestCase.test04b_deletec                 C   s   t jr tdd td| jj  t| jd| _| j	d}dd |
 D }|j}d|_|d	|d
  dd |
 D }t jrtd|jd|j td|d  tdt| | |jd	 | |jd | t|t|d	  | |dd	 | dS )z:Checking whether removing a bad range of rows is detected.r   r   zRunning %s.test04c_delete...r  r   c                 S   s    g | ]}|d  dk r|d  qS r   r!   r  r!   r!   r"   r     r   z0BasicTestCase.test04c_delete.<locals>.<listcomp>r5   r{   rg   c                 S   s    g | ]}|d  dk r|d  qS r   r!   r  r!   r!   r"   r     r   r   r   rG  rz   rC  r{   N)r   r   r   rv   rG   rU   r   r   rn   r   r   r   r   rI  r   r   r   r`   rJ  r!   r!   r"   test04c_delete  s$    
zBasicTestCase.test04c_deletec                 C   s  t jr tdd td| jj  t| jd| _| j	d}dd |D }|j
}|j}d|_|d	d
 ||_|j}td	d
D ]}d| j|  |d< ||d< || j |d< t|d tjrt|t|| g|d< nt||d< t|d tjrddg|d< nd|d< t|d tjr>dt|d  t|d g|d< nt|d |d< t|d tjrt|d dt|d  g|d< ndt|d  |d< t|d tjrtt|fd |d< nt||d< ttdrt|d tjrtt|fd |d< nt||d< ttdrVt|d tjrJtt|fd |d< nt||d< ttdrt|d  tjrtt|fd |d < nt||d < ttd!rt|d" tjrt|d dt|d  g|d"< ndt|d  |d"< ttd#rBt|d$ tjr.t|d dt|d  g|d$< ndt|d  |d$< |  q~|  |d%d	 d&d |D }t jrtd'|jd(|j
 td)|d*  td+t| | |j
|d%  | |j|d% f | t|t|d%  | |d	d
 |d	d
  d,S )-z@Checking whether removing rows several times at once is working.r   r   zRunning %s.test04d_delete...r  r   c                 S   s    g | ]}|d  dk r|d  qS r   r!   r  r!   r!   r"   r   '  r   z0BasicTestCase.test04d_delete.<locals>.<listcomp>r7   r{   r  rw   rJ   rK   rL   rM   rQ   r   r/   rR   r|   r9   r}   rS   r   rN   r)   r=   rV   r@   rW   rA   rX   rB   rY   rE   rZ   r5   c                 S   s    g | ]}|d  dk r|d  qS r   r!   r  r!   r!   r"   r   p  r   r   r   rG  rz   rC  N)r   r   r   rv   rG   rU   r   r   rn   r   r   r   rI  r   r   r  r   r   r   r   r   r   rT   r   r   r   r   r   r`   )rt   r   r   r   r   r   r   rK  r!   r!   r"   test04d_delete  s~    
""""
zBasicTestCase.test04d_deletec                 C   s  t jr tdd td| jj  t| jd| _| j	d}dd |
 D }t jrtd|jd	|j td
|d  tdt| |j}d|_|d| j dd |
 D }t jrtd|jd	|j tdt| | |jd | |jd | t|d dS ))Checking whether all rows can be deleted.r   r   Running %s.test04e_delete...r  r   c                 S   s   g | ]}|d  qS r  r!   r  r!   r!   r"   r     r   z0BasicTestCase.test04e_delete.<locals>.<listcomp>r   r   rG  rz   rC  r)   r   c                 S   s   g | ]}|d  qS r  r!   r  r!   r!   r"   r     r   r   N)r   r   r   rv   rG   rU   r   r   rn   r   r   r   r   r   r   rI  r   r   r`   rJ  r!   r!   r"   test04e_delete~  s(    
zBasicTestCase.test04e_deletec                 C   s   t jr tdd td| jj  t| jd| _| j	d}dd |
 D }t jrtd|jd	|j td
|d  tdt| |j}d|_|  dd |
 D }t jrtd|jd	|j tdt| | |jd | |jd | t|d dS )rR  r   r   rS  r  r   c                 S   s   g | ]}|d  qS r  r!   r  r!   r!   r"   r     r   z0BasicTestCase.test04f_delete.<locals>.<listcomp>r   r   rG  rz   rC  r)   c                 S   s   g | ]}|d  qS r  r!   r  r!   r!   r"   r     r   r   rT  NrH  rJ  r!   r!   r"   test04f_delete  s(    
zBasicTestCase.test04f_deletec                 C   s  t jr tdd td| jj  t| jd| _| j	d}dd |
 D }t jrtd|jd	|j td
|d  tdt| |j}d|_|d|d d dd |
 D }t jrtd|jd	|j tdt| ||d  }| |j| | |j|f | t|| dS )z;Checking whether rows can be deleted with a step parameter.r   r   rS  r  r   c                 S   s   g | ]}|d  qS r  r!   r  r!   r!   r"   r     r   z0BasicTestCase.test04g_delete.<locals>.<listcomp>r   r   rG  rz   rC  r)   r   r/   r5   c                 S   s   g | ]}|d  qS r  r!   r  r!   r!   r"   r     r   NrH  )rt   r   r   r   rK  Zoutnrowsr!   r!   r"   test04g_delete  s*    
zBasicTestCase.test04g_deletec                 C   s  t jr tdd td| jj  t| jd| _| j	d}| j
|jjkrpt jrpt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rrt jrrtd| jj td| j|jj | | j|jj dS )zChecking tablefilters.r   r   z!Running %s.test05_filtersTable...r   r   zError in compress. Class:zself, table:r   zError in shuffle. Class:zError in bitshuffle. Class:zError in fletcher32. Class:N)r   r   r   rv   rG   rU   r   r   rn   r   r   r   r   r   Zwhich_lib_versionr   r   r   r   rt   r   r!   r!   r"   test05_filtersTable  s2    
z!BasicTestCase.test05_filtersTablec                 C   s\   t | j| _| jd}| |jd | |j| jf | |j	d | |j
| j d S )Nr   numpyr/   )rU   r   r   rn   r   r   flavorr`   r   ndimr   )rt   objr!   r!   r"   test06_attributes  s    zBasicTestCase.test06_attributes)1rG   rH   rI   	open_moder   r   r  r   r   r   r   r   r(   r   r   r   rm   r   rq   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r*  r@  rB  rD  rL  rM  rN  rP  rQ  rU  rV  rW  rY  r^  __classcell__r!   r!   ru   r"   rd   {   sX   D]M%)(C_cs5$&&&!c##$ rd   c                   @   s   e Zd ZdZdS )BasicWriteTestCaseZ
BasicWriteN)rG   rH   rI   r   r!   r!   r!   r"   ra    s   ra  c                   @   s   e Zd ZdZeZdS )OldRecordBasicWriteTestCaseZOldRecordBasicWriteNrG   rH   rI   r   r[   r   r!   r!   r!   r"   rb    s   rb  c                   @   s(   e Zd ZdZeZdZdZdZdZ	dZ
dS )DictWriteTestCaseZ	DictWrite   r3   r   r{   N)rG   rH   rI   r   RecordDescriptionDictr   r   r   startr   stepr!   r!   r!   r"   rd    s   rd  c                   @   s   e Zd Zd ZddZddZeedr>e	d e	d eedr\e	d e	d	 eed
rze	d e	d eedre	d e	d eedre	d e	d e
deZee_dS )NumPyDTWriteTestCasea4,i4,i2,2f8,f4,i2,a1,b1,c8,c16,2var1,var2,var3,var4,var5,var6,var7,var8,var9,var10r=   f2rV   r@   f12rW   rA   f16rX   rB   c24rY   rE   c32rZ   N)rG   rH   rI   r   splitformatsnamesrT   rU   r   r   r~   joinr   r!   r!   r!   r"   ri  '  s(   
















ri  c                   @   s   e Zd ZdZddZddZeedr>e	d e	d eedr\e	d	 e	d
 eedrze	d e	d eedre	d e	d eedre	d e	d e
jdddeedZdS )RecArrayOneWriteTestCaseZRecArrayOneWriterj  rk  rl  r=   rm  rV   r@   rn  rW   rA   ro  rX   rB   rp  rY   rE   rq  rZ   Nr   r`   rs  rt  )rG   rH   rI   r   rr  rs  rt  rT   rU   r   r   r   ru  r   r!   r!   r!   r"   rv  @  s*   
















rv  c                   @   s   e Zd ZdZdZdZddZddZe	e
drFed ed	 e	e
d
rded ed e	e
dred ed e	e
dred ed e	e
dred ed ejdddeedZdS )RecArrayTwoWriteTestCaseZRecArrayTwoWriterg   r/   rj  rk  rl  r=   rm  rV   r@   rn  rW   rA   ro  rX   rB   rp  rY   rE   rq  rZ   Nrw  rG   rH   rI   r   r   r   rr  rs  rt  rT   rU   r   r   r   ru  r   r!   r!   r!   r"   rx  Y  s.   
















rx  c                   @   s   e Zd ZdZdZdZddZddZe	e
drFed ed	 e	e
d
rded ed e	e
dred ed e	e
dred ed e	e
dred ed ejdddeedZdS )RecArrayThreeWriteTestCaseRecArrayThreeWriterg   r/   rj  rk  rl  r=   rm  rV   r@   rn  rW   rA   ro  rX   rB   rp  rY   rE   rq  rZ   Nrw  ry  r!   r!   r!   r"   rz  t  s.   
















rz  c                   @   s   e Zd ZdZdZdZddZddZe	e
drFed ed	 e	e
d
rded ed e	e
dred ed e	e
dred ed e	e
dred ed ejdddeeddZdS )RecArrayAlignedWriteTestCaser{  rg   r/   rj  rk  rl  r=   rm  rV   r@   rn  rW   rA   ro  rX   rB   rp  rY   rE   rq  rZ   NT)r`   rs  rt  alignedry  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 )CompressBloscTablesTestCaseCompressBloscTablesr7   bloscNrG   rH   rI   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 )"CompressBloscShuffleTablesTestCaser  r/   r  NrG   rH   rI   r   r   r   r   r!   r!   r!   r"   r    s   r  zBLOSC >= %s requiredc                   @   s    e Zd ZdZdZdZdZdZdS )%CompressBloscBitShuffleTablesTestCaseZCompressBloscBitShuffleTablesr/   r   blosc:blosclzN)rG   rH   rI   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 )"CompressBloscBloscLZTablesTestCaseZCompressBloscLZTablesr/   r  Nr  r!   r!   r!   r"   r    s   r  Zlz4zlz4 requiredc                   @   s   e Zd ZdZdZdZdZdS )CompressBloscLZ4TablesTestCaseZCompressLZ4Tablesr/   z	blosc:lz4Nr  r!   r!   r!   r"   r    s   r  c                   @   s   e Zd ZdZdZdZdZdS ) CompressBloscLZ4HCTablesTestCaseZCompressLZ4HCTablesr/   zblosc:lz4hcNr  r!   r!   r!   r"   r    s   r  Zsnappyzsnappy requiredc                   @   s   e Zd ZdZdZdZdZdS )!CompressBloscSnappyTablesTestCaseZCompressSnappyTablesr/   zblosc:snappyNr  r!   r!   r!   r"   r    s   r  ri   zzlib requiredc                   @   s   e Zd ZdZdZdZdZdS )CompressBloscZlibTablesTestCaseZCompressZlibTablesr/   z
blosc:zlibNr  r!   r!   r!   r"   r    s   r  Zzstdzzstd requiredc                   @   s   e Zd ZdZdZdZdZdS )CompressBloscZstdTablesTestCaseZCompressZstdTablesr/   z
blosc:zstdNr  r!   r!   r!   r"   r    s   r  z%LZO compression library not availablec                   @   s   e Zd ZdZdZdZdS )CompressLZOTablesTestCaseCompressLZOTablesr/   lzoNr  r!   r!   r!   r"   r    s   r  c                   @   s   e Zd ZdZdZdZdZdS ) CompressLZOShuffleTablesTestCaser  r/   r  Nr  r!   r!   r!   r"   r  	  s   r  z'BZIP2 compression library not availablec                   @   s   e Zd ZdZdZdZdS )CompressBzip2TablesTestCaseCompressBzip2Tablesr/   bzip2Nr  r!   r!   r!   r"   r    s   r  c                   @   s   e Zd ZdZdZdZdZdS )"CompressBzip2ShuffleTablesTestCaser  r/   r  Nr  r!   r!   r!   r"   r    s   r  c                   @   s   e Zd ZdZdZdZdS )CompressZLIBTablesTestCaseCompressOneTablesr/   ri   Nr  r!   r!   r!   r"   r  "  s   r  c                   @   s   e Zd ZdZdZdZdZdS )!CompressZLIBShuffleTablesTestCaser  r/   ri   Nr  r!   r!   r!   r"   r  (  s   r  c                   @   s   e Zd ZdZdZdZdZdS )Fletcher32TablesTestCaseZFletcher32Tablesr/   r   ri   N)rG   rH   rI   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ZdS )AllFiltersTablesTestCaseZAllFiltersTablesr/   ri   N)rG   rH   rI   r   r   r   r   r   r!   r!   r!   r"   r  6  s
   r  c                   @   s   e Zd ZdZdZeZdS )CompressTwoTablesTestCaseZCompressTwoTablesr/   N)rG   rH   rI   r   r   rf  r   r!   r!   r!   r"   r  >  s   r  c                   @   s   e Zd ZdZdZdZdS )BigTablesTestCaseZ	BigTables'  rg   N)rG   rH   rI   r   r   r  r!   r!   r!   r"   r  E  s   r  c                       sD   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Z  Z	S )"SizeOnDiskInMemoryPropertyTestCasec                    s6   t t|   d| _tdgd g g j| _d| _d S )N)  i4r{   ip  )rl   r  rm   
chunkshaper   format_parserr~   hdf_overheadrs   ru   r!   r"   rm   P  s    z(SizeOnDiskInMemoryPropertyTestCase.setUpc                 C   s.   t j|dd}| jjdd| j|| jd| _d S )Nr  )r   r   /Z	sometable)r   r  )rU   r   rn   r   r~   r  r   )rt   r   r   r!   r!   r"   r   Z  s
    z/SizeOnDiskInMemoryPropertyTestCase.create_tablec                 C   s2   d}|  | | | jjd | | jjd d S Nr   )r   r   r   size_on_disksize_in_memoryrt   r   r!   r!   r"   test_zero_length`  s    
z3SizeOnDiskInMemoryPropertyTestCase.test_zero_lengthc                 C   sV   d}|  | | jttdg| jd  d  | | jjd | | jjd d S )Nr   r{    	r   r   r   r   r   r  r   r  r  r  r!   r!   r"   test_no_compression_one_appendg  s
    
$zASizeOnDiskInMemoryPropertyTestCase.test_no_compression_one_appendc                 C   sz   d}|  | | jttdg| jd  d  | jttdg| jd  d  | | jjd | | jjd d S )Nr   r{   r5   r  r  r  r!   r!   r"   $test_no_compression_multiple_appendso  s    
$$zGSizeOnDiskInMemoryPropertyTestCase.test_no_compression_multiple_appendsc                 C   s   d}|  | | jttdg| jd  d  t| jj	}| 
t| jj| | jk | | jjd | | jj| jj d S )Nr/   r{   r   r  )r   r   r   r   r   r  osstatr   st_sizer   absr  r  r   r  Z
assertLess)rt   r   	file_sizer!   r!   r"   test_with_compressionw  s    
$z8SizeOnDiskInMemoryPropertyTestCase.test_with_compression)
rG   rH   rI   rm   r   r  r  r  r  r`  r!   r!   ru   r"   r  O  s   
r  c                       s   e 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dd Zdd  Zd!d" Zd#d$ Zd%d& Z  ZS )'NonNestedTableReadTestCasec                    sL   t t|   tdgd g g j| _| jdd| j| _d| _	| 
  d S )Nr  r{   r  r   rg   )rl   r  rm   r   r  r~   rn   r   r   r`   populate_filers   ru   r!   r"   rm     s
    z NonNestedTableReadTestCase.setUpc                 C   s   t | j| j| _t| jD ]<\}}|t| jjj }t| jjj|D ]\}}|||< qFq| j	| j | 
t| jt| j d S rk   )r   zerosr`   r~   r   r   r   rt  r   r   r   )rt   row_numr   rg  valuer   r!   r!   r"   r    s    z(NonNestedTableReadTestCase.populate_filec                 C   s   | j  }t|| j d S rk   r   readr   r   r   rt   outputr!   r!   r"   test_read_all  s    
z(NonNestedTableReadTestCase.test_read_allc                 C   s(   | j dd}t|| jdd  d S )Nr   3   r  r  r!   r!   r"   test_read_slice1  s    z+NonNestedTableReadTestCase.test_read_slice1c                 C   s$   | j jdd}t|| jd  d S )Nf1fieldr  r  r!   r!   r"   "test_read_all_rows_specified_field  s    z=NonNestedTableReadTestCase.test_read_all_rows_specified_fieldc                 C   s0   | j jdddd}t|| jd dd  d S )Nr/   @   r  r  r  r  r!   r!   r"    test_read_slice1_specified_field  s    z;NonNestedTableReadTestCase.test_read_slice1_specified_fieldc              
      sz   t jj dj_t fdd zjj d W n4 tyt } z	dt
| W Y d }~n
d }~0 0 d S )NZpythonc                      s   j j dS Noutr   r  r!   r  rt   r!   r"   <lambda>  r   zONonNestedTableReadTestCase.test_out_arg_with_non_numpy_flavor.<locals>.<lambda>r  z#Optional 'out' argument may only be)r   emptyr`   r~   r   r[  r   r   r  assertInr   rt   excr!   r  r"   "test_out_arg_with_non_numpy_flavor  s    z=NonNestedTableReadTestCase.test_out_arg_with_non_numpy_flavorc                 C   s0   t | j| j}| jj|d t|| j d S r  )	r   r  r`   r~   r   r  r   r   r   r  r!   r!   r"   test_read_all_out_arg  s    z0NonNestedTableReadTestCase.test_read_all_out_argc                 C   s:   t d| j}| jjdd|d t|| jdd  d S )N)r  r   r  r  r   r  r~   r   r  r   r   r   r  r!   r!   r"   test_read_slice1_out_arg  s    z3NonNestedTableReadTestCase.test_read_slice1_out_argc                 C   s4   t | jd}| jjd|d t|| jd  d S )Nr  r  r  r  )r   r  r`   r   r  r   r   r   r  r!   r!   r"   *test_read_all_rows_specified_field_out_arg  s    zENonNestedTableReadTestCase.test_read_all_rows_specified_field_out_argc                 C   s>   t dd}| jjddd|d t|| jd dd  d S )N)?   r  r/   r  r  r  r   r  r   r  r   r   r   r  r!   r!   r"   (test_read_slice1_specified_field_out_arg  s    zCNonNestedTableReadTestCase.test_read_slice1_specified_field_out_argc                 C   sv   t d| j}t jddd|d< | }| jj|dd d t	|dd | j
 t	|dd  |dd   d S )N)   r   r  f0rg   r  )r   r  r~   randomrandintcopyr   r  r   r   r   )rt   r  Zoutput_origr!   r!   r"   test_read_all_out_arg_sliced  s    z7NonNestedTableReadTestCase.test_read_all_out_arg_slicedc                 C   s>   t d| j}| jjddd|d t|| jddd  d S )N2   r   rg   r1   r  r  r  r!   r!   r"   6test_all_fields_non_contiguous_slice_contiguous_buffer  s    zQNonNestedTableReadTestCase.test_all_fields_non_contiguous_slice_contiguous_bufferc                 C   sB   t dd}| jjdddd|d t|| jd ddd  d S )Nr  r  r   rg   r1   f3r  r  r  r!   r!   r"   ;test_specified_field_non_contiguous_slice_contiguous_buffer  s    zVNonNestedTableReadTestCase.test_specified_field_non_contiguous_slice_contiguous_bufferc              
   C   s   t d| j}|ddd }| t| jjdddd | z| jjdddd |d W n4 ty } z| dt| W Y d }~n
d }~0 0 d S )Nr  r   rg   r1   r  output array not C contiguous)	r   r  r~   r   
ValueErrorr   r  r   r   rt   r  Zoutput_slicer  r!   r!   r"   %test_all_fields_non_contiguous_buffer  s    z@NonNestedTableReadTestCase.test_all_fields_non_contiguous_bufferc              
   C   s   t dd}|ddd }| t| jjdddd| z| jjdddd|d W n4 ty } z| dt| W Y d }~n
d }~0 0 d S )	Nr  r  r   rg   r1   r  r  r  )r   r  r   r  r   r  r   r   r  r!   r!   r"   *test_specified_field_non_contiguous_buffer  s    zENonNestedTableReadTestCase.test_specified_field_non_contiguous_bufferc              
      sp   t dj t fdd zjj d W n4 tyj } zdt| W Y d }~n
d }~0 0 d S )Nc   c                      s   j j dS r  r  r!   r  r!   r"   r    r   zMNonNestedTableReadTestCase.test_all_fields_buffer_too_small.<locals>.<lambda>r  output array size invalid, got	r   r  r~   r   r  r   r  r  r   r  r!   r  r"    test_all_fields_buffer_too_small  s    z;NonNestedTableReadTestCase.test_all_fields_buffer_too_smallc              
      st   t dd  fdd}t| zjjd d W n4 tyn } zdt| W Y d }~n
d }~0 0 d S )Nr  r  c                      s   j jd dS )Nf5r  r  r!   r  r!   r"   r    r   zRNonNestedTableReadTestCase.test_specified_field_buffer_too_small.<locals>.<lambda>r  r  r  )r   r  r   r  r   r  r  r   )rt   funcr  r!   r  r"   %test_specified_field_buffer_too_small  s    z@NonNestedTableReadTestCase.test_specified_field_buffer_too_smallc              
      sp   t dj t fdd zjj d W n4 tyj } zdt| W Y d }~n
d }~0 0 d S )N)r/  c                      s   j j dS r  r  r!   r  r!   r"   r    r   zMNonNestedTableReadTestCase.test_all_fields_buffer_too_large.<locals>.<lambda>r  r  r  r  r!   r  r"    test_all_fields_buffer_too_large  s    z;NonNestedTableReadTestCase.test_all_fields_buffer_too_large)rG   rH   rI   rm   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r`  r!   r!   ru   r"   r    s&   		
	r  c                       sT   e 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 )TableReadByteorderTestCasec                    s8   t t|   tj| _dddtj | _ddd| _d S )Nr   r   r   <>)rl   r  rm   r   r   system_byteorderother_byteorderreverse_byteordersrs   ru   r!   r"   rm     s    z TableReadByteorderTestCase.setUpc                 C   s   | j | d }t|dgg g j}| jjdd||d| _tddgg g j}td|| _t	d| jd< d	| jd
< | j
| j d S )Nr  a1r  r   )r   rO  r{   r     ar  )r  r   r  r~   rn   r   r   r  Zinput_arrayaranger   )rt   r   Ztable_dtype_codeZtable_dtypeZinput_dtyper!   r!   r"   r     s    
z'TableReadByteorderTestCase.create_tablec                 C   sJ   |  | j | j }| t|d jj | j t	|d t
d d S Nr  r{   )r   r  r   r  r   r   r~   r   r   r   r   r  r  r!   r!   r"   +test_table_system_byteorder_no_out_argument  s    
zFTableReadByteorderTestCase.test_table_system_byteorder_no_out_argumentc                 C   sJ   |  | j | j }| t|d jj | j t	
|d td d S r  )r   r  r   r  r   r   r~   r   r  r   r   r   r  r  r!   r!   r"   *test_table_other_byteorder_no_out_argument  s    
zETableReadByteorderTestCase.test_table_other_byteorder_no_out_argumentc                 C   s~   |  | j | j| j d }t|dgg g j}td|}| jj|d | 	t
|d jj | j t|d td d S Nr  r  rO  r  r  r{   )r   r  r  r   r  r~   r  r   r  r   r   r   r   r   r  rt   out_dtype_code	out_dtyper  r!   r!   r"   9test_table_system_byteorder_out_argument_system_byteorder$  s    zTTableReadByteorderTestCase.test_table_system_byteorder_out_argument_system_byteorderc                 C   s~   |  | j | j| j d }t|dgg g j}td|}| jj	|d | 
t|d jj | j t|d td d S r  )r   r  r  r  r   r  r~   r  r   r  r   r   r   r   r   r  r  r!   r!   r"   8test_table_other_byteorder_out_argument_system_byteorder.  s    zSTableReadByteorderTestCase.test_table_other_byteorder_out_argument_system_byteorderc              
      s    j jj d }t|dgg g j}td| t	 fdd zj
j d W n4 t	y } zdt| W Y d }~n
d }~0 0 d S )Nr  r  rO  c                      s   j j dS r  r  r!   r  r!   r"   r  =  r   zeTableReadByteorderTestCase.test_table_system_byteorder_out_argument_other_byteorder.<locals>.<lambda>r  #array must be in system's byteorder)r   r  r  r  r   r  r~   r  r   r  r   r  r  r   rt   r  r   r  r!   r  r"   8test_table_system_byteorder_out_argument_other_byteorder8  s    zSTableReadByteorderTestCase.test_table_system_byteorder_out_argument_other_byteorderc              
      s    j jj d }t|dgg g j}td| t fdd zj	j
 d W n4 ty } zdt| W Y d }~n
d }~0 0 d S )Nr  r  rO  c                      s   j j dS r  r  r!   r  r!   r"   r  H  r   zdTableReadByteorderTestCase.test_table_other_byteorder_out_argument_other_byteorder.<locals>.<lambda>r  r  )r   r  r  r   r  r~   r  r   r  r   r  r  r   r  r!   r  r"   7test_table_other_byteorder_out_argument_other_byteorderC  s    zRTableReadByteorderTestCase.test_table_other_byteorder_out_argument_other_byteorder)rG   rH   rI   rm   r   r  r  r  r  r  r  r`  r!   r!   ru   r"   r    s   

r  c                       s   e Zd ZdZdZeZdZdZdZ	dZ
dZdZdZ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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 )-BasicRangeTestCasere   rf   rj   rg   r   r/   rh   r3   c                    s.   t t|   | jj| _|   | j  d S rk   )rl   r  rm   rn   ro   rp   rq   rr   rs   ru   r!   r"   rm   `  s    
zBasicRangeTestCase.setUpc              	   C   sZ  | j }tdD ]D}tj| j| jd}| jj|dt| | j	| j
|| jd}|j}t| jD ]}d| j|  |d< |d d |d< ||d	< || j |d
< t|d tjrt|t|| g|d< nt||d< t|d tjrtt|fd |d< nt||d< |d
 d? d@ |d
 d> d@  |d< |  q\|  | j|dt| }|}qd S Nr3   )r   r   r   )r   r   r   rw   rJ   rz   rP   rK   rL   rM   rN   r)   r   rx   ry   rO   r   rp   r   rU   r   r   r   rn   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rt   r   r   r   r   r   r   r   r!   r!   r"   rq   h  s:    
zBasicRangeTestCase.populateFilec                    s^  t  jd _ jd} j|_t j j j	
|j}ttt| } jr| j j j	}g }tt|D ]b}|d |  jk rd j	k r||d |  qx|d |  jkrxd j	krx||d |  qxn jrl| j j j	d}g }tt|D ]\}||  jk r<d j	k r<|||  n*||  jkrd j	kr|||  qn^d j	k r fdd| j j j	D }n.d j	krʇ fdd| j j j	D } jdk r j j }n j} jd u r js jr|d }	n j}	n  jdk r2 j j }	n j}	 j|	k rJ j}	tjrtd	|jd
|j |r jrtd|d  n" jrtd|d  n
td|
 tdt| td| tdtt||	 j	 td j j j	 td||	 j	  |tt||	 j	  jsP jsP||	k rd j	k r fdd| j j j	D d }
 j jk r |
d tt j j j	d  n" |
d tt||	 j	d  n||	krPd j	krP fdd| j j j	D d }
 j jk r, |
tt j jpd j	d  n$ |
tt||	p@d j	d   j  d S )Nr   r   rK   r   c                    s"   g | ]}|d   j k r|d  qS r  r   r   rs   r!   r"   r     s   z2BasicRangeTestCase.check_range.<locals>.<listcomp>c                    s"   g | ]}|d   j kr|d  qS r  r  r   rs   r!   r"   r     s   r/   r   r   z"Last record *read* in recarray ==>rz   zLast value *read* in getCol ==>z%Last record *read* in table range ==>z$Total number of selected records ==>zSelected records:
z#Selected records should look like:
zstart, stop, step ==>zstartr, stopr, step ==>c                    s   g | ]}|d   j k r|qS r  r  r  rs   r!   r"   r     s   c                    s"   g | ]}|d   j kr|d  qS r  r  r  rs   r!   r"   r     s   )rU   r   r   rn   r   r   slicerg  r   rh  indicesr   r   r   r   checkrecarrayr  r   checkgetColr   r   r   r   r   r   r   rr   )rt   r   ZresrangeZ	reslengthrecarrayr   Znreccolumnstartrstoprr   r!   rs   r"   check_range  s    




zBasicRangeTestCase.check_rangec                 C   sL   t jr tdd td| jj  d| _d| _d| _| j| _	d| _
|   dS )	*Checking ranges in table iterators (case1)r   r   zRunning %s.test01_range...re  r3   r   r1   Nr   r   r   rv   rG   r   r   rg  r   r   rh  r  rs   r!   r!   r"   test01_range  s    
zBasicRangeTestCase.test01_rangec                 C   sP   t jr tdd td| jj  d| _d| _| jd | _d| _	d| _
|   dS )	r  r   r   zRunning %s.test01a_range...re  r3   r/   N)r   r   r   rv   rG   r   r   r   rg  r   rh  r  rs   r!   r!   r"   test01a_range	  s    
z BasicRangeTestCase.test01a_rangec                 C   sL   t jr tdd td| jj  d| _d| _d| _| j| _	d| _
|   dS )	z*Checking ranges in table iterators (case2)r   r   zRunning %s.test02_range...re     r  r3   Nr  rs   r!   r!   r"   test02_range	  s    
zBasicRangeTestCase.test02_rangec                 C   sN   t jr tdd td| jj  | j| _d| _d| _| j| _	d| _
|   dS )z*Checking ranges in table iterators (case3)r   r   zRunning %s.test03_range...r  r   r{   Nr   r   r   rv   rG   r   r   r   rg  r   rh  r  rs   r!   r!   r"   test03_range/	  s    
zBasicRangeTestCase.test03_rangec                 C   sN   t jr tdd td| jj  | j| _d| _d| _| j| _	d| _
|   dS )z*Checking ranges in table iterators (case4)r   r   zRunning %s.test04_range...r  r/   Nr  rs   r!   r!   r"   test04_range?	  s    
zBasicRangeTestCase.test04_rangec                 C   sL   t jr tdd td| jj  d| _d| _d| _| j| _	d| _
|   dS )	z*Checking ranges in table iterators (case5)r   r   zRunning %s.test05_range...re  r{   r/   r  Nr  rs   r!   r!   r"   test05_rangeO	  s    
zBasicRangeTestCase.test05_rangec                 C   sL   t jr tdd td| jj  d| _d| _d| _| j| _	d| _
|   dS )z*Checking ranges in table iterators (case6)r   r   zRunning %s.test06_range...r3   r1   r{   Nr  rs   r!   r!   r"   test06_range_	  s    
zBasicRangeTestCase.test06_rangec                 C   sN   t jr tdd td| jj  d| _d| _| j| _| j| _d| _	| 
  dS )z*Checking ranges in table iterators (case7)r   r   zRunning %s.test07_range...r1   r3   r{   Nr   r   r   rv   rG   r   r   rg  r   rh  r  rs   r!   r!   r"   test07_rangeo	  s    
zBasicRangeTestCase.test07_rangec                 C   sR   t jr tdd td| jj  d| _d| _| jd | _| j| _d| _	| 
  dS )z*Checking ranges in table iterators (case8)r   r   zRunning %s.test08_range...r1   r3   r/   Nr!  rs   r!   r!   r"   test08_range	  s    
zBasicRangeTestCase.test08_rangec                 C   sJ   t jr tdd td| jj  d| _d| _d| _d| _d| _	| 
  dS )	z*Checking ranges in table iterators (case9)r   r   zRunning %s.test09_range...rg   r3   r/   r1   Nr!  rs   r!   r!   r"   test09_range	  s    
zBasicRangeTestCase.test09_rangec                 C   sb   t jr tdd td| jj  | j| _d| _d| _| j| j | _	d| _
| j| _d| _|   dS )	z+Checking ranges in table iterators (case10)r   r   zRunning %s.test10_range...r5   r1   Nr   r   r   rv   rG   r   r   r   rg  r  r   r  rh  r  rs   r!   r!   r"   test10_range	  s    
zBasicRangeTestCase.test10_rangec                 C   sb   t jr tdd td| jj  | j| _d| _d| _| j| j | _	d| _
| j| _d| _|   dS )	z,Checking ranges in table iterators (case10a)r   r   zRunning %s.test10a_range...r5   r%  r   r1   Nr'  rs   r!   r!   r"   test10a_range	  s    
z BasicRangeTestCase.test10a_rangec                 C   sh   t jr tdd td| jj  | j| _d| _d| _| j| j | _	d| _
| j| j
 | _d| _|   dS )	z+Checking ranges in table iterators (case11)r   r   zRunning %s.test11_range...r5   r%  r  r/   Nr'  rs   r!   r!   r"   test11_range	  s    
zBasicRangeTestCase.test11_rangec                 C   sh   t jr tdd td| jj  | j| _d| _d| _| j| j | _	d| _
| j| j
 | _d| _|   dS )	z+Checking ranges in table iterators (case12)r   r   zRunning %s.test12_range...r5   rz   r  r/   Nr'  rs   r!   r!   r"   test12_range	  s    
zBasicRangeTestCase.test12_rangec                 C   s   t jr tdd td| jj  d| _z|   W n@ tyr   t jrdt	 \}}}td t| | j
  Y n0 d| _z|   W n@ ty   t jrt	 \}}}td t| | j
  Y n0 dS )z+Checking ranges in table iterators (case13)r   r   zRunning %s.test13_range...iz)
Great!, the next ValueError was catched!r   N)r   r   r   rv   rG   rh  r  r  r   exc_inforn   rr   )rt   r   r  	tracebackr!   r!   r"   test13_range	  s*    
zBasicRangeTestCase.test13_range)$rG   rH   rI   r_  r   r(   r   r   r   r   r   r   r   rg  r   r  r  rm   rq   r  r  r  r  r  r  r  r   r"  r#  r$  r(  r)  r*  r+  r.  r`  r!   r!   ru   r"   r  O  s>   +lr  c                   @   s   e Zd ZdS )IterRangeTestCaseN)rG   rH   rI   r!   r!   r!   r"   r/  
  s   r/  c                   @   s   e Zd ZdZdS )RecArrayRangeTestCaser/   N)rG   rH   rI   r  r!   r!   r!   r"   r0  
  s   r0  c                   @   s   e Zd ZdZdd ZdS )GetColRangeTestCaser/   c                 C   s~   t jr tdd td| jj  t| jd| _| jj	| _	| j
d}| t |d W d   n1 sp0    Y  dS )z-Checking non-existing Field in getCol method r   r   z%Running %s.test01_nonexistentField...r   r   znon-existent-columnN)r   r   r   rv   rG   rU   r   r   rn   ro   r   r   r   r   rX  r!   r!   r"   test01_nonexistentField
  s    

z+GetColRangeTestCase.test01_nonexistentFieldN)rG   rH   rI   r  r2  r!   r!   r!   r"   r1  
  s   r1  c                       s   e Zd ZdZdZeZdZdZdZ	dZ
dZdZdZ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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 )-GetItemTestCasere   rf   rj   rg   r   r/   rh   r3   c                    s.   t t|   | jj| _|   | j  d S rk   )rl   r3  rm   rn   ro   rp   rq   rr   rs   ru   r!   r"   rm   8
  s    
zGetItemTestCase.setUpc              	   C   sZ  | j }tdD ]D}tj| j| jd}| jj|dt| | j	| j
|| jd}|j}t| jD ]}d| j|  |d< |d d |d< ||d	< || j |d
< t|d tjrt|t|| g|d< nt||d< t|d tjrtt|fd |d< nt||d< |d
 d? d@ |d
 d> d@  |d< |  q\|  | j|dt| }|}qd S r  r	  r
  r!   r!   r"   rq   @
  s<    
zGetItemTestCase.populateFilec                 C   s   t jr tdd td| jj  t| jd| _| jj	j
}|d }| |d d |d }| |d d || jd  }| |d | jd  d	S )
z7Checking __getitem__ method with single parameter (int)r   r   z Running %s.test01a_singleItem...r   r1   rK      r/   Nr   r   r   rv   rG   rU   r   r   rn   ro   r  r   r   r   r!   r!   r"   test01a_singleItemh
  s    

z"GetItemTestCase.test01a_singleItemc                 C   s   t jr tdd td| jj  t| jd| _| jj	j
}|d }| |d | jd  |d }| |d | jd	  || j  }| |d d
 dS )z<Checking __getitem__ method with single parameter (neg. int)r   r   z Running %s.test01b_singleItem...r   r&  rK   r5   rz   r/   r   Nr5  r   r!   r!   r"   test01b_singleItemx
  s    

z"GetItemTestCase.test01b_singleItemc                 C   s   t jr tdd td| jj  t| jd| _| jj	j
}|d }| |d d |d }| |d d || jd  }| |d | jd  d	S )
z8Checking __getitem__ method with single parameter (long)r   r   z Running %s.test01c_singleItem...r   r1   rK   r4  r/   Nr5  r   r!   r!   r"   test01c_singleItem
  s    

z"GetItemTestCase.test01c_singleItemc                 C   s   t jr tdd td| jj  t| jd| _| jj	j
}|d }| |d | jd  |d }| |d | jd	  || j  }| |d d
 dS )z=Checking __getitem__ method with single parameter (neg. long)r   r   z Running %s.test01d_singleItem...r   r&  rK   r5   rz   r/   r   Nr5  r   r!   r!   r"   test01d_singleItem
  s    

z"GetItemTestCase.test01d_singleItemc                 C   s   t jr tdd td| jj  t| jd| _| jj	j
}|td }| |d d |td }| |d d |t| jd  }| |d | jd  d	S )
z?Checking __getitem__ method with single parameter (rank-0 ints)r   r   z Running %s.test01e_singleItem...r   r1   rK   r4  r/   N)r   r   r   rv   rG   rU   r   r   rn   ro   r  r   r   r   r   r   r!   r!   r"   test01e_singleItem
  s    

z"GetItemTestCase.test01e_singleItemc                 C   s\   t jr tdd td| jj  t| jd| _| jj	j
}|td }| |d d dS )z=Checking __getitem__ method with single parameter (np.uint64)r   r   z Running %s.test01f_singleItem...r   r1   rK   N)r   r   r   rv   rG   rU   r   r   rn   ro   r  r   Zuint64r   r   r!   r!   r"   test01f_singleItem
  s    

z"GetItemTestCase.test01f_singleItemc                 C   s   t jr tdd td| jj  t| jd| _| jj	j
}|dd }| |d  ttdd |dd }| |d  ttd| jd  |dd	 }| |d  ttd| j |d
d	 }| |d  tt| jd | j d	S )z8Checking __getitem__ method with start, stop parameters.r   r   zRunning %s.test02_twoItem...r   r1   r7   rK   r%  Nr  r   r   r   rv   rG   rU   r   r   rn   ro   r  r   tolistr   r   r   r   r!   r!   r"   test02_twoItems
  s"    


 zGetItemTestCase.test02_twoItemsc                 C   s   t jr tdd td| jj  t| jd| _| jj	j
}|ddd }| |d  ttddd |dd	d }| |d  ttd| jd |d	dd }| |d  ttd
dd |d	d	 }| |d  ttd
| jd d	S )z>Checking __getitem__ method with start, stop, step parameters.r   r   zRunning %s.test03_threeItem...r   r1   r7   r3   rK   Nr   r/   r<  r   r!   r!   r"   test03_threeItems
  s"    

  z!GetItemTestCase.test03_threeItemsc                 C   sv   t jr tdd td| jj  t| jd| _| jj	j
}| t |ddd  W d   n1 sh0    Y  dS )	z9Checking __getitem__ method with negative step parameter.r   r   z!Running %s.test04_negativeStep...r   r1   r3   N)r   r   r   rv   rG   rU   r   r   rn   ro   r  r   r  rX  r!   r!   r"   test04_negativeStep
  s    

z#GetItemTestCase.test04_negativeStepc                 C   s   t jr tdd td| jj  t| jd| _| jj	j
}|jj}| |d d | |d d | || jd  | jd  dS )	z9Checking __getitem__ method in Col with single parameter.r   r   z#Running %s.test06a_singleItemCol...r   r1   r4  r/   Nr   r   r   rv   rG   rU   r   r   rn   ro   r  r   rK   r   r   rt   r   Zcolvar2r!   r!   r"   test06a_singleItemCol
  s    

z%GetItemTestCase.test06a_singleItemColc                 C   s   t jr tdd td| jj  t| jd| _| jj	j
}|jj}| |d | jd  | |d | jd  | || j  d	 d
S )zKChecking __getitem__ method in Col with single parameter
        (negative)r   r   z Running %s.test06b_singleItem...r   r&  r5   rz   r/   r   NrB  rC  r!   r!   r"   test06b_singleItemCol	  s    

z%GetItemTestCase.test06b_singleItemColc                 C   s   t jr tdd td| jj  t| jd| _| jj	j
}|jj}| |dd  ttdd | |dd  ttd| jd  | |dd  ttd| j | |d	d  tt| jd | j dS )
z?Checking __getitem__ method in Col with start, stop parameters.r   r   zRunning %s.test07_twoItemCol...r   r1   r7   r%  Nr  r   r   r   rv   rG   rU   r   r   rn   ro   r  r   rK   r   r=  r   r   r   rC  r!   r!   r"   test07_twoItemsCol  s    

"($z"GetItemTestCase.test07_twoItemsColc                 C   s   t jr tdd td| jj  t| jd| _| jj	j
}|jj}| |ddd  ttddd | |ddd  ttd| jd | |ddd  ttd	dd | |dd  ttd	| jd
 dS )zMChecking __getitem__ method in Col with start, stop, step
        parameters.r   r   z!Running %s.test08_threeItemCol...r   r1   r7   r3   Nr   r/   rF  rC  r!   r!   r"   test08_threeItemsCol(  s    

&&z$GetItemTestCase.test08_threeItemsColc                 C   s~   t jr tdd td| jj  t| jd| _| jj	j
}|jj}| t |ddd  W d   n1 sp0    Y  dS )	z@Checking __getitem__ method in Col with negative step parameter.r   r   z!Running %s.test09_negativeStep...r   r1   r3   r@  N)r   r   r   rv   rG   rU   r   r   rn   ro   r  r   rK   r   r  rC  r!   r!   r"   test09_negativeStep:  s    

z#GetItemTestCase.test09_negativeStepc                 C   sh   t | jd| _| jjj}ttddd}|| }| |d 	 | |
|}| |d 	 | dS )z1Checking accessing Table with a list of integers.r   r{   F   r  rK   N)rU   r   r   rn   ro   r  r   r   r   r=  read_coordinates)rt   r   idxr   r!   r!   r"   test10_list_integersH  s    

z$GetItemTestCase.test10_list_integersc                    s   t | jd| _| jjj}ttddd  fddt| jD }|| }| 	|d 
   ||}| 	|d 
   dS )	z7Checking accessing Table with a list of boolean values.r   r{   rJ  r  c                    s   g | ]}| v qS r!   r!   r   rL  r!   r"   r   \  r   z8GetItemTestCase.test11_list_booleans.<locals>.<listcomp>rK   N)rU   r   r   rn   ro   r  r   r   r   r   r=  rK  )rt   r   Z	selectionr   r!   rN  r"   test11_list_booleansU  s    

z$GetItemTestCase.test11_list_booleans)$rG   rH   rI   r_  r   r(   r   r   r   r   r   r   r   rg  r   r  r  rm   rq   r6  r7  r8  r9  r:  r;  r>  r?  rA  rD  rE  rG  rH  rI  rM  rO  r`  r!   r!   ru   r"   r3  (
  s>   (r3  c                   @   s,   e Zd ZeddZedddZeddZdS )Recr/   r]   r3   r1   r,   r.   N	rG   rH   rI   r	   col1r   col2r
   col3r!   r!   r!   r"   rP  e  s   
rP  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d Z
dd Zdd Zdd ZdS )SetItemTestCasec                 C   s   | j | j jdt}| j|_tjddgdd}|| |ddg d|d	< tjg d
ddd}| j	r| 
  | j jj}| j|_| }tjrtdt| tdt| | | |  | |jd dS )z1Checking modifying one table row with __setitem__r       dbe333333?r1      ded?i4,a3,f8rs       db1rZ  r5      de1r]  rX  Zdb2rZ  r1   rW  r[  )rX  s   db2rZ  rc  col1,col2,col3rs  rt  Original table-->Should look like-->r)   Nrn   r   ro   rP  
buffersizer   r   r   r   reopen_reopenr  r  r   r   r   reprr   tostringr   rt   r   r   r1r2r!   r!   r"   test01l  s,    



zSetItemTestCase.test01c                 C   s   | j | j jdt}| j|_tjddgdd}|| |ddg d|d	< tjg d
ddd}| j	r| 
  | j jj}| j|_| }tjrtdt| tdt| | | |  | |jd dS )z>Checking modifying one table row with __setitem__ (long index)r  rW  r[  r^  r_  r`  rc  re  r1   rf  rg  rh  ri  rj  r)   Nrk  rq  r!   r!   r"   test01b  s,    



zSetItemTestCase.test01bc                 C   s   | j | j jdt}| j|_tjddgdd}|| |ddg tjdgdd}||dd	d
< tjg dddd}| j	r| 
  | j jj}| j|_| }tjrtdt| tdt| | | |  | |jd dS )z,Modifying one row, with a step (__setitem__)r  rW  r[  r^  r_  r`  rc  r/   r3   r1   rW  r`  r`  rc  rg  rh  ri  rj  r)   Nrk  rt   r   r   rowsrr  rs  r!   r!   r"   test02  s.    



zSetItemTestCase.test02c                 C   s   | j | j jdt}| j|_tjddgdd}|| |ddg tjddgdd}||dd	< tjg d
ddd}| j	r| 
  | j jj}| j|_| }tjrtdt| tdt| | | |  | |jd dS )z5Checking modifying several rows at once (__setitem__)r  rW  r[  r^  r_  r`  rc  r/   r3   rW  r`  rc  rc  rg  rh  ri  rj  r)   Nrk  rw  r!   r!   r"   test03  s2    




zSetItemTestCase.test03c                 C   s   | j | j jdt}| j|_tjddgdd}|| |ddg tjddgdd}||d	d
d< tjg dddd}| j	r| 
  | j jj}| j|_| }tjrtdt| tdt| | | |  | |jd d
S )z9Modifying several rows at once, with a step (__setitem__)r  rW  r[  r^  r_  r`  rc  r7   s   de2r]  r/   Nr1   rW  r`  r`  r|  rg  rh  ri  rj  r)   rk  rw  r!   r!   r"   test04  s2    




zSetItemTestCase.test04c                 C   s   | j | j jdt}| j|_tjddgdd}|| |ddg d|j	j
d	< tjg d
ddd}| jr|   | j jj}| j|_| }tjrtdt| tdt| | | |  | |jd dS )z;Checking modifying one column (single element, __setitem__)r  rW  r[  r^  r_  r`  rc  rz   r/   rW  )rz   r\  r]  r`  rc  rg  rh  ri  rj  r)   Nrn   r   ro   rP  rl  r   r   r   r   r   rS  rm  rn  r  r  r   r   r   ro  r   rp  r   rq  r!   r!   r"   test05  s,    



zSetItemTestCase.test05c                 C   s   | j | j jdt}| j|_tjddgdd}|| |ddg g d|j	j
d	d
< tjg dddd}| jr|   | j jj}| j|_| }tjrtdt| tdt| | | |  | |jd
 dS )z=Checking modifying one column (several elements, __setitem__)r  rW  r[  r^  r_  r`  rc  r1   r3   r)   r/   r)   rW  r[  )r3   rb  rZ  )r)   rd  r]  rg  rh  ri  rj  Nr  rq  r!   r!   r"   test06a3  s,    



zSetItemTestCase.test06ac                 C   s   | j | j jdt}| j|_tjddgdd}|| |ddg | 	t
< | D ]}|jd |d	< |  qZ|  W d
   n1 s0    Y  d
S )z5Checking modifying one column (iterator, __setitem__)r  rW  r[  r^  r_  r`  rc  r/   rS  N)rn   r   ro   rP  rl  r   r   r   r   r   NotImplementedErrorr   nrowr   )rt   r   r   r   r!   r!   r"   test06bS  s    


zSetItemTestCase.test06bc                 C   s   | j | j jdt}| j|_tjddgdd}|| |ddg dd	g|j	j
d
dd< tjg dddd}| jr|   | j jj}| j|_| }tjrtdt| tdt| | | |  | |jd dS )z:Modifying one column (several elements, __setitem__, step)r  rW  r/   r\  r]  r^  r_  r`  rc  r1   r3   r/   r)   )rW  r[  r`  )r3   rd  r]  rg  rh  ri  rj  Nr  rq  r!   r!   r"   test07y  s,    



zSetItemTestCase.test07c                 C   s   | j | j jdt}| j|_tjddgdd}|| |ddg dg|j	j
d	d
d< tjg dddd}| jr|   | j jj}| j|_| }tjrtdt| tdt| | | |  | |jd
 dS )z5Modifying one column (one element, __setitem__, step)r  rW  r[  r^  r_  r`  rc  r1   r/   r)   r3   rW  r[  r`  rc  rg  rh  ri  rj  Nr  rq  r!   r!   r"   test08  s,    



zSetItemTestCase.test08c                 C   s   | j | j jdt}| j|_tjddgdd}|| |ddg tjddgdd}||d	d
d< tjg ddd}| j	r| 
  | j jj}| j|_| }tjrtdt| tdt| | | |  | |jd d
S )z5Modifying beyond the table extend (__setitem__, step)r  rW  r[  r^  r_  r`  rc  r|  r/   Nr1   r}  ri  rj  r)   rk  rw  r!   r!   r"   test09  s0    




zSetItemTestCase.test09N)rG   rH   rI   rt  ru  ry  r{  r~  r  r  r  r  r  r  r!   r!   r!   r"   rV  k  s     !##  & rV  c                   @   s   e Zd ZdZdZdS )SetItemTestCase1r   r/   NrG   rH   rI   rm  rl  r!   r!   r!   r"   r    s   r  c                   @   s   e Zd ZdZdZdS )SetItemTestCase2r/   r1   Nr  r!   r!   r!   r"   r    s   r  c                   @   s   e Zd ZdZdZdS )SetItemTestCase3r   r  Nr  r!   r!   r!   r"   r    s   r  c                   @   s   e Zd ZdZdZdS )SetItemTestCase4r/   r  Nr  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d Z
dd Zdd Zdd ZdS )UpdateRowTestCasec                 C   s   | j | j jdt}| j|_tjddgdd}|| |ddg |	dd	D ]"}d
\|d< |d< |d< |
  qRtjg dddd}| jr|   | j jj}| j|_| }tjrtdt| tdt| | | |  | |jd dS )z0Checking modifying one table row with Row.updater  rW  r[  r^  r_  r`  rc  r1   r3   re  rS  rT  rU  rf  rg  rh  ri  rj  r)   Nrn   r   ro   rP  rl  r   r   r   r   r   updaterm  rn  r  r  r   r   r   ro  r   rp  r   rt   r   r   r   rr  rs  r!   r!   r"   rt    s0    




zUpdateRowTestCase.test01c                 C   s*  | j | j jdt}| j|_tjddgdd}|| |ddg |	dd	d
D ]N}|j
dkrzd\|d< |d< |d< n |j
d	krd\|d< |d< |d< |  qTtjg dddd}| jr|   | j jj}| j|_| }tjrtdt| tdt| | | |  | |jd dS )z+Modifying one row, with a step (Row.update)r  rW  r[  r^  r_  r`  rc  r/   r3   r1   ra  db1rZ  rS  rT  rU  r7   Zde2r]  rv  rg  rh  ri  rj  r)   Nrn   r   ro   rP  rl  r   r   r   r   r   r  r  rm  rn  r  r  r   r   r   ro  r   rp  r   r  r!   r!   r"   ry    s6    






zUpdateRowTestCase.test02c                 C   s(  | j | j jdt}| j|_tjddgdd}|| |ddg |	dd	D ]N}|j
dkrxd
\|d< |d< |d< n |j
dkrd\|d< |d< |d< |  qRtjg dddd}| jr|   | j jj}| j|_| }tjrtdt| tdt| | | |  | |jd dS )z4Checking modifying several rows at once (Row.update)r  rW  r[  r^  r_  r`  rc  r/   r3   r  rS  rT  rU  r1   r5   Zde1r]  rz  rg  rh  ri  rj  r)   Nr  r  r!   r!   r"   r{  8  s6    






zUpdateRowTestCase.test03c                 C   s,  | j | j jdt}| j|_tjddgdd}|| |ddg |j	dd	d
dD ]N}|j
dkr|d\|d< |d< |d< n |j
dkrd\|d< |d< |d< |  qVtjg dddd}| jr|   | j jj}| j|_| }tjrtdt| tdt| | | |  | |jd	 dS )z8Modifying several rows at once, with a step (Row.update)r  rW  r[  r^  r_  r`  rc  r/   r)   r1   )r   rh  r  rS  rT  rU  r3   r  r}  rg  rh  ri  rj  Nr  r  r!   r!   r"   r~  ]  s6    






zUpdateRowTestCase.test04c                 C   s   | j | j jdt}| j|_tjddgdd}|| |ddg |	dd	D ]}d
|d< |
  qRtjg dddd}| jr|   | j jj}| j|_| }tjrtdt| tdt| | | |  | |jd dS )z:Checking modifying one column (single element, Row.update)r  rW  r[  r^  r_  r`  rc  r/   r1   rz   rS  r  rg  rh  ri  rj  r)   Nr  r  r!   r!   r"   r    s0    




zUpdateRowTestCase.test05c                 C   s   | j | j jdt}| j|_tjddgdd}|| |ddg |	dd	D ]}|j
d |d
< |  qRtjg dddd}| jr|   | j jj}| j|_| }tjrtdt| tdt| | | |  | |jd	 dS )z<Checking modifying one column (several elements, Row.update)r  rW  r[  r^  r_  r`  rc  r/   r)   rS  r  rg  rh  ri  rj  Nr  r  r!   r!   r"   test06  s0    




zUpdateRowTestCase.test06c                 C   s   | j | j jdt}| j|_tjddgdd}|| |ddg |	dD ]}d	|d
< d|d< |
  qPtjg dddd}| jr|   | j jj}| j|_| }tjrtdt| tdt| | | |  | |jd dS )z!Modifying values from a selectionr  rW  r  r^  r_  r`  rc  z
col1 < 456r1   rS  ZadarT  )rW  r1   s   adar]  r`  r  rg  rh  ri  rj  r)   N)rn   r   ro   rP  rl  r   r   r   r   r   r  rm  rn  r  r  r   r   r   ro  r   rp  r   r  r!   r!   r"   r    s2    




zUpdateRowTestCase.test07c                 C   sb  | j | j jdt}| j|_d}|j}t|D ]4}|d |d< dt|d  |d< d|d< |	  q.|
  |D ]0}|j|d< d	t|j |d< d
|d< |  qptjd|ddd}t|D ]0}||d |< d	t| |d |< d
|d |< q| jr|   | j jj}| j|_| }tjr<tdt| tdt| | | |  | |j| dS )z$Modifying a large table (Row.update)r  rg   r/   rS  r  rT        rU  br|   Nr^  rg  rw  ri  rj  )rn   r   ro   rP  rl  r   r   r   r   r   r   r  r  r   r   rm  rn  r  r  r   r   r   ro  r   rp  r   rt   r   r   r   r   rr  rs  r!   r!   r"   r    sB    



zUpdateRowTestCase.test08c                 C   sb  | j | j jdt}| j|_d}|j}t|D ]4}|d |d< dt|d  |d< d|d< |	  q.|
  |D ](}|j|d< d	t|j |d< d
|d< qptjd|ddd}t|D ]8}|d |d |< dt|d  |d |< d|d |< q| jr|   | j jj}| j|_| }tjr<tdt| tdt| | | |  | |j| dS )z:Setting values on a large table without calling Row.updater  rg   r/   rS  r  rT  r  rU  r  r|   Nr^  rg  rw  ri  rj  )rn   r   ro   rP  rl  r   r   r   r   r   r   r  r   r   rm  rn  r  r  r   r   r   ro  r   rp  r   r  r!   r!   r"   test08b  s@    



zUpdateRowTestCase.test08bc                 C   s  | j | j jdt}| j|_d}|j}t|D ]4}|d |d< dt|d  |d< d|d< |	  q.|
  |d	D ]0}|j|d< d
t|j |d< d|d< |  qvtjd|ddd}t|D ]8}|d |d |< dt|d  |d |< d|d |< q||d |< d
t| |d |< d|d |< | jrJ|   | j jj}| j|_| }tjrvtdt| tdt| | | |  | |j| dS )z*Modifying selected values on a large tabler  rg   r/   rS  r  rT  r  rU  zcol1 > nrows-3r  r|   Nr^  rg  rw  ri  rj  )rn   r   ro   rP  rl  r   r   r   r   r   r   r   r  r  r   r   rm  rn  r  r  r   r   r   ro  r   rp  r   r  r!   r!   r"   r  @  sH    



zUpdateRowTestCase.test09c                 C   s  | j | j jdt}| j|_d}|j}t|D ]4}|d |d< dt|d  |d< d|d< |	  q.|
  |jd	d
D ]0}|j|d< dt|j |d< d|d< |  qxtjd|ddd}t|D ]t}|d	 dkr|d |d |< dt|d  |d |< d|d |< q||d |< dt| |d |< d|d |< q| jr\|   | j jj}| j|_| }tjrtdt| tdt| | | |  | |j| dS )z=Modifying selected values on a large table (alternate values)r  rg   r/   rS  r  rT  r  rU  r{   )rh  r  r|   Nr^  rg  rw  r   ri  rj  )rn   r   ro   rP  rl  r   r   r   r   r   r   r   r  r  r   r   rm  rn  r  r  r   r   r   ro  r   rp  r   r  r!   r!   r"   test09bq  sJ    



zUpdateRowTestCase.test09bN)rG   rH   rI   rt  ry  r{  r~  r  r  r  r  r  r  r  r!   r!   r!   r"   r    s   "%%%""",,1r  c                   @   s   e Zd ZdZdZdS )UpdateRowTestCase1r   r/   Nr  r!   r!   r!   r"   r    s   r  c                   @   s   e Zd ZdZdZdS )UpdateRowTestCase2r/   r1   Nr  r!   r!   r!   r"   r    s   r  c                   @   s   e Zd ZdZdZdS )UpdateRowTestCase3r   r  Nr  r!   r!   r!   r"   r    s   r  c                   @   s   e Zd ZdZdZdS )UpdateRowTestCase4r/   r  Nr  r!   r!   r!   r"   r    s   r  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-S ).
RecArrayIOc                 C   sz   t jr tdd td| jj  tjddgdd}| j| jj	d| | j
rT|   | jj	j }| | |  d	S )
z"Checking saving a regular recarrayr   r   zRunning %s.test00...rW  r1      der]  rg  rt  r  Nr   r   r   rv   rG   r   r   rn   r   ro   rm  rn  r  r  r   rp  rt   r   rs  r!   r!   r"   test00  s    

zRecArrayIO.test00c                 C   s   t jr tdd td| jj  tjddgdd}|dd	 }| j| jj	d
| | j
r`|   | jj	j }| | |  d	S )z7Checking saving a recarray with an offset in its bufferr   r   zRunning %s.test01...rW  r  rg  r  r/   Nr  r  rt   r   rr  rs  r!   r!   r"   rt    s    

zRecArrayIO.test01c                 C   s   t jr tdd td| jj  tdd dd}|dd	 }| j| jj	d
| | j
r`|   | jj	j }| | |  d	S )z=Checking saving a large recarray with an offset in its bufferr   r   zRunning %s.test02...r  @ f4,3i4,a5,i2  i  Nr  r  r  r!   r!   r"   ry    s    
zRecArrayIO.test02c                 C   s   t jr tdd td| jj  tdd dd}|ddd	 }|d
d }| j| jj	d| | j
rn|   | jj	j }| | |  dS )z?Checking saving a strided recarray with an offset in its bufferr   r   zRunning %s.test03...r  r  r  r  Nr1   i  r  r  )rt   r   rs  rr  r!   r!   r"   r{    s    
zRecArrayIO.test03c                 C   s   t jr tdd td| jj  G dd dtj}| j| jj	d|}t
jddgd	d
}|| |ddg t
jg dd	dd}| jr|   | jj	j}| jj	j }t jrtdt| tdt| | | |  | |jd dS )z'Checking appending several rows at oncer   r   zRunning %s.test04...c                   @   s,   e Zd ZeddZedddZeddZdS )zRecArrayIO.test04.<locals>.Recr/   r]   r3   r1   rQ  NrR  r!   r!   r!   r"   rP    s   
rP  r  rW  r[  r^  r_  r`  rc  r  rg  rh  ri  rj  r)   N)r   r   r   rv   rG   rU   IsDescriptionrn   r   ro   r   r   r   rm  rn  r  r  ro  r   rp  r   )rt   rP  r   r   rr  rs  r!   r!   r"   r~    s.    




zRecArrayIO.test04c                 C   s   t jr tdd td| jj  | j| jjdt}t	j
ddgdd}|| |d	d
g |   | jjj}t	j
g dddd}| jr|   | jjj}| jjj }t jrtdt| tdt| | | |  | |jd dS )z<Checking appending several rows at once (close file version)r   r   zRunning %s.test05...r  rW  r[  r^  r_  r`  rc  r  rg  rh  ri  rj  r)   N)r   r   r   rv   rG   rn   r   ro   rP  r   r   r   rn  r  rm  r  ro  r   rp  r   rq  r!   r!   r"   r  :  s0    





zRecArrayIO.test05c                 C   s   t jr tdd td| jj  | j| jjdt}t	j
ddgdd}|| |d	d
g |jddgd t	j
g dddd}| jr|   | jjj}| }t jrtdt| tdt| | | |  | |jd dS )z/Checking modifying one table row (list version)r   r   zRunning %s.test06a...r  rW  r[  r^  r_  r`  rc  r/   )rX  r  rZ  rg  rx  )rW  )rX  rb  rZ  r`  rc  rg  rh  ri  rj  r)   Nr   r   r   rv   rG   rn   r   ro   rP  r   r   r   modify_rowsrm  rn  r  r  ro  r   rp  r   rq  r!   r!   r"   r  ^  s.    




zRecArrayIO.test06ac                 C   s   t jr tdd td| jj  | j| jjdt}t	j
ddgdd}|| |d	d
g |jdt	j
dgddd t	j
g dddd}| jr|   | jjj}| }t jrtdt| tdt| | | |  | |jd dS )z3Checking modifying one table row (recarray version)r   r   zRunning %s.test06b...r  rW  r[  r^  r_  r`  rc  r1   re  r  rf  rg  rh  ri  rj  r)   Nr  rq  r!   r!   r"   r    s2    





zRecArrayIO.test06bc                 C   s   t jr tdd td| jj  | j| jjdt}t	j
ddgdd}|| |d	d
g |jdddgd t	j
g dddd}| jr|   | jjj}| }t jrtdt| tdt| | | |  | |jd dS )z6Checking modifying several rows at once (list version)r   r   zRunning %s.test07a...r  rW  r[  r^  r_  r`  rc  r/   r  r  r  rz  rg  rh  ri  rj  r)   Nr  rq  r!   r!   r"   test07a  s.    




zRecArrayIO.test07ac                 C   s   t jr tdd td| jj  | j| jjdt}t	j
ddgdd}|| |d	d
g t	j
d	d
gdd}|jd|d t	j
g dddd}| jr|   | jjj}| }t jrtdt| tdt| | | |  | |jd dS )z:Checking modifying several rows at once (recarray version)r   r   zRunning %s.test07b...r  rW  r[  r^  r_  r`  rc  r/   r  rz  rg  rh  ri  rj  r)   Nr  rw  r!   r!   r"   test07b  s4    





zRecArrayIO.test07bc                 C   s   t jr tdd td| jj  | j| jjdt}t	j
ddgdd}|| |d	d
g t	j
d	d
gdd}| jt|jdd|d dS )z8Checking modifying several rows with a mismatching valuer   r   zRunning %s.test07c...r  rW  r[  r^  r_  r`  rc  r/   r1   )rg  r   rx  N)r   r   r   rv   rG   rn   r   ro   rP  r   r   r   r   r  r  )rt   r   r   rx  r!   r!   r"   test07c  s    




zRecArrayIO.test07cc                 C   s   t jr tdd td| jj  | j| jjdt}t	j
ddgdd}|| |d	d
g |jdg dgdgd t	j
g dddd}| jr|   | jjj}| }t jrtdt| tdt| | | |  | |jd dS )z5Checking modifying one column (single column version)r   r   zRunning %s.test08a...r  rW  r[  r^  r_  r`  rc  r/   r  rS  rg  r   rt  r  rg  rh  ri  rj  r)   Nr   r   r   rv   rG   rn   r   ro   rP  r   r   r   modify_columnsrm  rn  r  r  ro  r   rp  r   rq  r!   r!   r"   test08a  s.    




zRecArrayIO.test08ac                 C   s   t jr tdd td| jj  | j| jjdt}t	j
ddgdd}|| |d	d
g |jdg ddd t	j
g dddd}| jr|   | jjj}| }t jrtdt| tdt| | | |  | |jd dS )zMChecking modifying one column (single column version,
         modify_column)r   r   zRunning %s.test08a2...r  rW  r[  r^  r_  r`  rc  r/   r  rS  rg  r  r   r  rg  rh  ri  rj  r)   N)r   r   r   rv   rG   rn   r   ro   rP  r   r   r   modify_columnrm  rn  r  r  ro  r   rp  r   rq  r!   r!   r"   test08a2  s.    




zRecArrayIO.test08a2c                 C   s  t jr tdd td| jj  | j| jjdt}t	j
ddgdd}|| |d	d
g t	jt
g dgdd}|jd|dgd t	j
g dddd}| jr|   | jjj}| }t jrtdt| tdt| | | |  | |jd dS )z?Checking modifying one column (single column version, recarray)r   r   zRunning %s.test08b...r  rW  r[  r^  r_  r`  rc  r  r  r/   rS  r  r  rg  rh  ri  rj  r)   N)r   r   r   rv   rG   rn   r   ro   rP  r   r   r   
fromarraysr   r  rm  rn  r  r  ro  r   rp  r   rt   r   r   r   rr  rs  r!   r!   r"   r  @  s0    




zRecArrayIO.test08bc                 C   s  t jr tdd td| jj  | j| jjdt}t	j
ddgdd}|| |d	d
g t	jt
g dgdd}|jd|dd t	j
g dddd}| jr|   | jjj}| }t jrtdt| tdt| | | |  | |jd dS )zVChecking modifying one column (single column version, recarray,
        modify_column)r   r   zRunning %s.test08b2...r  rW  r[  r^  r_  r`  rc  r  r  r/   rS  r  r  rg  rh  ri  rj  r)   N)r   r   r   rv   rG   rn   r   ro   rP  r   r   r   r  r   r  rm  rn  r  r  ro  r   rp  r   r  r!   r!   r"   test08b2c  s0    




zRecArrayIO.test08b2c                 C   s   t jr tdd td| jj  | j| jjdt}t	j
ddgdd}|| |d	d
g |jddggdgd t	j
g dddd}| jr|   | jjj}| }t jrtdt| tdt| | | |  | |jd dS )zMChecking modifying one column (single column version,
        single element)r   r   zRunning %s.test08c...r  rW  r[  r^  r_  r`  rc  r/   r)   rS  r  )rW  )r)   r\  r]  r`  rc  rg  rh  ri  rj  Nr  rq  r!   r!   r"   test08c  s.    




zRecArrayIO.test08cc                 C   s   t jr tdd td| jj  | j| jjdt}t	j
ddgdd}|| |d	d
g g dg dg}|jd|ddgd t	j
g dddd}| jr|   | jjj}| }t jrtdt| tdt| | | |  | |jd dS )z:Checking modifying table columns (multiple column version)r   r   zRunning %s.test09a...r  rW  r[  r^  r_  r`  rc  )aaabbbccc)rZ  皙?333333?r/   rT  rU  r  )rW  )r1   s   aaarZ  )ra  s   bbbr  )r5   s   cccr  rg  rh  ri  rj  r)   Nr  r  r!   r!   r"   test09a  s0    




zRecArrayIO.test09ac                 C   s   t jr tdd td| jj  | j| jjdt}t	j
ddgdd}|| |d	d
g t	j
g ddd}|jd|ddgd t	j
g dddd}| jr|   | jjj}| }t jrtdt| tdt| | | |  | |jd dS )z=Checking modifying table columns (multiple columns, recarray)r   r   zRunning %s.test09b...r  rW  r[  r^  r_  r`  rc  )r  rZ  r  r  )r  r  a3,f8r/   rT  rU  r  )rX  ZdberZ  r1   r  rZ  ra  r  r  )r5   r  r  rg  rh  ri  rj  r)   Nr  r  r!   r!   r"   r    s4    





zRecArrayIO.test09bc                 C   s  t jr tdd td| jj  | j| jjdt}t	j
ddgdd}|| |d	d
g t	j
ddgdd}|jdd|ddgd t	j
g dddd}| jr|   | jjj}| }t jrtdt| tdt| | | |  | |jd dS )z6Checking modifying table columns (single column, step)r   r   zRunning %s.test09c...r  rW  r[  r^  r_  r`  rc  r  r  r  r/   r1   rT  rU  rg  rh  r   rt  )r  r  r  )r5   r  r  rg  rh  ri  rj  r)   Nr  r  r!   r!   r"   test09c  s8    






zRecArrayIO.test09cc                 C   s  t jr tdd td| jj  | j| jjdt}t	j
ddgdd}|| |d	d
g t	j
ddgdd}|jdd|ddgd t	j
g dddd}| jr|   | jjj}| }t jrtdt| tdt| | | |  | |jd dS )z9Checking modifying table columns (multiple columns, step)r   r   zRunning %s.test09d...r  rW  r[  r^  r_  r`  rc  )r  r]  r  r  r   r1   rT  rU  r  ))rX  r  r]  )r1   Zdedr]  r  r  rg  rh  ri  rj  r)   Nr  r  r!   r!   r"   test09d  s8    






zRecArrayIO.test09dc                 C   s   t jr tdd td| jj  | j| jjdt}t	j
ddgdd}|| |d	d
g |ddg}ddg|d dd< ddg|d dd< |ddg| t	j
g dddd}| jr|   | jjj}| }t jrtdt| tdt| | | |  | |jd dS )zMChecking modifying rows using coordinates
         (readCoords/modifyCoords).r   r   zRunning %s.test10a...r  rW  r[  r^  r_  r`  rc  r   r3   7   8   rS  Nffffff??rU  )r  rY  r  r[  r`  )r  rd  r  rg  rh  ri  rj  r)   )r   r   r   rv   rG   rn   r   ro   rP  r   r   r   rK  Zmodify_coordinatesrm  rn  r  r  ro  r   rp  r   r  r!   r!   r"   test10a=  s4    




zRecArrayIO.test10ac                 C   s  t jr tdd td| jj  | j| jjdt}t	j
ddgdd}|| |d	d
g |ddg }ddg|d dd< ddg|d dd< ||ddg< t	j
g dddd}| jr|   | jjj}| }t jrtdt| tdt| | | |  | |jd dS )z<Checking modifying rows using coordinates (getitem/setitem).r   r   zRunning %s.test10b...r  rW  r[  r^  r_  r`  rc  r   r3   r  r  rS  Nr  r  rU  r  rg  rh  ri  rj  r)   )r   r   r   rv   rG   rn   r   ro   rP  r   r   r   rm  rn  r  r  ro  r   rp  r   r  r!   r!   r"   test10bg  s4    




zRecArrayIO.test10bN)rG   rH   rI   r  rt  ry  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!   r!   r!   r"   r    s,   $$""!#"##$%$$$%*r  c                   @   s   e Zd ZdZdS )RecArrayIO1r   NrG   rH   rI   rm  r!   r!   r!   r"   r    s   r  c                   @   s   e Zd ZdZdS )RecArrayIO2r/   Nr  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 )CopyTestCasec                 C   s   |j |j  }}| t|t| | D ]\}}| ||v  || }| |t| t|tr| |j	|j	 | |j
|j
 | |j|j | |j|j q*t|tr*| |j|j | |j|j q*dS )z:Assert that column instance maps of both tables are equal.N)r   r   r   itemsr   ZassertIsInstancer   r   r   r   pathnamer~   r   Z_v_colnamesZ_v_colpathnames)rt   table1table2Zcinst1Zcinst2	cpathnamerS  rT  r!   r!   r"   assertEqualColinstances  s    

z$CopyTestCase.assertEqualColinstancesc              	   C   s  t jr tdd td| jj  tjddgdd| jd}| j	| jj
d	|d
}| jrxt jrbtd | jdd | jj
j}|dd}| jrt jrtd | jdd | jj
j}| jj
j}t jrtd|  td|  tdt|j tdt|j |D ]6}|j}|jD ]$}| || |j||dd  qq| |j|j | |j|j | |j|j | |j|j | || | t|jt|j | jr| jd dkr| |jjg d | |jjd n$| |jjg d | |jjd | |jj|jj | |jj|jj | |j|j | |jj |jj  | |jj!|jj! | |jj"|jj" | |jj#|jj# dS )zChecking Table.copy() method.r   r   zRunning %s.test01_copy...rW  r  rg  zi4,S3,f8rt  rs  r}  r  title table1(closing file version)r  r  r  r  	table1-->	table2-->attrs table1-->attrs table2-->r  r   allow_paddingTr   r)   r   r:   )r   r)   r8   r  N)$r   r   r   rv   rG   r   r   r}  rn   r   ro   rr   rn  r  r  r  r  ro  attrsr  r   r   r   r`   r   r  r   open_kwargs
_v_offsets_v_itemsizer   r   r   r   r   r   )rt   r   r  r  row1r  r   r!   r!   r"   test01_copy  sf    







zCopyTestCase.test01_copyc              	   C   s  t jr tdd td| jj  tjddgdd| jd}| j	| jj
d	|d
}| jrxt jrbtd | jdd | jj
j}| jdd}||d}| jrt jrtd |   | jj
j}| jj
jj}t jrtd|  td|  tdt|j tdt|j |D ]8}|j}|jD ]$}| || |j||dd  qq| |j|j | |j|j | |j|j | |j|j | || | t|jt|j | jr| jd dkr| |jjg d | |jjd n$| |jjg d | |jjd | |jj|jj | |jj|jj | |j |j  | |j!j"|j!j" | |j!j#|j!j# | |j!j$|j!j$ | |j!j%|j!j% dS )z.Checking Table.copy() method (where specified)r   r   zRunning %s.test02_copy...)rY  rX  rZ  )r  r1   r]  rg  zS3,i4,f8r  r  r  r  r  r  r  group1r  r  r  r  r  r  r   r  Tr  r:   )r   r3   r8   r  N)&r   r   r   rv   rG   r   r   r}  rn   r   ro   rr   rn  r  r   r  r  r  r  ro  r  r  r   r   r   r`   r   r  r   r  r  r  r   r   r   r   r   r   rt   r   r  r  r  r  r  r   r!   r!   r"   test02_copy  sh    





zCopyTestCase.test02_copyc              
   C   s  t jr tdd td| jj  tjdd dd| jd}| j	| jj
d	|d
}| jrxt jrbtd | jdd | jj
j}| jdd}d|_|j|ddd}| jrt jrtd |   | jj
j}| jj
jj}t jrtd|  td|  tdt|j tdt|j |D ]<}|j}|jD ](}| t|| |j||dd  q&q| |j|j | |j|j | |j|j | |j|j | || | t|jt|j | jr| j d dkr| |jj!g d | |jj"d n$| |jj!g d | |jj"d | |jj!|jj! | |jj"|jj" | d|j# | |j$j%|j$j% | |j$j&|j$j& | |j$j'|j$j' | |j$j(|j$j( dS )z7Checking Table.copy() method (table larger than buffer)r   r   zRunning %s.test03_copy...   aaaabbbbccccddddeeeeffffggggr  z2i2,i4, (2,3)u2, (1,)f4, f8r8   )rs  r`   r}  r  r  r  r  r  r  r  r1   r  ztitle table2r   r  r  r  r  r  r   r  T)r   r)   r   rh   rC   rF   N))r   r   r   rv   rG   r   r   r}  rn   r   ro   rr   rn  r  r   r   r  r  r  r  ro  r  r  r   r   r   r   r   r`   r   r  r   r  r  r  r   r   r   r   r   r   r  r!   r!   r"   test03_copy@  sj    




zCopyTestCase.test03_copyc              	   C   s  t jr tdd td| jj  tjddgdd| jd}| j	| jj
d	|d
}| jrxt jrbtd | jdd | jj
j}| jdd}|j|dtjddd}| jrt jrtd |   | jj
j}| jj
jj}t jrtd|  td|  tdt|j tdt|j |D ]8}|j}|jD ]$}| || |j||dd  q(q| |j|j | |j|j | |j|j | |j|j | || | t|jt|j | jr| jd dkr| |jj g d | |jj!d n$| |jj g d | |jj!d | |jj |jj  | |jj!|jj! | |j"|j" | d|j#j$ | d |j#j% | |j#j&|j#j& d!S )"z7Checking Table.copy() method (different compress level)r   r   zRunning %s.test04_copy...)rZ  rY  rX  )r]  r  r1   rg  zf8,S3,i4r  r  r  r  r  r  r  r  r  r7   r   )r   r  r  r  r  r  r   r  Tr   r   r  r:   r   r   r  r  r/   N)'r   r   r   rv   rG   r   r   r}  rn   r   ro   rr   rn  r  r   r  rU   r   r  r  r  ro  r  r  r   r   r   r`   r   r  r   r  r  r  r   r   r   r   r   r  r!   r!   r"   test04_copy  sj    






zCopyTestCase.test04_copyc              	   C   s  t jr tdd td| jj  tjddgdd| jd}| j	| jj
d	|d
}d|j_d|j_| jrt jrrtd | jdd | jj
j}| jdd}|j|ddtjddd}| jrt jrtd |   | jj
j}| jj
jj}t jr&td|  td|  tdt|j tdt|j |D ]8}|j}|jD ]$}| || |j||dd  q:q*| |j|j | |j|j | |j|j | |j|j | || | t|j t|j  | jr| j!d dkrn$| |j j$g d | |j j%d  | |j j$|j j$ | |j j%|j j% | |j&|j& | d|j'j( | d|j'j) | |j'j*|j'j* | |jjd | |jjd d!S )"z5Checking Table.copy() method (user attributes copied)r   r   zRunning %s.test05_copy...rW  r  rg  zi8,S3,f8r  r  r  attr1r1   r  r  r  r  r  r  r/   r7   r  Zcopyuserattrsr   r  r  r  r  r  r   r  Tr  r   N)+r   r   r   rv   rG   r   r   r}  rn   r   ro   r  r  attr2rr   rn  r  r   r  rU   r   r  r  r  ro  r  r   r   r   r`   r   r  r   r  r'   r#   r  r  r   r   r   r   r   r  r!   r!   r"   test05_copy  sr    







zCopyTestCase.test05_copyc              	   C   s  t jr tdd td| jj  tjddgdd| jd}| j	| jj
d	|d
}d|j_d|j_| jrt jrrtd | jdd | jj
j}| jdd}|j|ddtjddd}| jrt jrtd |   | jj
j}| jj
jj}t jr&td|  td|  tdt|j tdt|j |D ]8}|j}|jD ]$}| || |j||dd  q:q*| |j|j | |j|j | |j|j | |j|j | || | t|j t|j  | jr| j!d dkr| |j j"g d | |j j#d n$| |j j"g d  | |j j#d! | |j j"|j j" | |j j#|j j# | |j$|j$ | d|j%j& | d"|j%j' | |j%j(|j%j( | t)|jdd | t)|jd#d d$S )%z9Checking Table.copy() method (user attributes not copied)r   r   zRunning %s.test05b_copy...rW  r  rg  zi8,S3,f4r  r  r  r  r1   r  r  r  r  r  r  r   r7   r  r  r  r  r  r  r  r  Tr  r:   r  r  r/   r  N)*r   r   r   rv   rG   r   r   r}  rn   r   ro   r  r  r  rr   rn  r  r   r  rU   r   r  r  r  ro  r  r   r   r   r`   r   r  r   r  r  r  r   r   r   r   r   rT   r  r!   r!   r"   test05b_copy'  st    






zCopyTestCase.test05b_copyN)
rG   rH   rI   r  r  r  r  r  r  r   r!   r!   r!   r"   r    s   MGKGUr  c                   @   s   e Zd ZdZdZddiZdS )CloseCopyTestCaseTFr  NrG   rH   rI   rr   r}  r  r!   r!   r!   r"   r  v  s   r  c                   @   s   e Zd ZdZdZddiZdS )OpenCopyTestCaseFr  TNr  r!   r!   r!   r"   r  |  s   r  c                   @   s   e Zd ZdZdZddiZdS )AlignedCloseCopyTestCaseTr  FNr  r!   r!   r!   r"   r    s   r  c                   @   s   e Zd ZdZdZddiZdS )AlignedOpenCopyTestCaseFTr  Nr  r!   r!   r!   r"   r    s   r  c                   @   s   e Zd ZdZdZddiZdS ) AlignedNoPaddingOpenCopyTestCaseFTr  Nr  r!   r!   r!   r"   r    s   r  c                   @   s   e Zd Zdd Zdd ZdS )CopyIndexTestCasec                 C   sj  t jr tdd td| jj  tjdd ddd}| j| jj	d	|d
}| j
rtt jr^td | jdd | jj	j}| j|_|jdd| j| j| jd}t jrtd|  td|  tdt|j tdt|j || j| j| j }t|jd D ]2}|jD ]&}| t|| | || |  qqt jrRtd|j td|jd  | |jd |j dS )z*Checking Table.copy() method with indexes.r   r   zRunning %s.test01_index...r  r  z$2i2, (1,)i4, (2,3)u2, (1,)f4, (1,)f8r{   rs  r`   r  r  r  r  r  r  r  rg  r   rh  r  r  r  r  r   nrows in table2-->and it should be-->N)r   r   r   rv   rG   r   r   rn   r   ro   rr   rn  r  r   r  rg  r   rh  r  ro  r  r   r`   r   r   r   r   r   rt   r   r  r  rs  r  r   r!   r!   r"   test01_index  sH    




zCopyIndexTestCase.test01_indexc                 C   s  t jr tdd td| jj  tjdd ddd}| j| jj	d	|d
}| j
rtt jr^td | jdd | jj	j}| j|_|jdd| j| j| jd}|   | jj	j}| jj	j}t jrtd|  td|  tdt|j tdt|j || j| j| j }t|jd D ]4}|jD ]&}| t|| | || |  q qt jrptd|j td|jd  | |jd |j dS )z>Checking Table.copy() method with indexes (close file version)r   r   z Running %s.test02_indexclosef...r  r  z2i2, i4, (2,3)u2, f4, f8r{   r  r  r  r  r  r  r  r  r	  r  r  r  r  r   r
  r  N)r   r   r   rv   rG   r   r   rn   r   ro   rr   rn  r  r   r  rg  r   rh  r  r  ro  r  r   r`   r   r   r   r   r   r  r!   r!   r"   test02_indexclosef  sL    






z$CopyIndexTestCase.test02_indexclosefN)rG   rH   rI   r  r  r!   r!   r!   r"   r    s   0r  c                   @   s    e Zd ZdZdZdZdZdZdS )CopyIndex1TestCaser1   r/   r   r8   NrG   rH   rI   r   rr   rg  r   rh  r!   r!   r!   r"   r    s
   r  c                   @   s    e Zd ZdZdZdZdZdZdS )CopyIndex2TestCaser1   r   rz   r/   Nr  r!   r!   r!   r"   r    s
   r  c                   @   s    e Zd ZdZdZdZdZdZdS )CopyIndex3TestCaser3   r/   r8   Nr  r!   r!   r!   r"   r    s
   r  c                   @   s    e Zd ZdZdZdZdZdZdS )CopyIndex4TestCaser)   r   r7   r/   Nr  r!   r!   r!   r"   r    s
   r  c                   @   s    e Zd ZdZdZdZdZdZdS )CopyIndex5TestCaser1   r/   r3   r8   Nr  r!   r!   r!   r"   r    s
   r  c                   @   s    e Zd ZdZdZdZdZdZdS )CopyIndex6TestCaser1   r   r3   r7   Nr  r!   r!   r!   r"   r    s
   r  c                   @   s    e Zd ZdZdZdZdZdZdS )CopyIndex7TestCaser1   r/   r   r8   r{   Nr  r!   r!   r!   r"   r  '  s
   r  c                   @   s    e Zd ZdZdZdZdZdZdS )CopyIndex8TestCaser1   r   r7   r3   r/   Nr  r!   r!   r!   r"   r  /  s
   r  c                   @   s    e Zd ZdZdZdZdZdZdS )CopyIndex9TestCaser1   r/   r3   r)   Nr  r!   r!   r!   r"   r  7  s
   r  c                   @   s    e Zd ZdZdZdZdZdZdS )CopyIndex10TestCaser/   r   r3   r)   r1   Nr  r!   r!   r!   r"   r  ?  s
   r  c                   @   s    e Zd ZdZdZdZdZdZdS )CopyIndex11TestCaser1   r/   r@  rz   Nr  r!   r!   r!   r"   r  G  s
   r  c                   @   s    e Zd ZdZdZdZdZdZdS )CopyIndex12TestCaser3   r   rz   Nr/   r  r!   r!   r!   r"   r  O  s
   r  c                   @   s   e Zd Zdd Zdd ZdS )LargeRowSizec                 C   sP   t tdd g}| j| jjd| | jjj }| 	|
 |
  dS )z7Checking saving a Table with a moderately large rowsizerg   r1   largerowN)r   r   r   r  rn   r   ro   r  r  r   rp  r  r!   r!   r"   r  X  s    zLargeRowSize.test00c                 C   sN   t jdt dd}| j| jjd| | jjj }| |	 |	  dS )z7Checking saving a Table with an extremely large rowsizer{   z(300,100)i4,(400,400)f8r   r  N)
r   r  r~   rn   r   ro   r  r  r   rp  r  r!   r!   r"   rt  f  s    zLargeRowSize.test01N)rG   rH   rI   r  rt  r!   r!   r!   r"   r  W  s   r  c                   @   s    e Zd ZeZdd Zdd ZdS )DefaultValuesc                 C   s  | j | j jd| j}d|_t|jd }|j}t|D ],}|dkrLd|d< |dkr\d|d< |  q8|	  g d	}d

d}ttdr|d |d ttdr|d |d ttdr|d |d ttdr|d |d ttdr|d |d tjt|g| d|d}d|d d< d|d d< |dd }tjrtd |ddD ]}t| qvtd t|dd  td  t|dd  t|jj|jjD ]"\}	}
| t||	 ||
  qdS )!z@Checking saving a Table with default values (using the same Row)r   .   皙?r3   r1   rK   r)   rL   
r*   r/   r1   r2   r4   r5   er/   r9   r;   a4,i4,i2,f8,f4,u2,a1,b1,c8,c16rk  r=   r>   rm  r@   rn  rA   ro  rB   r;   rp  rE   rq  r_  r  NFirst 10 table values:r   r{   !The first 5 read recarray values:r5   Records should look like:)rn   r   ro   r   r   intr   r   r   r   rr  rT   rU   r   r   r   ru  r   r   r   r   zipr~   rt  r   r   )rt   r   r   r   r   valuesrs  r   rs  name1name2r!   r!   r"   r  v  sX    















zDefaultValues.test00c                 C   s  | j | j jd| j}d|_t|jd }t|D ]2}|dkrHd|jd< |dkrZd|jd< |j  q2|	  g d	}d

d}ttdr|d |d ttdr|d |d ttdr|d |d ttdr|d |d ttdr|d |d tjt|g| d|d}d|d d< d|d d< |dd }tjrtd |ddD ]}t| qvtd t|dd  td  t|dd  t|jj|jjD ]"\}	}
| t||	 ||
  qdS )!zAChecking saving a Table with default values (using different Row)r   r  r   r3   r1   rK   r)   rL   r!  r#  rk  r=   r>   rm  r@   rn  rA   ro  rB   r;   rp  rE   rq  r_  r  Nr$  r   r{   r%  r5   r&  )rn   r   ro   r   r   r'  r   r   r   r   rr  rT   rU   r   r   r   ru  r   r   r   r   r(  r~   rt  r   r   )rt   r   r   r   r)  rs  r   rs  r   r*  r+  r!   r!   r"   rt    sV    
















zDefaultValues.test01N)rG   rH   rI   r(   r   r  rt  r!   r!   r!   r"   r  s  s   Kr  c                   @   s   e Zd Zd ZeZdS )OldRecordDefaultValuesNrc  r!   r!   r!   r"   r,    s   r,  c                   @   s6   e Zd ZedddZeddZeddZe	ddZ
dS )	Record2r)   r*   rD   r/   r?   r1   r2   N)rG   rH   rI   r   rJ   r	   rK   r   rL   r   rM   r!   r!   r!   r"   r-    s   

r-  c                       sD   e Zd ZeZdZ fddZdd Zdd Zdd	 Z	d
d Z
  ZS )LengthTestCaserh   c                    s$   t t|   | jj| _|   d S rk   )rl   r.  rm   rn   ro   rp   rq   rs   ru   r!   r"   rm     s    
zLengthTestCase.setUpc                 C   sJ   | j j| j jd| jdd}|j}t| jD ]}|  q*|  || _	d S )Nr   z__length__ testr  )
rn   r   ro   r   r   r   r   r   r   r   )rt   r   r   r   r!   r!   r"   rq   #  s    
zLengthTestCase.populateFilec                 C   s4   t jr tdd td| jj  t| j| jk dS )zChecking __length__ in Table.r   r   zRunning %s.test01_lengthrows...N)r   r   r   rv   rG   r   r   r   rs   r!   r!   r"   test01_lengthrows2  s    
z LengthTestCase.test01_lengthrowsc                 C   sZ   t jr tdd td| jj  | jtu r<t| jj	dk n| jt
u rVt| jj	dk dS )zChecking __length__ in Cols.r   r   zRunning %s.test02_lengthcols...r   r)   N)r   r   r   rv   rG   r   r(   r   r   r   r-  rs   r!   r!   r"   test02_lengthcols<  s    


z LengthTestCase.test02_lengthcolsc                 C   sJ   t jr tdd td| jj  | jjD ]}tt| jj	|| j
k q(dS )zChecking __length__ in Column.r   r   zRunning %s.test03_lengthcol...N)r   r   r   rv   rG   r   r   r   getattrr   r   )rt   r   r!   r!   r"   test03_lengthcolI  s
    
zLengthTestCase.test03_lengthcol)rG   rH   rI   r(   r   r   rm   rq   r/  r0  r2  r`  r!   r!   ru   r"   r.    s   
r.  c                   @   s   e Zd ZeZdZdS )Length1TestCaserh   N)rG   rH   rI   r(   r   r   r!   r!   r!   r"   r3  U  s   r3  c                   @   s   e Zd ZeZdZdS )Length2TestCaserg   N)rG   rH   rI   r-  r   r   r!   r!   r!   r"   r4  Z  s   r4  c                       sj   e Zd ZdZG dd dej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 )WhereAppendTestCasez$Tests `Table.append_where()` method.c                   @   s"   e Zd Ze Ze ZeddZdS )zWhereAppendTestCase.SrcTblDescr   r,   N)	rG   rH   rI   r	   idr
   v1r   v2r!   r!   r!   r"   
SrcTblDescb  s   r:  c                    sr   t t|   | jdd| j}|j}d|d< d|d< d|d< |  d	|d< d
|d< d|d< |  |  d S )Nr  testr/   r7  g      ?r8  Zaaaaaaaar9  r1   g      @Zbbbbbb)	rl   r5  rm   rn   r   r:  r   r   r   )rt   r   r   ru   r!   r"   rm   g  s    zWhereAppendTestCase.setUpc                 C   s   | j }| jjj}| jdd|}||d t|}|dD ]B}t|}| 	|d |d ko||d |d ko||d |d k q>| 
tt| dS )zQuery with same storage.r  test2id > 1r7  r8  r9  N)r:  rn   ro   r;  r   append_whereiterr   nextr   r   StopIterationrt   
DstTblDesctbl1tbl2Zit2rr  rs  r!   r!   r"   test00_samey  s    
$zWhereAppendTestCase.test00_samec                 C   s   G dd dt j}| jjj}| jdd|}||d t|}|dD ]B}t	|}| 
|d |d ko|d |d ko|d |d k qJ| tt	| d	S )
zQuery with compatible storage.c                   @   s(   e Zd Ze Ze ZeddZe ZdS )z9WhereAppendTestCase.test01_compatible.<locals>.DstTblDescr:   r6  N)	rG   rH   rI   r
   r7  r8  r   r9  Zv3r!   r!   r!   r"   rC    s   
rC  r  r<  r=  r7  r8  r9  N)rU   r  rn   ro   r;  r   r>  r?  r   r@  r   r   rA  rB  r!   r!   r"   test01_compatible  s    
$z%WhereAppendTestCase.test01_compatiblec                 C   s   G dd dt j}| jjj}| jdd|}||d t|}|dD ]F}t	|}| 
|d |d kot|d |d ko|d |d k qJ| tt	| d	S )
z Query with less precise storage.c                   @   s"   e Zd Ze Ze ZeddZdS )z:WhereAppendTestCase.test02_lessPrecise.<locals>.DstTblDescr   r6  N)rG   rH   rI   r	   r7  r8  r   r9  r!   r!   r!   r"   rC    s   rC  r  r<  r=  r7  r8  r9  N)rU   r  rn   ro   r;  r   r>  r?  r   r@  r   r'  r   rA  rB  r!   r!   r"   test02_lessPrecise  s    
(z&WhereAppendTestCase.test02_lessPrecisec                 C   sB   G dd dt j}| jjj}| jdd|}| t|j|d dS )z Query with incompatible storage.c                   @   s&   e Zd ZeddZe ZeddZdS )z;WhereAppendTestCase.test03_incompatible.<locals>.DstTblDescr)   r6  r   N)rG   rH   rI   r   r7  r
   r8  r9  r!   r!   r!   r"   rC    s   
rC  r  r<  z
v1 == b"1"N)	rU   r  rn   ro   r;  r   r   r  r>  rt   rC  rD  rE  r!   r!   r"   test03_incompatible  s    
z'WhereAppendTestCase.test03_incompatiblec                 C   sB   G dd dt j}| jjj}| jdd|}| t|j|d dS )z#Query with storage lacking columns.c                   @   s   e Zd Ze ZeddZdS )z7WhereAppendTestCase.test04_noColumn.<locals>.DstTblDescr   r6  N)rG   rH   rI   r
   r8  r   r9  r!   r!   r!   r"   rC    s   rC  r  r<  r=  N)	rU   r  rn   ro   r;  r   r   r   r>  rI  r!   r!   r"   test04_noColumn  s    
z#WhereAppendTestCase.test04_noColumnc              	   C   sN  t jdd}z t|d6}| jjj}|dd| j}|	|d W d   n1 sX0    Y  t|dT}|jj}| 
tj|j	|d | d | jjj}| 
tj|j	|d W d   n1 s0    Y  t|d	$}|jj}|	|d W d   n1 s
0    Y  W tj|rJt| ntj|rHt| 0 dS )
z%Appending to a table in another file.z.h5)suffixre   r  r;  r=  Nr   r  )tempfileZmktemprU   r   rn   ro   r;  r   r:  r>  r   ZFileModeErrorrn  r  pathexistsremove)rt   Zh5fname2Zh5file2rD  rE  r!   r!   r"   test05_otherFile  s.    
*

".z$WhereAppendTestCase.test05_otherFilec                 C   s   | j }| jjj}| jdd|}|| t|}| D ]B}t|}| 	|d |d kox|d |d kox|d |d k q:| 
tt| dS )zAppend whole table.r  r<  r7  r8  r9  N)r:  rn   ro   r;  r   r>  r?  __iter__r@  r   r   rA  rB  r!   r!   r"   test06_wholeTable  s    

$z%WhereAppendTestCase.test06_wholeTable)rG   rH   rI   __doc__rU   r  r:  rm   rF  rG  rH  rJ  rK  rQ  rS  r`  r!   r!   ru   r"   r5  _  s   !r5  c                       s$   e Zd Z fddZdd Z  ZS )DerivedTableTestCasec                    s"   t t|   | jddt d S )Nr  original)rl   rU  rm   rn   r   r(   rs   ru   r!   r"   rm     s    zDerivedTableTestCase.setUpc                 C   s0   | j jj}| j dd|j}| |j|j dS )z1Deriving a table from the description of another.r  ZderivedN)rn   ro   rV  r   r   r   )rt   rD  rE  r!   r!   r"   r    s    
zDerivedTableTestCase.test00rG   rH   rI   rm   r  r`  r!   r!   ru   r"   rU    s   rU  c                       s,   e Zd Z fddZdd Zdd Z  ZS )ChunkshapeTestCasec                    s&   t t|   | jjddtdd d S )Nr  r   r  r  )rl   rX  rm   rn   r   r(   rs   ru   r!   r"   rm     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-->r  N)rn   ro   r   r   r   r   r  r   rt   r   r!   r!   r"   r     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).r   rZ  r[  N)rn   rr   rU   r   r   ro   r   r   r   r   r  r   r\  r!   r!   r"   rt  (  s    

zChunkshapeTestCase.test01)rG   rH   rI   rm   r  rt  r`  r!   r!   ru   r"   rX    s   rX  c                       s$   e Zd Z fddZdd Z  ZS )ZeroSizedTestCasec                    s8   t t|   | jddt t d}|dg d S )Nr  r   )c1c2)r/   g@)rl   r]  rm   rn   r   r   r   r   )rt   tru   r!   r"   rm   5  s
    
zZeroSizedTestCase.setUpc                 C   s6   | j jj}tjddd}|| | |jdd dS )zAppending zero length recarray.rT  zi4,f8)r`   r~   r/   zThe number of rows should be 1.N)rn   ro   r   r   r  r   r   r   )rt   r`  r  r!   r!   r"   test01_canAppend>  s    

z"ZeroSizedTestCase.test01_canAppend)rG   rH   rI   rm   ra  r`  r!   r!   ru   r"   r]  4  s   	r]  c                       s$   e Zd Z fddZdd Z  ZS )IrregularStrideTestCasec                    sh   t t|   G dd dtj}| jdd|}tdD ]"}||jd< ||jd< |j	  q8|
  d S )Nc                   @   s    e Zd ZeddZeddZdS )z.IrregularStrideTestCase.setUp.<locals>.IRecordr/   r]   r1   NrG   rH   rI   r   r^  r   r_  r!   r!   r!   r"   IRecordQ  s   
rd  r  r   r{   r^  r_  )rl   rb  rm   rU   r  rn   r   r   r   r   r   rt   rd  r   r   ru   r!   r"   rm   N  s    

zIrregularStrideTestCase.setUpc                 C   sp   | j jj}|d}|d}tjr8td| td| | t|t	j
dtd | t|t	j
dtd dS )z>Selecting rows in a table with irregular stride (but aligned).zc1<5zc2<5z
Selected coords1-->Selected coords2-->r5   r   N)rn   ro   r   get_where_listr   r   r   r   r   r   r  r   )rt   r   coords1coords2r!   r!   r"   r  \  s    




zIrregularStrideTestCase.test00rW  r!   r!   ru   r"   rb  M  s   rb  c                       sD   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Z  Z	S )Issue262TestCasec                    s   t t|   G dd dtj}| jdd|}d|_tdD ]r}||j	d< ||j	d< |j	
  |d	 |j	d< d
| |j	d< |j	
  d
| |j	d< d|d  |j	d< |j	
  q>|  d S )Nc                   @   s    e Zd ZeddZeddZdS )z'Issue262TestCase.setUp.<locals>.IRecordr/   r]   r1   Nrc  r!   r!   r!   r"   rd  m  s   
rd  r  r   r3   rh   r^  r_     i,  rg      )rl   rj  rm   rU   r  rn   r   r   r   r   r   r   re  ru   r!   r"   rm   j  s    



zIssue262TestCase.setUpc                 C   s   | j jj}|jdddd}|jdddd}| }|t|d dk|d d	k @  }tjr~t	  t	d
| t	d| t	d| | 
t|t| t| dS )zRegression test for gh-260z(c1>5)&(c2<30)r   r1   rg  rh  r/   r^  r5   r_  rl  zSelected coords1-->rf  zSelected data-->N)rn   ro   r   rg  r  r   r   r   r   r   r   r   )rt   r   rh  ri  datar!   r!   r"   
test_gh260  s    
"


zIssue262TestCase.test_gh260c                 C   sD   | j jj}|jdddd}tjr0t  td| | t|d dS )z,Regression test for gh-262 (start=0, step=1)(c1>5)&(~(c1>5))r   r/   rm  data -->N	rn   ro   r   rg  r   r   r   r   r   rt   r   rn  r!   r!   r"   test_gh262_01  s    

zIssue262TestCase.test_gh262_01c                 C   sD   | j jj}|jdddd}tjr0t  td| | t|d dS )z,Regression test for gh-262 (start=1, step=1)rp  r/   rm  rq  r   Nrr  rs  r!   r!   r"   test_gh262_02  s    

zIssue262TestCase.test_gh262_02c                 C   sD   | j jj}|jdddd}tjr0t  td| | t|d dS )z,Regression test for gh-262 (start=0, step=2)rp  r   r1   rm  rq  Nrr  rs  r!   r!   r"   test_gh262_03  s    

zIssue262TestCase.test_gh262_03c                 C   sD   | j jj}|jdddd}tjr0t  td| | t|d dS )z,Regression test for gh-262 (start=1, step=2)rp  r/   r1   rm  rq  r   Nrr  rs  r!   r!   r"   test_gh262_04  s    

zIssue262TestCase.test_gh262_04)
rG   rH   rI   rm   ro  rt  ru  rv  rw  r`  r!   r!   ru   r"   rj  i  s   rj  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|   | jdd| j}tdD ]"}||jd< ||jd< |j  q(|	  |j
| _d S )Nr  r   r1   r^  r_  )rl   rx  rm   rn   r   rd  r   r   r   r   r   dflts)rt   r   r   ru   r!   r"   rm     s    

zTruncateTestCase.setUpc                 C   s|   | j jj}|d | jr:tjr(td |   | j jj}tjrNtd|	  | 
|jd |D ]}| 
|d |j q`dS )z7Checking Table.truncate() method (truncating to 0 rows)r   r  table-->r^  Nrn   ro   r   truncaterr   r   r   r   rn  r  r   r   r  rt   r   r   r!   r!   r"   test00_truncate  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 |D ]}| 
|d |j q`dS )z7Checking Table.truncate() method (truncating to 1 rows)r/   r  rz  r^  Nr{  r}  r!   r!   r"   test01_truncate  s    


z TruncateTestCase.test01_truncatec                 C   s|   | j jj}|d | jr:tjr(td |   | j jj}tjrNtd|	  | 
|jd |D ]}| 
|d |j q`dS )z>Checking Table.truncate() method (truncating to == self.nrows)r1   r  rz  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 |jdddD ]}| 
|d |j qj|jdddD ]0}| 
|d | jd  | 
|d | jd  qd	S )
z=Checking Table.truncate() method (truncating to > self.nrows)r)   r  rz  r   r1   )rg  r   r^  r_  N)rn   ro   r   r|  rr   r   r   r   rn  r  r   r   r   r  ry  r}  r!   r!   r"   test03_truncate
  s    


z TruncateTestCase.test03_truncate)	rG   rH   rI   rm   r~  r  r  r  r`  r!   r!   ru   r"   rx    s
   rx  c                   @   s"   e Zd ZG dd dejZdZdS )TruncateOpen1c                   @   s    e Zd ZeddZeddZdS )zTruncateOpen1.IRecordr/   r]   r1   NrG   rH   rI   r   r^  r
   r_  r!   r!   r!   r"   rd  %  s   
rd  r   NrG   rH   rI   rU   r  rd  rr   r!   r!   r!   r"   r  $  s   r  c                   @   s"   e Zd ZG dd dejZdZdS )TruncateOpen2c                   @   s$   e Zd ZedddZedddZdS )zTruncateOpen2.IRecordr/   r3   r.   r-   r1   gNr  r!   r!   r!   r"   rd  ,  s   rd  r   Nr  r!   r!   r!   r"   r  +  s   r  c                   @   s"   e Zd ZG dd dejZdZdS )TruncateClose1c                   @   s    e Zd ZeddZeddZdS )zTruncateClose1.IRecordr/   r]   r1   Nr  r!   r!   r!   r"   rd  3  s   
rd  r/   Nr  r!   r!   r!   r"   r  2  s   r  c                   @   s"   e Zd ZG dd dejZdZdS )TruncateClose2c                   @   s$   e Zd ZedddZedddZdS )zTruncateClose2.IRecordr/   r)   r  r1   r2   Nr  r!   r!   r!   r"   rd  :  s   rd  r/   Nr  r!   r!   r!   r"   r  9  s   r  c                       sd   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Z  ZS )PointSelectionTestCasec                    s   t t|   d}ddgddgg| _d|gd|d gd| d gg| _g d| _t| | _}tj	|dd | _
}||d d d < ||d	 d d < | j| jjd
|| _d S )Nrg   r   r/   rz   ))r   r/   )rh   )r  r)   )r   r{   zi4,f4r   r  r  r   )rl   r  rm   working_keysetnot_working_keysetlimitsr   r  rn  r  recarrrn   r   ro   r   )rt   Nrn  r  ru   r!   r"   rm   A  s"    

zPointSelectionTestCase.setUpc           	      C   s~   | j }| j}| j}| jD ]`\}}||k||k @ }tjr@td| || }|| }tjrjtd| td| t||d qdS )z/Test for point-selections (read, boolean keys).Selection to test:zNumPy selection:zPyTables selection:3NumPy array and PyTables selections does not match.N)	rn  r  r   r  r   r   r   r   r   	rt   rn  r  r   value1value2keyr  r  r!   r!   r"   test01a_read`  s    


z#PointSelectionTestCase.test01a_readc           	      C   sp   | j }| j}| j}| jD ]R\}}t||k||k @ }tjrLtd|t	| || }|| }t
||d qdS )z:Test for point-selections (read, tuples of integers keys).r  r  Nrn  r  r   r  r   r   r   r   r   r   r   r   r  r!   r!   r"   test01b_readr  s    z#PointSelectionTestCase.test01b_readc                 C   sp   | j }| j}| j}| jD ]R\}}t||k||k @ }tjrFtd| ||  t	|d}| 
t|j| qdS )z8Test for point-selections (read, tuples of floats keys).r  Zf4N)rn  r  r   r  r   r   r   r   r   r   r   r   __getitem__)rt   rn  r  r   r  r  r  Zfkeyr!   r!   r"   test01c_read  s    
z#PointSelectionTestCase.test01c_readc           	      C   st   | j }| j}| j}| jD ]V\}}t||k||k @ d }tjrPtd|t	| || }|| }t
||d qdS )z-Test for point-selections (read, numpy keys).r   r  r  Nr  r  r!   r!   r"   test01d_read  s    z#PointSelectionTestCase.test01d_readc           	      C   sx   | j }| j}| j}| jD ]Z\}}t||k||k @ d  }tjrTt	d|t
| || }|| }t||d qdS )z,Test for point-selections (read, list keys).r   r  r  N)rn  r  r   r  r   r   r=  r   r   r   r   r   r   r  r!   r!   r"   test01e_read  s    z#PointSelectionTestCase.test01e_readc                 C   sJ   | j }| j}| jD ]2}tjr&td| || }|| }t||d qd S )Nr  r  )r  r   r  r   r   r   r   r   )rt   r  r   r  r  r  r!   r!   r"   test01f_read  s    

z#PointSelectionTestCase.test01f_readc                 C   s6   | j }| jD ]$}tjr td| | t|j| qd S )Nr  )r   r  r   r   r   r   
IndexErrorr  )rt   r   r  r!   r!   r"   test01g_read  s
    

z#PointSelectionTestCase.test01g_readc           
      C   s   | j }| j}| j}| jD ]\}}t||k||k @ }tjrFtd| || }|dt	| d |d dd< |dt	| d |d dd< |||< |||< |dd }|dd }	t
||	d qdS )z0Test for point-selections (write, boolean keys).r  Nr1   r  r3   r  6NumPy array and PyTables modifications does not match.rn  r  r   r  r   r   r   r   r   r   r   r   
rt   rn  r  r   r  r  r  r   r  r  r!   r!   r"   test02a_write  s"    
  z$PointSelectionTestCase.test02a_writec           
      C   s   | j }| j}| j}| jD ]\}}t||k||k @ }tjrFtd| || }|dt	| d |d dd< |dt	| d |d dd< |||< |||< |dd }|dd }	t
||	d qdS )z0Test for point-selections (write, integer keys).r  Nr1   r  r3   r  r  r  r  r!   r!   r"   test02b_write  s"    
  z$PointSelectionTestCase.test02b_write)rG   rH   rI   rm   r  r  r  r  r  r  r  r  r  r`  r!   r!   ru   r"   r  @  s   	r  c                   @   s   e Zd Zdd ZdS )MDLargeColTestCasec                 C   s   d}dt |ddi}| jdd|}|j  |  | jrP| d | jjj	}t
jrhtd|d d  t|d d t|d	 d
S )z9Create a Table with a very large MD column.  Ticket #211.i   rS  r   )r`   r-   r  r;  r  zFirst row-->Zi1N)r   rn   r   r   r   r   rm  rn  ro   r;  r   r   r   r   r   r   r  )rt   r  r   r   r!   r!   r"   test01_create  s    


z MDLargeColTestCase.test01_createN)rG   rH   rI   r  r!   r!   r!   r"   r    s   r  c                   @   s   e Zd ZdZdS )MDLargeColNoReopenFNr  r!   r!   r!   r"   r    s   r  c                   @   s   e Zd ZdZdS )MDLargeColReopenTNr  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 )ExhaustedIterc                    s   t t|   G dd dtj}| jjdd|dd}td}|j	}t
dD ]<}t
d	D ].}|D ]$}||d
< ||d< ||d< |  q`qXqL|  d S )Nc                   @   s*   e Zd ZeddZeddZeddZdS )z)ExhaustedIter.setUp.<locals>.Observationsr   r]   r/   r3   N)rG   rH   rI   r	   	market_idscenario_idr   r  r!   r!   r!   r"   Observations  s   

r  r  observationsrF   rY     r5   r3   r  r  r  )rl   r  rm   rU   r  rn   r   r   r  r   r   r   r   )rt   r  r   r  r   r  r  Zobsru   r!   r"   rm     s    
zExhaustedIter.setUpc                 C   s   t |dt| S )Nr|   )sumr   )rt   r)  r!   r!   r"   average#  s    zExhaustedIter.averagec                 C   s   |d S )Nr  r!   )rt   r   r!   r!   r"   
f_scenario&  s    zExhaustedIter.f_scenarioc                 C   sx   ddl m} | jjjd}g }||| jD ]&\}}dd |D }|| | q,t	j
rdtd| | |g d dS )	z6Checking iterating an exhausted iterator (ticket #264)r   r   (market_id == 3)c                 S   s   g | ]}|d  qS r  r!   r   r   r!   r!   r"   r   /  r   z0ExhaustedIter.test00_groupby.<locals>.<listcomp>	Means -->      \@r  r  N)	itertoolsr   rn   ro   r  r   r  r   r  r   r   r   r   )rt   r   rx  scenario_meansr  rows_groupedvalsr!   r!   r"   test00_groupby)  s    
zExhaustedIter.test00_groupbyc                 C   st   |    | jjjd}g }t|| jD ]&\}}dd |D }|| | q(t	j
r`td| | |g d dS )z?Checking iterating an exhausted iterator (ticket #264). Reopen.r  c                 S   s   g | ]}|d  qS r  r!   r  r!   r!   r"   r   =  r   z0ExhaustedIter.test01_groupby.<locals>.<listcomp>r  r  N)rn  rn   ro   r  r   r   r  r   r  r   r   r   r   )rt   rx  r  r  r  r  r!   r!   r"   test01_groupby5  s    
zExhaustedIter.test01_groupby)	rG   rH   rI   rm   r  r  r  r  r`  r!   r!   ru   r"   r    s
   r  c                   @   s   e Zd Zdd ZdS )SpecialColnamesTestCasec                 C   s   | j }tjdgdtfdtfdtfgd}||jd|}| t|jdd t	j
r^td	|j t|jd
D ]\}}| || qjd S )Nr/   r1   r3   r  _b__cr   r;  r3   zNumber of columns incorrectzcolnames -->)r  r  r  )rn   r   r   r'  r   ro   r   r   r   r   r   r   r(  )rt   fr  r`  r   r+  r!   r!   r"   test00_check_namesE  s    z*SpecialColnamesTestCase.test00_check_namesN)rG   rH   rI   r  r!   r!   r!   r"   r  D  s   r  c                   @   s   e Zd Zdd ZdS )RowContainsTestCasec                 C   sz   | j }tjdgdd}||jd|}dd | D d }tjrTtd|d d   dD ]}| 	|| qX| 
d	| d S )
Nr  zi1,i2,i4r   r;  c                 S   s   g | ]}|qS r!   r!   r  r!   r!   r"   r   V  r   z;RowContainsTestCase.test00_row_contains.<locals>.<listcomp>r   zrow -->r)   )rn   r   r   r   ro   r   r   r   r   r  ZassertNotIn)rt   r  r  r`  r   itemr!   r!   r"   test00_row_containsR  s    z'RowContainsTestCase.test00_row_containsN)rG   rH   rI   r  r!   r!   r!   r"   r  Q  s   r  c                       sd   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Z  ZS )AccessClosedTestCasec                    sp   t t|   | j| jjdt| _| jj}t	dD ],}d| |d< ||d< |d |d< |
  q4| j  d S )Nr   r{   rw   rJ   rK   r3   rL   )rl   r  rm   rn   r   ro   r(   r   r   r   r   r   )rt   r   r   ru   r!   r"   rm   _  s    

zAccessClosedTestCase.setUpc                 C   s    | j   | tj| jj d S rk   )rn   rr   r   rU   ClosedNodeErrorr   r  rs   r!   r!   r"   	test_readl  s    

zAccessClosedTestCase.test_readc                 C   s"   | j   | tj| jjd d S r  )rn   rr   r   rU   r  r   r  rs   r!   r!   r"   test_getitemq  s    
z!AccessClosedTestCase.test_getitemc                 C   s.   | j d }| j  | tj| j jd| d S r  )r   rn   rr   r   rU   r  __setitem__rt   rn  r!   r!   r"   test_setitemv  s
    

z!AccessClosedTestCase.test_setitemc                 C   s,   | j d }| j  | tj| j j| d S r  )r   rn   rr   r   rU   r  r   r  r!   r!   r"   test_append|  s
    

z AccessClosedTestCase.test_appendc                 C   s"   | j   | tj| jjd d S Nzvar2 > 3)rn   rr   r   rU   r  r   Z
read_wherers   r!   r!   r"   test_readWhere  s    
z#AccessClosedTestCase.test_readWherec                 C   s&   | j   | tj| jj| jd d S r  )rn   rr   r   rU   r  r   r>  rs   r!   r!   r"   test_whereAppend  s
    
z%AccessClosedTestCase.test_whereAppendc                 C   s"   | j   | tj| jjd d S r  )rn   rr   r   rU   r  r   rg  rs   r!   r!   r"   test_getWhereList  s    
z&AccessClosedTestCase.test_getWhereListc                 C   s"   | j   | tj| jjd d S )NrK   )rn   rr   r   rU   r  r   Zread_sortedrs   r!   r!   r"   test_readSorted  s    
z$AccessClosedTestCase.test_readSortedc                 C   s&   | j   | tj| jjddg d S )Nr1   r5   )rn   rr   r   rU   r  r   rK  rs   r!   r!   r"   test_readCoordinates  s    
z)AccessClosedTestCase.test_readCoordinates)rG   rH   rI   rm   r  r  r  r  r  r  r  r  r  r`  r!   r!   ru   r"   r  ^  s   r  c                       sL   e 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 )ColumnIterationTestCasec                    s    t t|   | jjd | _d S )NZIO_BUFFER_SIZE)rl   r  rm   rn   paramsbuffer_sizers   ru   r!   r"   rm     s    zColumnIterationTestCase.setUpc                 C   sP   t |f|}|jD ]}t jdd|||< q| jdd|}|| ||fS )Nr   r  r  r   )r   r  rt  r  r  rn   r   r   )rt   r   r~   r   r   r   r!   r!   r"   create_non_nested_table  s    

z/ColumnIterationTestCase.create_non_nested_tablec                 C   sB   d}|j jD ] }| ||d |  |d7 }q| |t| d S )Nr   r  r/   )r   r  r   r   )rt   r   r   r  r  r!   r!   r"   iterate  s
    
zColumnIterationTestCase.iteratec                 C   sJ   t dgd g g j}| j|d j }| |d |\}}| || d S Ni8r3   r   r1   r   r  r~   r  r,   r  r  rt   r~   Zrows_in_bufferr   r   r!   r!   r"   test_less_than_io_buffer  s    z0ColumnIterationTestCase.test_less_than_io_bufferc                 C   sJ   t dgd g g j}| j|d j }| |d |\}}| || d S Nr  r3   r   r  r  r!   r!   r"   test_more_than_io_buffer  s    z0ColumnIterationTestCase.test_more_than_io_bufferc                 C   sN   t dgd g g j}| j|d j }| |d d |\}}| || d S r  r  r  r!   r!   r"   test_partially_filled_buffer  s    z4ColumnIterationTestCase.test_partially_filled_bufferc                 C   sF   t dgd g g j}| d|\}}| t|d | || d S r  )r   r  r~   r  r   r   r  )rt   r~   r   r   r!   r!   r"   test_zero_length_table  s    z.ColumnIterationTestCase.test_zero_length_table)rG   rH   rI   rm   r  r  r  r  r  r  r`  r!   r!   ru   r"   r    s   r  c                   @   s   e Zd ZejddgddejfdejfgdZdZdZ	e
ej\ZZd	Zd
ZdZd
Zd
ZdZdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd
S )!TestCreateTableArgs)Zaaaar/   g @)Zbbbbr1   g	@)r   ZS4ZicolZfcolr   r  r   r   Nr  Fc                 C   s   | j | j| j| j| j| j| j |   | j 	| j| j}| 
|j| j | 
|jd | 
|jd | 
t|j| jjj d S )NrT  r   )rn   r   r   r   r   r   r   r   rn  r   r   r`   r   r   r   r]  r~   rt  rt   ptarrr!   r!   r"   test_positional_args_01  s    z+TestCreateTableArgs.test_positional_args_01c                 C   s   | j | j| j| j| j| j| j}|| j	 | 
  | j | j| j}| }| |j| j | |jt| j	f | |jt| j	 | t|j| j	jj | |j| j	j | t| j	| d S rk   )rn   r   r   r   r   r   r   r   r   r]  rn  r   r  r   r`   r   r   r   r   r~   rt  r   r   rt   r  Znparrr!   r!   r"   test_positional_args_02  s     z+TestCreateTableArgs.test_positional_args_02c                 C   s   | j | j| jd | j| j| j| j| j| j	| j

 |   | j | j| j}| }| |j| j | |jt| j
f | |jt| j
 | t|j| j
jj | t| j
| d S rk   )rn   r   r   r   r   r   r   r  r   createparentsr]  rn  r   r  r   r`   r   r   r   r   r~   rt  r   r   r  r!   r!   r"   test_positional_args_obj  s$    
z,TestCreateTableArgs.test_positional_args_objc                 C   s   | j j| j| j| j| jd |   | j | j| j}| }| 	|j| j | 	|j
t| jf | 	|jt| j | 	t|j| jjj | t| j| d S )N)r   r]  )rn   r   r   r   r   r]  rn  r   r  r   r`   r   r   r   r   r~   rt  r   r   r  r!   r!   r"   test_kwargs_obj  s    z#TestCreateTableArgs.test_kwargs_objc                 C   s   | j j| j| j| j| jd}|| j |   | j 	| j| j}|
 }| |j| j | |jt| jf | |jt| j | t|j| jjj | t| j| d S )Nr   r   )rn   r   r   r   r   r   r   r]  rn  r   r  r   r`   r   r   r   r   r~   rt  r   r   r  r!   r!   r"   test_kwargs_description_01!  s    z.TestCreateTableArgs.test_kwargs_description_01c                 C   s~   | j j| j| j| j| jd}|   | j | j| j}| |j| j | |j	d | |j
d | t|j| jjj d S )Nr  rT  r   )rn   r   r   r   r   r   rn  r   r   r`   r   r   r   r]  r~   rt  r  r!   r!   r"   test_kwargs_description_022  s    z.TestCreateTableArgs.test_kwargs_description_02c                 C   s   | j j| j| j| j| j| jd}|   | j | j| j}|	 }| 
|j| j | 
|jt| jf | 
|jt| j | 
t|j| jjj | t| j| d S N)r   r]  r   )rn   r   r   r   r   r]  r   rn  r   r  r   r`   r   r   r   r   r~   rt  r   r   r  r!   r!   r"   test_kwargs_obj_description@  s    z/TestCreateTableArgs.test_kwargs_obj_descriptionc              	   C   s(   | j t| jj| j| j| j| jtd d S r  	r   r   rn   r   r   r   r   r]  r(   rs   r!   r!   r"   $test_kwargs_obj_description_error_01Q  s    z8TestCreateTableArgs.test_kwargs_obj_description_error_01c              	   C   s*   | j t| jj| j| j| j| jt d d S r  r  rs   r!   r!   r"   $test_kwargs_obj_description_error_02Z  s    z8TestCreateTableArgs.test_kwargs_obj_description_error_02c              	   C   s(   | j t| jj| j| j| j| jtd d S r  )	r   r   rn   r   r   r   r   r]  rf  rs   r!   r!   r"   $test_kwargs_obj_description_error_03c  s    z8TestCreateTableArgs.test_kwargs_obj_description_error_03)rG   rH   rI   r   r   r\   r^   r]  r   r   r   r~   r   r   r   r   r   r  r   r  r  r  r  r  r  r  r  r  r  r  r!   r!   r!   r"   r    s.   		r  c                  C   sx  t  } d}t|D ]}| t t | t t | t t | t t | t t	 | t t
 | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t | t t  | t t! | t t" | t t# | t t$ | t t% | t t& | t t' | t t( | t t) | t t* | t t+ | t t, | t t- | t t. | t t/ | t t0 | t t1 | t t2 | t t3 | t t4 | t t5 | t t6 | t t7 | t t8 | t t9 | t t: | t t; | t t< | t t= | t t> | t t? | t t@ | t tA | t tB | t tC | t tD | t tE | t tF | t tG | t tH | t tI | t tJ | t tK | t tL | t tM | t tN | t tO | t tP | t tQ | t tR qtSjTrt| t tU | t tV | t tW | t tX | t tY | t tZ | t t[ | S )Nr/   )\r   Z	TestSuiter   ZaddTestZ	makeSuitera  rb  rd  ri  rv  rx  rz  r|  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r/  r0  r1  r3  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,  r3  r4  r5  rU  rX  r]  rb  rj  r  r  r  r  r  r  r  r  r  r  r  r  r  r   Zheavyr  r  r  r  r  r  r  )ZtheSuiteZniterr   r!   r!   r"   suitem  s    r  __main__)ZdefaultTest)r  r   rM  r  r   r    r$   rZ  r   r   r   r   r   rU   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   Ztables.utilsr   r   Ztables.testsr   Ztables.tests.commonr   r   r   r   r   r   ZTestCaseZtables.descriptionr   r#   r'   r  r(   rf  rT   r=   r@   rA   r[   ZTempFileMixinrd   ra  rb  rd  ri  rv  rx  rz  r|  ZskipIfZblosc_availr~  r  Zmin_blosc_bitshuffle_versionr  r  Zblosc_compressor_listr  r  r  r  r  Z	lzo_availr  r  Zbzip2_availr  r  r  r  r  r  r  r  r  r  r  r  r/  r0  r1  r3  rP  rV  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r,  r-  r.  r3  r4  r5  rU  rX  r]  rb  rj  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rG   Z
parse_argvargvZprint_versionsmainr!   r!   r!   r"   <module>   s  @







           "











3 L   ?  ?  s   7     ^   `d = /Wd 19?. #f