B
    0\/                @   s
  d dl m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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l.Z.d dl/m0Z0 d dl/m1Z1 dd Z2dd Z3G dd dej4Z5e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)
Z6e7ed*rej8d+d,e6d-< e7ed.rej9d+d,e6d/< e7ed0rej:d+d,e6d1< e7ed2r2ejd3d'd4e6d5< e7ed6rPejd7d'd4e6d8< G d9d: d:ej4Z;G d;d< d<e#j<e+Z=G d=d> d>e=Z>G d?d@ d@e=Z?G dAdB dBe=Z@e'AejBdCkdDG dEdF dFe@ZCG dGdH dHe=ZDG dIdJ dJe=ZEG dKdL dLe=ZFG dMdN dNe=ZGG dOdP dPe=ZHe'Ae#jI dQG dRdS dSe=ZJe'Ae#jI dQG dTdU dUe=ZKe'Ae#jI dQe'Ae)e#jLk dVe#jL G dWdX dXe=ZMe'Ae#jI dQG dYdZ dZe=ZNe'Ae#jI dQe'Ad[eO kd\G d]d^ d^e=ZPe'Ae#jI dQe'Ad[eO kd\G d_d` d`e=ZQe'Ae#jI dQe'AdaeO kdbG dcdd dde=ZRe'Ae#jI dQe'AdeeO kdfG dgdh dhe=ZSe'Ae#jI dQe'AdieO kdjG dkdl dle=ZTe'Ae#jU dmG dndo doe=ZVe'Ae#jU dmG dpdq dqe=ZWe'Ae#jX drG dsdt dte=ZYe'Ae#jX drG dudv dve=ZZG dwdx dxe=Z[G dydz dze=Z\G d{d| d|e=Z]G d}d~ d~e=Z^G dd de=Z_G dd de=Z`G dd de#j<e+ZaG dd de#j<e+ZbG dd de#j<e+ZcG dd de#j<e+ZdG dd dedZeG dd dedZfG dd dedZgG dd de#j<e+ZhG dd dej4ZiG dd de#j<e+ZjG dd dejZkG dd dejZlG dd dejZmG dd dejZnG dd de#j<e+ZoG dd deoZpG dd deoZqG dd deoZrG dd deoZsG dd de#j<e+ZtG dd detZuG dd detZvG dd de#j<e+ZwG dd dewZxG dd dewZyG dd dewZzG dd dewZ{G dd dewZ|G dd de#j<e+Z}G dd de}Z~G dd de}ZG dd de}ZG ddĄ de}ZG ddƄ de}ZG ddȄ de}ZG ddʄ de}ZG dd̄ de}ZG dd΄ de}ZG ddЄ de}ZG dd҄ de}ZG ddԄ de}ZG ddք de#j<e+ZG dd؄ de#j<e+ZG ddڄ deZG dd܄ dej4ZG ddބ de#j<e+ZG dd deZG dd deZG dd de#j<e+ZG dd de#j<e+ZG dd de#j<e+ZG dd de#j<e+ZG dd de#j<e+ZG dd de#j<e+ZG dd de#j<e+ZG dd deZG dd deZG dd deZG dd deZG dd de#j<e+ZG dd de#j<e+ZG dd deZG dd  d eZG dd de#j<e+ZG dd de#j<e+ZG dd de#j<e+ZG dd de#j<e+ZG d	d
 d
e#j<e+ZG dd de#j<e+Zdd Zedk
re#ej e#  e'jdd dS (      )print_function)absolute_importN)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_dtype)range)zipc               C   s   t ddkS )NP   )structZcalcsize r$   r$   7lib/python3.7/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   s   abcdr   )itemsizedfltpos   )r.   r/      g@   g@      e   T   r"   y              ?   y      ?        	   
Float16Colg@)r.   
Float96ColFloat128ColComplex192Col   )r-   r.   Complex256Col    N)__name__
__module____qualname__r   var1r
   var2r   var3r   var4r   var5r   var6var7r	   var8r   var9var10hasattrtablesr9   var11r:   var12r;   var13var14var15r$   r$   r$   r%   r+   *   s0   





r+   r,   s   abcd)r-   r.   r/   r0   )r.   r/   r1   g@r2   g@r3   r4   r5   Tr6   r"   y              ?r7   y      ?        r8   )
rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   r9   g@)r.   rO   r:   rP   r;   rQ   r<   r=   )r-   r.   rR   r>   r?   rS   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,   s   abcdr   )r-   r.   r/   int32r$   r0   )r/   Zint16r1   Zfloat64g@r2   float32g@Zuint16r3   r4   r5   boolr6   )shaper.   r/   r"   y              ?)r-   rX   r.   r/   r7   y      ?        r8   r9   float16g@r:   float96r;   float128r<   r=   )r-   rX   r.   r>   r?   N)r@   rA   rB   r   rC   r   Z	from_typerD   rE   rF   rG   rH   rI   rJ   r   rK   rL   rM   rN   rO   rP   rQ   rR   rS   r$   r$   r$   r%   rT   i   s(   


rT   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wzThis is the table titled      r   zlibi   c                s.   t t|   | jj| _|   | j  d S )N)superr\   setUph5fileroot	rootgrouppopulateFileclose)self)	__class__r$   r%   rb      s    
zBasicTestCase.setUpc       
      C   s|  | j }|d }g }xLt| 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rj|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rXt|d tjrJ|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rPt|d tjr:|t|d dt|d  g n|dt|d   |t| q W tj	||j| jd| _d S )Nr   z%04drF   rG   r,   r"      i   rJ   
   rK   g        y              ?y                rL   r0   r9   rO   r:   rP   r;   rQ   r<   rR   r>   rS   )dtyperX   )recordtemplater   expectedrowsappendmaxshort
isinstancenpndarrayfloatarrayrM   rN   tuplerecordsrm   record)
rh   ry   rowZbuflistiZtmplistrC   rD   rE   rI   r$   r$   r%   initRecArray   sh    





$$$$
zBasicTestCase.initRecArrayc       
   
   C   s  | j }| jr|   xtdD ]}tj| j| j| j| j	| j
d}|dk rTtj}ndddtj }| jj|dt| | j| j|| j|d}| js|j}x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rJd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rZt|d tjrNt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"r6t|d# tjr"t|d dt|d  g|d#< ndt|d  |d#< ttd$rt|d% tjrvt|d dt|d  g|d%< ndt|d  |d%< |d d&? d'@ |d d&> d(@  |d)< |  qW |  | j|d*t| }	|	}q W d S )+Nr2   )	complevelshuffle
bitshuffle
fletcher32complibr1   biglittle)r   r   table)titlefiltersro   	byteorderz%04dasciirC   rk   rI   rD   rE   rF   rJ   r   r0   rK   g        y              ?y                rL   g      ?rG   r,   r9   rO   r:   rP   r;   rQ   r<   rR   r>   rS   r"   rj   i   rH   group)re   recarrayinitr|   r   rN   Filterscompressr~   r   r   r   sysr   rc   create_tablestrry   r   ro   rz   encoderq   rr   rs   rt   ru   rv   rM   rp   flushcreate_group)
rh   r   jfilterpropsr   r   rz   r{   sgroup2r$   r$   r%   rf      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}x>t||d D ],\}}| d }tt |r|d|  qW | |tj | |tj x*|D ]"}	| j|	 j|	k qW  fd	d|D }
| |
fd
d|D  | |
fdd|D   fdd|D }
| |
fdd|D  | |
fdd|D  x|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 qW | |tj$ x@|D ]8} | }j| }| |j|j | |j |j  q~W dS )z2Checking table description and descriptive fields.z/table0rl   c             S   s   g | ]}d | qS )zvar%dr$   ).0nr$   r$   r%   
<listcomp>Q  s    z4BasicTestCase.test00_description.<locals>.<listcomp>r0   )rY   rZ   r[   Z
complex192Z
complex256r   zvar%dc                s   g | ]} | j qS r$   )rm   )r   colname)columnsr$   r%   r   a  s   c                s   g | ]} j | qS r$   )	coldtypes)r   v)tblr$   r%   r   d  s    c                s   g | ]} j | qS r$   )Z	_v_dtypes)r   r   )descr$   r%   r   f  s    c                s   g | ]} | j qS r$   )type)r   r   )r   r$   r%   r   i  s   c                s   g | ]} j | qS r$   )Zcoltypes)r   r   )r   r$   r%   r   l  s    c                s   g | ]} j | qS r$   )Z_v_types)r   r   )r   r$   r%   r   n  s    zdflt-->zcoldflts-->zdesc.dflts-->N)%rN   	open_fileh5fnamerc   get_nodedescriptionrr   ry   dictrs   rt   r   rm   Z_v_colobjectsr   r   	enumerate
capitalizerM   rp   assertEquallistcolnamesZ_v_names
assertTruecolinstancescolsZ_f_colr   verboseprintr.   r   coldfltsZ_v_dfltsr   Z_v_pathnames)rh   Zdescr_Zfix_n_columnZexpectedNamestypesr   typenamenamer   ZexpectedTypesr   ZcolNameZexpectedColcolr$   )r   r   r   r%   test00_description8  sd    




"

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<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01_readTable...rz/table0r2   c             S   s    g | ]}|d  dk r|d  qS )rD   r_   r$   )r   r   r$   r$   r%   r     s    z2BasicTestCase.test01_readTable.<locals>.<listcomp>zNrows in:zLast record in table ==>z$Total selected records in table ==> r0   rk   rC   rD   rI   s   0001   1rG   r,   rK   g        y              ?y                r_   N)r   r   r   ri   r@   rN   r   r   rc   r   
nrowsinbufiterrows_v_pathnamenrowslenro   r   r   rr   rs   rt   r   r   rv   ru   rV   	complex64)rh   r   resultr   r   r$   r$   r%   test01_readTable  s4    


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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z&Running %s.test01a_fetch_all_fields...r   z/table0r2   c             S   s    g | ]}|d  dk r|  qS )rD   r_   )Zfetch_all_fields)r   r   r$   r$   r%   r     s    z:BasicTestCase.test01a_fetch_all_fields.<locals>.<listcomp>rk   zNrows inr   zLast record in table ==>z$Total selected records in table ==>    z%04dr   rC   rD   rI   r   rG   r,   rK   g        y              ?y                r_   N)r   r   r   ri   r@   rN   r   r   rc   r   r   r   r   r   r   ro   r   r   rr   rs   rt   r   r   rv   ru   rV   r   )rh   r   r   r   r   strnrowsr$   r$   r%   test01a_fetch_all_fields  s:    


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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01a_integer...r   z/table0r2   c             S   s    g | ]}|d  dk r|d qS )rD   r_   r0   r$   )r   r   r$   r$   r%   r     s    z1BasicTestCase.test01a_integer.<locals>.<listcomp>zNrows inr   z$Total selected records in table ==> zAll results ==>r_   N)r   r   r   ri   r@   rN   r   r   rc   r   r   r   r   r   r   r   r   r   )rh   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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01a_extslice...r   z/table0r2   c             S   s&   g | ]}|d  dk r|ddd qS )rD   r_   Nr1   r$   )r   r   r$   r$   r%   r     s    z2BasicTestCase.test01a_extslice.<locals>.<listcomp>rk   zNrows inr   zLast record in table ==>z$Total selected records in table ==> r   z%04dr   Nr1   r   r,   g        y              ?y                r_   )r   r   r   ri   r@   rN   r   r   rc   r   r   r   r   r   r   ro   r   r   rr   rs   rt   r   r   rv   ru   rV   r   )rh   r   r   r   r   r   r$   r$   r%   test01a_extslice  s8    


zBasicTestCase.test01a_extslicec          	   C   st   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	Q R X d	S )
z+Checking table read (using Row['no-field'])r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01a_nofield...r   z/table0c             S   s   g | ]}|d  qS )zno-fieldr$   )r   r   r$   r$   r%   r   !  s    z1BasicTestCase.test01a_nofield.<locals>.<listcomp>zresult:N)r   r   r   ri   r@   rN   r   r   rc   r   assertRaisesKeyError)rh   r   r   r$   r$   r%   test01a_nofield  s    
zBasicTestCase.test01a_nofieldc          	   C   st   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	Q R X d	S )
z#Checking table read (using Row[{}])r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z"Running %s.test01a_badtypefield...r   z/table0c             S   s   g | ]}|i  qS r$   r$   )r   r   r$   r$   r%   r   5  s    z6BasicTestCase.test01a_badtypefield.<locals>.<listcomp>zresult:N)r   r   r   ri   r@   rN   r   r   rc   r   r   	TypeError)rh   r   r   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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01b_readTable...r   z/table0r2   c             S   s    g | ]}|d  dk r|d qS )rD   r_   rG   r$   )r   r   r$   r$   r%   r   G  s    z3BasicTestCase.test01b_readTable.<locals>.<listcomp>zNrows inr   zLast record in table ==>zrec['var5'] ==>rG    )endz	nrows ==>z$Total selected records in table ==> rk   r   r,   r0   r1   rl   c             S   s    g | ]}|d  dk r|d qS )rD   r_   rL   r$   )r   ry   r$   r$   r%   r   b  s    rL   y                g      ?y              ?r_   N)r   r   r   ri   r@   rN   r   r   rc   r   r   r   r   r   r   r   rr   rs   rt   nptassert_array_equalrv   ru   rV   r   Z
complex128)rh   r   r   r   r   r$   r$   r%   test01b_readTable9  sh    







 (((((& zBasicTestCase.test01b_readTablec             C   s   t jr tdd td| jj  t| jd| _| j	d}g }xL|j
ddD ]<}x6|j
ddD ]&}|d d	k r`||d |d g q`W qNW t jrtd
| | |ddgddgddgddgg dS )z#Checking nested iterators (reading)r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01c_readTable...r   z/table0r1   )stoprD   r_   z
result ==>r   r0   N)r   r   r   ri   r@   rN   r   r   rc   r   r   rp   r   )rh   r   r   r   rec2r$   r$   r%   test01c_readTable|  s    

zBasicTestCase.test01c_readTablec             C   s   t jr tdd td| jj  t| jd| _| j	d}g }xB|j
ddD ]2}x,|jdddD ]}||d	 |d	 g qbW qNW t 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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01d_readTable...r   z/table0r1   )r   z	var2 < 20rD   z
result ==>r   r0   N)r   r   r   ri   r@   rN   r   r   rc   r   r   whererp   r   )rh   r   r   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 }x<|
dD ].}x(|
dD ]}||d |d	 g q\W qLW t 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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01e_readTable...r   z/table0zvar3 < 2zvar2 < 3rD   rE   z
result ==>r   r0   r1   N)r   r   r   ri   r@   rN   r   r   rc   r   r   rp   r   )rh   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 }xJ|
dD ]<}x6|
dD ](}|d d	krnP ||d |d
 g q\W qLW t 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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01f_readTable...r   z/table0zvar3 < 2zvar2 < 4rD   r2   rE   z
result ==>r   r0   r1   N)r   r   r   ri   r@   rN   r   r   rc   r   r   rp   r   )rh   r   r   r   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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01g_readTable...r   c             S   s    g | ]}|d  dk r|d  qS )rD   r_   r$   )r   r   r$   r$   r%   r     s    z3BasicTestCase.test01g_readTable.<locals>.<listcomp>z/table0r_   N)r   r   r   ri   r@   rN   r   r   rc   r   r   r   )rh   r   r$   r$   r%   test01g_readTable  s    
zBasicTestCase.test01g_readTablec             C   sT  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 xt| 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r0ddg|d< nd|d< t|d tjrld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r4tt|fd |d< nt||d< tt d rt|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$rt|d% tjrt|d dt|d  g|d%< ndt|d  |d%< tt d&rpt|d' tjr\t|d dt|d  g|d'< ndt|d  |d'< |  qW |  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r8| j}nd,}|  t$|d,|  d-S ).z4Checking whether appending record rows works or not.a)moder   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test02_AppendRows...z/group0/table1zNrows in oldr   zRecord Format ==>zRecord Size ==>z%04dr   rC   rk   rI   rD   rE   rF   rJ   r   r0   rK   g        y              ?y                rL   g      ?rG   r,   r9   rO   r:   rP   r;   rQ   r<   rR   r>   rS   c             S   s    g | ]}|d  dk r|d  qS )rD   r_   r$   )r   r   r$   r$   r%   r   0  s    z3BasicTestCase.test02_AppendRows.<locals>.<listcomp>s   0001r   r_   N)%rN   r   r   rc   rd   re   r   r   r   ri   r@   r   rz   r   r   r   _v_nested_formatsrowsizer   
appendrowsr   rq   rr   rs   rt   ru   rv   rM   rp   r   r   r   r   r   r   rV   r   )rh   r   rz   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}xntdD ]`}| j|dt| }| j|dt| }|j}tjrtd	|jd
|j td|jj td|j xt| jD ]}d| j|  |d< |d d |d< ||d< || j |d< t|d tjr0t|t|| g|d< nt||d< t|d tjr\d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rlt|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#rt|d$ tjrtt|fd |d$< nt||d$< tt d%rHt|d& tjr4t|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(< |  qW |  qNW | 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rV| "t#|d tt|fd tj$ n| !|d t| | jd-kr~| j}nd-}| !t%|d-|  d.S )/z8Checking appending records without flushing explicitely.r   )r   r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z Running %s.test02a_AppendRows...r2   r   r   zNrows in oldr   zRecord Format ==>zRecord Size ==>z%04drC   rk   rI   rD   rE   rF   rJ   r   r0   rK   g        y              ?y                rL   g      ?rG   r,   r9   rO   r:   rP   r;   rQ   r<   rR   r>   rS   c             S   s    g | ]}|d  dk r|d  qS )rD   r_   r$   )r   r   r$   r$   r%   r     s    z5BasicTestCase._test02a_AppendRows.<locals>.<listcomp>Z00011r_   N)&rN   r   r   rc   rd   re   r   r   r   ri   r@   r   r   r   rz   r   r   r   r   r   r   rq   rr   rs   rt   ru   rv   rM   rp   r   rg   table0r   r   r   r   rV   r   )rh   r   r{   r   rz   r   r   r   r$   r$   r%   _test02a_AppendRowsD  s    

""""


z!BasicTestCase._test02a_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}x
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r:ddg|d< nd|d< t|d tjrvd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rJt|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#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'rzt|d( tjrft|d dt|d  g|d(< ndt|d  |d(< |  d)d* |D }qW |  d+d* | D }tjrtd,t | td-| | !t |d.d|j   | !|ddd/ddd0d1d2d3d4d5d6d7d8d9d:d;d<d=d>ddd/ddd0d1d2d3g d?d* | D }tjr`td@t | tdA| | !|dBdCdDdEdFdGdHdIdJdKdBdCdDdEdFdGdHdIdJdKdBdCdDdEdFdGdHdIdJg dLS )Mz:Checking whether appending *and* reading rows works or notr   )r   r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z Running %s.test02b_AppendRows...z/group0/table1zNrows in oldr   zRecord Format ==>zRecord Size ==>r2   z%04dr   rC   rk   rI   rD   rE   rF   rJ   r   r0   rK   g        y              ?y                rL   g      ?rG   r,   r9   rO   r:   rP   r;   rQ   r<   rR   r>   rS   c             S   s   g | ]}|d  qS )rD   r$   )r   Zrow2r$   r$   r%   r     s    z4BasicTestCase.test02b_AppendRows.<locals>.<listcomp>c             S   s    g | ]}|d  dk r|d  qS )rD   r_   r$   )r   Zrow3r$   r$   r%   r     s    zResult length ==>zResult contents ==>r_   r1   r3   r5   r6   r"   r8   rl                  r7         r   c             S   s    g | ]}|d  dk r|d qS )rD   r_   rI   r$   )r   Zrow4r$   r$   r%   r     s    zResult7 length ==>zResult7 contents ==>   0   9   8   7   6   5   4   3   2r   N)"rN   r   r   rc   rd   re   r   r   r   ri   r@   r   r   r   r   r   r   r   rz   r   r   r   rq   rr   rs   rt   ru   rv   rM   rp   r   r   r   r   )rh   r   rz   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}x$tdD ]}d| |d< |  qW |  x$tdD ]}d| |d< |  qW |  dd | D }tjrtdt| td| |jdkr| t|d | |dddddddddddd d!d"d#d$d%d&d'ddddddddddddd d!d"d#d$d%d&d'g' nB| t|d( | |dddddddddddd d!d"d#d$d%d&d'g d)S )*z<Checking appending using the same Row object after flushing.r   )r   r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z Running %s.test02d_AppendRows...z/group0/table1zNrows in oldr   zRecord Format ==>zRecord Size ==>r2   rl   r^   rD   r8   n   c             S   s0   g | ](}d |d   kr dk rn q|d qS )r^   rD   x   r$   )r   r   r$   r$   r%   r   <  s    z4BasicTestCase.test02d_AppendRows.<locals>.<listcomp>zResult length ==>zResult contents ==>w   '   e   f   g   h   i   j   k   l   m   o   p   q   r   s   t   u   v   r   N)rN   r   r   rc   rd   re   r   r   r   ri   r@   r   r   r   r   r   r   r   rz   r   rp   r   r   r   r   )rh   r   rz   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   z/group0/table1r0   zAppend to alive table failed.r   Nr1   zAppend to dead table failed.)rN   r   r   rc   r   r   rz   rp   r   r   Z_node_managercacheZnslots)rh   r   Zoldnrowsrz   Znewnrowsr$   r$   r%   test02e_AppendRowsO  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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test03_endianess...r   z/group0/group1/table2c             S   s    g | ]}|d  dk r|d qS )rE   r_   rD   r$   )r   r   r$   r$   r%   r     s    z2BasicTestCase.test03_endianess.<locals>.<listcomp>zNrows inr   zOn-disk byteorder ==>zLast record in table ==>zSelected records ==>z#Total selected records in table ==>r0   r   r   )r   r   rk   rC   rE   s   0001r_   N)r   r   r   ri   r@   rN   r   r   rc   r   r   r   r   r   r   ro   r   r   r   )rh   r   r   r   r   r$   r$   r%   test03_endianesss  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 )z-Checking whether a single row can be deleted.r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test04_delete...r   z/table0c             S   s    g | ]}|d  dk r|d  qS )rD   r_   r$   )r   r   r$   r$   r%   r     s    z/BasicTestCase.test04_delete.<locals>.<listcomp>zNrows inr   zLast selected value ==>rk   z#Total selected records in table ==>r2   r   r_   c             S   s    g | ]}|d  dk r|d  qS )rD   r_   r$   )r   r   r$   r$   r%   r     s    r0   N)r   r   r   ri   r@   rN   r   r   rc   r   r   r   r   r   r   remove_rowsr   rX   )rh   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 )z-Checking whether a single row can be deleted.r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test04_delete...r   z/table0c             S   s    g | ]}|d  dk r|d  qS )rD   r_   r$   )r   r   r$   r$   r%   r     s    z0BasicTestCase.test04a_delete.<locals>.<listcomp>zNrows inr   zLast selected value ==>rk   z#Total selected records in table ==>r2   r   c             S   s    g | ]}|d  dk r|d  qS )rD   r_   r$   )r   r   r$   r$   r%   r     s    r0   N)r   r   r   ri   r@   rN   r   r   rc   r   r   r   r   r   r   Z
remove_rowr   rX   )rh   r   r   r   r  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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test04b_delete...r   z/table0c             S   s    g | ]}|d  dk r|d  qS )rD   r_   r$   )r   r   r$   r$   r%   r     s    z0BasicTestCase.test04b_delete.<locals>.<listcomp>zNrows inr   zLast selected value ==>rk   z#Total selected records in table ==>r,   rl   r_   c             S   s    g | ]}|d  dk r|d  qS )rD   r_   r$   )r   r   r$   r$   r%   r     s    N)r   r   r   ri   r@   rN   r   r   rc   r   r   r   r   r   r   r  r   rX   )rh   r   r   r   r  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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test04c_delete...r   z/table0c             S   s    g | ]}|d  dk r|d  qS )rD   r_   r$   )r   r   r$   r$   r%   r     s    z0BasicTestCase.test04c_delete.<locals>.<listcomp>r3   rl   r^   c             S   s    g | ]}|d  dk r|d  qS )rD   r_   r$   )r   r   r$   r$   r%   r     s    zNrows inr   zLast selected value ==>rk   z#Total selected records in table ==>)rl   N)r   r   r   ri   r@   rN   r   r   rc   r   r   r   r   r  r   r   r   rX   )rh   r   r   r   r  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}xt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rBd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rZt|d tjrNt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#rFt|d$ tjr2t|d dt|d  g|d$< ndt|d  |d$< |  qW |  |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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test04d_delete...r   z/table0c             S   s    g | ]}|d  dk r|d  qS )rD   r_   r$   )r   r   r$   r$   r%   r   ,  s    z0BasicTestCase.test04d_delete.<locals>.<listcomp>r5   rl   r   z%04drC   rD   rE   rF   rJ   r   r0   rK   g        y              ?y                rL   g      ?rG   r,   r9   rO   r:   rP   r;   rQ   r<   rR   r>   rS   r3   c             S   s    g | ]}|d  dk r|d  qS )rD   r_   r$   )r   r   r$   r$   r%   r   u  s    zNrows inr   zLast selected value ==>rk   z#Total selected records in table ==>N)r   r   r   ri   r@   rN   r   r   rc   r   r   r   r  rz   r   r   rq   rr   rs   rt   ru   rv   rM   rp   r   r   r   r   rX   )rh   r   r   r   r   rz   r{   r  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 )z)Checking whether all rows can be deleted.r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test04e_delete...r   z/table0c             S   s   g | ]}|d  qS )rD   r$   )r   r   r$   r$   r%   r     s    z0BasicTestCase.test04e_delete.<locals>.<listcomp>zNrows inr   zLast selected value ==>rk   z#Total selected records in table ==>r,   r   c             S   s   g | ]}|d  qS )rD   r$   )r   r   r$   r$   r%   r     s    )r   N)r   r   r   ri   r@   rN   r   r   rc   r   r   r   r   r   r   r  ro   r   rX   )rh   r   r   r   r  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 )z)Checking whether all rows can be deleted.r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test04e_delete...r   z/table0c             S   s   g | ]}|d  qS )rD   r$   )r   r   r$   r$   r%   r     s    z0BasicTestCase.test04f_delete.<locals>.<listcomp>zNrows inr   zLast selected value ==>rk   z#Total selected records in table ==>r,   c             S   s   g | ]}|d  qS )rD   r$   )r   r   r$   r$   r%   r     s    r   )r   N)r   r   r   ri   r@   rN   r   r   rc   r   r   r   r   r   r   r  r   rX   )rh   r   r   r   r  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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test04e_delete...r   z/table0c             S   s   g | ]}|d  qS )rD   r$   )r   r   r$   r$   r%   r     s    z0BasicTestCase.test04g_delete.<locals>.<listcomp>zNrows inr   zLast selected value ==>rk   z#Total selected records in table ==>r,   r   r0   r3   c             S   s   g | ]}|d  qS )rD   r$   )r   r   r$   r$   r%   r     s    N)r   r   r   ri   r@   rN   r   r   rc   r   r   r   r   r   r   r  r   rX   )rh   r   r   r   r  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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z!Running %s.test05_filtersTable...r   z/table0z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   ri   r@   rN   r   r   rc   r   r   r   r}   r   Zwhich_lib_versionr   r~   r   r   )rh   r   r$   r$   r%   test05_filtersTable  s0    
z!BasicTestCase.test05_filtersTablec             C   s\   t | j| _| jd}| |jd | |j| jf | |j	d | |j
| j d S )Nz/table0numpyr0   )rN   r   r   rc   r   r   flavorrX   ro   ndimr   )rh   objr$   r$   r%   test06_attributes  s    zBasicTestCase.test06_attributes)1r@   rA   rB   	open_moder   ro   r   r   r~   r   r   r   r+   ry   r   rq   rb   r|   rf   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  __classcell__r$   r$   )ri   r%   r\      sX   D]M%)(C_cs5$&&&!c##$ r\   c               @   s   e Zd ZdZdS )BasicWriteTestCaseZ
BasicWriteN)r@   rA   rB   r   r$   r$   r$   r%   r     s   r   c               @   s   e Zd ZdZeZdS )OldRecordBasicWriteTestCaseZOldRecordBasicWriteN)r@   rA   rB   r   rT   ry   r$   r$   r$   r%   r!    s   r!  c               @   s(   e Zd ZdZeZdZdZdZdZ	dZ
dS )DictWriteTestCaseZ	DictWrite   r2   r   rl   N)r@   rA   rB   r   RecordDescriptionDictry   r   r   startr   stepr$   r$   r$   r%   r"     s   r"  )r2   zrequires Python 2c               @   s(   e Zd Ze Zedeed< dS )DictWriteTestCase2rC   N)	r@   rA   rB   r$  copyry   popsixZ	text_typer$   r$   r$   r%   r'  +  s   r'  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 )NumPyDTWriteTestCaseza4,i4,i2,2f8,f4,i2,a1,b1,c8,c16,z2var1,var2,var3,var4,var5,var6,var7,var8,var9,var10r9   f2rO   r:   f12rP   r;   f16rQ   r<   c24rR   r>   c32rS   N)r@   rA   rB   r   splitformatsnamesrM   rN   rp   rs   rm   joinry   r$   r$   r$   r%   r+  2  s(   
















r+  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RecArrayOneWriteza4,i4,i2,2f8,f4,i2,a1,b1,c8,c16r,  z2var1,var2,var3,var4,var5,var6,var7,var8,var9,var10r9   r-  rO   r:   r.  rP   r;   r/  rQ   r<   r0  rR   r>   r1  rS   Nr   )rX   r3  r4  )r@   rA   rB   r   r2  r3  r4  rM   rN   rp   rx   rv   r5  ry   r$   r$   r$   r%   r6  K  s(   
















r6  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RecArrayTwoWriter^   r0   za4,i4,i2,2f8,f4,i2,a1,b1,c8,c16r,  z2var1,var2,var3,var4,var5,var6,var7,var8,var9,var10r9   r-  rO   r:   r.  rP   r;   r/  rQ   r<   r0  rR   r>   r1  rS   N)rX   r3  r4  )r@   rA   rB   r   ro   r   r2  r3  r4  rM   rN   rp   rx   rv   r5  rn   r$   r$   r$   r%   r7  d  s,   
















r7  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RecArrayThreeWriter^   r0   za4,i4,i2,2f8,f4,i2,a1,b1,c8,c16r,  z2var1,var2,var3,var4,var5,var6,var7,var8,var9,var10r9   r-  rO   r:   r.  rP   r;   r/  rQ   r<   r0  rR   r>   r1  rS   N)rX   r3  r4  )r@   rA   rB   r   ro   r   r2  r3  r4  rM   rN   rp   rx   rv   r5  rn   r$   r$   r$   r%   r8    s,   
















r8  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 )RecArrayAlignedWriteTestCaser9  r^   r0   za4,i4,i2,2f8,f4,i2,a1,b1,c8,c16r,  z2var1,var2,var3,var4,var5,var6,var7,var8,var9,var10r9   r-  rO   r:   r.  rP   r;   r/  rQ   r<   r0  rR   r>   r1  rS   NT)rX   r3  r4  aligned)r@   rA   rB   r   ro   r   r2  r3  r4  rM   rN   rp   rx   rv   r5  rn   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CompressBloscTablesr5   bloscN)r@   rA   rB   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=  r0   r>  N)r@   rA   rB   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CompressBloscBitShuffleTablesr0   r   zblosc:blosclzN)r@   rA   rB   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CompressBloscLZTablesr0   zblosc:blosclzN)r@   rA   rB   r   r   r~   r   r$   r$   r$   r%   rA    s   rA  Zlz4zlz4 requiredc               @   s   e Zd ZdZdZdZdZdS )CompressBloscLZ4TablesTestCaseZCompressLZ4Tablesr0   z	blosc:lz4N)r@   rA   rB   r   r   r~   r   r$   r$   r$   r%   rB    s   rB  c               @   s   e Zd ZdZdZdZdZdS ) CompressBloscLZ4HCTablesTestCaseZCompressLZ4HCTablesr0   zblosc:lz4hcN)r@   rA   rB   r   r   r~   r   r$   r$   r$   r%   rC    s   rC  Zsnappyzsnappy requiredc               @   s   e Zd ZdZdZdZdZdS )!CompressBloscSnappyTablesTestCaseZCompressSnappyTablesr0   zblosc:snappyN)r@   rA   rB   r   r   r~   r   r$   r$   r$   r%   rD    s   rD  r`   zzlib requiredc               @   s   e Zd ZdZdZdZdZdS )CompressBloscZlibTablesTestCaseZCompressZlibTablesr0   z
blosc:zlibN)r@   rA   rB   r   r   r~   r   r$   r$   r$   r%   rE    s   rE  Zzstdzzstd requiredc               @   s   e Zd ZdZdZdZdZdS )CompressBloscZstdTablesTestCaseZCompressZstdTablesr0   z
blosc:zstdN)r@   rA   rB   r   r   r~   r   r$   r$   r$   r%   rF    s   rF  z%LZO compression library not availablec               @   s   e Zd ZdZdZdZdS )CompressLZOTablesTestCaseCompressLZOTablesr0   lzoN)r@   rA   rB   r   r   r   r$   r$   r$   r%   rG    s   rG  c               @   s   e Zd ZdZdZdZdZdS ) CompressLZOShuffleTablesTestCaserH  r0   rI  N)r@   rA   rB   r   r   r~   r   r$   r$   r$   r%   rJ    s   rJ  z'BZIP2 compression library not availablec               @   s   e Zd ZdZdZdZdS )CompressBzip2TablesTestCaseCompressBzip2Tablesr0   bzip2N)r@   rA   rB   r   r   r   r$   r$   r$   r%   rK    s   rK  c               @   s   e Zd ZdZdZdZdZdS )"CompressBzip2ShuffleTablesTestCaserL  r0   rM  N)r@   rA   rB   r   r   r~   r   r$   r$   r$   r%   rN  $  s   rN  c               @   s   e Zd ZdZdZdZdS )CompressZLIBTablesTestCaseCompressOneTablesr0   r`   N)r@   rA   rB   r   r   r   r$   r$   r$   r%   rO  -  s   rO  c               @   s   e Zd ZdZdZdZdZdS )!CompressZLIBShuffleTablesTestCaserP  r0   r`   N)r@   rA   rB   r   r   r~   r   r$   r$   r$   r%   rQ  3  s   rQ  c               @   s   e Zd ZdZdZdZdZdS )Fletcher32TablesTestCaseZFletcher32Tablesr0   r   r`   N)r@   rA   rB   r   r   r~   r   r$   r$   r$   r%   rR  :  s   rR  c               @   s    e Zd ZdZdZdZdZdZdS )AllFiltersTablesTestCaseZAllFiltersTablesr0   r`   N)r@   rA   rB   r   r   r   r~   r   r$   r$   r$   r%   rS  A  s
   rS  c               @   s   e Zd ZdZdZeZdS )CompressTwoTablesTestCaseZCompressTwoTablesr0   N)r@   rA   rB   r   r   r$  ry   r$   r$   r$   r%   rT  I  s   rT  c               @   s   e Zd ZdZdZdZdS )BigTablesTestCaseZ	BigTablesi'  r^   N)r@   rA   rB   r   ro   r   r$   r$   r$   r%   rU  P  s   rU  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)i  i4rl   ip  )ra   rV  rb   
chunkshapers   format_parserrm   hdf_overhead)rh   )ri   r$   r%   rb   [  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   rX  )rN   r   rc   r   rm   rX  r   )rh   r}   r   r$   r$   r%   r   e  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)rh   r}   r$   r$   r%   test_zero_lengthk  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   rl   i )	r   r   rp   rw   r   rX  r   r\  r]  )rh   r}   r$   r$   r%   test_no_compression_one_appendr  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   rl   r3   i )	r   r   rp   rw   r   rX  r   r\  r]  )rh   r}   r$   r$   r%   $test_no_compression_multiple_appendsz  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k  d S )Nr0   rl   r   i )r   r   rp   rw   r   rX  osstatr   st_sizer   absr\  rZ  r   r]  )rh   r}   Z	file_sizer$   r$   r%   test_with_compression  s    
$z8SizeOnDiskInMemoryPropertyTestCase.test_with_compression)
r@   rA   rB   rb   r   r^  r_  r`  re  r  r$   r$   )ri   r%   rV  Z  s   
rV  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 )NrW  rl   r[  r   )r^   )ra   rf  rb   rs   rY  rm   rc   r   r   rX   populate_file)rh   )ri   r$   r%   rb     s
    z NonNestedTableReadTestCase.setUpc             C   s   t | j| j| _xNt| jD ]@\}}|t| jjj }x$t| jjj|D ]\}}|||< qJW qW | j	| j | 
t| jt| j d S )N)rs   zerosrX   rm   rv   r   r   r4  r   rp   r   )rh   row_numrz   r%  valuer   r$   r$   r%   rg    s    z(NonNestedTableReadTestCase.populate_filec             C   s   | j  }t|| j d S )N)r   readr   r   rv   )rh   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   rk  r   r   rv   )rh   rl  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)field)r   rk  r   r   rv   )rh   rl  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 )Nr0   @   rp  )rq  )r   rk  r   r   rv   )rh   rl  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 yjj d W n4 tk
rt } z	dt
|k W d d }~X Y nX d S )NZpythonc                  s   j j dS )N)out)r   rk  r$   )rl  rh   r$   r%   <lambda>  s    zONonNestedTableReadTestCase.test_out_arg_with_non_numpy_flavor.<locals>.<lambda>)ru  z#Optional 'out' argument may only be)rs   emptyrX   rm   r   r  r   r   rk  r   r   )rh   excr$   )rl  rh   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 )N)ru  )	rs   rw  rX   rm   r   rk  r   r   rv   )rh   rl  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)rn  r   rn  )ru  )rs   rw  rm   r   rk  r   r   rv   )rh   rl  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 )NrW  rp  )rq  ru  )rs   rw  rX   r   rk  r   r   rv   )rh   rl  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)?   rW  r0   rs  rp  )rq  ru  )rs   rw  r   rk  r   r   rv   )rh   rl  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   i'  f0r^   )ru  )rs   rw  rm   randomrandintr(  r   rk  r   r   rv   )rh   rl  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   r^   r1   )ru  )rs   rw  rm   r   rk  r   r   rv   )rh   rl  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 )N)r  rW  r   r^   r1   f3)rq  ru  )rs   rw  r   rk  r   r   rv   )rh   rl  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 | y| jjdddd |d W n2 tk
r } z| dt| W d d }~X Y nX d S )N)r^   r   r^   r1   )rq  ru  zoutput array not C contiguous)	rs   rw  rm   r   
ValueErrorr   rk  r   r   )rh   rl  output_slicerx  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| y| jjdddd|d W n2 tk
r } z| dt| W d d }~X Y nX d S )	N)r^   rW  r   r^   r1   r  )rq  ru  zoutput array not C contiguous)rs   rw  r   r  r   rk  r   r   )rh   rl  r  rx  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 yjj d W n4 tk
rj } zdt|k W d d }~X Y nX d S )N)c   c                  s   j j dS )N)ru  )r   rk  r$   )rl  rh   r$   r%   rv    s    zMNonNestedTableReadTestCase.test_all_fields_buffer_too_small.<locals>.<lambda>)ru  zoutput array size invalid, got)	rs   rw  rm   r   r  r   rk  r   r   )rh   rx  r$   )rl  rh   r%    test_all_fields_buffer_too_small  s    z;NonNestedTableReadTestCase.test_all_fields_buffer_too_smallc          
      st   t dd  fdd}t| yjjd d W n4 tk
rn } zdt|k W d d }~X Y nX d S )N)r  rW  c                  s   j jd dS )Nf5)rq  ru  )r   rk  r$   )rl  rh   r$   r%   rv    s    zRNonNestedTableReadTestCase.test_specified_field_buffer_too_small.<locals>.<lambda>r  )rq  ru  zoutput array size invalid, got)rs   rw  r   r  r   rk  r   r   )rh   funcrx  r$   )rl  rh   r%   %test_specified_field_buffer_too_small  s    z@NonNestedTableReadTestCase.test_specified_field_buffer_too_smallc          
      sp   t dj t fdd yjj d W n4 tk
rj } zdt|k W d d }~X Y nX d S )N)r   c                  s   j j dS )N)ru  )r   rk  r$   )rl  rh   r$   r%   rv    s    zMNonNestedTableReadTestCase.test_all_fields_buffer_too_large.<locals>.<lambda>)ru  zoutput array size invalid, got)	rs   rw  rm   r   r  r   rk  r   r   )rh   rx  r$   )rl  rh   r%    test_all_fields_buffer_too_large  s    z;NonNestedTableReadTestCase.test_all_fields_buffer_too_large)r@   rA   rB   rb   rg  rm  ro  rr  rt  ry  rz  r{  r|  r~  r  r  r  r  r  r  r  r  r  r$   r$   )ri   r%   rf    s&   		
	rf  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   r   <>)ra   r  rb   r   r   system_byteorderother_byteorderreverse_byteorders)rh   )ri   r$   r%   rb     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 )NrW  a1r[  r   )r   )rl   rl   r     arp  )r  rs   rY  rm   rc   r   r   rh  Zinput_arrayarangerp   )rh   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  rl   )r   r  r   rk  r   r   rm   r   r   r   rs   r  )rh   rl  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 )Nr  rl   )r   r  r   rk  r   r   rm   r   r  r   r   rs   r  )rh   rl  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 )NrW  r  )rl   )ru  r  rl   )r   r  r  rs   rY  rm   rw  r   rk  r   r   r   r   r   r  )rh   out_dtype_code	out_dtyperl  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 )NrW  r  )rl   )ru  r  rl   )r   r  r  r  rs   rY  rm   rw  r   rk  r   r   r   r   r   r  )rh   r  r  rl  r$   r$   r%   8test_table_other_byteorder_out_argument_system_byteorder9  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 yj
j d W n4 t	k
r } zdt|k W d d }~X Y nX d S )NrW  r  )rl   c                  s   j j dS )N)ru  )r   rk  r$   )rl  rh   r$   r%   rv  H  s    zeTableReadByteorderTestCase.test_table_system_byteorder_out_argument_other_byteorder.<locals>.<lambda>)ru  z#array must be in system's byteorder)r   r  r  r  rs   rY  rm   rw  r   r  r   rk  r   r   )rh   r  r  rx  r$   )rl  rh   r%   8test_table_system_byteorder_out_argument_other_byteorderC  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 yj	j
 d W n4 tk
r } zdt|k W d d }~X Y nX d S )NrW  r  )rl   c                  s   j j dS )N)ru  )r   rk  r$   )rl  rh   r$   r%   rv  S  s    zdTableReadByteorderTestCase.test_table_other_byteorder_out_argument_other_byteorder.<locals>.<lambda>)ru  z#array must be in system's byteorder)r   r  r  rs   rY  rm   rw  r   r  r   rk  r   r   )rh   r  r  rx  r$   )rl  rh   r%   7test_table_other_byteorder_out_argument_other_byteorderN  s    zRTableReadByteorderTestCase.test_table_other_byteorder_out_argument_other_byteorder)r@   rA   rB   rb   r   r  r  r  r  r  r  r  r$   r$   )ri   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 )-BasicRangeTestCaser]   zThis is the table titlei   r^   r   r0   r_   r2   c                s.   t t|   | jj| _|   | j  d S )N)ra   r  rb   rc   rd   re   rf   rg   )rh   )ri   r$   r%   rb   k  s    
zBasicRangeTestCase.setUpc          	   C   sd  | j }xVtdD ]H}tj| j| jd}| jj|dt| | j	| j
|| jd}|j}xt| 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< |  qbW |  | j|dt| }|}qW d S )Nr2   )r}   r~   r   )r   r   ro   z%04drC   rk   rI   rD   rE   rF   rG   r,   r"   rj   i   rH   r   )re   r   rN   r   r   r~   rc   r   r   ry   r   ro   rz   rq   rr   rs   rt   ru   rv   rp   r   r   )rh   r   r   r   r   rz   r{   r   r$   r$   r%   rf   s  s4    

$zBasicRangeTestCase.populateFilec                sf  t  jd _ jd} j|_t j j j	
|j}ttt| } jr| j j j	}g }xrtt|D ]b}|d |  jk rd j	k r||d |  qz|d |  jkrzd j	krz||d |  qzW n jrt| j j j	d}g }xtt|D ]\}||  jk rBd j	k rB|||  n*||  jkrd j	kr|||  qW 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 kr  js jr|d }	n j}	n  jdk r: j j }	n j}	 j|	k rR j}	tjr t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sX jsX||	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rXd j	krX fdd| j j j	D d }
 j jk r4 |
tt j jp"d j	d  n$ |
tt||	pHd j	d   j  d S )Nr   z/table0rD   r   c                s"   g | ]}|d   j k r|d  qS )rD   )r   )r   r   )rh   r$   r%   r     s    z2BasicRangeTestCase.check_range.<locals>.<listcomp>c                s"   g | ]}|d   j kr|d  qS )rD   )r   )r   r   )rh   r$   r%   r     s    r0   zNrows inr   z"Last record *read* in recarray ==>rk   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 )rD   )r   )r   r   )rh   r$   r%   r     s    c                s"   g | ]}|d   j kr|d  qS )rD   )r   )r   r   )rh   r$   r%   r     s    )rN   r   r   rc   r   r   slicer%  r   r&  indicesr   r   r   r   checkrecarrayrk  rp   checkgetColr   ro   r   r   r   r   r   rg   )rh   r   ZresrangeZ	reslengthrecarrayr   Znreccolumnstartrstoprr   r$   )rh   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 )	z*Checking ranges in table iterators (case1)r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01_range...r#  r2   r   r1   N)r   r   r   ri   r@   r   r   r%  ro   r   r&  r  )rh   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 )	z*Checking ranges in table iterators (case1)r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01a_range...r#  r2   r0   N)r   r   r   ri   r@   r   r   ro   r%  r   r&  r  )rh   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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test02_range...r#     r   r2   N)r   r   r   ri   r@   r   r   r%  ro   r   r&  r  )rh   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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test03_range...r   r   rl   N)r   r   r   ri   r@   ro   r   r   r%  r   r&  r  )rh   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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test04_range...r   r0   N)r   r   r   ri   r@   ro   r   r   r%  r   r&  r  )rh   r$   r$   r%   test04_rangeJ	  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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test05_range...r#  rl   r0   r   N)r   r   r   ri   r@   r   r   r%  ro   r   r&  r  )rh   r$   r$   r%   test05_rangeZ	  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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test06_range...r2   r1   rl   N)r   r   r   ri   r@   r   r   r%  ro   r   r&  r  )rh   r$   r$   r%   test06_rangej	  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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test07_range...r1   r2   rl   N)r   r   r   ri   r@   r   r   r%  r   r&  r  )rh   r$   r$   r%   test07_rangez	  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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test08_range...r1   r2   r0   N)r   r   r   ri   r@   r   r   r%  r   r&  r  )rh   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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test09_range...r^   r2   r0   r1   N)r   r   r   ri   r@   r   r   r%  r   r&  r  )rh   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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test10_range...r3   ir1   N)r   r   r   ri   r@   ro   r   r   r%  r  r   r  r&  r  )rh   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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test10a_range...r3   ir   r1   N)r   r   r   ri   r@   ro   r   r   r%  r  r   r  r&  r  )rh   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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test11_range...r3   ir  r0   N)r   r   r   ri   r@   ro   r   r   r%  r  r   r  r&  r  )rh   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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test12_range...r3   rk   r  r0   N)r   r   r   ri   r@   ro   r   r   r%  r  r   r  r&  r  )rh   r$   r$   r%   test12_range	  s    
zBasicRangeTestCase.test12_rangec             C   s   t jr tdd td| jj  d| _y|   W nB tk
rt   t jrft	 \}}}td t| | j
  Y nX d| _y|   W nB tk
r   t jrt	 \}}}td t| | j
  Y nX dS )z+Checking ranges in table iterators (case13)r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test13_range...iz)
Great!, the next ValueError was catched!r   N)r   r   r   ri   r@   r&  r  r  r   exc_inforc   rg   )rh   r   rj  	tracebackr$   r$   r%   test13_range	  s*    
zBasicRangeTestCase.test13_range)$r@   rA   rB   r  r   r+   ry   rq   ro   r   r~   r   r   r%  r   r  r  rb   rf   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$   r$   )ri   r%   r  Z  s>   +lr  c               @   s   e Zd ZdS )IterRangeTestCaseN)r@   rA   rB   r$   r$   r$   r%   r  
  s   r  c               @   s   e Zd ZdZdS )RecArrayRangeTestCaser0   N)r@   rA   rB   r  r$   r$   r$   r%   r  
  s   r  c               @   s   e Zd ZdZdd ZdS )GetColRangeTestCaser0   c          	   C   sj   t jr tdd td| jj  t| jd| _| jj	| _	| j
d}| t |d W dQ R X dS )z-Checking non-existing Field in getCol method r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z%Running %s.test01_nonexistentField...r   z/table0znon-existent-columnN)r   r   r   ri   r@   rN   r   r   rc   rd   r   r   r   r   )rh   r   r$   r$   r%   test01_nonexistentField!
  s    

z+GetColRangeTestCase.test01_nonexistentFieldN)r@   rA   rB   r  r  r$   r$   r$   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 )-GetItemTestCaser]   zThis is the table titlei   r^   r   r0   r_   r2   c                s.   t t|   | jj| _|   | j  d S )N)ra   r  rb   rc   rd   re   rf   rg   )rh   )ri   r$   r%   rb   C
  s    
zGetItemTestCase.setUpc          	   C   sd  | j }xVtdD ]H}tj| j| jd}| jj|dt| | j	| j
|| jd}|j}xt| 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< |  qbW |  | j|dt| }|}qW d S )Nr2   )r}   r~   r   )r   r   ro   z%04drC   rk   rI   rD   rE   rF   rG   r,   r"   rj   i   rH   r   )re   r   rN   r   r   r~   rc   r   r   ry   r   ro   rz   rq   rr   rs   rt   ru   rv   rp   r   r   )rh   r   r   r   r   rz   r{   r   r$   r$   r%   rf   K
  s6    

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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z Running %s.test01a_singleItem...r   r1   rD      r0   N)r   r   r   ri   r@   rN   r   r   rc   rd   r   r   ro   )rh   r   r   r$   r$   r%   test01a_singleItems
  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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z Running %s.test01b_singleItem...r   r  rD   r3   rk   r0   r   N)r   r   r   ri   r@   rN   r   r   rc   rd   r   r   ro   )rh   r   r   r$   r$   r%   test01b_singleItem
  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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z Running %s.test01c_singleItem...r   r1   rD   r  r0   N)r   r   r   ri   r@   rN   r   r   rc   rd   r   r   ro   )rh   r   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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z Running %s.test01d_singleItem...r   r  rD   r3   rk   r0   r   N)r   r   r   ri   r@   rN   r   r   rc   rd   r   r   ro   )rh   r   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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z Running %s.test01e_singleItem...r   r1   rD   r  r0   N)r   r   r   ri   r@   rN   r   r   rc   rd   r   rs   rv   r   ro   )rh   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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z Running %s.test01f_singleItem...r   r1   rD   N)r   r   r   ri   r@   rN   r   r   rc   rd   r   rs   Zuint64r   )rh   r   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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test02_twoItem...r   r1   r5   rD   iNr  )r   r   r   ri   r@   rN   r   r   rc   rd   r   r   tolistr   r   ro   )rh   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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test03_threeItem...r   r1   r5   r2   rD   Nr   r0   )r   r   r   ri   r@   rN   r   r   rc   rd   r   r   r  r   r   ro   )rh   r   r   r$   r$   r%   test03_threeItems
  s    

  z!GetItemTestCase.test03_threeItemsc          	   C   sb   t jr tdd td| jj  t| jd| _| jj	j
}| t |ddd  W dQ R X dS )	z9Checking __getitem__ method with negative step parameter.r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z!Running %s.test04_negativeStep...r   r1   r2   N)r   r   r   ri   r@   rN   r   r   rc   rd   r   r   r  )rh   r   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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z#Running %s.test06a_singleItemCol...r   r1   r  r0   N)r   r   r   ri   r@   rN   r   r   rc   rd   r   r   rD   r   ro   )rh   r   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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z Running %s.test06b_singleItem...r   r  r3   rk   r0   r   N)r   r   r   ri   r@   rN   r   r   rc   rd   r   r   rD   r   ro   )rh   r   r  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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test07_twoItemCol...r   r1   r5   iNr  )r   r   r   ri   r@   rN   r   r   rc   rd   r   r   rD   r   r  r   r   ro   )rh   r   r  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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z!Running %s.test08_threeItemCol...r   r1   r5   r2   Nr   r0   )r   r   r   ri   r@   rN   r   r   rc   rd   r   r   rD   r   r  r   r   ro   )rh   r   r  r$   r$   r%   test08_threeItemsCol3  s    

&&z$GetItemTestCase.test08_threeItemsColc          	   C   sj   t jr tdd td| jj  t| jd| _| jj	j
}|jj}| t |ddd  W dQ R X dS )	z@Checking __getitem__ method in Col with negative step parameter.r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z!Running %s.test09_negativeStep...r   r1   r2   r  N)r   r   r   ri   r@   rN   r   r   rc   rd   r   r   rD   r   r  )rh   r   r  r$   r$   r%   test09_negativeStepE  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   rl   F   r   rD   N)rN   r   r   rc   rd   r   r   r   r   r  read_coordinates)rh   r   idxr   r$   r$   r%   test10_list_integersS  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   rl   r  r   c                s   g | ]}| kqS r$   r$   )r   r   )r  r$   r%   r   g  s    z8GetItemTestCase.test11_list_booleans.<locals>.<listcomp>rD   N)rN   r   r   rc   rd   r   r   r   ro   r   r  r  )rh   r   Z	selectionr   r$   )r  r%   test11_list_booleans`  s    

z$GetItemTestCase.test11_list_booleans)$r@   rA   rB   r  r   r+   ry   rq   ro   r   r~   r   r   r%  r   r  r  rb   rf   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$   r$   )ri   r%   r  3
  s>   (r  c               @   s,   e Zd ZeddZedddZeddZdS )Recr0   )r/   r2   r1   )r-   r/   N)	r@   rA   rB   r
   col1r   col2r   col3r$   r$   r$   r%   r  p  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 )SetItemTestCasec             C   s   | j | j jdt}| j|_tjddgdd}|| |ddg d|d	< tjddd
dg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  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?)i  db2g333333?r1   )i  s   db2g333333?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->r,   N)rc   r   rd   r  
buffersizer   rx   rv   rp   reopen_reopenr  rk  r   r   r   reprr   tostringr   )rh   r   r   r1r2r$   r$   r%   test01w  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ddd
dg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  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?)i  r  g333333?r1   )i  s   db2g333333?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->r,   N)rc   r   rd   r  r  r   rx   rv   rp   r  r  r  rk  r   r   r   r  r   r  r   )rh   r   r   r  r  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ddddg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  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?r0   r2   r1   zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->r,   N)rc   r   rd   r  r  r   rx   rv   rp   r  r  r  rk  r   r   r   r  r   r  r   )rh   r   r   rowsr  r  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ddddg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  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?r0   r2   zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->r,   N)rc   r   rd   r  r  r   rx   rv   rp   r  r  r  rk  r   r   r   r  r   r  r   )rh   r   r   r  r  r  r$   r$   r%   test03  s.    


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ddddg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  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?)r5   s   de2g?r0   Nr1   zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->r,   )rc   r   rd   r  r  r   rx   rv   rp   r  r  r  rk  r   r   r   r  r   r  r   )rh   r   r   r  r  r  r$   r$   r%   test04  s.    


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dd
ddg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  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?rk   r0   )rk   s   dedg?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->r,   N)rc   r   rd   r  r  r   rx   rv   rp   r   r  r  r  r  rk  r   r   r   r  r   r  r   )rh   r   r   r  r  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 dd	d
g|j	j
dd
< tjddddg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  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?r1   r2   r,   r0   )r2   s   db1g333333?)r,   s   de1g?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->N)rc   r   rd   r  r  r   rx   rv   rp   r   r  r  r  r  rk  r   r   r   r  r   r  r   )rh   r   r   r  r  r$   r$   r%   test06a>  s*    

zSetItemTestCase.test06ac          	   C   s   | j | j jdt}| j|_tjddgdd}|| |ddg | 	t
6 x&| D ]}|jd |d	< |  q\W |  W d
Q R X d
S )z5Checking modifying one column (iterator, __setitem__)r  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?r0   r  N)rc   r   rd   r  r  r   rx   rv   rp   r   NotImplementedErrorr   nrowr   )rh   r   r   rz   r$   r$   r%   test06b^  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ddddg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  )i  s   dbeg333333?)r0   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?r1   r2   r0   r,   )r1   s   dedg?)r2   s   de1g?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->N)rc   r   rd   r  r  r   rx   rv   rp   r   r  r  r  r  rk  r   r   r   r  r   r  r   )rh   r   r   r  r  r$   r$   r%   test07  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ddddg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  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?r1   r0   r,   r2   zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->N)rc   r   rd   r  r  r   rx   rv   rp   r   r  r  r  r  rk  r   r   r   r  r   r  r   )rh   r   r   r  r  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ddddg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  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?)r5   s   de2g?r0   Nr1   zOriginal table-->zShould look like-->r,   )rc   r   rd   r  r  r   rx   rv   rp   r  r  r  rk  r   r   r   r  r   r  r   )rh   r   r   r  r  r  r$   r$   r%   test09  s,    


zSetItemTestCase.test09N)r@   rA   rB   r  r  r  r  r  r  r  r  r  r  r  r$   r$   r$   r%   r  v  s     !##  & r  c               @   s   e Zd ZdZdZdS )SetItemTestCase1r   r0   N)r@   rA   rB   r  r  r$   r$   r$   r%   r    s   r  c               @   s   e Zd ZdZdZdS )SetItemTestCase2r0   r1   N)r@   rA   rB   r  r  r$   r$   r$   r%   r    s   r  c               @   s   e Zd ZdZdZdS )SetItemTestCase3r   i  N)r@   rA   rB   r  r  r$   r$   r$   r%   r    s   r  c               @   s   e Zd ZdZdZdS )SetItemTestCase4r0   i  N)r@   rA   rB   r  r  r$   r$   r$   r%   r    s   r  c               @   sd   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	d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 x2|	dd	D ]"}d
\|d< |d< |d< |
  qTW tjddddg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  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?r1   r2   )i  r  g333333?r  r  r  )i  s   db2g333333?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->r,   N)rc   r   rd   r  r  r   rx   rv   rp   r   updater  r  r  rk  r   r   r   r  r   r  r   )rh   r   r   rz   r  r  r$   r$   r%   r    s.    

zUpdateRowTestCase.test01c             C   s2  | j | j jdt}| j|_tjddgdd}|| |ddg x`|	dd	d
D ]N}|j
dkr|d\|d< |d< |d< n |j
d	krd\|d< |d< |d< |  qVW tjddddg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  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?r0   r2   r1   )i  db1g333333?r  r  r  )r5   de2g?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->r,   N)rc   r   rd   r  r  r   rx   rv   rp   r   r  r  r  r  r  rk  r   r   r   r  r   r  r   )rh   r   r   rz   r  r  r$   r$   r%   r    s4    



zUpdateRowTestCase.test02c             C   s0  | j | j jdt}| j|_tjddgdd}|| |ddg x^|	dd	D ]N}|j
dkrzd
\|d< |d< |d< n |j
dkrd\|d< |d< |d< |  qTW tjddddg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  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?r0   r2   )i  r  g333333?r  r  r  r1   )r3   de1g?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->r,   N)rc   r   rd   r  r  r   rx   rv   rp   r   r  r  r  r  r  rk  r   r   r   r  r   r  r   )rh   r   r   rz   r  r  r$   r$   r%   r  C  s4    



zUpdateRowTestCase.test03c             C   s4  | j | j jdt}| j|_tjddgdd}|| |ddg xb|j	dd	d
dD ]N}|j
dkr~d\|d< |d< |d< n |j
dkrd\|d< |d< |d< |  qXW tjddddg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  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?r0   r,   r1   )r   r&  )i  r  g333333?r  r  r  r2   )r5   r  g?)r5   s   de2g?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->N)rc   r   rd   r  r  r   rx   rv   rp   r   r  r  r  r  r  rk  r   r   r   r  r   r  r   )rh   r   r   rz   r  r  r$   r$   r%   r  h  s4    



zUpdateRowTestCase.test04c             C   s   | j | j jdt}| j|_tjddgdd}|| |ddg x$|	dd	D ]}d
|d< |
  qTW tjddddg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  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?r0   r1   rk   r  )rk   s   dedg?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->r,   N)rc   r   rd   r  r  r   rx   rv   rp   r   r  r  r  r  rk  r   r   r   r  r   r  r   )rh   r   r   rz   r  r  r$   r$   r%   r    s.    


zUpdateRowTestCase.test05c             C   s   | j | j jdt}| j|_tjddgdd}|| |ddg x*|	dd	D ]}|j
d |d
< |  qTW tjddddg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  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?r0   r,   r  )r2   s   db1g333333?)r,   s   de1g?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->N)rc   r   rd   r  r  r   rx   rv   rp   r   r  r  r  r  r  rk  r   r   r   r  r   r  r   )rh   r   r   rz   r  r  r$   r$   r%   test06  s.    

zUpdateRowTestCase.test06c             C   s   | j | j jdt}| j|_tjddgdd}|| |ddg x*|	dD ]}d	|d
< d|d< |
  qRW tjddddg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  )i  s   dbeg333333?)r0   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?z
col1 < 456r1   r  Zadar  )r1   s   adag?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->r,   N)rc   r   rd   r  r  r   rx   rv   rp   r   r  r  r  r  rk  r   r   r   r  r   r  r   )rh   r   r   rz   r  r  r$   r$   r%   r    s0    

zUpdateRowTestCase.test07c             C   sn  | j | j jdt}| j|_d}|j}x@t|D ]4}|d |d< dt|d  |d< d|d< |	  q0W |
  x8|D ]0}|j|d< d	t|j |d< d
|d< |  qvW tjd|ddd}x<t|D ]0}||d |< d	t| |d |< d
|d |< qW | jr|   | j jj}| j|_| }tjrHtdt| tdt| | | |  | |j| dS )z$Modifying a large table (Row.update)r  r^   r0   r  r   r  g      r  bg        Nzi4,a3,f8zcol1,col2,col3)rX   r3  r4  zOriginal table-->zShould look like-->)rc   r   rd   r  r  r   rz   r   r   rp   r   r  r  rx   rv   r  r  r  rk  r   r   r   r  r   r  r   )rh   r   r   rz   r{   r  r  r$   r$   r%   r    s@    


zUpdateRowTestCase.test08c             C   sn  | j | j jdt}| j|_d}|j}x@t|D ]4}|d |d< dt|d  |d< d|d< |	  q0W |
  x0|D ](}|j|d< d	t|j |d< d
|d< qvW tjd|ddd}xDt|D ]8}|d |d |< dt|d  |d |< d|d |< qW | jr|   | j jj}| j|_| }tjrHtdt| tdt| | | |  | |j| dS )z:Setting values on a large table without calling Row.updater  r^   r0   r  r   r  g      r  r  g        Nzi4,a3,f8zcol1,col2,col3)rX   r3  r4  zOriginal table-->zShould look like-->)rc   r   rd   r  r  r   rz   r   r   rp   r   r  rx   rv   r  r  r  rk  r   r   r   r  r   r  r   )rh   r   r   rz   r{   r  r  r$   r$   r%   test08b  s>    


zUpdateRowTestCase.test08bc             C   s  | j | j jdt}| j|_d}|j}x@t|D ]4}|d |d< dt|d  |d< d|d< |	  q0W |
  x>|d	D ]0}|j|d< d
t|j |d< d|d< |  q|W tjd|ddd}xDt|D ]8}|d |d |< dt|d  |d |< d|d |< qW ||d |< d
t| |d |< d|d |< | jrV|   | j jj}| j|_| }tjrtdt| tdt| | | |  | |j| dS )z*Modifying selected values on a large tabler  r^   r0   r  r   r  g      r  zcol1 > nrows-3r  g        Nzi4,a3,f8zcol1,col2,col3)rX   r3  r4  zOriginal table-->zShould look like-->)rc   r   rd   r  r  r   rz   r   r   rp   r   r   r  r  rx   rv   r  r  r  rk  r   r   r   r  r   r  r   )rh   r   r   rz   r{   r  r  r$   r$   r%   r  K  sF    

zUpdateRowTestCase.test09c             C   s  | j | j jdt}| j|_d}|j}x@t|D ]4}|d |d< dt|d  |d< d|d< |	  q0W |
  x@|jd	d
D ]0}|j|d< dt|j |d< d|d< |  q~W tjd|ddd}xt|D ]t}|d	 dkr|d |d |< dt|d  |d |< d|d |< q||d |< dt| |d |< d|d |< qW | jrh|   | 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  r^   r0   r  r   r  g      r  rl   )r&  r  g        Nzi4,a3,f8zcol1,col2,col3)rX   r3  r4  r   zOriginal table-->zShould look like-->)rc   r   rd   r  r  r   rz   r   r   rp   r   r   r  r  rx   rv   r  r  r  rk  r   r   r   r  r   r  r   )rh   r   r   rz   r{   r  r  r$   r$   r%   test09b|  sH    

zUpdateRowTestCase.test09bN)r@   rA   rB   r  r  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   r0   N)r@   rA   rB   r  r  r$   r$   r$   r%   r    s   r  c               @   s   e Zd ZdZdZdS )UpdateRowTestCase2r0   r1   N)r@   rA   rB   r  r  r$   r$   r$   r%   r    s   r  c               @   s   e Zd ZdZdZdS )UpdateRowTestCase3r   i  N)r@   rA   rB   r  r  r$   r$   r$   r%   r    s   r  c               @   s   e Zd ZdZdZdS )UpdateRowTestCase4r0   i  N)r@   rA   rB   r  r  r$   r$   r$   r%   r    s   r  c               @   s   e Zd Zdd Zdd Zdd Zd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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test00...)i  s   dbeg333333?)r1   s   deg?zcol1,col2,col3)r4  r  N)r   r   r   ri   r@   rx   rv   rc   r   rd   r  r  r  rk  r   r  )rh   r   r  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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01...)i  s   dbeg333333?)r1   s   deg?zcol1,col2,col3)r4  r0   Nr  )r   r   r   ri   r@   rx   rv   rc   r   rd   r  r  r  rk  r   r  )rh   r   r  r  r$   r$   r%   r    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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test02...r  i@ zf4,3i4,a5,i2i  i  Nr  )r   r   r   ri   r@   rx   rv   rc   r   rd   r  r  r  rk  r   r  )rh   r   r  r  r$   r$   r%   r    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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test03...r  i@ zf4,3i4,a5,i2i  Nr1   i  r  )r   r   r   ri   r@   rx   rv   rc   r   rd   r  r  r  rk  r   r  )rh   r   r  r  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ddddg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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=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>.Recr0   )r/   r2   r1   )r-   r/   N)	r@   rA   rB   r
   r  r   r  r   r  r$   r$   r$   r%   r  (  s   
r  r  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->r,   N)r   r   r   ri   r@   rN   IsDescriptionrc   r   rd   rx   rv   rp   r  r  r  rk  r  r   r  r   )rh   r  r   r   r  r  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
ddd	d
g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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test05...r  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->r,   N)r   r   r   ri   r@   rc   r   rd   r  rx   rv   rp   r  r  r  rk  r  r   r  r   )rh   r   r   r  r  r$   r$   r%   r  E  s.    



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
ddd	d
g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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test06a...r  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?r0   )i  r  g333333?)r%  r  )i  s   db1g333333?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->r,   N)r   r   r   ri   r@   rc   r   rd   r  rx   rv   rp   modify_rowsr  r  r  rk  r  r   r  r   )rh   r   r   r  r  r$   r$   r%   r  i  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
dddd
g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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test06b...r  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?r1   )i  r  g333333?)r%  r  )i  s   db2g333333?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->r,   N)r   r   r   ri   r@   rc   r   rd   r  rx   rv   rp   r  r  r  r  rk  r  r   r  r   )rh   r   r   r  r  r$   r$   r%   r    s.    


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
dd	d
d
g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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test07a...r  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?r0   )i  r  g333333?)r3   r   g?)r%  r  zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->r,   N)r   r   r   ri   r@   rc   r   rd   r  rx   rv   rp   r  r  r  r  rk  r  r   r  r   )rh   r   r   r  r  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
dd	d
d
g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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test07b...r  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?r0   )r%  r  zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->r,   N)r   r   r   ri   r@   rc   r   rd   r  rx   rv   rp   r  r  r  r  rk  r  r   r  r   )rh   r   r   r  r  r  r$   r$   r%   test07b  s0    



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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test07c...r  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?r0   r1   )r%  r   r  N)r   r   r   ri   r@   rc   r   rd   r  rx   rv   rp   r   r  r  )rh   r   r   r  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dddggdgd t	j
ddddg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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test08a...r  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?r0   r1   r2   r,   r  )r%  r   r4  )r2   s   db1g333333?)r,   s   de1g?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->N)r   r   r   ri   r@   rc   r   rd   r  rx   rv   rp   modify_columnsr  r  r  rk  r  r   r  r   )rh   r   r   r  r  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dddgdd t	j
ddddg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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test08a2...r  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?r0   r1   r2   r,   r  )r%  r  r   )r2   s   db1g333333?)r,   s   de1g?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->N)r   r   r   ri   r@   rc   r   rd   r  rx   rv   rp   modify_columnr  r  r  rk  r  r   r  r   )rh   r   r   r  r  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
dddggdd}|jd|dgd t	j
ddddg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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test08b...r  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?r1   r2   r,   rW  r0   r  )r%  r   r4  )r2   s   db1g333333?)r,   s   de1g?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->N)r   r   r   ri   r@   rc   r   rd   r  rx   rv   rp   
fromarraysrs   r  r  r  r  rk  r  r   r  r   )rh   r   r   r   r  r  r$   r$   r%   r  K  s.    


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
dddggdd}|jd|dd t	j
ddddg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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test08b2...r  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?r1   r2   r,   rW  r0   r  )r%  r  r   )r2   s   db1g333333?)r,   s   de1g?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->N)r   r   r   ri   r@   rc   r   rd   r  rx   rv   rp   r  rs   r  r  r  r  rk  r  r   r  r   )rh   r   r   r   r  r  r$   r$   r%   test08b2n  s.    


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
ddd	d
g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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test08c...r  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?r0   r,   r  )r%  r   r4  )r,   s   dedg?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->N)r   r   r   ri   r@   rc   r   rd   r  rx   rv   rp   r  r  r  r  rk  r  r   r  r   )rh   r   r   r  r  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 dddgdddgg}|jd|ddgd t	j
ddddg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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test09a...r  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?aaabbbcccg333333?g?g333333?r0   r  r  )r%  r   r4  )r1   s   aaag333333?)i  s   bbbg?)r3   s   cccg333333?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->r,   N)r   r   r   ri   r@   rc   r   rd   r  rx   rv   rp   r  r  r  r  rk  r  r   r  r   )rh   r   r   r   r  r  r$   r$   r%   test09a  s.    


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
dddgdd}|jd|ddgd t	j
ddddg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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test09b...r  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?)r  g333333?)r  g?)r  g333333?za3,f8r0   r  r  )r%  r   r4  )i  dbeg333333?)r1   r  g333333?)i  r  g?)r3   r  g333333?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->r,   N)r   r   r   ri   r@   rc   r   rd   r  rx   rv   rp   r  r  r  r  rk  r  r   r  r   )rh   r   r   r   r  r  r$   r$   r%   r    s0    


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
ddddg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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test09c...r  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?)r  g333333?)r  g?za3,f8r0   r1   r  r  )r%  r&  r   r4  )i  r  g333333?)r1   r  g333333?)i  r  g333333?)r3   r  g?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->r,   N)r   r   r   ri   r@   rc   r   rd   r  rx   rv   rp   r  r  r  r  rk  r  r   r  r   )rh   r   r   r   r  r  r$   r$   r%   test09c  s2    




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
ddddg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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test09d...r  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?)r  g?)r  g?za3,f8r   r1   r  r  )r%  r&  r   r4  )i  r  g?)r1   Zdedg?)i  r  g?)r3   r   g?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->r,   N)r   r   r   ri   r@   rc   r   rd   r  rx   rv   rp   r  r  r  r  rk  r  r   r  r   )rh   r   r   r   r  r  r$   r$   r%   test09d#  s2    




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
ddd	dg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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test10a...r  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?r   r2   7   8   r  Ngffffff?g?r  )r  s   dbegffffff?)r  s   de1g?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->r,   )r   r   r   ri   r@   rc   r   rd   r  rx   rv   rp   r  Zmodify_coordinatesr  r  r  rk  r  r   r  r   )rh   r   r   r   r  r  r$   r$   r%   test10aH  s2    


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
ddd	dg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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test10b...r  )i  s   dbeg333333?)r1   s   dedg?zi4,a3,f8)r3  )i  s   db1g333333?)r3   s   de1g?r   r2   r  r  r  Ngffffff?g?r  )r  s   dbegffffff?)r  s   de1g?zcol1,col2,col3)r3  r4  zOriginal table-->zShould look like-->r,   )r   r   r   ri   r@   rc   r   rd   r  rx   rv   rp   r  r  r  rk  r  r   r  r   )rh   r   r   r   r  r  r$   r$   r%   test10br  s2    


zRecArrayIO.test10bN)r@   rA   rB   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               @   s   e Zd ZdZdS )RecArrayIO1r   N)r@   rA   rB   r  r$   r$   r$   r%   r"    s   r"  c               @   s   e Zd ZdZdS )RecArrayIO2r0   N)r@   rA   rB   r  r$   r$   r$   r%   r#    s   r#  c               @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )CopyTestCasec             C   s   |j |j  }}| t|t| xt|D ]\}}| ||k || }| t|t| t|tr| |j	|j	 | |j
|j
 | |j|j | |j|j q.t|tr.| |j|j | |j|j q.W dS )z:Assert that column instance maps of both tables are equal.N)r   r   r   r*  Z	iteritemsr   rr   r   r   r   pathnamerm   r   Z_v_colnamesZ_v_colpathnames)rh   table1table2Zcinst1Zcinst2	cpathnamer  r  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 xD|D ]<}|j}x.|jD ]$}| || |j||dd  qW q W | |j|j | |j|j | |j|j | |j|j | || | t|jt|j | jr| jd dkr| |jjdddg | |jjd n&| |jjdddg | |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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01_copy...)i  s   dbeg333333?)r1   s   deg?zcol1,col2,col3zi4,S3,f8)r4  r3  r;  r&  ztitle table1z(closing file version)r   )r   r[  r'  z	table1-->z	table2-->zattrs table1-->zattrs table2-->)rq  r   allow_paddingTr,   r"   r7   r6   r   N)$r   r   r   ri   r@   rx   rv   r;  rc   r   rd   rg   r  r&  r(  r'  rk  r  attrsr  r   r   r   rX   r   r)  r   open_kwargs
_v_offsets_v_itemsizer   r   r}   r   r~   r   )rh   r   r&  r'  row1r  r   r$   r$   r%   test01_copy  s`    







 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 xD|D ]<}|j}x.|jD ]$}| || |j||dd  q W qW | |j|j | |j|j | |j|j | |j|j | || | t|jt|j | jr| jd dkr| |jjdddg | |jjd n&| |jjdddg | |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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test02_copy...)s   dbei  g333333?)s   der1   g?zcol1,col2,col3zS3,i4,f8)r4  r3  r;  r&  ztitle table1z(closing file version)r   )r   r[  group1r'  z	table1-->z	table2-->zattrs table1-->zattrs table2-->)rq  r   r*  Tr,   r"   r7   r2   r6   r   N)&r   r   r   ri   r@   rx   rv   r;  rc   r   rd   rg   r  r&  r   r(  r1  r'  rk  r  r+  r  r   r   r   rX   r   r)  r   r,  r-  r.  r   r   r}   r   r~   r   )rh   r   r&  r1  r'  r/  r  r   r$   r$   r%   test02_copy  sb    






 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 xH|D ]@}|j}x2|jD ](}| t|| |j||dd  q*W qW | |j|j | |j|j | |j|j | |j|j | || | t|jt|j | jr| j d dkr| |jj!dddddg | |jj"d  n*| |jj!dddddg | |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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test03_copy...s   aaaabbbbccccddddeeeeffffggggr  z2i2,i4, (2,3)u2, (1,)f4, f8r6   )r3  rX   r;  r&  ztitle table1z(closing file version)r   )r   r[  r1  r1   r'  ztitle table2)r   z	table1-->z	table2-->zattrs table1-->zattrs table2-->)rq  r   r*  Tr,   r"   r_   r=   r?   N))r   r   r   ri   r@   rx   rv   r;  rc   r   rd   rg   r  r&  r   r   r(  r1  r'  rk  r  r+  r  r   r   r   r   r   rX   r   r)  r   r,  r-  r.  r   r   r}   r   r~   r   )rh   r   r&  r1  r'  r/  r  r   r$   r$   r%   test03_copyK  sd    





"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 xD|D ]<}|j}x.|jD ]$}| || |j||dd  q,W qW | |j|j | |j|j | |j|j | |j|j | || | t|jt|j | jr| jd dkr| |jj dddg | |jj!d n&| |jj dddg | |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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test04_copy...)g333333?s   dbei  )g?s   der1   zcol1,col2,col3zf8,S3,i4)r4  r3  r;  r&  ztitle table1z(closing file version)r   )r   r[  r1  r'  r5   )r}   )r   z	table1-->z	table2-->zattrs table1-->zattrs table2-->)rq  r   r*  Tr"   r   r7   r   r   r0   N)'r   r   r   ri   r@   rx   rv   r;  rc   r   rd   rg   r  r&  r   r(  rN   r   r1  r'  rk  r  r+  r  r   r   r   rX   r   r)  r   r,  r-  r.  r   r   r}   r~   r   )rh   r   r&  r1  r'  r/  r  r   r$   r$   r%   test04_copy  sb    






 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 xD|D ]<}|j}x.|jD ]$}| || |j||dd  q>W q,W | |j|j | |j|j | |j|j | |j|j | || | t|j t|j  | jr| j!d dkrn&| |j j"ddd g | |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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test05_copy...)i  s   dbeg333333?)r1   s   deg?zcol1,col2,col3zi8,S3,f8)r4  r3  r;  r&  ztitle table1attr1r1   z(closing file version)r   )r   r[  r1  r'  r0   r5   )r}   )copyuserattrsr   z	table1-->z	table2-->zattrs table1-->zattrs table2-->)rq  r   r*  Tr"   r   r   N))r   r   r   ri   r@   rx   rv   r;  rc   r   rd   r+  r5  attr2rg   r  r&  r   r(  rN   r   r1  r'  rk  r  r  r   r   r   rX   r   r)  r   r,  r-  r.  r   r   r}   r~   r   )rh   r   r&  r1  r'  r/  r  r   r$   r$   r%   test05_copy  sj    






 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 xD|D ]<}|j}x.|jD ]$}| || |j||dd  q>W q,W | |j|j | |j|j | |j|j | |j|j | || | t|j t|j  | jr| j!d dkr| |j j"dddg | |j j#d  n&| |j j"ddd!g | |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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test05b_copy...)i  s   dbeg333333?)r1   s   deg?zcol1,col2,col3zi8,S3,f4)r4  r3  r;  r&  ztitle table1r5  r1   z(closing file version)r   )r   r[  r1  r'  r   r5   )r}   )r6  r   z	table1-->z	table2-->zattrs table1-->zattrs table2-->)rq  r*  Tr"   r   r7   r   r   r0   r7  N)*r   r   r   ri   r@   rx   rv   r;  rc   r   rd   r+  r5  r7  rg   r  r&  r   r(  rN   r   r1  r'  rk  r  r  r   r   r   rX   r   r)  r   r,  r-  r.  r   r   r}   r~   r   rM   )rh   r   r&  r1  r'  r/  r  r   r$   r$   r%   test05b_copy2  sl    






 zCopyTestCase.test05b_copyN)
r@   rA   rB   r)  r0  r2  r3  r4  r8  r9  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)r@   rA   rB   rg   r;  r,  r$   r$   r$   r%   r:    s   r:  c               @   s   e Zd ZdZdZddiZdS )OpenCopyTestCaseFr*  TN)r@   rA   rB   rg   r;  r,  r$   r$   r$   r%   r;    s   r;  c               @   s   e Zd ZdZdZddiZdS )AlignedCloseCopyTestCaseTr*  FN)r@   rA   rB   rg   r;  r,  r$   r$   r$   r%   r<    s   r<  c               @   s   e Zd ZdZdZddiZdS )AlignedOpenCopyTestCaseFTr*  N)r@   rA   rB   rg   r;  r,  r$   r$   r$   r%   r=    s   r=  c               @   s   e Zd ZdZdZddiZdS ) AlignedNoPaddingOpenCopyTestCaseFTr*  N)r@   rA   rB   rg   r;  r,  r$   r$   r$   r%   r>    s   r>  c               @   s   e Zd Zdd Zdd ZdS )CopyIndexTestCasec             C   sr  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 }xHt|jd D ]6}x0|jD ]&}| t|| | || |  qW qW t jrZtd|j td|jd  | |jd |j dS )z*Checking Table.copy() method with indexes.r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01_index...s   aaaabbbbccccddddeeeeffffggggr  z$2i2, (1,)i4, (2,3)u2, (1,)f4, (1,)f8rl   )r3  rX   r&  ztitle table1z(closing file version)r   )r   r[  r'  )r%  r   r&  z	table1-->z	table2-->zattrs table1-->zattrs table2-->r   znrows in table2-->zand it should be-->N)r   r   r   ri   r@   rx   rv   rc   r   rd   rg   r  r&  r   r(  r%  r   r&  rk  r  r+  r   rX   r   r   r   r   r   )rh   r   r&  r'  r  r  r   r$   r$   r%   test01_index  s@    



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 }xJt|jd D ]8}x0|jD ]&}| t|| | || |  q$W qW t jrxtd|j td|jd  | |jd |j dS )z>Checking Table.copy() method with indexes (close file version)r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z Running %s.test02_indexclosef...s   aaaabbbbccccddddeeeeffffggggr  z2i2, i4, (2,3)u2, f4, f8rl   )r3  rX   r&  ztitle table1z(closing file version)r   )r   r[  r'  )r%  r   r&  z	table1-->z	table2-->zattrs table1-->zattrs table2-->r   znrows in table2-->zand it should be-->N)r   r   r   ri   r@   rx   rv   rc   r   rd   rg   r  r&  r   r(  r%  r   r&  r'  rk  r  r+  r   rX   r   r   r   r   r   )rh   r   r&  r'  r  r  r   r$   r$   r%   test02_indexclosef  sD    






z$CopyIndexTestCase.test02_indexclosefN)r@   rA   rB   r@  rA  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   r0   r   r6   N)r@   rA   rB   r   rg   r%  r   r&  r$   r$   r$   r%   rB    s
   rB  c               @   s    e Zd ZdZdZdZdZdZdS )CopyIndex2TestCaser1   r   rk   r0   N)r@   rA   rB   r   rg   r%  r   r&  r$   r$   r$   r%   rC  
  s
   rC  c               @   s    e Zd ZdZdZdZdZdZdS )CopyIndex3TestCaser2   r0   r6   N)r@   rA   rB   r   rg   r%  r   r&  r$   r$   r$   r%   rD    s
   rD  c               @   s    e Zd ZdZdZdZdZdZdS )CopyIndex4TestCaser,   r   r5   r0   N)r@   rA   rB   r   rg   r%  r   r&  r$   r$   r$   r%   rE    s
   rE  c               @   s    e Zd ZdZdZdZdZdZdS )CopyIndex5TestCaser1   r0   r2   r6   N)r@   rA   rB   r   rg   r%  r   r&  r$   r$   r$   r%   rF  "  s
   rF  c               @   s    e Zd ZdZdZdZdZdZdS )CopyIndex6TestCaser1   r   r2   r5   N)r@   rA   rB   r   rg   r%  r   r&  r$   r$   r$   r%   rG  *  s
   rG  c               @   s    e Zd ZdZdZdZdZdZdS )CopyIndex7TestCaser1   r0   r   r6   rl   N)r@   rA   rB   r   rg   r%  r   r&  r$   r$   r$   r%   rH  2  s
   rH  c               @   s    e Zd ZdZdZdZdZdZdS )CopyIndex8TestCaser1   r   r5   r2   r0   N)r@   rA   rB   r   rg   r%  r   r&  r$   r$   r$   r%   rI  :  s
   rI  c               @   s    e Zd ZdZdZdZdZdZdS )CopyIndex9TestCaser1   r0   r2   r,   N)r@   rA   rB   r   rg   r%  r   r&  r$   r$   r$   r%   rJ  B  s
   rJ  c               @   s    e Zd ZdZdZdZdZdZdS )CopyIndex10TestCaser0   r   r2   r,   r1   N)r@   rA   rB   r   rg   r%  r   r&  r$   r$   r$   r%   rK  J  s
   rK  c               @   s    e Zd ZdZdZdZdZdZdS )CopyIndex11TestCaser1   r0   r  rk   N)r@   rA   rB   r   rg   r%  r   r&  r$   r$   r$   r%   rL  R  s
   rL  c               @   s    e Zd ZdZdZdZdZdZdS )CopyIndex12TestCaser2   r   rk   Nr0   )r@   rA   rB   r   rg   r%  r   r&  r$   r$   r$   r%   rM  Z  s
   rM  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 rowsizer^   r1   largerowN)rx   rv   rs   r  rc   r   rd   rO  rk  r   r  )rh   r   r  r$   r$   r%   r
  c  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 rowsizerl   z(300,100)i4,(400,400)f8)rm   rO  N)
rs   rh  rm   rc   r   rd   rO  rk  r   r  )rh   r   r  r$   r$   r%   r  q  s    zLargeRowSize.test01N)r@   rA   rB   r
  r  r$   r$   r$   r%   rN  b  s   rN  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}x8t|D ],}|dkrNd|d< |dkr^d|d< |  q:W |	  d	d
dddddd
ddg
}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! x|d"d#D ]}t| qW td$ t|d d  td% t|d d  x8t|jj|jjD ]"\}	}
| t||	 ||
  qW d S )&z@Checking saving a Table with default values (using the same Row)r   .   g?r2   r1   rD   r,   rE   s   abcdr0   g@g@r3   ey              ?y      ?        za4,i4,i2,f8,f4,u2,a1,b1,c8,c16r,  r9   g@r-  r:   r.  r;   r/  r<   r0  r>   r1  )r3  rp  NzFirst 10 table values:r   rl   z!The first 5 read recarray values:zRecords should look like:)rc   r   rd   ry   r   intrz   r   rp   r   r2  rM   rN   rx   rv   rw   r5  r   r   r   r   r    rm   r4  r   r   )rh   r   r   rz   r{   valuesr3  r   r  name1name2r$   r$   r%   r
    sV    













zDefaultValues.test00c          
   C   s  | j | j jd| j}d|_t|jd }x>t|D ]2}|dkrJd|jd< |dkr\d|jd< |j  q4W |	  d	d
dddddd
ddg
}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! x|d"d#D ]}t| qW td$ t|d d  td% t|d d  x8t|jj|jjD ]"\}	}
| t||	 ||
  qW d S )&zAChecking saving a Table with default values (using different Row)r   rQ  g?r2   r1   rD   r,   rE   s   abcdr0   g@g@r3   rR  y              ?y      ?        za4,i4,i2,f8,f4,u2,a1,b1,c8,c16r,  r9   g@r-  r:   r.  r;   r/  r<   r0  r>   r1  )r3  rp  NzFirst 10 table values:r   rl   z!The first 5 read recarray values:zRecords should look like:)rc   r   rd   ry   r   rS  r   rz   rp   r   r2  rM   rN   rx   rv   rw   r5  r   r   r   r   r    rm   r4  r   r   )rh   r   r   r{   rT  r3  r   r  rz   rU  rV  r$   r$   r%   r    sT    















zDefaultValues.test01N)r@   rA   rB   r+   ry   r
  r  r$   r$   r$   r%   rP  ~  s   KrP  c               @   s   e Zd Zd ZeZdS )OldRecordDefaultValuesN)r@   rA   rB   r   rT   ry   r$   r$   r$   r%   rW    s   rW  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,   s   abcd)r-   r.   r0   )r.   r1   g@N)r@   rA   rB   r   rC   r
   rD   r   rE   r   rF   r$   r$   r$   r%   rX    s   

rX  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 )LengthTestCaser_   c                s$   t t|   | jj| _|   d S )N)ra   rY  rb   rc   rd   re   rf   )rh   )ri   r$   r%   rb   '  s    
zLengthTestCase.setUpc             C   sN   | j j| j jd| jdd}|j}xt| jD ]}|  q,W |  || _	d S )Nr   z__length__ test)r   )
rc   r   rd   ry   rz   r   r   rp   r   r   )rh   r   rz   r{   r$   r$   r%   rf   .  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   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01_lengthrows...N)r   r   r   ri   r@   r   r   r   )rh   r$   r$   r%   test01_lengthrows=  s    
z LengthTestCase.test01_lengthrowsc             C   sZ   t jr tdd td| jj  | jtkr<t| jj	dk n| jt
krVt| jj	dk dS )zChecking __length__ in Cols.r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test02_lengthcols...r"   r,   N)r   r   r   ri   r@   ry   r+   r   r   r   rX  )rh   r$   r$   r%   test02_lengthcolsG  s    


z LengthTestCase.test02_lengthcolsc             C   sN   t jr tdd td| jj  x(| jjD ]}tt| jj	|| j
k q*W dS )zChecking __length__ in Column.r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test03_lengthcol...N)r   r   r   ri   r@   r   r   r   getattrr   r   )rh   r   r$   r$   r%   test03_lengthcolT  s
    
zLengthTestCase.test03_lengthcol)r@   rA   rB   r+   ry   r   rb   rf   rZ  r[  r]  r  r$   r$   )ri   r%   rY  #  s   
rY  c               @   s   e Zd ZeZdZdS )Length1TestCaser_   N)r@   rA   rB   r+   ry   r   r$   r$   r$   r%   r^  `  s   r^  c               @   s   e Zd ZeZdZdS )Length2TestCaser^   N)r@   rA   rB   rX  ry   r   r$   r$   r$   r%   r_  e  s   r_  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)	r@   rA   rB   r
   idr   v1r   v2r$   r$   r$   r%   
SrcTblDescm  s   rd  c                sr   t t|   | jdd| j}|j}d|d< d|d< d|d< |  d	|d< d
|d< d|d< |  |  d S )Nr[  testr0   ra  g      ?rb  Zaaaaaaaarc  r1   g      @Zbbbbbb)	ra   r`  rb   rc   r   rd  rz   rp   r   )rh   r   rz   )ri   r$   r%   rb   r  s    zWhereAppendTestCase.setUpc             C   s   | j }| jjj}| jdd|}||d t|}xP|dD ]B}t|}| 	|d |d ko~|d |d ko~|d |d k q@W | 
tt| dS )zQuery with same storage.r[  test2zid > 1ra  rb  rc  N)rd  rc   rd   re  r   append_whereiterr   nextr   r   StopIteration)rh   
DstTblDesctbl1tbl2it2r  r  r$   r$   r%   test00_same  s    
$zWhereAppendTestCase.test00_samec             C   s   G dd dt j}| jjj}| jdd|}||d t|}xP|dD ]B}t	|}| 
|d |d ko|d |d ko|d |d k qLW | 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>.DstTblDescr7   )r-   N)	r@   rA   rB   r   ra  rb  r   rc  Zv3r$   r$   r$   r%   rk    s   
rk  r[  rf  zid > 1ra  rb  rc  N)rN   r  rc   rd   re  r   rg  rh  r   ri  r   r   rj  )rh   rk  rl  rm  rn  r  r  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|}xT|dD ]F}t	|}| 
|d |d kot|d |d ko|d |d k qLW | 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"   )r-   N)r@   rA   rB   r
   ra  rb  r   rc  r$   r$   r$   r%   rk    s   rk  r[  rf  zid > 1ra  rb  rc  N)rN   r  rc   rd   re  r   rg  rh  r   ri  r   rS  r   rj  )rh   rk  rl  rm  rn  r  r  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,   )r-   r"   N)r@   rA   rB   r   ra  r   rb  rc  r$   r$   r$   r%   rk    s   
rk  r[  rf  z
v1 == b"1"N)	rN   r  rc   rd   re  r   r   r  rg  )rh   rk  rl  rm  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"   )r-   N)r@   rA   rB   r   rb  r   rc  r$   r$   r$   r%   rk    s   rk  r[  rf  zid > 1N)	rN   r  rc   rd   re  r   r   r   rg  )rh   rk  rl  rm  r$   r$   r%   test04_noColumn  s    
z#WhereAppendTestCase.test04_noColumnc          	   C   s   t jdd}zt|d,}| jjj}|dd| j}|	|d W dQ R X t|dJ}|jj}| 
tj|j	|d | d | jjj}| 
tj|j	|d W dQ R X t|d	}|jj}|	|d W dQ R X W dtj|rt| X dS )
z%Appending to a table in another file.z.h5)suffixr]   r[  re  zid > 1Nr   r   )tempfileZmktemprN   r   rc   rd   re  r   rd  rg  r   ZFileModeErrorr  ra  pathexistsremove)rh   Zh5fname2Zh5file2rl  rm  r$   r$   r%   test05_otherFile  s&    


z$WhereAppendTestCase.test05_otherFilec             C   s   | j }| jjj}| jdd|}|| t|}xN| D ]B}t|}| 	|d |d koz|d |d koz|d |d k q<W | 
tt| dS )zAppend whole table.r[  rf  ra  rb  rc  N)rd  rc   rd   re  r   rg  rh  __iter__ri  r   r   rj  )rh   rk  rl  rm  rn  r  r  r$   r$   r%   test06_wholeTable  s    

$z%WhereAppendTestCase.test06_wholeTable)r@   rA   rB   __doc__rN   r  rd  rb   ro  rp  rq  rr  rs  ry  r{  r  r$   r$   )ri   r%   r`  j  s   !r`  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)ra   r}  rb   rc   r   r+   )rh   )ri   r$   r%   rb     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)rc   rd   r~  r   r   r   )rh   rl  rm  r$   r$   r%   r
    s    
zDerivedTableTestCase.test00)r@   rA   rB   rb   r
  r  r$   r$   )ri   r%   r}    s   r}  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   )rX  )ra   r  rb   rc   r   r+   )rh   )ri   r$   r%   rb   '  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).zchunkshape-->)r   N)rc   rd   r   r   r   r   rX  r   )rh   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   zchunkshape-->)r   N)rc   rg   rN   r   r   rd   r   r   r   r   rX  r   )rh   r   r$   r$   r%   r  3  s    

zChunkshapeTestCase.test01)r@   rA   rB   rb   r
  r  r  r$   r$   )ri   r%   r  &  s   r  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)r0   g@)ra   r  rb   rc   r   r   r   rp   )rh   t)ri   r$   r%   rb   @  s    
zZeroSizedTestCase.setUpc             C   s6   | j jj}tjddd}|| | |jdd dS )zAppending zero length recarray.)r   zi4,f8)rX   rm   r0   zThe number of rows should be 1.N)rc   rd   r   rs   rw  rp   r   r   )rh   r  r   r$   r$   r%   test01_canAppendI  s    

z"ZeroSizedTestCase.test01_canAppend)r@   rA   rB   rb   r  r  r$   r$   )ri   r%   r  ?  s   	r  c                   s$   e Zd Z fddZdd Z  ZS )IrregularStrideTestCasec                sl   t t|   G dd dtj}| jdd|}x.tdD ]"}||jd< ||jd< |j	  q:W |
  d S )Nc               @   s    e Zd ZeddZeddZdS )z.IrregularStrideTestCase.setUp.<locals>.IRecordr0   )r/   r1   N)r@   rA   rB   r   r  r   r  r$   r$   r$   r%   IRecord\  s   
r  r[  r   rl   r  r  )ra   r  rb   rN   r  rc   r   r   rz   rp   r   )rh   r  r   r{   )ri   r$   r%   rb   Y  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-->zSelected coords2-->r3   )rm   N)rc   rd   r   get_where_listr   r   r   r   r   rs   r  r   )rh   r   coords1coords2r$   r$   r%   r
  g  s    




zIrregularStrideTestCase.test00)r@   rA   rB   rb   r
  r  r$   r$   )ri   r%   r  X  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 )Issue262TestCasec                s   t t|   G dd dtj}| jdd|}d|_x~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@W |  d S )Nc               @   s    e Zd ZeddZeddZdS )z'Issue262TestCase.setUp.<locals>.IRecordr0   )r/   r1   N)r@   rA   rB   r   r  r   r  r$   r$   r$   r%   r  x  s   
r  r[  r   r2   r_   r  r     i,  r^      )ra   r  rb   rN   r  rc   r   r   r   rz   rp   r   )rh   r  r   r{   )ri   r$   r%   rb   u  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   )r%  r&  r0   r  r3   r  r  zSelected coords1-->zSelected coords2-->zSelected data-->N)rc   rd   r   r  rk  rs   r   r   r   r   r   r   )rh   r   r  r  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)z(c1>5)&(~(c1>5))r   r0   )r%  r&  zdata -->N)	rc   rd   r   r  r   r   r   r   r   )rh   r   r  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)z(c1>5)&(~(c1>5))r0   )r%  r&  zdata -->r   N)	rc   rd   r   r  r   r   r   r   r   )rh   r   r  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)z(c1>5)&(~(c1>5))r   r1   )r%  r&  zdata -->N)	rc   rd   r   r  r   r   r   r   r   )rh   r   r  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)z(c1>5)&(~(c1>5))r0   r1   )r%  r&  zdata -->r   N)	rc   rd   r   r  r   r   r   r   r   )rh   r   r  r$   r$   r%   test_gh262_04  s    

zIssue262TestCase.test_gh262_04)
r@   rA   rB   rb   r  r  r  r  r  r  r$   r$   )ri   r%   r  t  s   r  c                   s<   e Zd Z fddZdd Zdd Zdd Zd	d
 Z  ZS )TruncateTestCasec                sd   t t|   | jdd| j}x.tdD ]"}||jd< ||jd< |j  q*W |	  |j
| _d S )Nr[  r   r1   r  r  )ra   r  rb   rc   r   r  r   rz   rp   r   r   dflts)rh   r   r{   )ri   r$   r%   rb     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 x|D ]}| 
|d |j qbW dS )z7Checking Table.truncate() method (truncating to 0 rows)r   z(closing file version)ztable-->r  N)rc   rd   r   truncaterg   r   r   r   r  rk  r   r   r  )rh   r   rz   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 x|D ]}| 
|d |j qbW dS )z7Checking Table.truncate() method (truncating to 1 rows)r0   z(closing file version)ztable-->r  N)rc   rd   r   r  rg   r   r   r   r  rk  r   r   r  )rh   r   rz   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 x|D ]}| 
|d |j qbW dS )z>Checking Table.truncate() method (truncating to == self.nrows)r1   z(closing file version)ztable-->r  N)rc   rd   r   r  rg   r   r   r   r  rk  r   r   r  )rh   r   rz   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 x(|jdddD ]}| 
|d |j qlW xB|jdddD ]0}| 
|d | jd  | 
|d | jd  qW d	S )
z=Checking Table.truncate() method (truncating to > self.nrows)r,   z(closing file version)ztable-->r   r1   )r%  r   r  r  N)rc   rd   r   r  rg   r   r   r   r  rk  r   r   r   r  r  )rh   r   rz   r$   r$   r%   test03_truncate  s    


z TruncateTestCase.test03_truncate)	r@   rA   rB   rb   r  r  r  r  r  r$   r$   )ri   r%   r    s
   r  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.IRecordr0   )r/   r1   N)r@   rA   rB   r   r  r   r  r$   r$   r$   r%   r  0  s   
r  r   N)r@   rA   rB   rN   r  r  rg   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.IRecordr0   r2   )r/   r.   r1   gN)r@   rA   rB   r   r  r   r  r$   r$   r$   r%   r  7  s   r  r   N)r@   rA   rB   rN   r  r  rg   r$   r$   r$   r%   r  6  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.IRecordr0   )r/   r1   N)r@   rA   rB   r   r  r   r  r$   r$   r$   r%   r  >  s   
r  r0   N)r@   rA   rB   rN   r  r  rg   r$   r$   r$   r%   r  =  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.IRecordr0   r,   )r/   r.   r1   g@N)r@   rA   rB   r   r  r   r  r$   r$   r$   r%   r  E  s   r  r0   N)r@   rA   rB   rN   r  r  rg   r$   r$   r$   r%   r  D  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| _ddddg| _t| | _}tj	|d	d
 | _
}||d d d < ||d d d < | j| jjd|| _d S )Nr^   r   r0   rk   )r   r0   )r_   i)ir,   )r   rl   zi4,f4)rm   r  rp  r   )ra   r  rb   working_keysetnot_working_keysetlimitsrs   r  r  rw  recarrrc   r   rd   r   )rh   Nr  r  )ri   r$   r%   rb   L  s"    
zPointSelectionTestCase.setUpc       	      C   s   | j }| j}| j}xj| jD ]`\}}||k||k @ }tjrBtd| || }|| }tjrltd| td| t||d qW dS )z/Test for point-selections (read, boolean keys).zSelection to test:zNumPy selection:zPyTables selection:z3NumPy array and PyTables selections does not match.N)	r  r  r   r  r   r   r   r   r   )	rh   r  r  r   value1value2keyr   r  r$   r$   r%   test01a_readk  s    


z#PointSelectionTestCase.test01a_readc       	      C   st   | j }| j}| j}x\| jD ]R\}}t||k||k @ }tjrNtd|t	| || }|| }t
||d qW dS )z:Test for point-selections (read, tuples of integers keys).zSelection to test:z3NumPy array and PyTables selections does not match.N)r  r  r   r  rs   r   r   r   r   r   r   r   )	rh   r  r  r   r  r  r  r   r  r$   r$   r%   test01b_read}  s    z#PointSelectionTestCase.test01b_readc             C   st   | j }| j}| j}x\| jD ]R\}}t||k||k @ }tjrHtd| ||  t	|d}| 
t|j| qW dS )z8Test for point-selections (read, tuples of floats keys).zSelection to test:Zf4N)r  r  r   r  rs   r   r   r   r   rv   r   r   __getitem__)rh   r  r  r   r  r  r  Zfkeyr$   r$   r%   test01c_read  s    
z#PointSelectionTestCase.test01c_readc       	      C   sx   | j }| j}| j}x`| jD ]V\}}t||k||k @ d }tjrRtd|t	| || }|| }t
||d qW dS )z-Test for point-selections (read, numpy keys).r   zSelection to test:z3NumPy array and PyTables selections does not match.N)r  r  r   r  rs   r   r   r   r   r   r   r   )	rh   r  r  r   r  r  r  r   r  r$   r$   r%   test01d_read  s    z#PointSelectionTestCase.test01d_readc       	      C   s|   | j }| j}| j}xd| jD ]Z\}}t||k||k @ d  }tjrVt	d|t
| || }|| }t||d qW dS )z,Test for point-selections (read, list keys).r   zSelection to test:z3NumPy array and PyTables selections does not match.N)r  r  r   r  rs   r   r  r   r   r   r   r   r   )	rh   r  r  r   r  r  r  r   r  r$   r$   r%   test01e_read  s    z#PointSelectionTestCase.test01e_readc             C   sN   | j }| j}x<| jD ]2}tjr(td| || }|| }t||d qW d S )NzSelection to test:z3NumPy array and PyTables selections does not match.)r  r   r  r   r   r   r   r   )rh   r  r   r  r   r  r$   r$   r%   test01f_read  s    
z#PointSelectionTestCase.test01f_readc             C   s:   | j }x.| jD ]$}tjr"td| | t|j| qW d S )NzSelection to test:)r   r  r   r   r   r   
IndexErrorr  )rh   r   r  r$   r$   r%   test01g_read  s
    
z#PointSelectionTestCase.test01g_readc       
      C   s   | j }| j}| j}x| jD ]\}}t||k||k @ }tjrHtd| || }|dt	| d |d dd< |dt	| d |d dd< |||< |||< |dd }|dd }	t
||	d qW dS )z0Test for point-selections (write, boolean keys).zSelection to test:Nr1   r  r2   rp  z6NumPy array and PyTables modifications does not match.)r  r  r   r  rs   r   r   r   r   r   r   r   )
rh   r  r  r   r  r  r  r   r   r  r$   r$   r%   test02a_write  s     
  z$PointSelectionTestCase.test02a_writec       
      C   s   | j }| j}| j}x| jD ]\}}t||k||k @ }tjrHtd| || }|dt	| d |d dd< |dt	| d |d dd< |||< |||< |dd }|dd }	t
||	d qW dS )z0Test for point-selections (write, integer keys).zSelection to test:Nr1   r  r2   rp  z6NumPy array and PyTables modifications does not match.)r  r  r   r  rs   r   r   r   r   r   r   r   )
rh   r  r  r   r  r  r  r   r   r  r$   r$   r%   test02b_write  s     
  z$PointSelectionTestCase.test02b_write)r@   rA   rB   rb   r  r  r  r  r  r  r  r  r  r  r$   r$   )ri   r%   r  K  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   r  r   )rX   r.   r[  re  r   zFirst row-->Zi1N)r   rc   r   rz   rp   r   r  r  rd   re  r   r   r   r   r   rs   rh  )rh   r  r   r   r$   r$   r%   test01_create  s    


z MDLargeColTestCase.test01_createN)r@   rA   rB   r  r$   r$   r$   r%   r    s   r  c               @   s   e Zd ZdZdS )MDLargeColNoReopenFN)r@   rA   rB   r  r$   r$   r$   r%   r    s   r  c               @   s   e Zd ZdZdS )MDLargeColReopenTN)r@   rA   rB   r  r$   r$   r$   r%   r    s   r  c                   s<   e Zd Z fddZdd Zdd Zdd Zd	d
 Z  ZS )ExhaustedIterc                s   t t|   G dd dtj}| jjdd|dd}td}|j	}xPt
dD ]D}x>t
d	D ]2}x,|D ]$}||d
< ||d< ||d< |  qfW q\W qNW |  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/   r0   r2   N)r@   rA   rB   r
   	market_idscenario_idr   rj  r$   r$   r$   r%   Observations  s   

r  r[  observationsr?   )rX     r3   r2   r  r  rj  )ra   r  rb   rN   r  rc   r   rs   r  rz   r   rp   r   )rh   r  r   r  rz   r  r  Zobs)ri   r$   r%   rb     s    

zExhaustedIter.setUpc             C   s   t |dt| S )Ng        )sumr   )rh   rT  r$   r$   r%   average.  s    zExhaustedIter.averagec             C   s   |d S )Nr  r$   )rh   rz   r$   r$   r%   
f_scenario1  s    zExhaustedIter.f_scenarioc             C   s~   ddl m} | jjjd}g }x6||| jD ]&\}}dd |D }|| | q.W t	j
rhtd| | |dddg dS )	z6Checking iterating an exhausted iterator (ticket #264)r   )r   z(market_id == 3)c             S   s   g | ]}|d  qS )rj  r$   )r   rz   r$   r$   r%   r   :  s    z0ExhaustedIter.test00_groupby.<locals>.<listcomp>z	Means -->g      \@N)	itertoolsr   rc   rd   r  r   r  rp   r  r   r   r   r   )rh   r   r  scenario_meansr  rows_groupedvalsr$   r$   r%   test00_groupby4  s    
zExhaustedIter.test00_groupbyc             C   sz   |    | jjjd}g }x6t|| jD ]&\}}dd |D }|| | q*W t	j
rdtd| | |dddg dS )z?Checking iterating an exhausted iterator (ticket #264). Reopen.z(market_id == 3)c             S   s   g | ]}|d  qS )rj  r$   )r   rz   r$   r$   r%   r   H  s    z0ExhaustedIter.test01_groupby.<locals>.<listcomp>z	Means -->g      \@N)r  rc   rd   r  r   r   r  rp   r  r   r   r   r   )rh   r  r  r  r  r  r$   r$   r%   test01_groupby@  s    
zExhaustedIter.test01_groupby)	r@   rA   rB   rb   r  r  r  r  r  r$   r$   )ri   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 x$t|jd
D ]\}}| || qlW d S )N)r0   r1   r2   r   _b__c)rm   re  r2   zNumber of columns incorrectzcolnames -->)r   r  r  )rc   rs   rv   rS  r   rd   r   r   r   r   r   r   r    )rh   fr   r  r   rV  r$   r$   r%   test00_check_namesP  s    z*SpecialColnamesTestCase.test00_check_namesN)r@   rA   rB   r  r$   r$   r$   r%   r  O  s   r  c               @   s   e Zd Zdd ZdS )RowContainsTestCasec             C   s   | j }tjdgdd}||jd|}dd | D d }tjrTtd|d d   xdD ]}| 	||k qZW | 	d	|k d S )
N)r0   r1   r2   zi1,i2,i4)rm   re  c             S   s   g | ]}|qS r$   r$   )r   r   r$   r$   r%   r   a  s    z;RowContainsTestCase.test00_row_contains.<locals>.<listcomp>r   zrow -->r,   )
rc   rs   rv   r   rd   r   r   r   r   r   )rh   r  r   r  rz   itemr$   r$   r%   test00_row_contains]  s    
z'RowContainsTestCase.test00_row_containsN)r@   rA   rB   r  r$   r$   r$   r%   r  \  s   r  c                   sd   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Z  ZS )AccessClosedTestCasec                st   t t|   | j| jjdt| _| jj}x8t	dD ],}d| |d< ||d< |d |d< |
  q6W | j  d S )Nr   rl   z%04drC   rD   r2   rE   )ra   r  rb   rc   r   rd   r+   r   rz   r   rp   r   )rh   rz   r{   )ri   r$   r%   rb   j  s    zAccessClosedTestCase.setUpc             C   s    | j   | tj| jj d S )N)rc   rg   r   rN   ClosedNodeErrorr   rk  )rh   r$   r$   r%   	test_readw  s    
zAccessClosedTestCase.test_readc             C   s"   | j   | tj| jjd d S )Nr   )rc   rg   r   rN   r  r   r  )rh   r$   r$   r%   test_getitem|  s    
z!AccessClosedTestCase.test_getitemc             C   s.   | j d }| j  | tj| j jd| d S )Nr   )r   rc   rg   r   rN   r  __setitem__)rh   r  r$   r$   r%   test_setitem  s    

z!AccessClosedTestCase.test_setitemc             C   s,   | j d }| j  | tj| j j| d S )Nr   )r   rc   rg   r   rN   r  rp   )rh   r  r$   r$   r%   test_append  s    

z AccessClosedTestCase.test_appendc             C   s"   | j   | tj| jjd d S )Nzvar2 > 3)rc   rg   r   rN   r  r   Z
read_where)rh   r$   r$   r%   test_readWhere  s    
z#AccessClosedTestCase.test_readWherec             C   s&   | j   | tj| jj| jd d S )Nzvar2 > 3)rc   rg   r   rN   r  r   rg  )rh   r$   r$   r%   test_whereAppend  s    
z%AccessClosedTestCase.test_whereAppendc             C   s"   | j   | tj| jjd d S )Nzvar2 > 3)rc   rg   r   rN   r  r   r  )rh   r$   r$   r%   test_getWhereList  s    
z&AccessClosedTestCase.test_getWhereListc             C   s"   | j   | tj| jjd d S )NrD   )rc   rg   r   rN   r  r   Zread_sorted)rh   r$   r$   r%   test_readSorted  s    
z$AccessClosedTestCase.test_readSortedc             C   s&   | j   | tj| jjddg d S )Nr1   r3   )rc   rg   r   rN   r  r   r  )rh   r$   r$   r%   test_readCoordinates  s    
z)AccessClosedTestCase.test_readCoordinates)r@   rA   rB   rb   r  r  r  r  r  r  r  r  r  r  r$   r$   )ri   r%   r  i  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)ra   r  rb   rc   Zparamsbuffer_size)rh   )ri   r$   r%   rb     s    zColumnIterationTestCase.setUpc             C   sT   t |f|}x"|jD ]}t jdd|||< qW | jdd|}|| ||fS )Nr   i'  r[  r   )rs   rw  r4  r  r  rc   r   rp   )rh   r   rm   rv   r   r   r$   r$   r%   create_non_nested_table  s    
z/ColumnIterationTestCase.create_non_nested_tablec             C   sF   d}x,|j jD ] }| ||d |  |d7 }qW | |t| d S )Nr   r  r0   )r   r  r   r   )rh   rv   r   ri  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i8r2   r   r1   )rs   rY  rm   r  r-   r  r  )rh   rm   rows_in_bufferrv   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  r2   r   )rs   rY  rm   r  r-   r  r  )rh   rm   r  rv   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 )Nr  r2   r   r1   )rs   rY  rm   r  r-   r  r  )rh   rm   r  rv   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 )Nr  r2   r   )rs   rY  rm   r  r   r   r  )rh   rm   rv   r   r$   r$   r%   test_zero_length_table  s    z.ColumnIterationTestCase.test_zero_length_table)r@   rA   rB   rb   r  r  r  r  r  r  r  r$   r$   )ri   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aaaar0   g @)Zbbbbr1   g	@)r   ZS4ZicolZfcol)rm   r[  r   r   Ni'  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 )N)r   r   )rc   r   r   r   r   r   r   ro   r  r   r   rX   r   rw   r   r  rm   r4  )rh   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 )N)rc   r   r   r   r   r   r   ro   rp   r  r  r   rk  r   rX   r   r   rw   r   rm   r4  r   r   )rh   r  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 )N)rc   r   r   r   r   r   ro   rX  r   createparentsr  r  r   rk  r   rX   r   r   rw   r   rm   r4  r   r   )rh   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  )rc   r   r   r   r   r  r  r   rk  r   rX   r   r   rw   r   rm   r4  r   r   )rh   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   )rc   r   r   r   r   r   rp   r  r  r   rk  r   rX   r   r   rw   r   rm   r4  r   r   )rh   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 )N)r   r   )r   r   )rc   r   r   r   r   r   r  r   r   rX   r   rw   r   r  rm   r4  )rh   r  r$   r$   r%   test_kwargs_description_02=  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   )rc   r   r   r   r   r  r   r  r   rk  r   rX   r   r   rw   r   rm   r4  r   r   )rh   r  r  r$   r$   r%   test_kwargs_obj_descriptionK  s    
z/TestCreateTableArgs.test_kwargs_obj_descriptionc          	   C   s(   | j t| jj| j| j| j| jtd d S )N)r   r  r   )	r   r   rc   r   r   r   r   r  r+   )rh   r$   r$   r%   $test_kwargs_obj_description_error_01\  s    z8TestCreateTableArgs.test_kwargs_obj_description_error_01c          	   C   s*   | j t| jj| j| j| j| jt d d S )N)r   r  r   )	r   r   rc   r   r   r   r   r  r+   )rh   r$   r$   r%   $test_kwargs_obj_description_error_02e  s    z8TestCreateTableArgs.test_kwargs_obj_description_error_02c          	   C   s(   | j t| jj| j| j| j| jtd d S )N)r   r  r   )	r   r   rc   r   r   r   r   r  r$  )rh   r$   r$   r%   $test_kwargs_obj_description_error_03n  s    z8TestCreateTableArgs.test_kwargs_obj_description_error_03)r@   rA   rB   rs   rv   rU   rV   r  r   r   r   rm   r   r   r   r   ro   rX  r   r  r  r  r  r  r  r  r  r  r  r  r$   r$   r$   r%   r    s,   		r  c              C   s  t  } d}x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 | t tS qW tTjUr| t tV | t tW | t tX | t tY | t tZ | t t[ | t t\ | S )Nr0   )]r   Z	TestSuiter   ZaddTestZ	makeSuiter   r!  r"  r'  r+  r6  r7  r8  r:  r<  r?  r@  rA  rB  rC  rD  rE  rF  rG  rJ  rO  rQ  rR  rS  rT  rV  rf  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r#  r;  r:  r=  r<  r>  rB  rC  rD  rE  rF  rG  rH  rI  rJ  rP  rW  r^  r_  r`  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   ZheavyrK  rN  rK  rL  rM  rN  rU  )ZtheSuiteZniterr   r$   r$   r%   suitex  s    r  __main__)ZdefaultTest)Z
__future__r   r   ra  r   ru  r  r   r#   r'   r  rs   r   rx   r   r   rN   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*  Z	six.movesr   r    r&   r*   r  r+   r$  rM   r9   r:   r;   rT   ZTempFileMixinr\   r   r!  r"  ZskipIfversion_infor'  r+  r6  r7  r8  r:  Zblosc_availr<  r?  Zmin_blosc_bitshuffle_versionr@  rA  Zblosc_compressor_listrB  rC  rD  rE  rF  Z	lzo_availrG  rJ  Zbzip2_availrK  rN  rO  rQ  rR  rS  rT  rU  rV  rf  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?  rB  rC  rD  rE  rF  rG  rH  rI  rJ  rK  rL  rM  rN  rP  rW  rX  rY  r^  r_  r`  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r@   Z
parse_argvargvZprint_versionsmainr$   r$   r$   r%   <module>   s  @







           "

















3 L   ?  ?  s   7     ^   `d = /Wd 19?. #g