B
    i\u=                @   s  d dl mZ d dl mZ d dlZd dlZd dlmZ d dlZd dlm	Z	m
Z
mZmZmZmZmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ G dd dejZe
dddde
dddgddeddedde e e e e
ddd	ZG dd dejZG dd dejeZ G dd de Z!G dd  d e Z"G d!d" d"e Z#G d#d$ d$e Z$G d%d& d&e Z%G d'd( d(e Z&G d)d* d*e Z'G d+d, d,e Z(e)ej* d-G d.d/ d/e Z+e)ej, d0G d1d2 d2e Z-e)ej. d3G d4d5 d5e Z/G d6d7 d7e Z0G d8d9 d9e Z1G d:d; d;e Z2G d<d= d=ejeZ3G d>d? d?e3Z4G d@dA dAe3Z5G dBdC dCe3Z6G dDdE dEejZ7G dFdG dGejeZ8G dHdI dIejeZ9G dJdK dKejZ:G dLdM dMejeZ;G dNdO dOe;Z<G dPdQ dQe;Z=G dRdS dSejeZ>G dTdU dUe>Z?G dVdW dWe>Z@G dXdY dYe>ZAG dZd[ d[e>ZBG d\d] d]ejeZCG d^d_ d_eCZDG d`da daeCZEG dbdc dceCZFG ddde deeCZGdfdg ZHeIdhkreJejK eL  ejMdgdi dS )j    )print_function)absolute_importN)rec)Col	StringColIntColFloatColInt16Col	UInt16Col
Float32Col)common)allequal)unittest)PyTablesTestCase)descr_from_dtype)rangec               @   sx   e Zd ZeddddZedddgddZeddd	Zed
dd	Ze	ddZ
eddZeddZeddZedddZdS )Record          )itemsizedfltshapes   abcds   efgh)r   r   ))   r   )r   r   ))r   r   )r   r   )r   g@g@   r      e)r   r   N)__name__
__module____qualname__r   var0var1r   var1_var2r	   var3r   var4r   var5r
   var6var7 r(   r(   9lib/python3.7/site-packages/tables/tests/test_tablesMD.pyr      s   



r   r   r   r   )r   r   r   s   abcds   efgh)r   r   )r   r   )r   )	r   r    r!   r"   r#   r$   r%   r&   r'   c               @   s   e Zd ZejedddZejedddgdZejedddZ	ej
d	d
ddZejedddZejedddZejedddZejedddZejedddZdS )RecordDTZ2S4r   )r   )ZS4)r   r   s   abcds   efghZ2i4))r   r   i4)r   r   ))r   r   )r   r   )r   r   Zi2r   Z2f8g@Zf4g@z()u2r   Z1S1r   N)r   r   r   r   Z
from_dtypenpdtyper   r    r!   Zfrom_sctyper"   r#   r$   r%   r&   r'   r(   r(   r(   r)   r*   8   s   
r*   c                   s   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  ZS )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)   r4   R   s    
zBasicTestCase.setUpc             C   s  | j }|d }g }xRt| jD ]B}g }d| j|  gd }|| d| j|  gd gd }|| |df}|| |dfdf}	||	 || 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 d d }|| |t
| q W tjj	||j| jd| _d S )Nr   z%04dr   r   )r   r   r$   r%   r         i   )r-   r   )recordtemplater   expectedrowsappendmaxshort
isinstancer,   ndarrayfloatarraytupler   r-   record)r:   rH   rowZbuflistiZtmplistr   r    r!   r"   r#   r'   r(   r(   r)   initRecArrayZ   s6    






zBasicTestCase.initRecArrayc       
   
   C   s  | j }| jr|   xtdD ]}tj| j| jd}|dk rHt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
|d< |df|d< |dfdf|d< || j |d< t|d tjr4t|t|| g|d< nt||d< t|d tjrltt|fd |d< nt||d< |d d? d@ |d d> d@  |d< |  qW |  | j
|dt| }	|	}q W d S )N   )Z	complevelcomplibr   biglittle)rO   rN   table)titlefiltersr@   	byteorderz%04dasciir   r    r>   r'   r   r!   )r   r   r"   r#   r$   r%   r   r<   r=   i   r&   group)r7   recarrayinitrK   r   tablesFilterscompressrM   sysrS   r5   create_tablestrrH   rQ   r@   rI   encoderB   rC   r,   rD   rE   rF   rA   flushcreate_group)
r:   rU   jrR   rS   rP   rI   rJ   sgroup2r(   r(   r)   r8   }   sJ    
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ddddd	d
g	}| |tj | |tj  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 ]z}tjrtd | j tdj|  tdj|  | tj|  | j | tj|  | j qRW | |tj x@|D ]8} | }j| }| |j|j | |j|j qW dS )z2Checking table description and descriptive fields.z/table0r   r    r!   r"   r#   r$   r%   r&   r'   c                s   g | ]} | j qS r(   )r-   ).0colname)columnsr(   r)   
<listcomp>   s   z4BasicTestCase.test00_description.<locals>.<listcomp>c                s   g | ]} j | qS r(   )Z	coldtypes)rc   v)tblr(   r)   rf      s    c                s   g | ]} j | qS r(   )Z	_v_dtypes)rc   rg   )descr(   r)   rf      s    c                s   g | ]} | j qS r(   )type)rc   rd   )re   r(   r)   rf      s   c                s   g | ]} j | qS r(   )Zcoltypes)rc   rg   )rh   r(   r)   rf      s    c                s   g | ]} j | qS r(   )Z_v_types)rc   rg   )ri   r(   r)   rf      s    zdflt-->zcoldflts-->zdesc.dflts-->N)rW   	open_fileh5fnamer5   get_nodedescriptionrC   rH   dictr,   rD   r   r-   Z_v_colobjectsre   assertEquallistZcolnamesZ_v_namesr   verboseprintr   ZcoldfltsZ_v_dflts
assertTrueZareArraysEqualZ_v_pathnamesrj   )	r:   Zdescr_ZexpectedNamesZexpectedTypesrg   ZcolNameZexpectedColcolr(   )re   ri   rh   r)   test00_description   sV    





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	t| td
|jd|j td| tdt| | jd }dd | D d }| |d d |d d d |d d |d d d |d fdd||df t|d tjr6| t|d t|fd tj n| |d t| | t|d dS )zChecking table read and cuts.
z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01_readTable...rz/table0rL   c             S   s0   g | ](}|d  d d dk r|d  d d qS )r"   r   r1   r(   )rc   ry   r(   r(   r)   rf     s    z2BasicTestCase.test01_readTable.<locals>.<listcomp>zTable:zNrows in:zLast record in table ==>z$Total selected records in table ==> r   c             S   s$   g | ]}|d  d d dk r|qS )r"   r   r1   r(   )rc   ry   r(   r(   r)   rf     s    r>   r   r   r    r!   r"   r'   s   0001   1r%   r   r1   N)r   rr   rs   r;   r   rW   rk   rl   r5   rm   
nrowsinbufiterrowsrepr_v_pathnamenrowslenr@   rp   rC   r,   rD   rt   r   rF   float32rE   )r:   rP   resultry   r   r(   r(   r)   test01_readTable   s4    




zBasicTestCase.test01_readTablec          	   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 tdt| |j}dd | D d }t|d tjr| 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 | t|d tt|d fd tj n| |d t|d  | t|d dd | D }dd | D d }|d jjdkrJtd| jd  gd gd d}| t|d | td| jd  gd gd d}| t|d | td| jd  gd gd d}| t|d | td| jd  gd gd d}| t|d | td| jd  gd gd d}| t|d | tdd gd gd d}| t|d | n| |d d | t|d dS )z<Checking table read and cuts (multidimensional columns case)rx   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01b_readTable...ry   z/table0rL   c             S   s(   g | ] }|d  d d dk r|d qS )r"   r   r1   r%   r(   )rc   ry   r(   r(   r)   rf   (  s    z3BasicTestCase.test01b_readTable.<locals>.<listcomp>zNrows inrz   zLast record in table ==>z$Total selected records in table ==> c             S   s$   g | ]}|d  d d dk r|qS )r"   r   r1   r(   )rc   ry   r(   r(   r)   rf   .  s    r>   r%   r   r   r   r   
   r1   c             S   s(   g | ] }|d  d d dk r|d qS )r"   r   r1   r    r(   )rc   ry   r(   r(   r)   rf   B  s    c             S   s$   g | ]}|d  d d dk r|qS )r"   r   r1   r(   )rc   ry   r(   r(   r)   rf   C  s    r    Sz%04dZ0001N)r   rr   rs   r;   r   rW   rk   rl   r5   rm   r|   r}   r   r   ry   r   rC   r,   rD   rt   r   rF   rE   r   rp   r-   charr@   )r:   rP   Zresult1r   Zresult2ar(   r(   r)   test01b_readTable  s\    

"""""zBasicTestCase.test01b_readTablec             C   s   t jr tdd td| jj  t| jd| _| j	d}t jrjtd|j
jj td|j
jdd j | |j
jj|j
jdd j dS )	z+Checking shape of multidimensional columns.rx   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01c_readTable...ry   z/table0zvar2 col shape:z
Should be:N)r   rr   rs   r;   r   rW   rk   rl   r5   rm   colsr"   r   rp   )r:   rP   r(   r(   r)   test01c_readTableV  s    
zBasicTestCase.test01c_readTablec             C   sx  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|d< |df|d< |dfdf|d< || j |d< t|d tjr"t|t|| g|d< nt||d< t|d tjrZtt|fd |d< nt||d< |  qW |  dd | D }dd | D d }| jd }| |d d |d d d |d d |d d d |d fdd||df t|d tjr4| t |d tt|fd tj! n| |d t| | jdkr\| j}nd}| t"|d|  d S )!z4Checking whether appending record rows works or not.r   )moderx   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test02_AppendRows...z/group0/table1zNrows in oldrz   zRecord Format ==>zRecord Size ==>z%04drT   r   r    r>   r'   r   r!   )r   r   r"   r#   r$   r%   r   c             S   s0   g | ](}|d  d d dk r|d  d d qS )r"   r   r1   r(   )rc   ry   r(   r(   r)   rf     s    z3BasicTestCase.test02_AppendRows.<locals>.<listcomp>c             S   s$   g | ]}|d  d d dk r|qS )r"   r   r1   r(   )rc   ry   r(   r(   r)   rf     s    r   s   0001r{   r1   N)#rW   rk   rl   r5   r6   r7   r   rr   rs   r;   r   rm   rI   r   r   rn   _v_nested_formatsZrowsizer   
appendrowsr]   rB   rC   r,   rD   rE   rF   rA   r^   r}   rp   rt   r   r   r   )r:   rP   rI   rJ   ra   r   r   addr(   r(   r)   test02_AppendRowsf  sZ    




zBasicTestCase.test02_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| | jd }t|
 d }| |d d d |d fd|f | t|d dS )z%Checking if table is endianess aware.rx   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test03_endianess...ry   z/group0/group1/table2c             S   s    g | ]}|d  dk r|d qS )r#   r1   r"   r(   )rc   ry   r(   r(   r)   rf     s    z2BasicTestCase.test03_endianess.<locals>.<listcomp>zNrows inrz   zOn-disk byteorder ==>zLast record in table ==>z#Total selected records in table ==>r   r>   r    r   r#   s   0001r1   N)r   rr   rs   r;   r   rW   rk   rl   r5   rm   r}   r   r   rS   r   r@   rq   rp   )r:   rP   r   ry   r   r(   r(   r)   test03_endianess  s    


$zBasicTestCase.test03_endianess)r   r   r   	open_moderQ   r@   r   rY   rM   r   rH   rV   rB   r4   rK   r8   rw   r   r   r   r   r   __classcell__r(   r(   )r;   r)   r.   F   s$   #5B&<@r.   c               @   s   e Zd ZdZdS )BasicWriteTestCaseZ
BasicWriteN)r   r   r   rQ   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   rL   r   r   N)r   r   r   rQ   RecordDescriptionDictrH   r   r|   startstopstepr(   r(   r(   r)   r     s   r   c               @   s   e Zd Zd ZeZdS )RecordDTWriteTestCaseN)r   r   r   rQ   r*   rH   r(   r(   r(   r)   r     s   r   c               @   s&   e Zd Zd ZedZdde_dS )NumPyDTWriteTestCasez-(2,)S4,(2,2)S4,(2,)i4,(2,2)i4,i2,2f8,f4,i2,S1z-var0,var1,var1_,var2,var3,var4,var5,var6,var7,N)	r   r   r   rQ   r,   r-   rH   splitnamesr(   r(   r(   r)   r     s   
r   c               @   s$   e Zd ZdZejjdddddZdS )RecArrayOneWriteTestCaseZRecArrayOneWriteNz-(2,)S4,(2,2)S4,(2,)i4,(2,2)i4,i2,2f8,f4,i2,S1z-var0,var1,var1_,var2,var3,var4,var5,var6,var7r   )formatsr   r   )r   r   r   rQ   r,   r   rF   rH   r(   r(   r(   r)   r     s   r   c               @   s,   e Zd ZdZdZdZejjdddddZ	dS )RecArrayTwoWriteTestCaseZRecArrayTwoWriter0   r   Nz,(2,)a4,(2,2)a4,(2,)i4,(2,2)i4,i2,f8,f4,i2,a1z-var0,var1,var1_,var2,var3,var4,var5,var6,var7)r   r   r   )
r   r   r   rQ   r@   rV   r,   r   rF   r?   r(   r(   r(   r)   r     s   r   c               @   s,   e Zd ZdZdZdZejjdddddZ	dS )RecArrayThreeWriteTestCaseRecArrayThreeWriter0   r   Nz.(2,)a4,(2,2)a4,(2,)i4,(2,2)i4,i2,2f8,4f4,i2,a1z-var0,var1,var1_,var2,var3,var4,var5,var6,var7)r   r   r   )
r   r   r   rQ   r@   rV   r,   r   rF   r?   r(   r(   r(   r)   r     s   r   c               @   s.   e Zd ZdZdZdZejjddddddZ	dS )	RecArrayAlignedWriteTestCaser   r0   r   Nz.(2,)a4,(2,2)a4,(2,)i4,(2,2)i4,i2,2f8,4f4,i2,a1z-var0,var1,var1_,var2,var3,var4,var5,var6,var7T)r   r   r   Zaligned)
r   r   r   rQ   r@   rV   r,   r   rF   r?   r(   r(   r(   r)   r     s   r   z'BLOSC compression library not availablec               @   s   e Zd ZdZdZdZdS )CompressBloscTablesTestCaseZCompressBloscTablesr   ZbloscN)r   r   r   rQ   rY   rM   r(   r(   r(   r)   r     s   r   z%LZO compression library not availablec               @   s   e Zd ZdZdZdZdS )CompressLZOTablesTestCaseZCompressLZOTablesr   ZlzoN)r   r   r   rQ   rY   rM   r(   r(   r(   r)   r     s   r   z'BZIP2 compression library not availablec               @   s   e Zd ZdZdZdZdS )CompressBzip2TablesTestCaseZCompressBzip2Tablesr   Zbzip2N)r   r   r   rQ   rY   rM   r(   r(   r(   r)   r     s   r   c               @   s   e Zd ZdZdZdZdS )CompressZLIBTablesTestCaseZCompressOneTablesr   r2   N)r   r   r   rQ   rY   rM   r(   r(   r(   r)   r     s   r   c               @   s   e Zd ZdZdZeZdS )CompressTwoTablesTestCaseZCompressTwoTablesr   N)r   r   r   rQ   rY   r   rH   r(   r(   r(   r)   r      s   r   c               @   s   e Zd ZdZdZdZdS )BigTablesTestCaseZ	BigTablesi  r0   N)r   r   r   rQ   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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   Z!S )+BasicRangeTestCaser/   zThis is the table titlei   r0   r   r1   rL   r   c                s.   t t|   | jj| _|   | j  d S )N)r3   r   r4   r5   r6   r7   r8   r9   )r:   )r;   r(   r)   r4   C  s    
zBasicRangeTestCase.setUpc          	   C   sb  | j }xTtdD ]F}| jj|dt| | j| jt| j	| j
d}|j}xt| j
D ]}d| j
|  |d< |d 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< |  qXW |  | j|dt| }|}qW d S )NrL   rP   )rQ   rR   r@   z%04dr    r   r>   r'   r"   r#   r$   r%   r   r<   r=   i   r&   rU   )r7   r   r5   r[   r\   rH   rQ   rW   rX   rY   r@   rI   rB   rC   r,   rD   rE   rF   rA   r^   r_   )r:   rU   r`   rP   rI   rJ   rb   r(   r(   r)   r8   K  s0    

zBasicRangeTestCase.populateFilec                s  t  jd _ jd} j|_t j j j	
|j}ttt| } jr| j j j	}g }xtt|D ]}|d | d d  jk rd j	k r||d | d d  q||d | d d  jkr|d j	kr|||d | d d  q|W n jr| j j j	d}g }xtt|D ]|}|| d d  jk rvd j	k rv||| d d  n:|| d d  jkr6d j	kr6||| d d  q6W 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 r0 j j }n j} jd krd jsR jr\|d }	n j}	n  jdk r~ j j }	n j}	 j|	k r j}	tjr0t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	  |tt||	 j	  js js||	k rd j	k r fdd| j j j	D d }
 j jkrЈ |
d d tt j j j	d  n& |
d d tt||	 j	d  n||	krd j	kr fdd| j j j	D d }
 j jk rt |
d d tt j jpbd j	d  n, |
d d tt||	pd j	d   j  d S )Nry   z/table0r"   r   c                s2   g | ]*}|d  d d  j k r|d  d d qS )r"   r   )r   )rc   ry   )r:   r(   r)   rf     s    z2BasicRangeTestCase.check_range.<locals>.<listcomp>c                s2   g | ]*}|d  d d  j kr|d  d d qS )r"   r   )r   )rc   ry   )r:   r(   r)   rf     s    r   zNrows inrz   z"Last record *read* in recarray ==>r>   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 ==>c                s*   g | ]"}|d  d d  j k r|d  qS )r"   r   )r   )rc   ry   )r:   r(   r)   rf     s    c                s*   g | ]"}|d  d d  j kr|d  qS )r"   r   )r   )rc   ry   )r:   r(   r)   rf     s    )rW   rk   rl   r5   rm   r|   slicer   r   r   indicesr   r   rq   r   checkrecarrayreadrA   checkgetColr}   r@   r   rr   rs   r   rp   r9   )r:   rP   ZresrangeZ	reslengthrecarrayr   Znreccolumnstartrstoprry   r(   )r:   r)   check_rangep  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)rx   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01_range...r   rL   r   r   N)r   rr   rs   r;   r   r   r|   r   r@   r   r   r   )r:   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)rx   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01_range...r   rL   r   N)r   rr   rs   r;   r   r   r|   r@   r   r   r   r   )r:   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)rx   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test02_range...r         rL   N)r   rr   rs   r;   r   r   r|   r   r@   r   r   r   )r:   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)rx   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test03_range...r   r   r   N)r   rr   rs   r;   r   r@   r   r|   r   r   r   r   )r:   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)rx   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test04_range...r   r   N)r   rr   rs   r;   r   r@   r   r|   r   r   r   r   )r:   r(   r(   r)   test04_range  s    
zBasicRangeTestCase.test04_rangec             C   sL   t jr tdd td| jj  d| _d| _d| _| j| _	d| _
|   dS )	z*Checking ranges in table iterators (case5)rx   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test05_range...r   r   r   r   N)r   rr   rs   r;   r   r   r|   r   r@   r   r   r   )r:   r(   r(   r)   test05_range)  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)rx   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test06_range...rL   r   r   N)r   rr   rs   r;   r   r   r|   r   r@   r   r   r   )r:   r(   r(   r)   test06_range9  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)rx   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test07_range...r   rL   r   N)r   rr   rs   r;   r   r   r|   r   r   r   r   )r:   r(   r(   r)   test07_rangeI  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)rx   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test08_range...r   rL   r   N)r   rr   rs   r;   r   r   r|   r   r   r   r   )r:   r(   r(   r)   test08_rangeY  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)rx   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test09_range...r0   rL   r   r   N)r   rr   rs   r;   r   r   r|   r   r   r   r   )r:   r(   r(   r)   test09_rangei  s    
zBasicRangeTestCase.test09_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 (case10)rx   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test10_range...r   ir   r   N)r   rr   rs   r;   r   r@   r   r|   r   r   r   r   r   r   )r:   r(   r(   r)   test10_rangey  s    
zBasicRangeTestCase.test10_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)rx   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test11_range...r   ir   r   N)r   rr   rs   r;   r   r@   r   r|   r   r   r   r   r   r   )r:   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)rx   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test12_range...r   r>   r   r   N)r   rr   rs   r;   r   r@   r   r|   r   r   r   r   r   r   )r:   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 n: tk
rl   t jr^t	 \}}}td | j
  Y nX d| _y|   W n: tk
r   t jrt	 \}}}td | j
  Y nX dS )z+Checking ranges in table iterators (case13)rx   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test13_range...iz)
Great!, the next ValueError was catched!r   N)r   rr   rs   r;   r   r   r   
ValueErrorrZ   exc_infor5   r9   )r:   rj   value	tracebackr(   r(   r)   test13_range  s&    
zBasicRangeTestCase.test13_range)"r   r   r   r   rQ   r   rH   rB   r@   rY   r   r|   r   r   r   r   r4   r8   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r(   r(   )r;   r)   r   3  s:   %ir   c               @   s   e Zd ZdS )IterRangeTestCaseN)r   r   r   r(   r(   r(   r)   r     s   r   c               @   s   e Zd ZdZdS )RecArrayRangeTestCaser   N)r   r   r   r   r(   r(   r(   r)   r     s   r   c               @   s   e Zd ZdZdd ZdS )GetColRangeTestCaser   c          	   C   sl   t jr tdd td| jj  t| jd| _| jj	| _	| j
d}| t |jdd W dQ R X dS )	z-Checking non-existing Field in getCol method rx   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z%Running %s.test01_nonexistentField...ry   z/table0znon-existent-column)ZfieldN)r   rr   rs   r;   r   rW   rk   rl   r5   r6   rm   assertRaisesKeyErrorr   )r:   rP   r(   r(   r)   test01_nonexistentField  s    

z+GetColRangeTestCase.test01_nonexistentFieldN)r   r   r   r   r   r(   r(   r(   r)   r     s   r   c               @   s2   e Zd ZedddZeddddZedddZd	S )
Recr   )r   )posr   rL   r   )rL   )r   r   r   )rL   r   N)	r   r   r   r   col1r   col2r   col3r(   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 )
RecArrayIOc       
      C   s   ddgd gd }t jddgd gd td}dgd gd }dgd gd }dd	gd gd
 }t ddgd gd
 }|||f|||fg}t jj|ddd}| j| jjd| | jjj }	| 	|
 |	
  dS )z!Checking saving a normal recarrayi     rL   r   )r-   dbedeg333333?gffffff@r   g      @g333333@z(2,6)i4,(3,2)a3,(4,6)f8zcol1,col2,col3)r   r   r   N)r,   rF   intr   r5   r[   r6   r   r   rp   tostring)
r:   intlist1intlist2arrlist1arrlist2
floatlist1
floatlist2bry   r2r(   r(   r)   test00  s    
zRecArrayIO.test00c             C   s   ddgd gd }t jddgd gd td}dgd gd }dgd gd }dd	gd gd
 }t ddgd gd
 }|||f|||fg}t jj|ddd}|dd }	| j| jjd|	 | jjj }
| 	|	
 |

  dS )z7Checking saving a recarray with an offset in its bufferi  r   rL   r   )r-   r   r   g333333?gffffff@r   g      @g333333@z(2,6)i4,(3,2)a3,(4,6)f8zcol1,col2,col3)r   r   r   Nr   )r,   rF   r   r   r5   r[   r6   r   r   rp   r   )r:   r   r   r   r   r   r   r   ry   r1r   r(   r(   r)   test01
  s    
zRecArrayIO.test01c             C   s   dddgd gd g}t jdddgd gd gtd}d	gd gd }d
gd gd }ddgd gd }t ddgd gd }|||f|||fg}t jj|d ddd}|dd }	| j| jjd|	 | jjj }
| 	|	
 |

  dS )z+Checking saving a slice of a large recarrayr      #      r   rL   r   )r-   r   r   g333333?gffffff@g      @g333333@i,  z(1,6,18)i4,(3,2)a3,(4,6)f8zcol1,col2,col3)r   r   i"  i$  r   N)r,   rF   r   r   r5   r[   r6   r   r   rp   r   )r:   r   r   r   r   r   r   r   ry   r   r   r(   r(   r)   test02$  s     zRecArrayIO.test02c             C   s   dddgd gd g}t jdddgd gd gtd}d	gd gd }d
gd gd }ddgd gd }t ddgd gd }|||f|||fg}t jj|d dddd}|ddd }	|	dd }
| j| jjd|
 | jjj }	| 	|

 |	
  dS )z.Checking saving a slice of an strided recarrayr   r   r   r   r   rL   r   )r-   r   r   g333333?gffffff@g      @g333333@i,  z(1,6,18)i4,(3,2)a3,(4,6)f8zcol1,col2,col3iX  )r   r   r   N   r   )r,   rF   r   r   r5   r[   r6   r   r   rp   r   )r:   r   r   r   r   r   r   r   ry   r   r   r(   r(   r)   test03>  s     
zRecArrayIO.test03c             C   s  t jr tdd td| jj  | j| jjdt}dgd dgd dgd d	gd f\}}}}d
gd gd dgd gd dgd gd dgd gd f\}}}}	t	j
ddg||fddg||fgdd}
||
 |ddg||fddg||	fg ddgddgddggg|jjdd< t	j
ddg||fddg||fddg||fddg||	fgddd}| }t jrtdt| tdt| | | |  | |jd dS )z;Checking modifying one column (single column version, list)rx   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test08a...r   r   rL   deddb1de1g333333?r   g?gffffff?g      ?i  i  z(2,)i4,(3,)a3,(3,2)f8)r   i  r   r   r   r   Nzcol1,col2,col3)r   r   zOriginal table-->zShould look like-->)r   rr   rs   r;   r   r5   r[   r6   r   recordsrF   rA   r   r   r   r~   rp   r   r   )r:   rP   s0s1s2s3f0f1f2f3ry   r   r   r(   r(   r)   test08a[  s*    
,D
"$zRecArrayIO.test08ac             C   s  t jr tdd td| jj  | j| jjdt}dgd dgd dgd d	gd f\}}}}d
gd gd dgd gd dgd gd dgd gd f\}}}}	t	j
ddg||fddg||fgdd}
||
 |ddg||fddg||	fg t	jt
ddgddgddgggdd}|jd|dgd t	j
ddg||fddg||fddg||fddg||	fgddd}| }t jrtdt| tdt| | | |  | |jd dS ) z?Checking modifying one column (single column version, recarray)rx   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test08b...r   r   rL   r   r   r   g333333?r   g?gffffff?g      ?i  i  z(2,)i4,(3,)a3,(3,2)f8)r   i  r   r   r   r+   r   r   )r   re   r   zcol1,col2,col3)r   r   zOriginal table-->zShould look like-->N)r   rr   rs   r;   r   r5   r[   r6   r   r   rF   rA   
fromarraysr,   Zmodify_columnsr   r~   rp   r   r   )r:   rP   r   r   r   r   r   r   r   r   ry   re   r   r   r(   r(   r)   test08b~  s.    
,D
"$zRecArrayIO.test08bc             C   s  t jr tdd td| jj  | j| jjdt}dgd dgd dgd d	gd f\}}}}d
gd gd dgd gd dgd gd dgd gd f\}}}}	t	j
ddg||fddg||fgdd}
||
 |ddg||fddg||	fg t	jt
ddgddgddgggdd}|jd|dd t	j
ddg||fddg||fddg||fddg||	fgddd}| }t jrtdt| tdt| | | |  | |jd dS ) zVChecking modifying one column (single column version, recarray,
        modify_column)rx   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test08b2...r   r   rL   r   r   r   g333333?r   g?gffffff?g      ?i  i  z(2,)i4,(3,)a3,(3,2)f8)r   i  r   r   r   r+   r   r   )r   r   rd   zcol1,col2,col3)r   r   zOriginal table-->zShould look like-->N)r   rr   rs   r;   r   r5   r[   r6   r   r   rF   rA   r   r,   Zmodify_columnr   r~   rp   r   r   )r:   rP   r   r   r   r   r   r   r   r   ry   re   r   r   r(   r(   r)   test08b2  s.    
,D
"$zRecArrayIO.test08b2N)
r   r   r   r   r   r   r   r   r   r   r(   r(   r(   r)   r     s   #%r   c               @   s   e Zd Zdd ZdS )DefaultValuesc             C   s  | j | j jdt}d}x4t|D ](}|dks6|dkr@d|jd< |j  q"W |  dgd d	d
ggd dddddddf	g}tj	j
|| ddddddddddg	d}d|d d< d|d d< | }tjrtd t| td t| | | |  dS )z.Checking saving a Table MD with default valuesrP   r   rL   r   ))r   r   )r   r   r"    r   ZabcdZefgh)r   r   ))r   r   )r   r   g@g@ez,(2,)a4,(2,2)a4,(2,)i4,(2,2)i4,i2,f8,f4,u2,a1r   r    r!   r#   r$   r%   r&   r'   )r   r   r   zTable values:zRecord values:N)r5   r[   r6   r   r   rI   rA   r^   r,   r   rF   r   r   rr   rs   rp   r   )r:   rP   r   rJ   bufferry   r   r(   r(   r)   r     s4    
zDefaultValues.test00N)r   r   r   r   r(   r(   r(   r)   r     s   r   c               @   s^   e Zd ZedddZedgddZeddgddZeddgddZeddgddggddZd	S )
RecordTr   r(   )r   r   )r   r   )r   r   )r   r   N)	r   r   r   r   r   r    var2_sr"   r#   r(   r(   r(   r)   r    s
   r  c                   sD   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Z  Z	S )ShapeTestCasec                s   t t|   |   d S )N)r3   r  r4   r8   )r:   )r;   r(   r)   r4     s    zShapeTestCase.setUpc             C   s@   | j | j jdt}|j}xtdD ]}|  q$W |  d S )NrP   r   )r5   r[   r6   r  rI   r   rA   r^   )r:   rP   rI   rJ   r(   r(   r)   r8     s
    zShapeTestCase.populateFilec             C   sb   | j r|   | jjj}tjr@td|jj	dd  tddg | 
|jj	dd  dg dS )zChecking scalar shapeszThe values look like:NzThey should look like:r   )reopen_reopenr5   r6   rP   r   rr   rs   r   r   rp   tolist)r:   rP   r(   r(   r)   r     s    
zShapeTestCase.test00c             C   sf   | j r|   | jjj}tjrBtd|jj	dd  tddgg | 
|jj	dd  dgg dS )z+Checking undimensional (one element) shapeszThe values look like:NzThey should look like:r   )r  r  r5   r6   rP   r   rr   rs   r   r    rp   r  )r:   rP   r(   r(   r)   r   '  s    
zShapeTestCase.test01c             C   s   | j r|   | jjj}tjrDtd|jj	dd  tdddgg | 
|jj	dd  ddgg | 
|jjdd  ddgg dS )z,Checking undimensional (two elements) shapeszThe values look like:NzThey should look like:r   )r  r  r5   r6   rP   r   rr   rs   r   r"   rp   r  r  )r:   rP   r(   r(   r)   r   5  s    
"zShapeTestCase.test02c             C   sz   | j r|   | jjj}tjrLtd|jj	dd  tdddgddggg | 
|jj	dd  ddgddggg dS )zChecking bidimensional shapeszThe values look like:NzThey should look like:r   r   )r  r  r5   r6   rP   r   rr   rs   r   r#   rp   r  )r:   rP   r(   r(   r)   r   D  s    
zShapeTestCase.test03)
r   r   r   r4   r8   r   r   r   r   r   r(   r(   )r;   r)   r  	  s   
r  c               @   s   e Zd ZdZdS )ShapeTestCase1r   N)r   r   r   r  r(   r(   r(   r)   r  S  s   r  c               @   s   e Zd ZdZdS )ShapeTestCase2r   N)r   r   r   r  r(   r(   r(   r)   r	  W  s   r	  c                   st   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Z  ZS )SetItemTestCasec                s2   t t|   | j| jjdt| _| j| j_	d S )Nr   )
r3   r
  r4   r5   r[   r6   r   rP   
buffersizer|   )r:   )r;   r(   r)   r4   ]  s    
zSetItemTestCase.setUpc             C   s   | j }|jj}tjddg|d}|| |ddg d|d< tjddddg|dd	}| jrx|   | jj	j
}| j|_| }tjrtd
t| tdt| | | |  | |jd dS )z1Checking modifying one table row with __setitem__)i  r   g333333?)r   r   g?)r   )i  r   g333333?)r   r   g?)i  db2g333333?r   zcol1,col2,col3)r   r   zOriginal table-->zShould look like-->r   N)rP   rn   r   r   rF   rA   r  r  r5   r6   r   r  r|   r   r   rr   rs   r~   rp   r   r   )r:   rP   r   ry   r   r   r(   r(   r)   r   e  s*    

zSetItemTestCase.test01c             C   s   | j }|jj}tjddg|d}|| |ddg d|d< tjddddg|dd	}| jrx|   | 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))i  r   g333333?)r   r   g?)r   )i  r   g333333?)r   r   g?)i  r  g333333?r   zcol1,col2,col3)r   r   zOriginal table-->zShould look like-->r   N)rP   rn   r   r   rF   rA   r  r  r5   r6   r   r  r|   r   r   rr   rs   r~   rp   r   r   )r:   rP   r   ry   r   r   r(   r(   r)   test01b  s*    

zSetItemTestCase.test01bc             C   s   | j }|jj}tjddg|d}|| |ddg tjdg|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 )z,Modifying one row, with a step (__setitem__))i  r   g333333?)r   r   g?)r   )i  r   g333333?)r   r   g?r   rL   r   zcol1,col2,col3)r   r   zOriginal table-->zShould look like-->r   N)rP   rn   r   r   rF   rA   r  r  r5   r6   r   r  r|   r   r   rr   rs   r~   rp   r   r   )r:   rP   r   ry   rowsr   r   r(   r(   r)   r     s.    

zSetItemTestCase.test02c             C   s   | j }|jj}tjddg|d}|| |ddg tjddg|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 )z5Checking modifying several rows at once (__setitem__))i  r   g333333?)r   r   g?)r   )i  r   g333333?)r   r   g?r   rL   zcol1,col2,col3)r   r   zOriginal table-->zShould look like-->r   N)rP   rn   r   r   rF   rA   r  r  r5   r6   r   r  r|   r   r   rr   rs   r~   rp   r   r   )r:   rP   r   ry   r  r   r   r(   r(   r)   r     s.    


zSetItemTestCase.test03c             C   s   | j }|jj}tjddg|d}|| |ddg tjddg|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 )z9Modifying several rows at once, with a step (__setitem__))i  r   g333333?)r   r   g?)r   )i  r   g333333?)r   r   g?)r   de2g?r   Nr   zcol1,col2,col3)r   r   zOriginal table-->zShould look like-->r   )rP   rn   r   r   rF   rA   r  r  r5   r6   r   r  r|   r   r   rr   rs   r~   rp   r   r   )r:   rP   r   ry   r  r   r   r(   r(   r)   test04  s.    


zSetItemTestCase.test04c             C   s   | j }|jj}tjddg|d}|| |ddg d|jj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 )z;Checking modifying one column (single element, __setitem__))i  r   g333333?)r   r   g?)r   )i  r   g333333?)r   r   g?r>   r   )r>   r   g?zcol1,col2,col3)r   r   zOriginal table-->zShould look like-->r   N)rP   rn   r   r   rF   rA   r   r   r  r  r5   r6   r   r  r|   r   r   rr   rs   r~   rp   r   r   )r:   rP   r   ry   r   r   r(   r(   r)   test05  s*    

zSetItemTestCase.test05c             C   s   | j }|jj}tjddg|d}|| |ddg dddg|jj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 )z=Checking modifying one column (several elements, __setitem__))i  r   g333333?)r   r   g?)r   )i  r   g333333?)r   r   g?)r   r   )rL   rL   )r   r   r   r   )rL   r   g333333?)r   r   g?zcol1,col2,col3)r   r   zOriginal table-->zShould look like-->N)rP   rn   r   r   rF   rA   r   r   r  r  r5   r6   r   r  r|   r   r   rr   rs   r~   rp   r   r   )r:   rP   r   ry   r   r   r(   r(   r)   test06a3  s*    

zSetItemTestCase.test06ac          	   C   s   | j }|jj}tjddg|d}|| |ddg | t6 x&| D ]}|j	d |d< |  qNW |
  W dQ R X dS )	z5Checking modifying one column (iterator, __setitem__))i  r   g333333?)r   r   g?)r   )i  r   g333333?)r   r   g?r   r   N)rP   rn   r   r   rF   rA   r   NotImplementedErrorr}   nrowr^   )r:   rP   r   ry   rI   r(   r(   r)   test06bS  s    
zSetItemTestCase.test06bc             C   s   | j }|jj}tjddg|d}|| |ddg ddg|jj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 )z:Modifying one column (several elements, __setitem__, step))i  r   g333333?)r   r   g?)r   )i  r   g333333?)r   r   g?)r   r   )rL   rL   r   r   r   )r   r   g?)rL   r   g?zcol1,col2,col3)r   r   zOriginal table-->zShould look like-->N)rP   rn   r   r   rF   rA   r   r   r  r  r5   r6   r   r  r|   r   r   rr   rs   r~   rp   r   r   )r:   rP   r   ry   r   r   r(   r(   r)   test07f  s*    

zSetItemTestCase.test07c             C   s   | j }|jj}tjddg|d}|| |ddg dg|jj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 one column (one element, __setitem__, step))i  r   g333333?)r   r   g?)r   )i  r   g333333?)r   r   g?)r   r   r   r   rL   zcol1,col2,col3)r   r   zOriginal table-->zShould look like-->N)rP   rn   r   r   rF   rA   r   r   r  r  r5   r6   r   r  r|   r   r   rr   rs   r~   rp   r   r   )r:   rP   r   ry   r   r   r(   r(   r)   test08  s*    

zSetItemTestCase.test08c             C   s   | j }|jj}tjddg|d}|| |ddg tjddg|d}||ddd	< tjddddg|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))i  r   g333333?)r   r   g?)r   )i  r   g333333?)r   r   g?)r   r  g?r   Nr   zOriginal table-->zShould look like-->r   )rP   rn   r   r   rF   rA   r  r  r5   r6   r   r  r|   r   r   rr   rs   r~   rp   r   r   )r:   rP   r   ry   r  r   r   r(   r(   r)   test09  s,    


zSetItemTestCase.test09)r   r   r   r4   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ZdS )SetItemTestCase1r   r   N)r   r   r   r  r  r(   r(   r(   r)   r    s   r  c               @   s   e Zd ZdZdZdS )SetItemTestCase2r   r   N)r   r   r   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   r   r   r  r  r(   r(   r(   r)   r    s   r  c               @   s   e Zd ZdZdZdS )SetItemTestCase4r   i  N)r   r   r   r  r  r(   r(   r(   r)   r    s   r  c                   st   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Z  ZS )UpdateRowTestCasec                s2   t t|   | j| jjdt| _| j| j_	d S )Nr   )
r3   r  r4   r5   r[   r6   r   rP   r  r|   )r:   )r;   r(   r)   r4     s    
zUpdateRowTestCase.setUpc             C   s   | j }|jj}tjddg|d}|| |ddg x8|ddD ](}dd	d
g\|d< |d< |d< |  qFW 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 )z0Checking modifying one table row with Row.update)i  r   g333333?)r   r   g?)r   )i  r   g333333?)r   r   g?r   rL   i  r  g333333?r   r   r   )i  r  g333333?zcol1,col2,col3)r   r   zOriginal table-->zShould look like-->r   N)rP   rn   r   r   rF   rA   r}   updater  r  r5   r6   r   r  r|   r   r   rr   rs   r~   rp   r   r   )r:   rP   r   ry   rI   r   r   r(   r(   r)   r     s.    


zUpdateRowTestCase.test01c             C   s"  | j }|jj}tjddg|d}|| |ddg x`|dddD ]N}|jdkrnd\|d	< |d
< |d< n |jdkrd\|d	< |d
< |d< |  qHW 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 )z+Modifying one row, with a step (Row.update))i  r   g333333?)r   r   g?)r   )i  r   g333333?)r   r   g?r   rL   r   r   r   r   )r   r  g?zcol1,col2,col3)r   r   zOriginal table-->zShould look like-->r   N)rP   rn   r   r   rF   rA   r}   r  r  r  r  r5   r6   r   r  r|   r   r   rr   rs   r~   rp   r   r   )r:   rP   r   ry   rI   r   r   r(   r(   r)   r     s4    



zUpdateRowTestCase.test02c             C   s   | j }|jj}tjddg|d}|| |ddg x^|ddD ]N}|jdkrld\|d< |d	< |d
< n |jdkrd\|d< |d	< |d
< |  qFW 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 )z4Checking modifying several rows at once (Row.update))i  r   g333333?)r   r   g?)r   )i  r   g333333?)r   r   g?r   rL   r   r   r   r   zcol1,col2,col3)r   r   zOriginal table-->zShould look like-->r   N)rP   rn   r   r   rF   rA   r}   r  r  r  r  r5   r6   r   r  r|   r   r   rr   rs   r~   rp   r   r   )r:   rP   r   ry   rI   r   r   r(   r(   r)   r   3  s4    



zUpdateRowTestCase.test03c             C   s$  | j }|jj}tjddg|d}|| |ddg xb|jdddd	D ]N}|jdkrpd\|d
< |d< |d< n |jdkrd\|d
< |d< |d< |  qJW 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 )z8Modifying several rows at once, with a step (Row.update))i  r   g333333?)r   r   g?)r   )i  r   g333333?)r   r   g?r   r   r   )r   r   r   r   r   rL   )r   r  g?zcol1,col2,col3)r   r   zOriginal table-->zShould look like-->N)rP   rn   r   r   rF   rA   r}   r  r  r  r  r5   r6   r   r  r|   r   r   rr   rs   r~   rp   r   rt   r   )r:   rP   r   ry   rI   r   r   r(   r(   r)   r  Y  s4    



zUpdateRowTestCase.test04c             C   s   | j }|jj}tjddg|d}|| |ddg x$|ddD ]}d|d	< |  qFW 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 )z:Checking modifying one column (single element, Row.update))i  r   g333333?)r   r   g?)r   )i  r   g333333?)r   r   g?r   r   r>   r   )r>   r   g?zcol1,col2,col3)r   r   zOriginal table-->zShould look like-->r   N)rP   rn   r   r   rF   rA   r}   r  r  r  r5   r6   r   r  r|   r   r   rr   rs   r~   rp   r   r   )r:   rP   r   ry   rI   r   r   r(   r(   r)   r    s.    

zUpdateRowTestCase.test05c             C   s   | j }|jj}tjddg|d}|| |ddg x*|ddD ]}|jd |d< |  qFW 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 )z<Checking modifying one column (several elements, Row.update))i  r   g333333?)r   r   g?)r   )i  r   g333333?)r   r   g?r   r   r   )rL   r   g333333?)r   r   g?zcol1,col2,col3)r   r   zOriginal table-->zShould look like-->N)rP   rn   r   r   rF   rA   r}   r  r  r  r  r5   r6   r   r  r|   r   r   rr   rs   r~   rp   r   r   )r:   rP   r   ry   rI   r   r   r(   r(   r)   test06  s.    

zUpdateRowTestCase.test06c             C   s   | j }|jj}tjddg|d}|| |ddg x8| D ],}|d d dk rBd	|d< d
|d< |  qBW 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 )z!Modifying values from a selection)i  r   g333333?)r   r   g?)r   )i  r   g333333?)r   r   g?r   r   i  r   adar   )r   r   g?zcol1,col2,col3)r   r   zOriginal table-->zShould look like-->r   N)rP   rn   r   r   rF   rA   r}   r  r  r  r5   r6   r   r  r|   r   r   rr   rs   r~   rp   r   r   )r:   rP   r   ry   rI   r   r   r(   r(   r)   r    s2    

zUpdateRowTestCase.test07c             C   sd  | j }|jj}d}|j}x@t|D ]4}|d |d< dt|d  |d< d|d< |  q"W |  x<| D ]0}|j	|d< dt|j	 |d< d	|d< |
  qlW tjd
||dd}x<t|D ]0}||d |< dt| |d |< d	|d |< qW | jr|   | jjj}| j|_| }tjr>tdt| tdt| | | |  | |j| d
S )z$Modifying a large table (Row.update)r0   r   r   r   r   g      r   r   g        Nzcol1,col2,col3)r   r   r   zOriginal table-->zShould look like-->)rP   rn   r   rI   r   r\   rA   r^   r}   r  r  r   rF   r  r  r5   r6   r   r  r|   r   r   rr   rs   r~   rp   r   r   )r:   rP   r   r   rI   rJ   r   r   r(   r(   r)   r    s@    

zUpdateRowTestCase.test08c             C   sd  | j }|jj}d}|j}x@t|D ]4}|d |d< dt|d  |d< d|d< |  q"W |  x4| D ](}|j	|d< dt|j	 |d< d	|d< qlW t
jd
||dd}xDt|D ]8}|d |d |< dt|d  |d |< d|d |< qW | jr|   | jjj}| j|_| }tjr>tdt| tdt| | | |  | |j| d
S )z:Setting values on a large table without calling Row.updater0   r   r   r   r   g      r   r   g        Nzcol1,col2,col3)r   r   r   zOriginal table-->zShould look like-->)rP   rn   r   rI   r   r\   rA   r^   r}   r  r   rF   r  r  r5   r6   r   r  r|   r   r   rr   rs   r~   rp   r   r   )r:   rP   r   r   rI   rJ   r   r   r(   r(   r)   r     s>    

zUpdateRowTestCase.test08bc             C   s  | j }|jj}d}|j}x@t|D ]4}|d |d< dt|d  |d< d|d< |  q"W |  xP| D ]D}|d d |d	 krl|j	|d< d
t|j	 |d< d|d< |
  qlW tjd||dd}xDt|D ]8}|d |d |< dt|d  |d |< d|d |< qW ||d |< d
t| |d |< d|d |< | jrZ|   | jjj}| j|_| }tjrtdt| tdt| | | |  | |j| dS )z*Modifying selected values on a large tabler0   r   r   r   r   g      r   r   rL   r   g        Nzcol1,col2,col3)r   r   r   zOriginal table-->zShould look like-->)rP   rn   r   rI   r   r\   rA   r^   r}   r  r  r   rF   r  r  r5   r6   r   r  r|   r   r   rr   rs   r~   rp   r   r   )r:   rP   r   r   rI   rJ   r   r   r(   r(   r)   r  D  sH    

zUpdateRowTestCase.test09c             C   s  | j }|jj}d}|j}x@t|D ]4}|d |d< dt|d  |d< d|d< |  q"W |  x@|jdd	D ]0}|j	|d< d
t|j	 |d< d|d< |
  qpW tj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rZ|   | 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)r0   r   r   r   r   g      r   r   )r   r   g        Nzcol1,col2,col3)r   r   r   r   zOriginal table-->zShould look like-->)rP   rn   r   rI   r   r\   rA   r^   r}   r  r  r   rF   r  r  r5   r6   r   r  r|   r   r   rr   rs   r~   rp   r   r   )r:   rP   r   r   rI   rJ   r   r   r(   r(   r)   test09bw  sH    

zUpdateRowTestCase.test09b)r   r   r   r4   r   r   r   r  r  r  r  r  r   r  r!  r   r(   r(   )r;   r)   r    s   #&&&##%--3r  c               @   s   e Zd ZdZdZdS )UpdateRowTestCase1r   r   N)r   r   r   r  r  r(   r(   r(   r)   r"    s   r"  c               @   s   e Zd ZdZdZdS )UpdateRowTestCase2r   r   N)r   r   r   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   r   r   r  r  r(   r(   r(   r)   r$    s   r$  c               @   s   e Zd ZdZdZdS )UpdateRowTestCase4r   i  N)r   r   r   r  r  r(   r(   r(   r)   r%    s   r%  c              C   s  t  } d}xt|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 qW t j!r| t t" | t t# | S )Nr   )$r   Z	TestSuiter   ZaddTestZ	makeSuiter   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r  r  r  r"  r#  r$  r%  r   r   r   Zheavyr   r   )ZtheSuiteZniternr(   r(   r)   suite  sD    r'  __main__)ZdefaultTest)NZ
__future__r   r   rZ   Znumpyr,   r   r   rW   r   r   r   r   r	   r
   r   Ztables.testsr   Ztables.tests.commonr   r   r   ZTestCaseZtables.descriptionr   Z	six.movesr   ZIsDescriptionr   r   r*   ZTempFileMixinr.   r   r   r   r   r   r   r   r   ZskipIfZblosc_availr   Z	lzo_availr   Zbzip2_availr   r   r   r   r   r   r   r   r   r   r   r  r  r  r	  r
  r  r  r  r  r  r"  r#  r$  r%  r'  r   Z
parse_argvargvZprint_versionsmainr(   r(   r(   r)   <module>   s   $  z	

    Z7J  s   M(
