B
    i\'                @   sn  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Zd dlZd dlmZm	Z	m
Z
mZmZmZmZmZmZ d dlmZmZmZ d dlmZ d dlmZ d dlmZ d d	lmZmZmZmZ d d
lm Z m!Z! d dlm"Z# d dl$Z$d dl%m&Z& dZ'dZ(G dd dej)Z*G dd deje#Z+e(d Z,G dd de+Z-G dd de+Z.e /ej0 dG dd de+Z1e /ej2 dG dd de+Z3e /ej4 dG dd  d e+Z5G d!d" d"e+Z6G d#d$ d$e+Z7G d%d& d&e+Z8G d'd( d(e+Z9G d)d* d*e+Z:G d+d, d,e+Z;G d-d. d.eje#Z<G d/d0 d0e=Z>e> Z?e>d1d2Z@e>ejAd3d4d1d1d5d6ZBG d7d8 d8eje#ZCG d9d: d:eCZDG d;d< d<eCZEG d=d> d>eCZFG d?d@ d@eCZGG dAdB dBeCZHG dCdD dDeCZIG dEdF dFeCZJG dGdH dHeCZKG dIdJ dJeCZLG dKdL dLeCZMG dMdN dNeCZNG dOdP dPeje#ZOG dQdR dRee#ZPG dSdT dTee#ZQG dUdV dVejRe#ZSdWZ(G dXdY dYee#ZTG dZd[ d[ee#ZUG d\d] d]eUZVG d^d_ d_eUZWG d`da daeUZXG dbdc dceUZYG ddde deeje#ZZG dfdg dgeZZ[G dhdi dieZZ\G djdk dkeje#Z]G dldm dme]Z^G dndo doee#Z_dpdq Z`eadrkrjd dlbZbecebjd ee  e jfdqds dS )t    )print_function)absolute_importN)		StringColBoolColIntColFloatColInt8ColInt32ColInt64Col	UInt16Col
Float32Col)Indexdefault_auto_indexdefault_index_filters)calc_chunksize)OldIndexWarning)common)verboseallequalheavyTempFileMixin)unittesttest_filename)PyTablesTestCase)range
   )`            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
d	S )
TDescr          )itemsizedfltposr      )r%   r&   r   N)__name__
__module____qualname__r   var1r   var2r   var3r   var4 r/   r/   8lib/python3.7/site-packages/tables/tests/test_indexes.pyr        s   r    c                   s   e Zd ZdZdZdZdZeZe	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d,d- Zd.d/ Z   Z!S )0BasicTestCaser   zlibr'   c                s.   t t|   | jj| _|   | j  d S )N)superr1   setUph5fileroot	rootgrouppopulateFileclose)self)	__class__r/   r0   r4   /   s    
zBasicTestCase.setUpc             C   s   | j }d}tj| j| j| j| jd| _| j	|dt
|| j| j}x`t| jD ]R}t|d|jd< |d |jd< ||jd< t| j| d	 |jd
< |j  qLW |  x t|jD ]}|jtd}qW trtd| j td| d S )NzThis is the IndexArray title)	complevelcomplibshuffle
fletcher32tableasciir+   r'   r,   r-   r#   r.   )_blocksizeszNumber of written rows:zNumber of indexed rows:)r7   tablesFilterscompressr=   r>   r?   filtersr5   create_tabler    nrowsr   strencoderowfloatappendflushsix
itervaluescolinstancescreate_indexsmall_blocksizesr   print)r:   grouptitler@   icol	indexrowsr/   r/   r0   r8   7   s*    

zBasicTestCase.populateFilec             C   s   t rtdd td| jj  tj| jdd| _| jjj	}x.t
dD ]"}t|d|jd< |j  qDW |  |jjj}t rtd	|j td
|j td|jj td|jd  dd |dD }| t|d | |dgd  dS )z:Checking flushing an Index incrementing only the last row.
z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z!Running %s.test00_flushLastRow...a)moder   rA   r+   zMax rows in buf:zNumber of elements per slice:zChunk size:zElements in last row:c             S   s   g | ]}|d  qS )r+   r/   ).0pr/   r/   r0   
<listcomp>j   s    z5BasicTestCase.test00_flushLastRow.<locals>.<listcomp>zvar1 == b"1"r'      1N)r   rT   r;   r(   rC   	open_fileh5fnamer5   r6   r@   r   rI   rJ   rK   rM   rN   colsr+   index
nrowsinbuf	slicesizesorted	chunksizeZ	indicesLRwhereassertEquallen)r:   r@   rW   idxcolresultsr/   r/   r0   test00_flushLastRowR   s&    


z!BasicTestCase.test00_flushLastRowc             C   s6  t rtdd td| jj  tj| jdd| _| jjj	}x6t
|dD ]$\}}t||d< ||d< |  qJW |  |jjj}|jjj}t rtd	|j td
|j | |jd | |jd dd |dD }| t|d | |dgd  dd |dD }| t|d | |dgd  dS )z9Checking automatic re-indexing after an update operation.rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test00_update...r[   )r\   z(var3>1) & (var3<5)r+   r-   zDirtyness of var1 col:zDirtyness of var3 col:Fc             S   s   g | ]}|d  qS )r+   r/   )r^   r_   r/   r/   r0   r`      s    z/BasicTestCase.test00_update.<locals>.<listcomp>zvar1 == b"1"r'   ra   c             S   s   g | ]}|d  qS )r-   r/   )r^   r_   r/   r/   r0   r`      s    z	var3 == 0r   N)r   rT   r;   r(   rC   rb   rc   r5   r6   r@   	enumeraterj   rI   updaterN   rd   r+   re   r-   dirtyrk   rl   )r:   r@   rW   rK   Zidxcol1Zidxcol3rn   r/   r/   r0   test00_updaten   s.    



zBasicTestCase.test00_updatec             C   s   t rtdd td| jj  tj| jdd| _| jjj	}|j
jj}t rntd|j td|j td|jj d	d
 |dD }| t|d | |dg dS )z)Checking reading an Index (string flavor)rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01_readIndex...r)r\   zMax rows in buf:zNumber of elements per slice:zChunk size:c             S   s   g | ]}|d  qS )r+   r/   )r^   r_   r/   r/   r0   r`      s    z2BasicTestCase.test01_readIndex.<locals>.<listcomp>zvar1 == b"1"r#   ra   N)r   rT   r;   r(   rC   rb   rc   r5   r6   r@   rd   r+   re   rf   rg   rh   ri   rj   rk   rl   )r:   r@   rm   rn   r/   r/   r0   test01_readIndex   s    


zBasicTestCase.test01_readIndexc             C   s   t rtdd td| jj  tj| jdd| _| jjj	}|j
jj}t rztd|j td|j td|j td	|jj d
d |dD }t rtd| | t|| jd  | |dg| jd   dS )z'Checking reading an Index (bool flavor)rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test02_readIndex...rt   )r\   zRows in table:zMax rows in buf:zNumber of elements per slice:zChunk size:c             S   s   g | ]}|d  qS )r,   r/   )r^   r_   r/   r/   r0   r`      s    z2BasicTestCase.test02_readIndex.<locals>.<listcomp>zvar2 == TruezSelected values:r'   TN)r   rT   r;   r(   rC   rb   rc   r5   r6   r@   rd   r,   re   rH   rf   rg   rh   ri   rj   rk   rl   )r:   r@   rm   rn   r/   r/   r0   test02_readIndex   s     



zBasicTestCase.test02_readIndexc          	   C   s   t rtdd td| jj  tj| jdd| _| jjj	}|j
jj}t rntd|j td|j td|jj d	d
 |dD }t rtd| | t|td|jd  | |ttdtd|j dS )z&Checking reading an Index (int flavor)rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test03_readIndex...rt   )r\   zMax rows in buf:zNumber of elements per slice:zChunk size:c             S   s   g | ]}|d  qS )r-   r/   )r^   r_   r/   r/   r0   r`      s    z2BasicTestCase.test03_readIndex.<locals>.<listcomp>z(1<var3)&(var3<10)zSelected values:r   r'   N)r   rT   r;   r(   rC   rb   rc   r5   r6   r@   rd   r-   re   rf   rg   rh   ri   rj   rk   rl   minrH   listr   )r:   r@   rm   rn   r/   r/   r0   test03_readIndex   s    



zBasicTestCase.test03_readIndexc          
   C   s   t rtdd td| jj  tj| jdd| _| jjj	}|j
jj}t rztd|j td|j td|j td	|jj d
d |dD }t rtd| | t|td|j | |dd ttttd|jD  dS )z(Checking reading an Index (float flavor)rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test04_readIndex...rt   )r\   zMax rows in buf:zNumber of rows in table:zNumber of elements per slice:zChunk size:c             S   s   g | ]}|d  qS )r.   r/   )r^   r_   r/   r/   r0   r`      s    z2BasicTestCase.test04_readIndex.<locals>.<listcomp>z	var4 < 10zSelected values:r   c             S   s   g | ]}t |qS r/   )rL   )r^   rW   r/   r/   r0   r`      s    N)r   rT   r;   r(   rC   rb   rc   r5   r6   r@   rd   r.   re   rf   rH   rg   rh   ri   rj   rk   rl   rw   reversedrx   r   )r:   r@   rm   rn   r/   r/   r0   test04_readIndex   s"    



zBasicTestCase.test04_readIndexc             C   s   t rtdd td| jj  tj| jdd| _| jjj	}|j
jj}t rntd|j td|j td|jj d	|_|d
}dd |D }t rtd| td| | t|t| | || dS )z=Checking reading an Index with get_where_list (string flavor)rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z!Running %s.test05_getWhereList...r[   )r\   zMax rows in buf:zNumber of elements per slice:zChunk size:pythonzvar1 < b"10"c             S   s   g | ]}|d  dk r|j qS )r+   s   10)nrow)r^   r_   r/   r/   r0   r`      s    z5BasicTestCase.test05_getWhereList.<locals>.<listcomp>zSelected values:zShould look like:N)r   rT   r;   r(   rC   rb   rc   r5   r6   r@   rd   r.   re   rf   rg   rh   ri   flavorget_where_listrk   rl   )r:   r@   rm   rowList1rowList2r/   r/   r0   test05_getWhereList   s&    





z!BasicTestCase.test05_getWhereListc             C   s   t rtdd td| jj  tj| jdd| _| jjj	}|j
jj}t rztd|j td|j td|j td	|jj d
|_|jddd}dd |D }t|tj}t rtd| td| | t|t| | t|| dS )z;Checking reading an Index with get_where_list (bool flavor)rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z!Running %s.test06_getWhereList...r[   )r\   zMax rows in buf:zRows in tables:zNumber of elements per slice:zChunk size:numpyzvar2 == FalseT)sortc             S   s   g | ]}|d  dkr|j qS )r,   F)r}   )r^   r_   r/   r/   r0   r`     s    z5BasicTestCase.test06_getWhereList.<locals>.<listcomp>zSelected values:zShould look like:N)r   rT   r;   r(   rC   rb   rc   r5   r6   r@   rd   r,   re   rf   rH   rg   rh   ri   r~   r   r   arrayZint64rk   rl   
assertTruer   )r:   r@   rm   r   r   r/   r/   r0   test06_getWhereList  s*    




z!BasicTestCase.test06_getWhereListc             C   s   t rtdd td| jj  tj| jdd| _| jjj	}|j
jj}t rntd|j td|j td|jj d	|_|jd
dd}dd |D }t rtd| td| | t|t| | || dS )z:Checking reading an Index with get_where_list (int flavor)rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z!Running %s.test07_getWhereList...r[   )r\   zMax rows in buf:zNumber of elements per slice:zChunk size:r|   z	var3 < 15T)r   c             S   s   g | ]}|d  dk r|j qS )r-      )r}   )r^   r_   r/   r/   r0   r`   9  s    z5BasicTestCase.test07_getWhereList.<locals>.<listcomp>zSelected values:zShould look like:N)r   rT   r;   r(   rC   rb   rc   r5   r6   r@   rd   r.   re   rf   rg   rh   ri   r~   r   rk   rl   )r:   r@   rm   r   r   r/   r/   r0   test07_getWhereList%  s&    




z!BasicTestCase.test07_getWhereListc             C   s   t rtdd td| jj  tj| jdd| _| jjj	}|j
jj}t rntd|j td|j td|jj d	|_|jd
dd}dd |D }t rtd| td| | t|t| | || dS )z<Checking reading an Index with get_where_list (float flavor)rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z!Running %s.test08_getWhereList...r[   )r\   zMax rows in buf:zNumber of elements per slice:zChunk size:r|   z	var4 < 10T)r   c             S   s   g | ]}|d  dk r|j qS )r.   r   )r}   )r^   r_   r/   r/   r0   r`   T  s    z5BasicTestCase.test08_getWhereList.<locals>.<listcomp>zSelected values:zShould look like:N)r   rT   r;   r(   rC   rb   rc   r5   r6   r@   rd   r.   re   rf   rg   rh   ri   r~   r   rk   rl   )r:   r@   rm   r   r   r/   r/   r0   test08_getWhereList@  s&    




z!BasicTestCase.test08_getWhereListc             C   s2  t rtdd td| jj  tj| jdd| _| jjj	}|j
jj}t r^td td|j
j | |jd d	 | |d
k	 |j
j  t rtd td|j
j | |j
jjd
k | |jd d |j
jjtd}| |d
k	 |j
jj}t rtd td|j
j | |d
k	 | |jd d	 d
S )zChecking removing an index.rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z!Running %s.test09a_removeIndex...r[   )r\   zBefore deletionzvar1 column:r+   r#   NzAfter deletionr   )rB   zAfter re-creation)r   rT   r;   r(   rC   rb   rc   r5   r6   r@   rd   r+   re   rk   
colindexedr   remove_indexrR   rS   )r:   r@   rm   rY   r/   r/   r0   test09a_removeIndex[  s4    



z!BasicTestCase.test09a_removeIndexc             C   sR  t rtdd td| jj  tj| jdd| _| jjj	}|j
jj}t r^td td|j
j | |dk	 | |jd	 d
 |j
j  | jdd | jjj	}|j
jj}t rtd td|j
j | |j
jjdk | |jd	 d |j
jjtd}| |dk	 |j
jj}t r.td td|j
j | |dk	 | |jd	 d
 dS )z/Checking removing an index (persistent version)rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z!Running %s.test09b_removeIndex...r[   )r\   zBefore deletionzvar1 index column:Nr+   r#   zAfter deletionzvar1 column:r   )rB   zAfter re-creation)r   rT   r;   r(   rC   rb   rc   r5   r6   r@   rd   r+   re   r   rk   r   r   _reopenrR   rS   )r:   r@   rm   rY   r/   r/   r0   test09b_removeIndex  s:    





z!BasicTestCase.test09b_removeIndexc             C   s,  t rtdd td| jj  tj| jdd| _| jjj	}|j
jj}t rZtd td| | |jd d	 | |d
k	 | jdd}||d t rtd td| | |j
jjd
k	 | |jd d	 d|_|d}dd |D }t rtd| td| | t|t| | || d
S )z&Checking moving a table with an index.rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test10a_moveIndex...r[   )r\   zBefore movezvar1 column:r+   r#   N/agrouptable2z
After mover|   zvar1 < b"10"c             S   s   g | ]}|d  dk r|j qS )r+   s   10)r}   )r^   r_   r/   r/   r0   r`     s    z3BasicTestCase.test10a_moveIndex.<locals>.<listcomp>zSelected values:zShould look like:)r   rT   r;   r(   rC   rb   rc   r5   r6   r@   rd   r+   re   rk   r   r   create_groupmover~   r   rl   )r:   r@   rm   r   r   r   r/   r/   r0   test10a_moveIndex  s4    







zBasicTestCase.test10a_moveIndexc             C   sZ  t rtdd td| jj  tj| jdd| _| jjj	}|j
jj}t rZtd td| | |dk	 | |jd	 d
 | jdd}||d | jdd | jjjj}|j
jj}t rtd td| | |j
jjdk	 | |jd	 d
 d|_|d}dd |D }t r6td|t| td|t| | t|t| | || dS )z:Checking moving a table with an index (persistent version)rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test10b_moveIndex...r[   )r\   zBefore movezvar1 index column:Nr+   r#   r   r   r   z
After movezvar1 column:r|   zvar1 < b"10"c             S   s   g | ]}|d  dk r|j qS )r+   s   10)r}   )r^   r_   r/   r/   r0   r`     s    z3BasicTestCase.test10b_moveIndex.<locals>.<listcomp>zSelected values:zShould look like:)r   rT   r;   r(   rC   rb   rc   r5   r6   r@   rd   r+   re   r   rk   r   r   r   r   r   r   r~   r   typerl   )r:   r@   rm   r   r   r   r/   r/   r0   test10b_moveIndex  s:    






zBasicTestCase.test10b_moveIndexc             C   s.  t rtdd td| jj  tj| jddd| _| jjj	}|j
jj}t r\td td| | |jd	 d
 | |dk	 | jdd}||d t rtd td| | |j
jjdk	 | |jd	 d
 d|_|d}dd |D }t r
td| td| | t|t| | || dS )z9Checking moving a table with an index (small node cache).rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test10c_moveIndex...r[   r   )r\   node_cache_slotszBefore movezvar1 column:r+   r#   Nr   r   r   z
After mover|   zvar1 < b"10"c             S   s   g | ]}|d  dk r|j qS )r+   s   10)r}   )r^   r_   r/   r/   r0   r`     s    z3BasicTestCase.test10c_moveIndex.<locals>.<listcomp>zSelected values:zShould look like:)r   rT   r;   r(   rC   rb   rc   r5   r6   r@   rd   r+   re   rk   r   r   r   r   r~   r   rl   )r:   r@   rm   r   r   r   r/   r/   r0   test10c_moveIndex  s6    









zBasicTestCase.test10c_moveIndexc             C   s.  t rtdd td| jj  tj| jddd| _| jjj	}|j
jj}t r\td td| | |jd	 d
 | |dk	 | jdd}||d t rtd td| | |j
jjdk	 | |jd	 d
 d|_|d}dd |D }t r
td| td| | t|t| | || dS )z6Checking moving a table with an index (no node cache).rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test10d_moveIndex...r[   r   )r\   r   zBefore movezvar1 column:r+   r#   Nr   r   r   z
After mover|   zvar1 < b"10"c             S   s   g | ]}|d  dk r|j qS )r+   s   10)r}   )r^   r_   r/   r/   r0   r`   @  s    z3BasicTestCase.test10d_moveIndex.<locals>.<listcomp>zSelected values:zShould look like:)r   rT   r;   r(   rC   rb   rc   r5   r6   r@   rd   r+   re   rk   r   r   r   r   r~   r   rl   )r:   r@   rm   r   r   r   r/   r/   r0   test10d_moveIndex   s6    









zBasicTestCase.test10d_moveIndexc             C   s  t rtdd td| jj  tj| jdd| _| jjj	}|j
jj}t r^td td|j
j | |jd d	 | |d
k	 | jd t rtd | d| jjk | jddtd| j| j}xZt| jD ]L}t||jd< |d |jd< ||jd< t| j| d	 |jd< |j  qW |  x0t|jD ] }|jtd}| |d
k	 q4W |j
jj}t r~td td|j
j | |d
k	 | |jd d	 d
S )z'Checking removing a table with indexes.rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z*Running %s.test11a_removeTableWithIndex...r[   )r\   zBefore deletionzvar1 column:r+   r#   Nz/tablezAfter deletionr@   r   z	New tabler'   r,   r-   r.   )rB   zAfter re-creation) r   rT   r;   r(   rC   rb   rc   r5   r6   r@   rd   r+   re   rk   r   r   remove_noderG   r    rF   rH   r   rI   rK   rL   rM   rN   rO   rP   rQ   rR   rS   )r:   r@   rm   rW   rX   rY   r/   r/   r0   test11a_removeTableWithIndexG  sD    




z*BasicTestCase.test11a_removeTableWithIndexc             C   s  t rtdd td| jj  tj| jdd| _| jjj	}|j
jj}t r^td td|j
j | |jd d	 | |d
k	 | jd t rtd | d| jjk | jdd | jddtd| j| j}xZt| jD ]L}t||jd< |d |jd< ||jd< t| j| d	 |jd< |j  qW |  x0t|jD ] }|jt d}| |d
k	 q@W |j
jj}t rtd td|j
j | |d
k	 | |jd d	 d
S )z=Checking removing a table with indexes (persistent version 2)rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z*Running %s.test11b_removeTableWithIndex...r[   )r\   zBefore deletionzvar1 column:r+   r#   Nz/tablezAfter deletionr@   zr+r   z	New tabler'   r,   r-   r.   )rB   zAfter re-creation)!r   rT   r;   r(   rC   rb   rc   r5   r6   r@   rd   r+   re   rk   r   r   r   r   rG   r    rF   rH   r   rI   rK   rL   rM   rN   rO   rP   rQ   rR   rS   )r:   r@   rm   rW   rX   rY   r/   r/   r0   test11b_removeTableWithIndext  sF    




z*BasicTestCase.test11b_removeTableWithIndexc             C   s   t rtdd td| jj  G dd dtj}t| j t	
d| _tj| jdd| _| j| jjd	|}|jjjtd
 |j}x0tdD ]$}||d< t|d |d< |  qW |  | jdd | j| jjj dS )z=Checking removing a table with indexes (persistent version 3)rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z*Running %s.test11c_removeTableWithIndex...c               @   s    e Zd ZeddZeddZdS )z<BasicTestCase.test11c_removeTableWithIndex.<locals>.Distancer   )r&   r#   N)r(   r)   r*   r	   framer   distancer/   r/   r/   r0   Distance  s   
r   z.h5w)r\   distance_table)rB   r   r   r'   r   zr+N)r   rT   r;   r(   rC   IsDescriptionosremoverc   tempfileZmktemprb   r5   rG   r6   rd   r   rR   rS   rK   r   rL   rM   rN   r   r   r   )r:   r   r@   rt   rW   r/   r/   r0   test11c_removeTableWithIndex  s&    
z*BasicTestCase.test11c_removeTableWithIndexc             C   sB  t j| jdd| _| jjj}dd| jg}| jdkrB|| jd  x|D ]}d|dt	|dg}d|dt	|dg}y&x t
|d  |d  d7  < q|W W nX tk
r   x |d D ]}|d  d7  < qW x |d D ]}|d  d7  < qW Y nX | |d | | |d | | tt|dt	|d| qHW d S )	Nrt   )r\   r#   r!   i  r   z
(var3 < e))e)rC   rb   rc   r5   r6   r@   rH   rM   rj   dictnextStopIterationrk   rl   rx   )r:   r@   ZtestslimitZhandle_aZhandle_b_r/   r/   r0   test12_doubleIterate  s*    


z"BasicTestCase.test12_doubleIterate)"r(   r)   r*   rE   r=   r>   r?   minRowIndexrH   rS   ssr4   r8   ro   rs   ru   rv   ry   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__r/   r/   )r;   r0   r1   '   s8    $)&+''-0r1   r'   c               @   s    e Zd ZdZdZdZdZeZdS )BasicReadTestCaser   r2   N)	r(   r)   r*   rE   r=   r>   r?   small_ssrH   r/   r/   r/   r0   r     s
   r   c               @   s    e Zd ZdZdZdZdZeZdS )ZlibReadTestCaser#   r2   r   N)	r(   r)   r*   rE   r=   r>   r?   r   rH   r/   r/   r/   r0   r     s
   r   z'BLOSC compression library not availablec               @   s    e Zd ZdZdZdZdZeZdS )BloscReadTestCaser#   Zbloscr   N)	r(   r)   r*   rE   r=   r>   r?   r   rH   r/   r/   r/   r0   r     s
   r   z%LZO compression library not availablec               @   s    e Zd ZdZdZdZdZeZdS )LZOReadTestCaser#   Zlzor   N)	r(   r)   r*   rE   r=   r>   r?   r   rH   r/   r/   r/   r0   r     s
   r   z'BZIP2 compression library not availablec               @   s    e Zd ZdZdZdZdZeZdS )Bzip2ReadTestCaser#   Zbzip2r   N)	r(   r)   r*   rE   r=   r>   r?   r   rH   r/   r/   r/   r0   r     s
   r   c               @   s    e Zd ZdZdZdZdZeZdS )ShuffleReadTestCaser#   r2   r   N)	r(   r)   r*   rE   r=   r>   r?   r   rH   r/   r/   r/   r0   r     s
   r   c               @   s    e Zd ZdZdZdZdZeZdS )Fletcher32ReadTestCaser#   r2   r   N)	r(   r)   r*   rE   r=   r>   r?   r   rH   r/   r/   r/   r0   r     s
   r   c               @   s    e Zd ZdZdZdZdZeZdS )ShuffleFletcher32ReadTestCaser#   r2   N)	r(   r)   r*   rE   r=   r>   r?   r   rH   r/   r/   r/   r0   r     s
   r   c               @   s   e Zd Zeed  ZdS )OneHalfTestCaser'   N)r(   r)   r*   r   rH   r/   r/   r/   r0   r   $  s   r   c               @   s   e Zd Zed ZdS )UpperBoundTestCaser#   N)r(   r)   r*   r   rH   r/   r/   r/   r0   r   (  s   r   c               @   s   e Zd Zed d ZdS )LowerBoundTestCaser'   r#   N)r(   r)   r*   r   rH   r/   r/   r/   r0   r   ,  s   r   c               @   s8   e Zd ZeZdd Zdd Zdd Zdd Zd	d
 Z	dS )DeepTableIndexTestCasec             C   s   | j | j jd}d}| j |dt|d| j}xt| jD ]}|j  q:W |	  |j
j }| |dk	 |j
jj}| |jd d | |dk	 | |j| j dS )z9Checking the indexing of a table in a 2nd level hierarchyr   zThis is the IndexArray titler@   Nr+   r#   )r5   r   r6   rG   r    rH   r   rK   rM   rN   rd   r+   rR   r   re   rk   r   	nelements)r:   rU   rV   r@   rW   rY   rm   r/   r/   r0   test013  s    

zDeepTableIndexTestCase.test01c             C   s   | j | j jd}d}| j |dt|d| j}xt| jD ]}|j  q:W |	  |j
j }| |dk	 |j
jj}| jdd | j jjj}|j
jj}| |jd d | |dk	 | |j| j dS )	zJChecking the indexing of a table in 2nd level
        (persistent version)r   zThis is the IndexArray titler@   Nr[   )r\   r+   r#   )r5   r   r6   rG   r    rH   r   rK   rM   rN   rd   r+   rR   r   re   r   r   r@   rk   r   r   )r:   rU   rV   r@   rW   rY   rm   r/   r/   r0   test01bI  s     


zDeepTableIndexTestCase.test01bc             C   s   | j | j jd}| j |d}| j |d}d}| j |dt|d| j}xt| jD ]}|j  qVW |	  |j
j }| |dk	 |j
jj}| |jd d | |dk	 | |j| j dS )z9Checking the indexing of a table in a 4th level hierarchyr   zThis is the IndexArray titler@   Nr+   r#   )r5   r   r6   rG   r    rH   r   rK   rM   rN   rd   r+   rR   r   re   rk   r   r   )r:   rU   rV   r@   rW   rY   rm   r/   r/   r0   test02h  s    

zDeepTableIndexTestCase.test02c             C   s   | j | j jd}| j |d}| j |d}d}| j |dt|d| j}xt| jD ]}|j  qVW |	  |j
j }| |dk	 |j
jj}| jdd | j jjjjj}|j
jj}| |jd d | |dk	 | |j| j dS )	zLChecking the indexing of a table in a 4th level
        (persistent version)r   zThis is the IndexArray titler@   Nr[   )r\   r+   r#   )r5   r   r6   rG   r    rH   r   rK   rM   rN   rd   r+   rR   r   re   r   r   r@   rk   r   r   )r:   rU   rV   r@   rW   rY   rm   r/   r/   r0   test02b  s$    


zDeepTableIndexTestCase.test02bc             C   s   | j j}xtdD ]}| j |d}qW d}| j |dt|d| j}xt| jD ]}|j  qPW |	  |j
j }| |dk	 |j
jj}| |jd d | |dk	 | |j| j dS )z;Checking the indexing of a table in a 100th level hierarchyd   r   zThis is the IndexArray titler@   Nr+   r#   )r5   r6   r   r   rG   r    rH   rK   rM   rN   rd   r+   rR   r   re   rk   r   r   )r:   rU   rW   rV   r@   rY   rm   r/   r/   r0   test03  s    

zDeepTableIndexTestCase.test03N)
r(   r)   r*   r   rH   r   r   r   r   r   r/   r/   r/   r0   r   0  s   "r   c               @   s   e Zd ZeefddZdS )
IndexPropsc             C   s   || _ || _d S )N)autorF   )r:   r   rF   r/   r/   r0   __init__  s    zIndexProps.__init__N)r(   r)   r*   r   r   r   r/   r/   r/   r0   r     s   r   F)r   r   r2   )r<   r=   r>   r?   )rF   c                   s   e Zd ZdZeZdddg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  ZS )$AutomaticIndexingTestCaser#   r+   r,   r-   )      r!   r'   c          	      s   t t|   d}| jj}d}| jj|dt|d | j|d| _| j	j
| j_x$| jD ]}| jj| j| jd qPW xt| jD ]}| jj  qzW | j  | jr| jdd | jjj| _d S )NzThis is the IndexArray title)r'   r@   )
chunkshape)rB   r[   )r\   )r3   r   r4   r5   r6   rG   r    rH   r@   ipropsr   	autoindexcolsToIndexrQ   rR   rS   r   rK   rM   rN   reopenr   )r:   rV   r6   r   colnamerW   )r;   r/   r0   r4     s"    

zAutomaticIndexingTestCase.setUpc             C   s  t rtdd td| jj  | j}| jtkr>| |jd n| |jd | jtkr| |j	d d | 
|jjjdk | |j	d d | 
|jjjdk | |j	d	 d | 
|jjjdk | |j	d
 d | 
|jjjdk n| |j	d d | 
|jjjdk	 | |j	d d | 
|jjjdk	 | |j	d	 d | 
|jjjdk	 | |j	d
 d | 
|jjjdk dS )z$Checking indexing attributes (part1)rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01_attrs...r   r#   r+   Nr,   r-   r.   )r   rT   r;   r(   r@   r   DefaultPropsrk   indexedr   r   rd   r+   re   r,   r-   r.   )r:   r@   r/   r/   r0   test01_attrs  s0    


z&AutomaticIndexingTestCase.test01_attrsc             C   s  t rtdd td| jj  | j}t rD|jr<td|j ntd | jtkr\| 	|j n| jt
krr| |j | jtkr| |jjjd | |jjjd | |jjjd | |jjjd nT| t|jjjt | t|jjjt | t|jjjt | |jjjd dS )z$Checking indexing attributes (part2)rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test02_attrs...zindex props:zTable is not indexedN)r   rT   r;   r(   r@   r   r   r   NoAutoPropsassertFalseChangeFiltersPropsr   r   rk   rd   r+   re   r,   r-   r.   
isinstancer   )r:   r@   r/   r/   r0   test02_attrs  s*    



z&AutomaticIndexingTestCase.test02_attrsc             C   s   t rtdd td| jj  | j}t rx|jrptd|j td|j |jj	j
}td|j td|j|j  ntd | jtk	r|jj	j
}|j}| |j| |j}| |j| j|  d	S )
zChecking indexing countersrZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test03_counters...zindexedrows:zunsavedindexedrows:ztable rows:zcomputed indexed rows:zTable is not indexedN)r   rT   r;   r(   r@   r   _indexedrows_unsaved_indexedrowsrd   r+   re   rH   rg   r   r   r   rk   )r:   r@   re   indexedrowsr/   r/   r0   test03_counters.  s&    



z)AutomaticIndexingTestCase.test03_countersc             C   s   t rtdd td| jj  | j}|  t rn|jrftd|j td|j |j	j
j}td|j ntd |j	j
j}| jtkr| |dk n*|j}| |j|j | |j| j|  | jtkr| |j n| jtkr| |j dS )	z/Checking indexing counters (non-automatic mode)rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test04_noauto...zindexedrows:zunsavedindexedrows:zcomputed indexed rows:zTable is not indexedN)r   rT   r;   r(   r@   flush_rows_to_indexr   r   r   rd   r+   re   r   r   r   r   rk   rH   r   r   r   r   )r:   r@   re   r   r/   r/   r0   test04_noautoH  s.    





z'AutomaticIndexingTestCase.test04_noautoc             C   s"  t rtdd td| jj  | j}|  | jtk	rB|j}|j	}|
dd | jrj| jdd | jjj}t r|jrtd|j td	| td
|j	 td| td|jjjj ntd | |j| jd  | jtkr| |jjjj | jtkr| |j n| jtkr| |j dS )z(Checking indexing counters (remove_rows)rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test05_icounters...r'   r!   r[   )r\   zindexedrows:zoriginal indexedrows:zunsavedindexedrows:zoriginal unsavedindexedrows:zindex dirty:zTable is not indexedN)r   rT   r;   r(   r@   r   r   r   r   r   remove_rowsr   r   r5   r6   r   rd   r+   re   rr   rk   rH   r   r   r   r   r   )r:   r@   r   unsavedindexedrowsr/   r/   r0   test05_icountersm  s6    





z*AutomaticIndexingTestCase.test05_icountersc             C   s   t rtdd td| jj  | j}|  |dd | jrT| jdd | j	j
j}t rtd|j x8|jD ].}|j|jrltd	||j|jjf  qlW xT|jD ]J}|j|jr|js| |j|jjd
 q| |j|jjd qW dS )z)Checking dirty flags (remove_rows action)rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test06_dirty...r      r[   )r\   z
auto flag:zdirty flag col %s: %sTFN)r   rT   r;   r(   r@   r   r   r   r   r5   r6   r   colnamesrd   _f_colre   rr   rk   )r:   r@   r   r/   r/   r0   test06_dirty  s,    

z&AutomaticIndexingTestCase.test06_dirtyc             C   s  t rtdd td| jj  | j}|  | jtk	rB|j}|j	}|
ddddg | jrp| jdd	 | jjj}t r|jrtd
|j td| td|j	 td| |jjj}td|j ntd | |j| j | jtkr| |jjjj t r6x<|jD ]2}|j|jr td||j|jjf  q W xZ|jD ]P}|j|jr>|jst| |j|jjd n| |j|jjd q>W dS )z6Checking indexing counters (modify_rows, no-auto mode)rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test07_noauto...r   Nr#   )asar   r   g@r[   )r\   zindexedrows:zoriginal indexedrows:zunsavedindexedrows:zoriginal unsavedindexedrows:zcomputed indexed rows:zTable is not indexedzdirty flag col %s: %sTF)r   rT   r;   r(   r@   r   r   r   r   r   Zmodify_rowsr   r   r5   r6   r   rd   r+   re   r   rk   rH   r   r   rr   r   r   r   )r:   r@   r   r   re   r   r/   r/   r0   test07_noauto  sH    






z'AutomaticIndexingTestCase.test07_noautoc             C   s   t rtdd td| jj  | j}|  dd |dD }x>|D ]6}|jdkrFd|d	< d
|d< d|d< d|d< |  qFW |	  | j
r| jdd | jjj}dd |dD }|dg }t rtd|j td| td| td| | || dS )z<Checking indexing queries (modify in iterator, no-auto mode)rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test07b_noauto...c             S   s   g | ]
}|j qS r/   )r}   )r^   rK   r/   r/   r0   r`     s    z<AutomaticIndexingTestCase.test07b_noauto.<locals>.<listcomp>z(var2 == True) & (var3 > 0)r   r   r+   Tr,   r-   g@r.   r[   )r\   c             S   s   g | ]
}|j qS r/   )r}   )r^   rK   r/   r/   r0   r`     s    zAutoIndex?:zQuery results (original):z&Query results (after modifying table):zShould look like:N)r   rT   r;   r(   r@   r   rj   r}   rq   rN   r   r   r5   r6   r   rk   )r:   r@   resrK   resqres_r/   r/   r0   test07b_noauto  s2    







z(AutomaticIndexingTestCase.test07b_noautoc             C   s   t rtdd td| jj  | j}|  dd |dD }|dg |dg |d	g |  | j	r| j
d
d | jjj}dd |dD }||jd |jd |jd g }t rtd|j td| td| td| | || dS )z0Checking indexing queries (append, no-auto mode)rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test07c_noauto...c             S   s   g | ]
}|j qS r/   )r}   )r^   rK   r/   r/   r0   r`   #  s    z<AutomaticIndexingTestCase.test07c_noauto.<locals>.<listcomp>z(var2 == True) & (var3 > 0))r   Tr#   g@)asbTr'   g@)ZascTr   g@r[   )r\   c             S   s   g | ]
}|j qS r/   )r}   )r^   rK   r/   r/   r0   r`   /  s    r   r'   r#   zAutoIndex?:zQuery results (original):z&Query results (after modifying table):zShould look like:N)r   rT   r;   r(   r@   r   rj   rM   rN   r   r   r5   r6   rH   r   rk   )r:   r@   r   r   r   r/   r/   r0   test07c_noauto  s*    

 


z(AutomaticIndexingTestCase.test07c_noautoc             C   s  t rtdd td| jj  | j}|  | jtk	r^|j}| 	|dk	 |j
}| 	|dk	 |jdddgdd	ggd
dgd | jr| jdd | jjj}| |j| j | jtkr| 	|jjjj t rx8|jD ].}|j|jrtd||j|jjf  qW x~|jD ]t}|j|jr|jsh|dkrN| |j|jjd n| |j|jjd n| |j|jjd qW dS )z%Checking dirty flags (modify_columns)rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test08_dirty...Nr#   r   r   g      ?g       @r+   r.   )columnsnamesr[   )r\   zdirty flag col %s: %s)r+   TF)r   rT   r;   r(   r@   r   r   r   r   r   r   modify_columnsr   r   r5   r6   rk   rH   r   rd   r+   re   rr   r   r   r   )r:   r@   r   r   r   r/   r/   r0   test08_dirty8  sB    




z&AutomaticIndexingTestCase.test08_dirtyc             C   s  t rtdd td| jj  | j}| jtk	rV|j}| |dk	 |j	}| |dk	 |j
dddd}| jr| jd	d
 | jjj}| jjj}|jjj}|jjj}t rtd| td| |rtd|j td|j | |j|j |jr| |j | jtkr | |dk | |dk n| jtkr:| |dk	 t r~x<|jD ]2}|j|jrHtd||j|jjf  qHW x8|jD ].}|j|jr| |j|jjd qW dS )z8Checking propagate Index feature in Table.copy() (attrs)rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test09a_propIndex...Nr   r   T)propindexesr[   )r\   zCopied index:zOriginal index:zElements in copied index:zElements in original index:zdirty flag col %s: %sF)r   rT   r;   r(   r@   r   r   r   r   r   copyr   r   r5   r6   r   rd   r+   re   r   rk   rH   r   r   r   r   rr   )r:   r@   r   r   r   index1index2r   r/   r/   r0   test09a_propIndexi  sN    







z+AutomaticIndexingTestCase.test09a_propIndexc             C   s  t rtdd td| jj  | j}| jtk	rV|j}| |dk	 |j	}| |dk	 |j
dddd}| jr| jd	d
 | jjj}| jjj}t rtd| jj td|jjj td|jjj | jtkr| |jjj | |jjj n,| jtkr| |jjj | |jjj dS )z%Checking that propindexes=False worksrZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test09b_propIndex...Nr   r   F)r   r[   )r\   zautoindex?:zCopied index indexed?:zOriginal index indexed?:)r   rT   r;   r(   r@   r   r   r   r   r   r   r   r   r5   r6   r   r   rd   r+   Z
is_indexedr   r   )r:   r@   r   r   r   r/   r/   r0   test09b_propIndex  s0    




z+AutomaticIndexingTestCase.test09b_propIndexc             C   s   t rtdd td| jj  | j}| jtk	rV|j}| |dk	 |j	}| |dk	 |j
dddd}| jr| jd	d
 | jjj}| jjj}|jjj}|jjj}t rtd| td| |rtd|j td|j dS )z9Checking propagate Index feature in Table.copy() (values)rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test10_propIndex...Nr   r   T)r   r[   )r\   zCopied index:zOriginal index:zElements in copied index:zElements in original index:)r   rT   r;   r(   r@   r   r   r   r   r   r   r   r   r5   r6   r   rd   r-   re   r   )r:   r@   r   r   r   r   r   r/   r/   r0   test10_propIndex  s,    







z*AutomaticIndexingTestCase.test10_propIndexc             C   s  t rtdd td| jj  | j}|  | jtk	r^|j}| 	|dk	 |j
}| 	|dk	 |jdddgdd	ggd
dgd |jdddd}| jr| jdd | jjj}| jjj}|jjj}|jjj}t rtd| td| |rtd|j td|j t r@x<|jD ]2}|j|jr
td||j|jjf  q
W x@|jD ]6}|j|jrH|jrH| |j|jjd qHW dS )z>Checking propagate Index feature in Table.copy() (dirty flags)rZ   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test11_propIndex...Nr#   r   r   g      ?g       @r+   r.   )r   r   r   r   T)r   r[   )r\   zCopied index:zOriginal index:zElements in copied index:zElements in original index:zdirty flag col %s: %sF)r   rT   r;   r(   r@   r   r   r   r   r   r   r   r   r   r   r5   r6   r   rd   r+   re   r   r   r   rr   r   rk   )r:   r@   r   r   r   r   r   r   r/   r/   r0   test11_propIndex  sF    







z*AutomaticIndexingTestCase.test11_propIndex)r(   r)   r*   r   r   r   r   rS   r4   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r/   r/   )r;   r0   r     s&   
!"%-"6%!19&#r   c               @   s"   e Zd ZdZdZeZdddgZdS )AI1TestCasef   r   r+   r,   r-   N)r(   r)   r*   rH   r   r   r   r   r/   r/   r/   r0   r   #  s   r   c               @   s"   e Zd ZdZdZeZdddgZdS )AI2TestCaser   r#   r+   r,   r-   N)r(   r)   r*   rH   r   r   r   r   r/   r/   r/   r0   r   +  s   r   c               @   s"   e Zd ZdZdZeZdddgZdS )AI4bTestCasep   r#   r+   r,   r-   N)r(   r)   r*   rH   r   r   r   r   r/   r/   r/   r0   r   3  s   r   c               @   s>   e Zd Zeedd\ZZZZed d Z	dZ
eZdddgZdS )	AI5TestCaser#   )memlevel   r   r+   r,   r-   N)r(   r)   r*   r   r   sbsbsr   csrH   r   r   r   r   r/   r/   r/   r0   r   ;  s
   r   c               @   s>   e Zd Zeedd\ZZZZed d Z	dZ
eZdddgZdS )AI6TestCaser#   )r     r+   r,   r-   N)r(   r)   r*   r   r   r  r  r   r  rH   r   r   r   r   r/   r/   r/   r0   r  C  s
   r  c               @   s>   e Zd Zeedd\ZZZZed d Z	dZ
eZdddgZdS )	AI7TestCaser#   )r     r   r+   r,   r-   N)r(   r)   r*   r   r   r  r  r   r  rH   r   r   r   r   r/   r/   r/   r0   r  K  s
   r  c               @   s>   e Zd Zeedd\ZZZZed d Z	dZ
eZdddgZdS )	AI8TestCaser#   )r  r   r   r+   r,   r-   N)r(   r)   r*   r   r   r  r  r   r  rH   r   r   r   r   r/   r/   r/   r0   r
  T  s
   r
  c               @   s0   e Zd Zeedd\ZZZZeZ	dZ
eZg ZdS )AI9TestCaser#   )r  r   N)r(   r)   r*   r   r   r  r  r   r  rH   r   r   r   r   r/   r/   r/   r0   r  ]  s
   r  c               @   s   e Zd ZdZdZeZg ZdS )AI10TestCaser   r#   N)r(   r)   r*   rH   r   r   r   r   r/   r/   r/   r0   r  e  s   r  c               @   s"   e Zd ZdZdZeZdddgZdS )AI11TestCaser   r   r+   r,   r-   N)r(   r)   r*   rH   r   r   r   r   r/   r/   r/   r0   r  m  s   r  c               @   s"   e Zd ZdZdZeZdddgZdS )AI12TestCaser   r   r+   r,   r-   N)r(   r)   r*   rH   r   r   r   r   r/   r/   r/   r0   r  u  s   r  c               @   s   e Zd ZeddZdd ZdS )ManyNodesTestCase@   )r   c             C   s   t  t  t  d}xtdD ]}xztdD ]n}dt| }dt| }d| }| jj|||dd}|jj  |jj  |jj	  |j
  |  q*W qW dS )z<Indexing many nodes in one single session (based on bug #26))f0f1f2r   chrz	/at/%s/ptr#   )createparentsN)r   r   rI   r5   rG   rd   r  rR   r  r  rK   rM   rN   )r:   Z	IdxRecordZqnZsnZqchrnamepathr@   r/   r/   r0   test00  s    

zManyNodesTestCase.test00N)r(   r)   r*   r   Zopem_kwargsr  r/   r/   r/   r0   r  }  s   
r  c                   s\   e Zd ZdZG dd dejZe Zedej	dddZ
 fdd	Zd
d Zdd Z  ZS )IndexPropsChangeTestCasez3Test case for changing index properties in a table.c               @   s   e Zd Ze ZdS )z&IndexPropsChangeTestCase.MyDescriptionN)r(   r)   r*   r   icolr/   r/   r/   r0   MyDescription  s   r  F	   )r<   )r   rF   c                sh   t t|   | jdd| j}| jj|_|j	}x$t
dD ]}|d |d< |  q:W |  || _d S )Nr   testr      r  )r3   r  r4   r5   rG   r  oldIndexPropsr   r   rK   r   rM   rN   r@   )r:   r@   rK   rW   )r;   r/   r0   r4     s    
zIndexPropsChangeTestCase.setUpc             C   s8   x2| j | jgD ]"}| | jj|j | jj| j_qW dS )z-Storing index properties as table attributes.N)r  newIndexPropsrk   r@   r   r   )r:   Zrefpropsr/   r/   r0   test_attributes  s    z(IndexPropsChangeTestCase.test_attributesc             C   s&   | j }|dd}| |j|j dS )z$Copying index properties attributes.r   Ztest2N)r@   r   rk   r   )r:   ZoldtableZnewtabler/   r/   r0   test_copyattrs  s    z'IndexPropsChangeTestCase.test_copyattrs)r(   r)   r*   __doc__rC   r   r  r   r  rD   r   r4   r!  r"  r   r/   r/   )r;   r0   r    s   r  c                   s0   e Zd ZdZ fddZdd Zdd Z  ZS )IndexFiltersTestCasez$Test case for setting index filters.c                s.   t t|   dt i}| jdd|| _d S )Nr  r   r  )r3   r$  r4   r   r5   rG   r@   )r:   Zdescription)r;   r/   r0   r4     s    
zIndexFiltersTestCase.setUpc             C   s   t  t}tj |_t  t}tj |_tj |_| jjj}|jddd | |j	j
d | |j	jd | |j	jt |  |jdd|d | |j	j
d | |j	jd | |j	j| |  dS )z)Checking input parameters in new indexes.Z
ultralightr!   )kindoptlevelmediumr   )r%  r&  rF   N)r   r   r>   r?   r@   rd   r  rR   rk   re   r%  r&  rF   r   )r:   Z
argfiltersZ
idxfiltersr  r/   r/   r0   test_createIndex  s     





z%IndexFiltersTestCase.test_createIndexc             C   s   | j jj}|jddtjddd |jj}|jj}|jj	}|
  |j}trvtd|||f  td|j|j|j	f  | |j| | |j| | |j	| dS )	z0Checking input parameters in recomputed indexes.fullr   r   )r<   )r%  r&  rF   zOld parameters: %s, %s, %szNew parameters: %s, %s, %sN)r@   rd   r  rR   rC   rD   re   r%  r&  rF   Zreindexr   rT   rk   )r:   r  r%  r&  rF   Znir/   r/   r0   test_reindex  s    
z!IndexFiltersTestCase.test_reindex)r(   r)   r*   r#  r4   r(  r*  r   r/   r/   )r;   r0   r$    s   r$  c               @   s   e Zd ZedZdd ZdS )OldIndexTestCasezidx-std-1.x.h5c             C   s   |  t| jjd dS )z<Check that files with 1.x indexes are recognized and warned.z/tableN)ZassertWarnsr   r5   get_node)r:   r/   r/   r0   test1_x  s    zOldIndexTestCase.test1_xN)r(   r)   r*   r   rc   r-  r/   r/   r/   r0   r+    s   r+  )i          r   c                   s  e Zd Zd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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)dHdI Z*dJdK Z+dLdM Z,dNdO Z-dPdQ Z.dRdS Z/dTdU Z0dVdW Z1dXdY Z2dZd[ Z3d\d] Z4d^d_ Z5  Z6S )`CompletelySortedIndexTestCasez1Test case for testing a complete sort in a table.r   r  c               @   s    e Zd ZeddZeddZdS )z+CompletelySortedIndexTestCase.MyDescriptionr#   )r&   r'   N)r(   r)   r*   r   rcolr  r/   r/   r/   r0   r    s   
r  c                s   t t|   | jdd| j}|j}| j}x,t|D ] }||d< || |d< |	  q6W |
  || _| jjj| _| jjtd d S )Nr   r@   r1  r  )rB   )r3   r0  r4   r5   rG   r  rK   rH   r   rM   rN   r@   rd   r  create_csindexrS   )r:   r@   rK   rH   rW   )r;   r/   r0   r4     s    z#CompletelySortedIndexTestCase.setUpc             C   s   | j }| |jjd |  |jddd | |jjd |  |jddd | |jjd | jjdd	d
dd | |jjd dS )z#Testing the Column.is_csi property.Tr'  r  )r%  r&  Fr)  r   r   r   r  )sortbycheckCSIN)r  rk   re   is_csir   rR   r@   r   )r:   r  r/   r/   r0   test00_isCompletelySortedIndex  s    z<CompletelySortedIndexTestCase.test00_isCompletelySortedIndexc             C   sN   | j }t|dd }|j }tr:td| td| | t|| dS )z9Testing the Index.read_sorted() method with no arguments.NzOriginal sorted column:zThe values from the index:)	r  r   r   re   read_sortedr   rT   r   r   )r:   r  	sortedcol
sortedcol2r/   r/   r0   test01_readSorted1&  s    


z0CompletelySortedIndexTestCase.test01_readSorted1c             C   sZ   | j }t|dd dd }|jdd}trFtd| td| | t|| dS )z:Testing the Index.read_sorted() method with arguments (I).N   7   zOriginal sorted column:zThe values from the index:)	r  r   r   re   r7  r   rT   r   r   )r:   r  r8  r9  r/   r/   r0   test01_readSorted21  s    

z0CompletelySortedIndexTestCase.test01_readSorted2c             C   sZ   | j }t|dd dd }|jdd}trFtd| td| | t|| dS )z;Testing the Index.read_sorted() method with arguments (II).N!   a   zOriginal sorted column:zThe values from the index:)	r  r   r   re   r7  r   rT   r   r   )r:   r  r8  r9  r/   r/   r0   test01_readSorted3<  s    

z0CompletelySortedIndexTestCase.test01_readSorted3c             C   sT   | j }t|dd d}|j }tr@td| td| | t	|| dS )z:Testing the Index.read_indices() method with no arguments.Nuint64zOriginal indices column:zThe values from the index:)
r  r   argsortastypere   read_indicesr   rT   r   r   )r:   r  
indicescolindicescol2r/   r/   r0   test02_readIndices1G  s    


z1CompletelySortedIndexTestCase.test02_readIndices1c             C   s`   | j }t|dd dd d}|jdd}trLtd| td| | t	|| dS )z;Testing the Index.read_indices() method with arguments (I).Nr;  r<  rA  zOriginal indices column:zThe values from the index:)
r  r   rB  rC  re   rD  r   rT   r   r   )r:   r  rE  rF  r/   r/   r0   test02_readIndices2R  s     

z1CompletelySortedIndexTestCase.test02_readIndices2c             C   s`   | j }t|dd dd d}|jdd}trLtd| td| | t	|| dS )z<Testing the Index.read_indices() method with arguments (II).Nr>  r?  rA  zOriginal indices column:zThe values from the index:)
r  r   rB  rC  re   rD  r   rT   r   r   )r:   r  rE  rF  r/   r/   r0   test02_readIndices3]  s     

z1CompletelySortedIndexTestCase.test02_readIndices3c             C   sd   | j }t|dd ddd d}|jddd}trPtd| td| | t	|| dS )z=Testing the Index.read_indices() method with arguments (III).Nr>  r?  r'   rA  zOriginal indices column:zThe values from the index:)
r  r   rB  rC  re   rD  r   rT   r   r   )r:   r  rE  rF  r/   r/   r0   test02_readIndices4h  s    "

z1CompletelySortedIndexTestCase.test02_readIndices4c             C   sd   | j }t|dd ddd d}|jddd}trPtd| td| | t	|| dS )z<Testing the Index.read_indices() method with arguments (IV).Nr>  r<  r   rA  zOriginal indices column:zThe values from the index:)
r  r   rB  rC  re   rD  r   rT   r   r   )r:   r  rE  rF  r/   r/   r0   test02_readIndices5s  s    "

z1CompletelySortedIndexTestCase.test02_readIndices5c             C   sb   | j }t|dd ddd d}|jjdd}trNtd| td| | t	|| dS )z7Testing the Index.read_indices() method with step only.Nr   rA  )stepzOriginal indices column:zThe values from the index:)
r  r   rB  rC  re   rD  r   rT   r   r   )r:   r  rE  rF  r/   r/   r0   test02_readIndices6~  s    "

z1CompletelySortedIndexTestCase.test02_readIndices6c             C   sX   | j }t|dd d}|jdd }trDtd| td| | t|| dS )z9Testing the Index.__getitem__() method with no arguments.NrA  zOriginal indices column:zThe values from the index:)	r  r   rB  rC  re   r   rT   r   r   )r:   r  rE  rF  r/   r/   r0   test03_getitem1  s    

z-CompletelySortedIndexTestCase.test03_getitem1c             C   sX   | j }t|dd d d}|jd }trDtd| td| | t|| dS )z2Testing the Index.__getitem__() method with start.N   rA  zOriginal indices column:zThe values from the index:)	r  r   rB  rC  re   r   rT   r   r   )r:   r  rE  rF  r/   r/   r0   test03_getitem2  s    


z-CompletelySortedIndexTestCase.test03_getitem2c             C   s`   | j }t|dd dd d}|jdd }trLtd| td| | t|| dS )z8Testing the Index.__getitem__() method with start, stop.Nr'   r   rA  zOriginal indices column:zThe values from the index:)	r  r   rB  rC  re   r   rT   r   r   )r:   r  rE  rF  r/   r/   r0   test03_getitem3  s     

z-CompletelySortedIndexTestCase.test03_getitem3c             C   sh   | j }tj|dd dd}tjdd |dD |jd}trTtd| td| | t	|| dS )	z8Testing the Table.itersorted() method with no arguments.Nr  )orderc             S   s   g | ]}|  qS r/   )fetch_all_fields)r^   rK   r/   r/   r0   r`     s    zDCompletelySortedIndexTestCase.test04_itersorted1.<locals>.<listcomp>)dtypezOriginal sorted table:zThe values from the iterator:)
r@   r   r   r   
itersorted_v_dtyper   rT   r   r   )r:   r@   sortedtablesortedtable2r/   r/   r0   test04_itersorted1  s    


z0CompletelySortedIndexTestCase.test04_itersorted1c             C   st   | j }tj|dd dddd }tjdd |jdddD |jd}tr`td	| td
| | t	|| dS )z3Testing the Table.itersorted() method with a start.Nr  )rR  r   c             S   s   g | ]}|  qS r/   )rS  )r^   rK   r/   r/   r0   r`     s    zDCompletelySortedIndexTestCase.test04_itersorted2.<locals>.<listcomp>)start)rT  zOriginal sorted table:zThe values from the iterator:)
r@   r   r   r   rU  rV  r   rT   r   r   )r:   r@   rW  rX  r/   r/   r0   test04_itersorted2  s    


z0CompletelySortedIndexTestCase.test04_itersorted2c             C   st   | j }tj|dd dddd }tjdd |jdddD |jd}tr`td	| td
| | t	|| dS )z2Testing the Table.itersorted() method with a stop.Nr  )rR     c             S   s   g | ]}|  qS r/   )rS  )r^   rK   r/   r/   r0   r`     s    zDCompletelySortedIndexTestCase.test04_itersorted3.<locals>.<listcomp>)stop)rT  zOriginal sorted table:zThe values from the iterator:)
r@   r   r   r   rU  rV  r   rT   r   r   )r:   r@   rW  rX  r/   r/   r0   test04_itersorted3  s    


z0CompletelySortedIndexTestCase.test04_itersorted3c             C   sv   | j }tj|dd dddd }tjdd |jddddD |jd	}trbtd
| td| | t	|| dS )z<Testing the Table.itersorted() method with a start and stop.Nr  )rR  r   r\  c             S   s   g | ]}|  qS r/   )rS  )r^   rK   r/   r/   r0   r`     s    zDCompletelySortedIndexTestCase.test04_itersorted4.<locals>.<listcomp>)rZ  r]  )rT  zOriginal sorted table:zThe values from the iterator:)
r@   r   r   r   rU  rV  r   rT   r   r   )r:   r@   rW  rX  r/   r/   r0   test04_itersorted4  s    


z0CompletelySortedIndexTestCase.test04_itersorted4c             C   sz   | j }tj|dd ddddd }tjdd |jddddd	D |jd
}trftd| td| | t	|| dS )zJTesting the Table.itersorted() method with a start, stop and
        step.Nr  )rR  r   -   r!   c             S   s   g | ]}|  qS r/   )rS  )r^   rK   r/   r/   r0   r`     s    zDCompletelySortedIndexTestCase.test04_itersorted5.<locals>.<listcomp>)rZ  r]  rL  )rT  zOriginal sorted table:zThe values from the iterator:)
r@   r   r   r   rU  rV  r   rT   r   r   )r:   r@   rW  rX  r/   r/   r0   test04_itersorted5  s     


z0CompletelySortedIndexTestCase.test04_itersorted5c             C   sz   | j }tj|dd ddddd }tjdd |jddddd	D |jd
}trftd| td| | t	|| dS )zJTesting the Table.itersorted() method with a start, stop and
        step.Nr  )rR  r>  r<  r   c             S   s   g | ]}|  qS r/   )rS  )r^   rK   r/   r/   r0   r`     s    zDCompletelySortedIndexTestCase.test04_itersorted6.<locals>.<listcomp>)rZ  r]  rL  )rT  zOriginal sorted table:zThe values from the iterator:)
r@   r   r   r   rU  rV  r   rT   r   r   )r:   r@   rW  rX  r/   r/   r0   test04_itersorted6  s     


z0CompletelySortedIndexTestCase.test04_itersorted6c             C   sl   | j }tj|dd dd}tjdd |jdddD |jd}trXtd	| td
| | t	|| dS )z9Testing the Table.itersorted() method with checkCSI=True.Nr  )rR  c             S   s   g | ]}|  qS r/   )rS  )r^   rK   r/   r/   r0   r`      s    zDCompletelySortedIndexTestCase.test04_itersorted7.<locals>.<listcomp>T)r4  )rT  zOriginal sorted table:zThe values from the iterator:)
r@   r   r   r   rU  rV  r   rT   r   r   )r:   r@   rW  rX  r/   r/   r0   test04_itersorted7  s    


z0CompletelySortedIndexTestCase.test04_itersorted7c             C   sz   | j }tj|dd ddddd }tjdd |jddddd	D |jd
}trftd| td| | t	|| dS )zSTesting the Table.itersorted() method with a start, stop and
        negative step.Nr  )rR  r<  r>  c             S   s   g | ]}|  qS r/   )rS  )r^   rK   r/   r/   r0   r`     s    zDCompletelySortedIndexTestCase.test04_itersorted8.<locals>.<listcomp>)rZ  r]  rL  )rT  zOriginal sorted table:zThe values from the iterator:)
r@   r   r   r   rU  rV  r   rT   r   r   )r:   r@   rW  rX  r/   r/   r0   test04_itersorted8  s     


z0CompletelySortedIndexTestCase.test04_itersorted8c             C   sv   | j }tj|dd ddddd }tjdd |jdddD |jd}trbtd	| td
| | t	|| dS )z;Testing the Table.itersorted() method with a negative step.Nr  )rR  rd  c             S   s   g | ]}|  qS r/   )rS  )r^   rK   r/   r/   r0   r`     s    zDCompletelySortedIndexTestCase.test04_itersorted9.<locals>.<listcomp>)rL  )rT  zOriginal sorted table:zThe values from the iterator:)
r@   r   r   r   rU  rV  r   rT   r   r   )r:   r@   rW  rX  r/   r/   r0   test04_itersorted9  s     


z0CompletelySortedIndexTestCase.test04_itersorted9c             C   sR   | j }tj|dd dd}|d}tr>td| td| | t|| dS )z9Testing the Table.read_sorted() method with no arguments.Nr  )rR  zOriginal sorted table:zThe values from read_sorted:)r@   r   r   r7  r   rT   r   r   )r:   r@   rW  rX  r/   r/   r0   test05_readSorted1$  s    


z0CompletelySortedIndexTestCase.test05_readSorted1c             C   s^   | j }tj|dd dddd }|jddd}trJtd| td| | t|| dS )	z4Testing the Table.read_sorted() method with a start.Nr  )rR  r      )rZ  zOriginal sorted table:zThe values from read_sorted:)r@   r   r   r7  r   rT   r   r   )r:   r@   rW  rX  r/   r/   r0   test05_readSorted2/  s    

z0CompletelySortedIndexTestCase.test05_readSorted2c             C   s`   | j }tj|dd dddd }|jdddd}trLtd| td| | t|| dS )	z=Testing the Table.read_sorted() method with a start and stop.Nr  )rR  r   r>  )rZ  r]  zOriginal sorted table:zThe values from read_sorted:)r@   r   r   r7  r   rT   r   r   )r:   r@   rW  rX  r/   r/   r0   test05_readSorted3:  s    

z0CompletelySortedIndexTestCase.test05_readSorted3c             C   sd   | j }tj|dd ddddd }|jddddd}trPtd| td	| | t|| dS )
zKTesting the Table.read_sorted() method with a start, stop and
        step.Nr  )rR  r>  r<  r   )rZ  r]  rL  zOriginal sorted table:zThe values from read_sorted:)r@   r   r   r7  r   rT   r   r   )r:   r@   rW  rX  r/   r/   r0   test05_readSorted4E  s     

z0CompletelySortedIndexTestCase.test05_readSorted4c             C   s`   | j }tj|dd ddddd }|jddd}trLtd| td| | t|| dS )z8Testing the Table.read_sorted() method with only a step.Nr  )rR  r   )rL  zOriginal sorted table:zThe values from read_sorted:)r@   r   r   r7  r   rT   r   r   )r:   r@   rW  rX  r/   r/   r0   test05_readSorted5Q  s     

z0CompletelySortedIndexTestCase.test05_readSorted5c             C   s`   | j }tj|dd ddddd }|jddd}trLtd| td| | t|| dS )z:Testing the Table.read_sorted() method with negative step.Nr  )rR  r]   )rL  zOriginal sorted table:zThe values from read_sorted:)r@   r   r   r7  r   rT   r   r   )r:   r@   rW  rX  r/   r/   r0   test05_readSorted6\  s     

z0CompletelySortedIndexTestCase.test05_readSorted6c             C   s`   | j }tj|dd ddddd }|jddd}trLtd| td| | t|| dS )z?Testing the Table.read_sorted() method with negative step (II).Nr  )rR  )rL  zOriginal sorted table:zThe values from read_sorted:)r@   r   r   r7  r   rT   r   r   )r:   r@   rW  rX  r/   r/   r0   test05_readSorted7g  s     

z0CompletelySortedIndexTestCase.test05_readSorted7c             C   sl   | j }d}d}tj|dd dd||d }|jddddd	}trXtd
| td| | t|| dS )zATesting the Table.read_sorted() method with negative step (III)).K   r`  Nr  )rR  r]   r   6   )rZ  r]  rL  zOriginal sorted table:zThe values from read_sorted:)r@   r   r   r7  r   rT   r   r   )r:   r@   sstartsstoprW  rX  r/   r/   r0   test05_readSorted8r  s     

z0CompletelySortedIndexTestCase.test05_readSorted8c             C   sl   | j }d}d}tj|dd dd||d }|jddddd	}trXtd
| td| | t|| dS )z@Testing the Table.read_sorted() method with negative step (IV)).U   r`  Nr  )rR     rq  )rZ  r]  rL  zOriginal sorted table:zThe values from read_sorted:)r@   r   r   r7  r   rT   r   r   )r:   r@   rr  rs  rW  rX  r/   r/   r0   test05_readSorted9  s     

z0CompletelySortedIndexTestCase.test05_readSorted9c             C   sl   | j }d}d}tj|dd dd||d }|jddddd	}trXtd
| td| | t|| dS )z?Testing the Table.read_sorted() method with negative step (V)).rp  J   Nr  )rR  rn  r   r  )rZ  r]  rL  zOriginal sorted table:zThe values from read_sorted:)r@   r   r   r7  r   rT   r   r   )r:   r@   rr  rs  rW  rX  r/   r/   r0   test05_readSorted10  s     

z1CompletelySortedIndexTestCase.test05_readSorted10c             C   sl   | j }d}d}tj|dd dd||d }|jddddd	}trXtd
| td| | t|| dS )z9Testing the Table.read_sorted() method with start > stop.iry  Nr  )rR  rn     r  )rZ  r]  rL  zOriginal sorted table:zThe values from read_sorted:)r@   r   r   r7  r   rT   r   r   )r:   r@   rr  rs  rW  rX  r/   r/   r0   test05_readSorted11  s     

z1CompletelySortedIndexTestCase.test05_readSorted11c             C   sV   | j }tj|dd dd}|jddd}trBtd| td| | t|| dS )z9Testing the Table.read_sorted() method with checkCSI (I).Nr  )rR  T)r4  zOriginal sorted table:zThe values from read_sorted:)r@   r   r   r7  r   rT   r   r   )r:   r@   rW  rX  r/   r/   r0   test05a_readSorted12  s    

z2CompletelySortedIndexTestCase.test05a_readSorted12c             C   s   | j }| jt|jddd dS )z:Testing the Table.read_sorted() method with checkCSI (II).r1  F)r4  N)r@   assertRaises
ValueErrorr7  )r:   r@   r/   r/   r0   test05b_readSorted12  s    z2CompletelySortedIndexTestCase.test05b_readSorted12c             C   sl   | j }| j|_|jdddd}tj|dd dd}|dd }trXtd| td| | t|| dS )	z8Testing the Table.copy(sortby) method with no arguments.r   r   r  )r3  N)rR  zOriginal sorted table:zThe values from copy:)	r@   rf   r   r   r   r   rT   r   r   )r:   r@   r   rW  rX  r/   r/   r0   test06_copy_sorted1  s    

z1CompletelySortedIndexTestCase.test06_copy_sorted1c             C   sx   | j }| j|_|jddddd}tj|dd ddddd }|dd }trdtd| td	| | t|| dS )
z3Testing the Table.copy(sortby) method with step=-1.r   r   r  r]   )r3  rL  N)rR  zOriginal sorted table:zThe values from copy:)	r@   rf   r   r   r   r   rT   r   r   )r:   r@   r   rW  rX  r/   r/   r0   test06_copy_sorted2  s     

z1CompletelySortedIndexTestCase.test06_copy_sorted2c             C   sv   | j }| j|_|jddddd}tj|dd dddd }|dd }trbtd	| td
| | t|| dS )z8Testing the Table.copy(sortby) method with only a start.r   r   r  r   )r3  rZ  N)rR  r!   zOriginal sorted table:zThe values from copy:)	r@   rf   r   r   r   r   rT   r   r   )r:   r@   r   rW  rX  r/   r/   r0   test06_copy_sorted3  s    

z1CompletelySortedIndexTestCase.test06_copy_sorted3c             C   sx   | j }| j|_|jdddddd}tj|dd dddd }|dd }trdtd	| td
| | t|| dS )z7Testing the Table.copy(sortby) method with start, stop.r   r   r  r   (   )r3  rZ  r]  N)rR  zOriginal sorted table:zThe values from copy:)	r@   rf   r   r   r   r   rT   r   r   )r:   r@   r   rW  rX  r/   r/   r0   test06_copy_sorted4  s    

z1CompletelySortedIndexTestCase.test06_copy_sorted4c             C   s|   | j }| j|_|jddddddd}tj|dd dd	ddd }|dd }trhtd
| td| | t|| dS )z=Testing the Table.copy(sortby) method with start, stop, step.r   r   r  r   r>  r   )r3  rZ  r]  rL  N)rR  zOriginal sorted table:zThe values from copy:)	r@   rf   r   r   r   r   rT   r   r   )r:   r@   r   rW  rX  r/   r/   r0   test06_copy_sorted5  s    
 

z1CompletelySortedIndexTestCase.test06_copy_sorted5c             C   s|   | j dd | jjj}| j|_|jdddd}tj|dd dd}|dd }trht	d	| t	d
| | 
t|| dS )z=Testing the Table.copy(sortby) method after table re-opening.r[   )r\   r   r   r  )r3  N)rR  zOriginal sorted table:zThe values from copy:)r   r5   r6   r@   rf   r   r   r   r   rT   r   r   )r:   r@   r   rW  rX  r/   r/   r0   test06_copy_sorted6  s    


z1CompletelySortedIndexTestCase.test06_copy_sorted6c             C   s:   | j }| j|_|jdddd}| jt|jddddd d	S )
z5Testing the `checkCSI` parameter of Table.copy() (I).r   r   r  )r3  table3r1  F)r3  r4  N)r@   rf   r   r~  r  )r:   r@   r   r/   r/   r0   test06_copy_sorted7	  s    z1CompletelySortedIndexTestCase.test06_copy_sorted7c             C   s:   | j }| j|_|jdddd}| jt|jddddd d	S )
z6Testing the `checkCSI` parameter of Table.copy() (II).r   r   r  )r3  r  r1  T)r3  r4  N)r@   rf   r   r~  r  )r:   r@   r   r/   r/   r0   test06_copy_sorted8	  s    z1CompletelySortedIndexTestCase.test06_copy_sorted8c             C   sT   | j dd| j}|jj }tr0tdt| | 	|d | 	|j
d jd dS )z8Testing the representation of an index with no elements.r   t2zrepr(t2)-->
r   r1  FN)r5   rG   r  rd   r1  r2  r   rT   reprrk   
colindexesr5  )r:   r  Zirowsr/   r/   r0   test07_isCSI_noelements&	  s    z5CompletelySortedIndexTestCase.test07_isCSI_noelements)7r(   r)   r*   r#  rH   rf   rC   r   r  r4   r6  r:  r=  r@  rG  rH  rI  rJ  rK  rM  rN  rP  rQ  rY  r[  r^  r_  ra  rb  rc  re  rf  rg  ri  rj  rk  rl  rm  ro  rt  rx  rz  r|  r}  r  r  r  r  r  r  r  r  r  r  r   r/   r/   )r;   r0   r0    sb   r0  c                   sZ   e Zd Zd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  ZS )ReadSortedIndexTestCasez?Test case for testing sorted reading in a "full" sorted column.r   r  c               @   s    e Zd ZeddZeddZdS )z%ReadSortedIndexTestCase.MyDescriptionr#   )r&   r'   N)r(   r)   r*   r   r1  r  r/   r/   r/   r0   r  7	  s   
r  c                s   t t|   | jdd| j}|j}| j}x,t|D ] }||d< || |d< |	  q6W |
  || _| jjj| _| jj| jdtd d S )Nr   r@   r1  r  r)  )r&  r%  rB   )r3   r  r4   r5   rG   r  rK   rH   r   rM   rN   r@   rd   r  rR   r&  rS   )r:   r@   rK   rH   rW   )r;   r/   r0   r4   ;	  s    zReadSortedIndexTestCase.setUpc             C   s\   | j }tj|dd dd}|d}tr>td| td| | t|tj|dd dS )z9Testing the Table.read_sorted() method with no arguments.Nr  )rR  zSorted table:zThe values from read_sorted:)r@   r   r   r7  r   rT   r   r   )r:   r@   rW  rX  r/   r/   r0   r:  L	  s    


z*ReadSortedIndexTestCase.test01_readSorted1c             C   sh   |    | jjj}tj|dd dd}|d}trJtd| td| | 	t
|tj|dd dS )zKTesting the Table.read_sorted() method with no arguments
        (re-open).Nr  )rR  zSorted table:zThe values from read_sorted:)r   r5   r6   r@   r   r   r7  r   rT   r   r   )r:   r@   rW  rX  r/   r/   r0   r=  Z	  s    



z*ReadSortedIndexTestCase.test01_readSorted2c             C   s~   | j }| j|_|jdddd}tj|dd dd}tj|dd dd}trjtd|dd  td| | t|| dS )	z&Testing the Table.copy(sortby) method.r   r   r  )r3  N)rR  zOriginal table:zThe sorted values from copy:)	r@   rf   r   r   r   r   rT   r   r   )r:   r@   r   rW  rX  r/   r/   r0   test02_copy_sorted1j	  s    
z+ReadSortedIndexTestCase.test02_copy_sorted1c             C   s   | j dd | jjj}| j|_|jdddd}tj|dd dd}tj|dd dd}trzt	d	|dd  t	d
| | 
t|| dS )z=Testing the Table.copy(sortby) method after table re-opening.r[   )r\   r   r   r  )r3  N)rR  zOriginal table:zThe sorted values from copy:)r   r5   r6   r@   rf   r   r   r   r   rT   r   r   )r:   r@   r   rW  rX  r/   r/   r0   test02_copy_sorted2x	  s    

z+ReadSortedIndexTestCase.test02_copy_sorted2)r(   r)   r*   r#  rH   rf   rC   r   r  r4   r:  r=  r  r  r   r/   r/   )r;   r0   r  1	  s   r  c               @   s   e Zd ZdZdS )ReadSortedIndex0r   N)r(   r)   r*   r&  r/   r/   r/   r0   r  	  s   r  c               @   s   e Zd ZdZdS )ReadSortedIndex3r   N)r(   r)   r*   r&  r/   r/   r/   r0   r  	  s   r  c               @   s   e Zd ZdZdS )ReadSortedIndex6r   N)r(   r)   r*   r&  r/   r/   r/   r0   r  	  s   r  c               @   s   e Zd ZdZdS )ReadSortedIndex9r  N)r(   r)   r*   r&  r/   r/   r/   r0   r  	  s   r  c                   s(   e Zd ZdZ fddZdd Z  ZS )Issue156TestBaseNc                s   t t|   G dd dtj}| jjdd|tdddd}| j  xBt	d	D ]6}|j
}tjd
d|d< tjd
d|d< |  qRW | j  d S )Nc               @   s$   e Zd Ze ZG dd dejZdS )z#Issue156TestBase.setUp.<locals>.Fooc               @   s   e Zd Ze ZdS )z'Issue156TestBase.setUp.<locals>.Foo.BarN)r(   r)   r*   r   coder/   r/   r/   r0   Bar	  s   r  N)r(   r)   r*   r   r   rC   r   r  r/   r/   r/   r0   Foo	  s   r  r   Zfoor   r2   T)rF   r  r   r   i  r   zBar/code)r3   r  r4   rC   r   r5   rG   rD   rN   r   rK   r   ZrandomZrandintrM   )r:   r  r@   krK   )r;   r/   r0   r4   	  s    

zIssue156TestBase.setUpc          	   C   s   | j d}|j| j   |jdd| jddd}| t|	| jt
|	| jk | | j|jk | |j| j j d S )Nz/fooZfoo2T)ZnewnameZ	overwriter3  r4  r   )r5   r,  rQ   
sort_fieldr2  r   r   r   allrX   rh   r  r5  )r:   ZoldNodeZnew_noder/   r/   r0   test_copysort	  s    
zIssue156TestBase.test_copysort)r(   r)   r*   r  r4   r  r   r/   r/   )r;   r0   r  	  s   r  c               @   s   e Zd ZdZdS )Issue156TestCase01r   N)r(   r)   r*   r  r/   r/   r/   r0   r  	  s   r  c               @   s   e Zd ZdZdS )Issue156TestCase02zBar/codeN)r(   r)   r*   r  r/   r/   r/   r0   r  	  s   r  c            
       sF   e Zd ZdZejZdddddddd	d
dg
Z fddZdd Z	  Z
S )Issue119Time32ColTestCasezTimeCol not properly indexing.gmA?gv9Tl?g|^?g?f3?gȍL?g?:v?gTyL?gL\0Z?g}g?gt
?c                sn   t t   G  fdddtj} jdd| _d _ fddt	 j
D } j|  j  d S )Nc                   s"   e Zd Z jddZeddZdS )z.Issue119Time32ColTestCase.setUp.<locals>.Descrr#   )r&   r'   N)r(   r)   r*   col_typwhenr   valuer/   )r:   r/   r0   Descr	  s   r  r   r  g  UAc                s   g | ]\}} j | |fqS r/   )t)r^   rW   item)r:   r/   r0   r`   	  s    z3Issue119Time32ColTestCase.setUp.<locals>.<listcomp>)r3   r  r4   rC   r   r5   rG   r@   r  rp   valuesrM   rN   )r:   r  data)r;   )r:   r0   r4   	  s    zIssue119Time32ColTestCase.setUpc             C   sV   | j }| j}d||d f }||}|jjjdd ||}| ||k  d S )Nz(when >= %d) & (when < %d)r   F)Z_verbose)r@   r  
read_whererd   r  rR   r   r  )r:   Ztblr  ZwherestrZno_indexZ
with_indexr/   r/   r0   test_timecol_issue	  s    

z,Issue119Time32ColTestCase.test_timecol_issue)r(   r)   r*   r#  rC   Z	Time32Colr  r  r4   r  r   r/   r/   )r;   r0   r  	  s   r  c               @   s   e Zd ZejZdS )Issue119Time64ColTestCaseN)r(   r)   r*   rC   Z	Time64Colr  r/   r/   r/   r0   r  
  s   r  c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestIndexingNansc             C   s   t  t d}| jdd|}|j}x6tdD ]*}||d< |dkrHtjn||d< |  q.W |	  |j
j  |d}| t|d	k d S )
N)re   r  r   r@   r   re   r   r  z(values >= 0)r!   )r
   r   r5   rG   rK   r   r   nanrM   rN   rd   r  rR   r  r   rl   )r:   ZtrMapr@   rt   rW   resultr/   r/   r0   test_issue_282
  s    
zTestIndexingNans.test_issue_282c          
   C   s   | j ddtt tddtddd}|j}xFtdD ]:}||d< |dksT|d	krZtjn||d
< ||d< |	  q8W |
  |jj  |jj  |d}| t|d |d}| t|d d S )Nr   r@   r/   )shape)re   r  values2r   re   r'   r   r  r  z(values2 > 0)r!   z(values > 0))r5   rG   r   r
   r   rK   r   r   r  rM   rN   rd   r  rR   r  r  r   rl   rk   )r:   r@   rt   rW   results2rn   r/   r/   r0   test_issue_327
  s"    

zTestIndexingNans.test_issue_327c          
   C   s   | j ddtt tddtddd}|j}xXtdD ]L}xFtdD ]:}||d< |d	ksb|d
krhtjn||d< ||d< |	  qFW q8W |
  |jjjtd |jjjtd |d}| t|d |d}| t|d d S )Nr   r@   r/   )r  )re   r  r  r   r   re   r'   r   r  r  )rB   z(values2 > 0)i  z(values > 0)   )r5   rG   r   r
   r   rK   r   r   r  rM   rN   rd   r  rR   rS   r  r  r   rl   rk   )r:   r@   rt   r   rW   r  rn   r/   r/   r0   test_issue_327_b1
  s$    

z!TestIndexingNans.test_issue_327_bc          
   C   s   | j ddtt tddtddd}|j}xXtdD ]L}xFtdD ]:}||d< |d	ksb|d
krhtjn||d< ||d< |	  qFW q8W |
  |jjjtd |jjjtd |d}| t|d |d}| t|d d S )Nr   r@   r/   )r  )re   r  r  r   r   re   r'   r   r  r  )rB   z(values2 > 0)i  z(values > 0)r  )r5   rG   r   r
   r   rK   r   r   r  rM   rN   rd   r  r2  rS   r  r  r   rl   rk   )r:   r@   rt   xrW   r  rn   r/   r/   r0   test_csindex_nansJ
  s$    

z"TestIndexingNans.test_csindex_nansN)r(   r)   r*   r  r  r  r  r/   r/   r/   r0   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 | t t  | t t! qW t"rx| t t# | t t$ | t t% | t t& | t t' | t t( | 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+  r0  r  r  r  r  r  r  r  r  r  r  r   r   r   r  r  r
  r  r  r  )ZtheSuiteZniternr/   r/   r0   suited
  sT    r  __main__)ZdefaultTest)gZ
__future__r   r   r   r   r   r   rC   r   r   r   r   r   r	   r
   r   r   Ztables.indexr   r   r   Ztables.idxutilsr   Ztables.exceptionsr   Ztables.testsr   Ztables.tests.commonr   r   r   r   r   r   r   ZTestCaserO   Z	six.movesr   r   rS   r   r    r1   r   r   r   ZskipIfZblosc_availr   Z	lzo_availr   Zbzip2_availr   r   r   r   r   r   r   r   objectr   r   r   rD   r   r   r   r   r   r   r  r  r
  r  r  r  r  r  r  r$  ZTestFileMixinr+  r0  r  r  r  r  r  r  r  r  r  r  r  r  r(   sysZ
parse_argvargvZprint_versionsmainr/   r/   r/   r0   <module>   s   ,     :

 
    Z		!6
    :W4-]2
