B
    ™i‚\1Ž ã               @   sî  d Z 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	Z	ddl
Z
ddl
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ ddlmZmZ ddl m!Z! dd	l"m#Z# dd
l$m%Z%m&Z&m'Z' ddl$m(Z) ddl*m+Z+ G dd„ de
j,ƒZ-G dd„ de#j.e)ƒZ/G dd„ de
j,ƒZ0G dd„ de#j.e)ƒZ1G dd„ de1ƒZ2e% 3e#j4 d¡G dd„ de1ƒƒZ5e% 3e#j6 d¡G dd„ de1ƒƒZ7G dd„ de1ƒZ8G dd „ d e1ƒZ9G d!d"„ d"e1ƒZ:G d#d$„ d$e1ƒZ;G d%d&„ d&e1ƒZ<e% 3e#j4 d¡G d'd(„ d(e1ƒƒZ=e% 3e#j> d)¡G d*d+„ d+e1ƒƒZ?e% 3e#j> d)¡G d,d-„ d-e1ƒƒZ@e% 3e#j> d)¡e% 3d.e
 A¡ kd/¡G d0d1„ d1e1ƒƒƒZBe% 3e#j> d)¡e% 3d.e
 A¡ kd/¡G d2d3„ d3e1ƒƒƒZCe% 3e#j> d)¡e% 3d4e
 A¡ kd5¡G d6d7„ d7e1ƒƒƒZDe% 3e#j> d)¡e% 3d8e
 A¡ kd9¡G d:d;„ d;e1ƒƒƒZEe% 3e#j> d)¡e% 3d<e
 A¡ kd=¡G d>d?„ d?e1ƒƒƒZFe% 3e#j> d)¡e% 3e'e#jGk d@e#jG ¡G dAdB„ dBe1ƒƒƒZHG dCdD„ dDe#j.e)ƒZIG dEdF„ dFeIƒZJG dGdH„ dHeIƒZKG dIdJ„ dJeIƒZLG dKdL„ dLeIƒZMG dMdN„ dNeIƒZNG dOdP„ dPeIƒZOG dQdR„ dReIƒZPe% 3e#j6 d¡G dSdT„ dTeIƒƒZQG dUdV„ dVe#j.e)ƒZRG dWdX„ dXeRƒZSG dYdZ„ dZeRƒZTG d[d\„ d\eRƒZUG d]d^„ d^eRƒZVG d_d`„ d`eRƒZWG dadb„ dbeRƒZXG dcdd„ ddeRƒZYG dedf„ dfeRƒZZG dgdh„ dhe#j.e)ƒZ[G didj„ dje#j.e)ƒZ\e% 3e#j> dk¡G dldm„ dme#j.e)ƒƒZ]G dndo„ doe)ƒZ^G dpdq„ dqe#j.e)ƒZ_e% 3e&drk ds¡G dtdu„ due_ƒƒZ`e% 3e&drk ds¡G dvdw„ dwe_ƒƒZae% 3e&drk ds¡G dxdy„ dye_ƒƒZbG dzd{„ d{e)ƒZcG d|d}„ d}e_ƒZdG d~d„ de)ƒZed€e
jfjgkrÐe_ZhneeZhG dd‚„ d‚ehƒZierüG dƒd„„ d„e_ƒZjnG d…d„„ d„eeƒZjer$G d†d‡„ d‡e_ƒZknG dˆd‡„ d‡eeƒZkG d‰dŠ„ dŠeeƒZlG d‹dŒ„ dŒeeƒZmG ddŽ„ dŽeeƒZnG dd„ deeƒZoG d‘d’„ d’eeƒZpe% 3e&drk d“¡G d”d•„ d•e)ƒƒZqG d–d—„ d—e#j.e)ƒZrd˜d™„ Zsetdškrêe# uejv¡ e# w¡  e%jxd™d› dS )œzôThis test unit checks object creation funtions, like open_file,
create_table, create_array or create_group.

It also checks:

- name identifiers in tree objects
- title character limit for objects (255)
- limit in number in table fields (255)

é    )Úprint_function)Úabsolute_importN)ÚGroupÚLeafÚTableÚArrayÚFiltersÚ
StringAtomÚ	Int16AtomÚ	Int64AtomÚFloat32AtomÚFloat64AtomÚColÚ	StringColÚIntColÚInt16ColÚFloatColÚ
Float32Col)ÚMAX_COLUMNS)ÚHAVE_DIRECT_DRIVERÚHAVE_WINDOWS_DRIVER)Úquantize)Úcommon)ÚunittestÚhdf5_versionÚblosc_version)ÚPyTablesTestCase)Úrangec               @   s.   e Zd ZeddZeƒ Zeƒ Ze	ƒ Z
eƒ ZdS )ÚRecordé   )ÚitemsizeN)Ú__name__Ú
__module__Ú__qualname__r   Úvar1r   Úvar2r   Úvar3r   Zvar4r   Zvar5© r'   r'   ú7lib/python3.7/site-packages/tables/tests/test_create.pyr   (   s
   
r   c                   sx   e Zd ZdZdZdZdZdZ‡ fdd„Zdd	„ Z	d
d„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z‡  ZS )ÚCreateTestCasezThis is the table titleéd   i €  l        r   c                s^   t t| ƒ ¡  | jj| _| j | jdtd¡| _| j | jddgd¡| _	| j 
| jdd¡| _d S )NÚatablezTable titleÚanarrayé   zArray titleÚagroupzGroup title)Úsuperr)   ÚsetUpÚh5fileÚrootÚcreate_tabler   ÚtableÚcreate_arrayÚarrayÚcreate_groupÚgroup)Úself)Ú	__class__r'   r(   r0   7   s    

zCreateTestCase.setUpc             C   sL   |   t| jtƒ¡ |   t| jtƒ¡ |   t| jtƒ¡ |   t| jtƒ¡ dS )zTesting table creation.N)	Ú
assertTrueÚ
isinstancer4   r   r6   r   r   r8   r   )r9   r'   r'   r(   Útest00_isClassG   s    zCreateTestCase.test00_isClassc             C   sf   y| j  | jddgd¡| _W n: tjk
rV   tjrRt 	¡ \}}}t
dƒ t
|ƒ Y nX |  d¡ dS )z-Checking protection against node overwriting.r,   r-   zArray titlez(
Great!, the next NameError was catched!zexpected a tables.NodeErrorN)r1   r5   r2   r6   ÚtablesZ	NodeErrorr   ÚverboseÚsysÚexc_infoÚprintÚfail)r9   ÚtypeÚvalueÚ	tracebackr'   r'   r(   Útest01_overwriteNodeO   s    z#CreateTestCase.test01_overwriteNodec          	   C   s”   |   tj¡ | j | jddgd¡| _W dQ R X |   tj¡ | j | jddgd¡| _W dQ R X |   tj¡ | j | jddgd¡| _W dQ R X dS )z%Checking syntax in object tree names.z arrayr-   zArray titleNz$arrayÚfor)ZassertWarnsr>   ZNaturalNameWarningr1   r5   r2   r6   )r9   r'   r'   r(   Útest02_syntaxname]   s    z CreateTestCase.test02_syntaxnamec             C   sH   |   ¡  |  | jjjjd¡ |  | jjjjd¡ |  | jjjjd¡ dS )z&Checking the self.title attr in nodes.zGroup titlezTable titlezArray titleN)	Ú_reopenÚassertEqualr1   r2   r.   Ú_v_titler+   Útitler,   )r9   r'   r'   r(   Útest03a_titleAttrn   s    z CreateTestCase.test03a_titleAttrc             C   sÈ   d}| j  | jdd| ¡}|  |jd| ¡ |  | d¡d| ¡ | j  | jdtd| ¡}|  |jd| ¡ |  | 	d¡d| ¡ | j  
| jddgd| ¡}|  |jd| ¡ |  | 	d¡d| ¡ dS )	z2Checking large title character length limit (1023)iÿ  r8   ÚtÚTITLEr4   Úarrr-   N)r1   r7   r2   rK   rL   Z
_f_getattrr3   r   rM   Zget_attrr5   )r9   Ztitlelengthr8   r4   rQ   r'   r'   r(   Útest03b_titleLengthy   s    z"CreateTestCase.test03b_titleLengthc             C   s*  t }g }xt|ƒD ]}| d| ¡ qW i }d}x(|D ] }tjdd|d||< |d7 }q6W d|d< | j | jd|d	¡}|j}g }x`td
ƒD ]T}	g }
x4tt	|j
ƒƒD ]"}||	 ||| < |
 ||	 ¡ q¢W | ¡  | t|
ƒ¡ qŠW | ¡  | ¡  ¡ }tjrtd|d ƒ td|d ƒ |  ||¡ dS )z+Checking a large number of fields in tableszint%dr   Úint32r-   )ÚdfltÚposú=Z_v_alignr4   zMetaRecord instanceé
   zOriginal row list:éÿÿÿÿzRetrieved row list:N)r   r   Úappendr   Ú	from_typer1   r3   r2   ÚrowÚlenÚcolnamesÚtupleÚflushÚreadÚtolistr   r?   rB   rK   )r9   Ú	varnumberÚvarnamesÚiÚ
recordDictÚvarnamer4   r[   ZlistrowsÚjZrowlistZlistoutr'   r'   r(   Útest04_maxFieldsŽ   s6    
zCreateTestCase.test04_maxFieldsc       	      C   sÞ   t d }g }xt|ƒD ]}| d| ¡ qW i }d}x&|D ]}tjddd||< |d7 }q:W tjdtjd y| j	 
| jd|d	¡ W n: tjk
r¾   tjrºt ¡ \}}}td
ƒ t|ƒ Y nX |  d¡ tjdtjd dS )z<Checking an excess of the maximum number of fields in tablesr-   zint%dr   rS   )rT   Úerror)Úcategoryr4   zMetaRecord instancez1
Great!, the next PerformanceWarning was catched!z%expected an tables.PerformanceWarningÚdefaultN)r   r   rY   r   rZ   ÚwarningsÚfilterwarningsr>   ZPerformanceWarningr1   r3   r2   r   r?   r@   rA   rB   rC   )	r9   rb   rc   rd   re   rf   rD   rE   rF   r'   r'   r(   Útest05_maxFieldsExceeded¼   s(    

z'CreateTestCase.test05_maxFieldsExceededc          	   C   sf   i }t dd|d< t dd|d< t|dƒ}|  |dk	¡ |  t¡ | j | jd|d¡ W dQ R X dS )z>Checking an excess (256) of the maximum length in column namesr-   )rT   ÚÿaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaA   bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbzMetaRecord instanceNr4   )r   r   r;   ÚassertRaisesÚ
ValueErrorr1   r3   r2   )r9   re   r4   r'   r'   r(   Ú#_test06_maxColumnNameLengthExceededâ   s    
z2CreateTestCase._test06_maxColumnNameLengthExceededc             C   s`   i }t ddd|d< t ddd|d< | j | jd|d¡}|  |jd d¡ |  |jd d¡ dS )	z)Checking unlimited length in column namesr-   r   )rT   rU   ro   A   bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr4   zMetaRecord instanceN)r   r1   r3   r2   rK   r]   )r9   re   r4   r'   r'   r(   Útest06_noMaxColumnNameLengthõ   s    z+CreateTestCase.test06_noMaxColumnNameLength)r!   r"   r#   rM   ÚexpectedrowsZmaxshortZmaxintÚcompressr0   r=   rG   rI   rN   rR   rh   rn   rr   rs   Ú__classcell__r'   r'   )r:   r(   r)   0   s   .&r)   c               @   s"   e Zd ZeddZeƒ Zeƒ ZdS )ÚRecord2r   )r    N)	r!   r"   r#   r   r$   r   r%   r   r&   r'   r'   r'   r(   rw     s   
rw   c                   s<   e Zd ZdZdZ‡ fdd„Zdd„ Zdd„ Zd	d
„ Z‡  Z	S )ÚFiltersTreeTestCasezA titlerW   c                s   t t| ƒ ¡  |  ¡  d S )N)r/   rx   r0   ÚpopulateFile)r9   )r:   r'   r(   r0     s    zFiltersTreeTestCase.setUpc             C   sÀ  | j j}x°tdƒD ]¢}| j j|dt| jd d}|j}x@t| jƒD ]2}d| j|  |d< ||d< |d |d< | ¡  qDW | 	¡  d	d
„ | 
¡ D ƒ}dd
„ | 
¡ D ƒ}| j  |d|d¡ | j  |d|d¡ | j  |dtdddd¡}| j  |dtƒ dd¡}	| |¡ |	 |¡ | j  |dtddd¡}
| j  |dtƒ d¡}|
 |¡ | |¡ |dkrv| j j|dt|ƒ | jd}n>|dkr˜| j  |dt|ƒ ¡}n| j j|dt|ƒ | jd}|}qW d S )Né   Útable1)rM   Úfiltersz%04dr$   r%   é   r&   c             S   s   g | ]}|d  ‘qS )r$   r'   )Ú.0Úxr'   r'   r(   ú
<listcomp>'  s    z4FiltersTreeTestCase.populateFile.<locals>.<listcomp>c             S   s   g | ]}|d  ‘qS )r&   r'   )r~   r   r'   r'   r(   r€   (  s    Úarray1zcol 1Úarray2zcol 3Úearray1r   )r    )r   Úearray2Zvlarray1Zvlarray2r-   r8   )r|   )r1   r2   r   r3   rw   rM   r[   ÚnrowsrY   r_   Úiterrowsr5   Úcreate_earrayr	   r
   Zcreate_vlarrayr7   ÚstrÚgfiltersr|   )r9   r8   rg   r4   Údrd   Úvar1ListÚvar3ListÚea1Úea2Zvla1Zvla2Úgroup2r'   r'   r(   ry     sJ    












z FiltersTreeTestCase.populateFilec             C   sÔ  t jr tddƒ td| jj ƒ t jrHtdt| jƒƒ tdt| jjƒƒ | jdkrZtƒ }n| j}|  	t|ƒt| jjƒ¡ ddd	d
g}xP|D ]H}| j 
|¡}t|tƒr¼|  	t|ƒt|jƒ¡ qŠ|  	t|ƒt|jƒ¡ qŠW | jjjj}| jdkr
| jdkrtƒ }n| j}n| j}t jr6tdt|ƒƒ tdt|jƒƒ |  	t|ƒt|jƒ¡ dddddg}xT|D ]L}| j 
|¡}t|tƒr”|  	t|ƒt|jƒ¡ n|  	t|ƒt|jƒ¡ q`W | jdkrØ| jdkrÐtƒ }n| j}n| j}| jjjjjj}t jrtdt|ƒƒ tdt|jƒƒ |  	t|ƒt|jƒ¡ dddddg}xT|D ]L}| j 
|¡}t|tƒrr|  	t|ƒt|jƒ¡ n|  	t|ƒt|jƒ¡ q>W dddddg}x2|D ]*}| j 
|¡}|  	ttƒ ƒt|jƒ¡ q¢W dS )z<Checking inheritance of filters on trees (open file version)Ú
z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z!Running %s.test00_checkFilters...zTest filter:zFilters in file:Nz/table1z/group0/earray1z/group0/vlarray1z/group0zTest gfilter:z/group0/group1z/group0/group1/earray1z/group0/group1/vlarray1z/group0/group1/table1z/group0/group1/group2/table1z/group0/group1/group2/group3z$/group0/group1/group2/group3/earray1z%/group0/group1/group2/group3/vlarray1z#/group0/group1/group2/group3/table1z#/group0/group1/group2/group3/group4z/array1z/group0/array1z/group0/group1/array1z/group0/group1/group2/array1z#/group0/group1/group2/group3/array1)r   r?   rB   r:   r!   Úreprr|   r1   r   rK   Úget_noder<   r   Ú
_v_filtersr2   Úgroup0Úgroup1r‰   r   Úgroup3)r9   r|   ÚnodelistÚnodeÚobjr•   r‰   r–   r'   r'   r(   Útest00_checkFiltersL  s~    






z'FiltersTreeTestCase.test00_checkFiltersc       	      C   sÖ  t jr tddƒ td| jj ƒ |  ¡  | jdkr:tƒ }n| j}t jrftdt|ƒƒ tdt| j	jƒƒ |  
t|ƒt| j	jƒ¡ ddd	d
g}xP|D ]H}| j	 |¡}t|tƒrÂ|  
t|ƒt|jƒ¡ q|  
t|ƒt|jƒ¡ qW | j	jjj}| jdkr| jdkrtƒ }n| j}n| j}t jr<tdt|ƒƒ tdt|jƒƒ |  
t|ƒt|jƒ¡ dddddg}xT|D ]L}| j	 |¡}t|tƒrš|  
t|ƒt|jƒ¡ n|  
t|ƒt|jƒ¡ qfW | jdkrÞ| jdkrÖtƒ }n| j}n| j}| j	jjjjj}t jrtdt|ƒƒ tdt|jƒƒ t|ƒt|jƒk dddddg}xT|D ]L}| j	 |¡}t|tƒrt|  
t|ƒt|jƒ¡ n|  
t|ƒt|jƒ¡ q@W dddddg}x2|D ]*}| j	 |¡}|  
ttƒ ƒt|jƒ¡ q¤W dS )z=Checking inheritance of filters on trees (close file version)r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z!Running %s.test01_checkFilters...NzTest filter:zFilters in file:z/table1z/group0/earray1z/group0/vlarray1z/group0z/group0/group1z/group0/group1/earray1z/group0/group1/vlarray1z/group0/group1/table1z/group0/group1/group2/table1z/group0/group1/group2/group3z$/group0/group1/group2/group3/earray1z%/group0/group1/group2/group3/vlarray1z#/group0/group1/group2/group3/table1z#/group0/group1/group2/group3/group4z/array1z/group0/array1z/group0/group1/array1z/group0/group1/group2/array1z#/group0/group1/group2/group3/array1)r   r?   rB   r:   r!   rJ   r|   r   r‘   r1   rK   r’   r<   r   r“   r2   r”   r•   r‰   r   r–   )	r9   r|   r—   r˜   Zobject_r•   r‰   r–   r™   r'   r'   r(   Útest01_checkFilters·  s€    






z'FiltersTreeTestCase.test01_checkFilters)
r!   r"   r#   rM   r…   r0   ry   rš   r›   rv   r'   r'   )r:   r(   rx     s   9krx   c               @   s&   e Zd Zeƒ ZeddZeedZdS )ÚFiltersCase1r-   )Ú	complevel)r|   N)r!   r"   r#   r   r|   r‰   ÚdictÚopen_kwargsr'   r'   r'   r(   rœ   $  s   
rœ   z'BZIP2 compression library not availablec               @   s,   e Zd ZedddZeddZeedZdS )ÚFiltersCase2r-   Úbzip2)r   Úcomplib)r   )r|   N)r!   r"   r#   r   r|   r‰   rž   rŸ   r'   r'   r'   r(   r    *  s   
r    z%LZO compression library not availablec               @   s0   e Zd ZedddZeddddZeedZd	S )
ÚFiltersCase3TÚzlib)Úshuffler¢   r-   FÚlzo)r   r¥   r¢   )r|   N)r!   r"   r#   r   r|   r‰   rž   rŸ   r'   r'   r'   r(   r£   2  s   r£   c               @   s,   e Zd ZeddZedddZeedZdS )ÚFiltersCase4T)r¥   r-   F)r   r¥   )r|   N)r!   r"   r#   r   r|   r‰   rž   rŸ   r'   r'   r'   r(   r§   9  s   
r§   c               @   s,   e Zd ZeddZedddZeedZdS )ÚFiltersCase5T)Ú
fletcher32r-   F)r   r¥   )r|   N)r!   r"   r#   r   r|   r‰   rž   rŸ   r'   r'   r'   r(   r¨   ?  s   
r¨   c               @   s&   e Zd ZdZedddZeedZdS )ÚFiltersCase6Nr-   F)r   r¥   )r|   )r!   r"   r#   r|   r   r‰   rž   rŸ   r'   r'   r'   r(   rª   E  s   rª   c               @   s$   e Zd ZeddZdZeedZdS )ÚFiltersCase7r-   )r   N)r|   )r!   r"   r#   r   r|   r‰   rž   rŸ   r'   r'   r'   r(   r«   K  s   
r«   c               @   s   e Zd ZdZdZeedZdS )ÚFiltersCase8N)r|   )r!   r"   r#   r|   r‰   rž   rŸ   r'   r'   r'   r(   r¬   Q  s   r¬   c               @   s0   e Zd ZedddZeddddZeedZdS )	ÚFiltersCase9Tr¤   )r¥   r¢   rz   r¡   )r   r¥   r¢   )r|   N)r!   r"   r#   r   r|   r‰   rž   rŸ   r'   r'   r'   r(   r­   W  s   r­   z'BLOSC compression library not availablec               @   s2   e Zd ZeddddZeddddZeedZd	S )
ÚFiltersCase10Fr-   Úblosc)r¥   r   r¢   rz   T)r   r¥   r¢   )r|   N)r!   r"   r#   r   r|   r‰   rž   rŸ   r'   r'   r'   r(   r®   _  s   r®   c               @   s2   e Zd ZeddddZeddddZeedZd	S )
ÚFiltersCaseBloscBloscLZFr-   zblosc:blosclz)r¥   r   r¢   rz   T)r   r¥   r¢   )r|   N)r!   r"   r#   r   r|   r‰   rž   rŸ   r'   r'   r'   r(   r°   g  s   r°   Zlz4zlz4 requiredc                   s   e Zd Z‡ fdd„Z‡  ZS )ÚFiltersCaseBloscLZ4c                s@   t dddd| _t dddd| _t| jd| _tt| ƒ ¡  d S )	NFr-   z	blosc:lz4)r¥   r   r¢   rz   T)r   r¥   r¢   )r|   )r   r|   r‰   rž   rŸ   r/   r±   r0   )r9   )r:   r'   r(   r0   s  s    zFiltersCaseBloscLZ4.setUp)r!   r"   r#   r0   rv   r'   r'   )r:   r(   r±   o  s   r±   c                   s   e Zd Z‡ fdd„Z‡  ZS )ÚFiltersCaseBloscLZ4HCc                s@   t dddd| _t dddd| _t| jd| _tt| ƒ ¡  d S )	NFr-   zblosc:lz4hc)r¥   r   r¢   rz   T)r   r¥   r¢   )r|   )r   r|   r‰   rž   rŸ   r/   r²   r0   )r9   )r:   r'   r(   r0   ~  s    zFiltersCaseBloscLZ4HC.setUp)r!   r"   r#   r0   rv   r'   r'   )r:   r(   r²   z  s   r²   Zsnappyzsnappy requiredc                   s   e Zd Z‡ fdd„Z‡  ZS )ÚFiltersCaseBloscSnappyc                s@   t dddd| _t dddd| _t| jd| _tt| ƒ ¡  d S )	NFr-   zblosc:snappy)r¥   r   r¢   rz   T)r   r¥   r¢   )r|   )r   r|   r‰   rž   rŸ   r/   r³   r0   )r9   )r:   r'   r(   r0   Œ  s    zFiltersCaseBloscSnappy.setUp)r!   r"   r#   r0   rv   r'   r'   )r:   r(   r³   ‡  s   r³   r¤   zzlib requiredc                   s   e Zd Z‡ fdd„Z‡  ZS )ÚFiltersCaseBloscZlibc                s@   t dddd| _t dddd| _t| jd| _tt| ƒ ¡  d S )	NFr-   z
blosc:zlib)r¥   r   r¢   rz   T)r   r¥   r¢   )r|   )r   r|   r‰   rž   rŸ   r/   r´   r0   )r9   )r:   r'   r(   r0   ™  s    zFiltersCaseBloscZlib.setUp)r!   r"   r#   r0   rv   r'   r'   )r:   r(   r´   •  s   r´   Zzstdzzstd requiredc                   s   e Zd Z‡ fdd„Z‡  ZS )ÚFiltersCaseBloscZstdc                s@   t dddd| _t dddd| _t| jd| _tt| ƒ ¡  d S )	NFr-   z
blosc:zstd)r¥   r   r¢   rz   T)r   r¥   r¢   )r|   )r   r|   r‰   rž   rŸ   r/   rµ   r0   )r9   )r:   r'   r(   r0   ¤  s    zFiltersCaseBloscZstd.setUp)r!   r"   r#   r0   rv   r'   r'   )r:   r(   rµ      s   rµ   zBLOSC >= %s requiredc               @   s4   e Zd ZeddddZedddddZeedZd	S )
ÚFiltersCaseBloscBitShuffleFr-   zblosc:blosclz)r¥   r   r¢   rz   T)r   r¥   Z
bitshuffler¢   )r|   N)r!   r"   r#   r   r|   r‰   rž   rŸ   r'   r'   r'   r(   r¶   «  s   r¶   c                   sX   e Zd ZdZdZ‡ fdd„Zdd„ Z‡ fdd„Zd	d
„ Zdd„ Z	dd„ Z
dd„ Z‡  ZS )ÚCopyGroupTestCasezA titlerW   c                s6   t t| ƒ ¡  t d¡| _t | jd¡| _|  	¡  d S )Nz.h5Úw)
r/   r·   r0   ÚtempfileÚmktempÚh5fname2r>   Ú	open_fileÚh5file2ry   )r9   )r:   r'   r(   r0   º  s    zCopyGroupTestCase.setUpc          	   C   s¤  | j j}d|j_d|j_x„tdƒD ]v}x@tdƒD ]2}| j j|dt|ƒ d d}| j j|dt	| j
d d}|j}x@t| jƒD ]2}d	| j|  |d
< ||d< |d |d< | ¡  q€W | ¡  d|j_d|j_dd„ | ¡ D ƒ}dd„ | ¡ D ƒ}| j  |d|d¡ | j  |d|d¡ | j  |dtdddd¡}	| j  |dtƒ dd¡}
d|	j_d|
j_|	 |¡ |
 |¡ q6W | j j|dt|ƒ d d}|}d|j_d|j_q$W d S )Nzan string for root groupé|   rz   r}   Úbgroup)r|   r{   )rM   r|   z%04dr$   r%   r&   z	an stringéê   c             S   s   g | ]}|d  ‘qS )r$   r'   )r~   r   r'   r'   r(   r€   ä  s    z2CopyGroupTestCase.populateFile.<locals>.<listcomp>c             S   s   g | ]}|d  ‘qS )r&   r'   )r~   r   r'   r'   r(   r€   å  s    r   zcol 1r‚   zcol 3rƒ   r   )r    )r   r„   zan string for earrayé{   r8   zan string for group)r1   r2   Ú_v_attrsÚattr1Úattr2r   r7   rˆ   r3   rw   rM   r[   r…   rY   r_   Úattrsr†   r5   r‡   r	   r
   )r9   r8   rg   rd   r   r4   rŠ   r‹   rŒ   r   rŽ   r–   r'   r'   r(   ry   Ä  sJ    



zCopyGroupTestCase.populateFilec                s0   | j jr| j  ¡  t | j¡ tt| ƒ ¡  d S )N)	r½   ÚisopenÚcloseÚosÚremover»   r/   r·   ÚtearDown)r9   )r:   r'   r(   rÊ      s    
zCopyGroupTestCase.tearDownc             C   sÔ   t jr tddƒ td| jj ƒ | jjjj}| jj	|| j
jd| jd | jrf| j
 ¡  t | jd¡| _
| j
j}t|j ¡ ƒ}t|j ¡ ƒ}| ¡  | ¡  t jr´td|ƒ td|ƒ |  |j|j¡ |  ||¡ d	S )
z&Checking non-recursive copy of a Groupr   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z!Running %s.test00_nonRecursive...F)Ú	recursiver|   ÚrzThe origin node list -->zThe copied node list -->N)r   r?   rB   r:   r!   r1   r2   r”   r•   Úcopy_childrenr½   r|   rÇ   r>   r¼   r»   ÚlistÚ_v_childrenÚkeysÚsortrK   Ú_v_nchildren)r9   ÚsrcgroupÚdstgroupÚ	nodelist1Ú	nodelist2r'   r'   r(   Útest00_nonRecursive  s(    



z%CopyGroupTestCase.test00_nonRecursivec             C   s˜  t jr tddƒ td| jj ƒ | jjjj}|j	| j
jd| jdd | jrd| j
 ¡  t | jd¡| _
| j
j}x$|D ]}t||jƒ}t|tƒr²|j}| d¡}|j}| d¡}n |j}| d¡}|j}| d¡}| jd	k	ræ| d
¡ t jrtd|j|f ƒ td|j|f ƒ |  ||¡ t jr.tdƒ x6|D ].}	tt||	ƒƒ}
tt||	ƒƒ}|  |
|¡ q4W | jd	k	r‚|  |j| j¡ t jrttdƒ qtW d	S )z:Checking non-recursive copy of a Group (attributes copied)r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z&Running %s.test01_nonRecursiveAttrs...Fr-   )rË   r|   ÚcopyuserattrsrÌ   ÚallNÚFILTERSzsrcattrskeys for node %s: %szdstattrskeys for node %s: %sz)The attrs names has been copied correctlyz,The attrs contents has been copied correctly)r   r?   rB   r:   r!   r1   r2   r”   r•   Ú_f_copy_childrenr½   r|   rÇ   r>   r¼   r»   ÚgetattrÚ_v_namer<   r   rÂ   Ú_f_listrÅ   rÉ   rK   rˆ   rÚ   )r9   rÓ   rÔ   ÚsrcnodeÚdstnodeÚsrcattrsÚsrcattrskeysÚdstattrsÚdstattrskeysÚsrcattrnameÚsrcattrvalueÚdstattrvaluer'   r'   r(   Útest01_nonRecursiveAttrs)  sT    











z*CopyGroupTestCase.test01_nonRecursiveAttrsc             C   s~  t jr tddƒ td| jj ƒ | jj}x&| j d¡D ]}|r6| j 	||¡}q6W | j 
| j¡}| j 
| j¡}| jj||d| jd t|jƒ}|dkr˜d}| jrÆ| j ¡  t | jd	¡| _| j 
| j¡}t|jƒ}|dkrÜd}d}g }x.| ¡ D ]"}	|rüd}qî| |	j|d
… ¡ qîW d}g }
x4| ¡ D ](}	|r8d}q&|
 |	j|d
… ¡ q&W t jrntd|ƒ td|
ƒ |  ||
¡ d
S )z"Checking recursive copy of a Groupr   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test02_Recursive...ú/T)rË   r|   r-   r   rÌ   NzThe origin node list -->zThe copied node list -->)r   r?   rB   r:   r!   r½   r2   rà   Úsplitr7   r’   r1   rß   rÍ   r|   r\   Ú_v_pathnamerÇ   r>   r¼   r»   Ú_f_walknodesrY   rK   )r9   r8   Ú	groupnamerÔ   rÓ   ÚlenSrcGroupÚlenDstGroupÚfirstrÕ   r˜   rÖ   r'   r'   r(   Útest02_Recursivee  sP    







z"CopyGroupTestCase.test02_Recursivec       
      C   sx  t jr tddƒ td| jj ƒ | jj}x&| j d¡D ]}|r6| j 	||¡}q6W | j 
| j¡}| j 
| j¡}|j|d| jd t|jƒ}|dkr”d}| jrÂ| j ¡  t | jd	¡| _| j 
| j¡}t|jƒ}|dkrØd}d}i }x.| ¡ D ]"}	|rød}qê|	j|d
… ||	j< qêW d}x^| ¡ D ]R}	|r0d}qt|	tƒrVt|	jƒt||	j ƒk nt|	jƒt||	j ƒk qW d
S )z4Checking recursive copy of a Group (cheking Filters)r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z%Running %s.test03_RecursiveFilters...ré   T)rË   r|   r-   r   rÌ   N)r   r?   rB   r:   r!   r½   r2   rà   rê   r7   r’   r1   rß   rÛ   r|   r\   rë   rÇ   r>   r¼   r»   rì   rÝ   r<   r   r‘   r“   )
r9   r8   rí   rÔ   rÓ   rî   rï   rð   rÕ   r˜   r'   r'   r(   Útest03_RecursiveFilters  sL    




z)CopyGroupTestCase.test03_RecursiveFilters)r!   r"   r#   rM   r…   r0   ry   rÊ   r×   rè   rñ   rò   rv   r'   r'   )r:   r(   r·   ¶  s   
<!<8r·   c               @   s   e Zd ZdZdZdZdZdS )ÚCopyGroupCase1r   Nz/group0/group1ré   )r!   r"   r#   rÇ   r|   rß   rà   r'   r'   r'   r(   ró   Ô  s   ró   c               @   s   e Zd ZdZdZdZdZdS )ÚCopyGroupCase2r-   Nz/group0/group1ré   )r!   r"   r#   rÇ   r|   rß   rà   r'   r'   r'   r(   rô   Û  s   rô   c               @   s   e Zd ZdZdZdZdZdS )ÚCopyGroupCase3r   Nz/group0z/group2/group3)r!   r"   r#   rÇ   r|   rß   rà   r'   r'   r'   r(   rõ   â  s   rõ   c               @   s"   e Zd ZdZeddZdZdZdS )ÚCopyGroupCase4r-   )r   z/group0z/group2/group3N)r!   r"   r#   rÇ   r   r|   rß   rà   r'   r'   r'   r(   rö   é  s   
rö   c               @   s   e Zd ZdZeƒ ZdZdZdS )ÚCopyGroupCase5r   ré   z/group2/group3N)r!   r"   r#   rÇ   r   r|   rß   rà   r'   r'   r'   r(   r÷   ð  s   r÷   c               @   s"   e Zd ZdZeddZdZdZdS )ÚCopyGroupCase6r-   T)r©   z/group0z/group2/group3N)r!   r"   r#   rÇ   r   r|   rß   rà   r'   r'   r'   r(   rø   ÷  s   
rø   c               @   s$   e Zd ZdZedddZdZdZdS )ÚCopyGroupCase7r   r-   F)r   r¥   ré   N)r!   r"   r#   rÇ   r   r|   rß   rà   r'   r'   r'   r(   rù   þ  s   rù   c               @   s$   e Zd ZdZedddZdZdZdS )ÚCopyGroupCase8r-   r¦   )r   r¢   ré   N)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‡ fdd„Zdd„ Z‡ fdd„Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Z‡  ZS )ÚCopyFileTestCasezA titlerW   c                s&   t t| ƒ ¡  t d¡| _|  ¡  d S )Nz.h5)r/   rû   r0   r¹   rº   r»   ry   )r9   )r:   r'   r(   r0     s    zCopyFileTestCase.setUpc          	   C   s¤  | j j}d|j_d|j_x„tdƒD ]v}x@tdƒD ]2}| j j|dt|ƒ d d}| j j|dt	| j
d d}|j}x@t| jƒD ]2}d	| j|  |d
< ||d< |d |d< | ¡  q€W | ¡  d|j_d|j_dd„ | ¡ D ƒ}dd„ | ¡ D ƒ}| j  |d|d¡ | j  |d|d¡ | j  |dtdddd¡}	| j  |dtƒ dd¡}
d|	j_d|
j_|	 |¡ |
 |¡ q6W | j j|dt|ƒ d d}|}d|j_d|j_q$W d S )Nzan string for root groupr¾   rz   r}   r¿   )r|   r{   )rM   r|   z%04dr$   r%   r&   z	an stringrÀ   c             S   s   g | ]}|d  ‘qS )r$   r'   )r~   r   r'   r'   r(   r€   :  s    z1CopyFileTestCase.populateFile.<locals>.<listcomp>c             S   s   g | ]}|d  ‘qS )r&   r'   )r~   r   r'   r'   r(   r€   ;  s    r   zcol 1r‚   zcol 3rƒ   r   )r    )r   r„   zan string for earrayrÁ   r8   zan string for group)r1   r2   rÂ   rÃ   rÄ   r   r7   rˆ   r3   rw   rM   r[   r…   rY   r_   rÅ   r†   r5   r‡   r	   r
   )r9   r8   rg   rd   r   r4   rŠ   r‹   rŒ   r   rŽ   r–   r'   r'   r(   ry     sL    



zCopyFileTestCase.populateFilec                sR   t | dƒr| jjr| j ¡  t | dƒr@tj | j¡r@t | j¡ t	t
| ƒ ¡  d S )Nr½   r»   )Úhasattrr½   rÆ   rÇ   rÈ   ÚpathÚexistsr»   rÉ   r/   rû   rÊ   )r9   )r:   r'   r(   rÊ   W  s
    
zCopyFileTestCase.tearDownc             C   sô   t jr tddƒ td| jj ƒ t| jdƒ}| ¡  | jj	| j| j
dddd | jr\|  ¡  t | jd	¡| _| jj}| jj}t|j ¡ ƒ}t|j ¡ ƒ}| ¡  | ¡  t jrÂtd
|ƒ td|ƒ |  |j|j¡ |  ||¡ |  | jj
| j
¡ dS )z*Checking copy of a File (overwriting file)r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test00_overwrite...r¸   r-   r   N)rM   Ú	overwriterØ   r|   rÌ   zThe origin node list -->zThe copied node list -->)r   r?   rB   r:   r!   Úopenr»   rÇ   r1   Ú	copy_filerM   rJ   r>   r¼   r½   r2   rÎ   rÏ   rÐ   rÑ   rK   rÒ   )r9   Zfile2hrÓ   rÔ   rÕ   rÖ   r'   r'   r(   Útest00_overwritea  s0    


z!CopyFileTestCase.test00_overwritec             C   s:   t jr tddƒ td| jj ƒ |  t| jj| jj	¡ dS )z,Checking copy of a File (srcfile == dstfile)r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z!Running %s.test00a_srcdstequal...N)
r   r?   rB   r:   r!   rp   ÚIOErrorr1   r  Úfilename)r9   r'   r'   r(   Útest00a_srcdstequalˆ  s
    
z$CopyFileTestCase.test00a_srcdstequalc             C   sî   t jr tddƒ td| jj ƒ | j ¡  tj| j	| j
| jdddd t | j	d¡| _t | j
d¡| _| jj}| jj}t|j ¡ ƒ}t|j ¡ ƒ}| ¡  | ¡  t jr¼td	|ƒ td
|ƒ |  |j|j¡ |  ||¡ |  | jj| j¡ dS )z.Checking copy of a File (first-class function)r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z Running %s.test00b_firstclass...r   Nr-   )rM   rØ   r|   rÿ   rÌ   zThe origin node list -->zThe copied node list -->)r   r?   rB   r:   r!   r1   rÇ   r>   r  Úh5fnamer»   rM   r¼   r½   r2   rÎ   rÏ   rÐ   rÑ   rK   rÒ   )r9   rÓ   rÔ   rÕ   rÖ   r'   r'   r(   Útest00b_firstclass“  s(    



z#CopyFileTestCase.test00b_firstclassc             C   sÚ  t jr tddƒ td| jj ƒ | jj| j| jd| j	d | j
rH|  ¡  t | jd¡| _| jj}| jj}t|j ¡ ƒ}t|j ¡ ƒ}| ¡  | ¡  t jr®td|ƒ td|ƒ |  |j|j¡ |  ||¡ |  | jj| j¡ xø|D ]ð}t||jƒ}|j}| d	¡}|j}	|	 d
¡}
| j	dk	r(|
 d¡ t jrTtd|j|f ƒ td|j|
f ƒ |  ||
¡ t jrptdƒ x6|D ].}tt||ƒƒ}tt|	|ƒƒ}|  ||¡ qvW | j	dk	rÄ|  |	j| j	¡ t jrâtdƒ qâW dS )z/Checking copy of a File (attributes not copied)r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test01_copy...r   )rM   rØ   r|   rÌ   zThe origin node list -->zThe copied node list -->r@   rÙ   NrÚ   zsrcattrskeys for node %s: %szdstattrskeys for node %s: %sz)The attrs names has been copied correctlyz,The attrs contents has been copied correctly)r   r?   rB   r:   r!   r1   r  r»   rM   r|   rÇ   rJ   r>   r¼   r½   r2   rÎ   rÏ   rÐ   rÑ   rK   rÒ   rÜ   rÝ   rÂ   rÞ   rÉ   rˆ   rÚ   )r9   rÓ   rÔ   rÕ   rÖ   rß   rà   rá   râ   rã   rä   rå   ræ   rç   r'   r'   r(   Útest01_copyµ  sZ    










zCopyFileTestCase.test01_copyc             C   s^  t jr tddƒ td| jj ƒ | jj| j| jd| j	d | j
rH|  ¡  t | jd¡| _| jj}| jj}xð|D ]è}t||jƒ}|j}| d¡}|j}| d¡}t jrÈtd|j|f ƒ td	|j|f ƒ | j	d
k	rÜ| d¡ |  ||¡ t jrötdƒ x4|D ],}	tt||	ƒƒ}
tt||	ƒƒ}|  |
|¡ qüW | j	d
k	rH|  |j| j	¡ t jrntdƒ qnW d
S )z+Checking copy of a File (attributes copied)r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test02_Attrs...r-   )rM   rØ   r|   rÌ   rÙ   zsrcattrskeys for node %s: %szdstattrskeys for node %s: %sNrÚ   z)The attrs names has been copied correctlyz,The attrs contents has been copied correctly)r   r?   rB   r:   r!   r1   r  r»   rM   r|   rÇ   rJ   r>   r¼   r½   r2   rÜ   rÝ   rÂ   rÞ   rÉ   rK   rˆ   rÚ   )r9   rÓ   rÔ   rß   rà   rá   râ   rã   rä   rå   ræ   rç   r'   r'   r(   Útest02_Attrsû  sF    









zCopyFileTestCase.test02_Attrs)r!   r"   r#   rM   r…   r0   ry   rÊ   r  r  r  r  r	  rv   r'   r'   )r:   r(   rû     s   	=
'"Frû   c               @   s   e Zd ZdZdZdZdS )ÚCopyFileCase1r   zA new titleN)r!   r"   r#   rÇ   rM   r|   r'   r'   r'   r(   r
  1  s   r
  c               @   s   e Zd ZdZdZdZdS )ÚCopyFileCase2r-   zA new titleN)r!   r"   r#   rÇ   rM   r|   r'   r'   r'   r(   r  7  s   r  c               @   s   e Zd ZdZdZeddZdS )ÚCopyFileCase3r   zA new titler-   )r   N)r!   r"   r#   rÇ   rM   r   r|   r'   r'   r'   r(   r  =  s   r  c               @   s   e Zd ZdZdZeddZdS )ÚCopyFileCase4r-   zA new title)r   N)r!   r"   r#   rÇ   rM   r   r|   r'   r'   r'   r(   r  C  s   r  c               @   s   e Zd ZdZdZeddZdS )ÚCopyFileCase5r   zA new titleT)r©   N)r!   r"   r#   rÇ   rM   r   r|   r'   r'   r'   r(   r  I  s   r  c               @   s   e Zd ZdZdZeddZdS )ÚCopyFileCase6r-   zA new titleT)r©   N)r!   r"   r#   rÇ   rM   r   r|   r'   r'   r'   r(   r  O  s   r  c               @   s    e Zd ZdZdZedddZdS )ÚCopyFileCase7r   zA new titler-   r¦   )r   r¢   N)r!   r"   r#   rÇ   rM   r   r|   r'   r'   r'   r(   r  U  s   r  c               @   s    e Zd ZdZdZedddZdS )ÚCopyFileCase8r-   zA new titler¦   )r   r¢   N)r!   r"   r#   rÇ   rM   r   r|   r'   r'   r'   r(   r  [  s   r  c               @   s   e Zd Zdd„ ZdS )ÚCopyFileCase10c          	   C   sv   t jr tddƒ td| jj ƒ t d¡| _t 	| jd¡| _
| j
 ¡  z| jt| jj| jdd W dt | j¡ X dS )	z2Checking copy of a File (checking not overwriting)r   z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z!Running %s.test01_notoverwrite...z.h5r¸   F)rÿ   N)r   r?   rB   r:   r!   r¹   rº   r»   r>   r¼   r½   rÇ   rp   r  r1   r  rÈ   rÉ   )r9   r'   r'   r(   Útest01_notoverwritec  s    

z"CopyFileCase10.test01_notoverwriteN)r!   r"   r#   r  r'   r'   r'   r(   r  a  s   r  c                   sl   e Zd ZejddZ‡ fdd„Zddd„Zdd	„ Zdd
d„Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Z‡  ZS )ÚGroupFiltersTestCaser   )r   c                sÒ   t t| ƒ ¡  t ¡ d }}| jj}| jj}|ddƒ |ddƒ |dd||d |dd||t ¡ d |dd	||| j	d |dd	| j	d
 |ddƒ |dd||d |dd	||| j	d |dd||t ¡ d d S )N)r-   r-   ré   Zimplicit_noz/implicit_noz/implicit_no/implicit_no)ÚatomÚshapeZexplicit_no)r  r  r|   Zexplicit_yes)r|   z/explicit_yesZimplicit_yesz/explicit_yes/implicit_yes)
r/   r  r0   r>   ZIntAtomr1   r7   Úcreate_carrayr   r|   )r9   r  r  r7   r  )r:   r'   r(   r0   |  s(    




zGroupFiltersTestCase.setUpNc             C   sŠ   x„|D ]|}t |dƒr|j}n|j}|d k	r:|  ||¡ d S |j d¡r`|  |t ¡ d|j ¡ q|j d¡r|  || jd|j ¡ qW d S )Nr|   Z_noz"node ``%s`` should have no filtersÚ_yesznode ``%s`` should have filters)	rü   r|   r“   rK   rÝ   Úendswithr>   r   rë   )r9   r1   r|   r˜   Znode_filtersr'   r'   r(   Ú_check_filters•  s    

z#GroupFiltersTestCase._check_filtersc             C   s   |   | j¡ dS )z Filters propagating to children.N)r  r1   )r9   r'   r'   r(   Útest00_propagate¬  s    z%GroupFiltersTestCase.test00_propagatec          	   C   sZ   t jdd}z<| jj||d zt |¡}| j||d W d | ¡  X W d t 	|¡ X d S )Nz.h5)Úsuffix)r|   )
r¹   rº   r1   r  r>   r¼   r  rÇ   rÈ   rÉ   )r9   r|   Z	copyfnameZcopyfr'   r'   r(   Ú_test_copyFile±  s    
z#GroupFiltersTestCase._test_copyFilec             C   s   |   ¡  dS )z$Keeping filters when copying a file.N)r  )r9   r'   r'   r(   Útest01_copyFile½  s    z$GroupFiltersTestCase.test01_copyFilec             C   s   |   | j¡ dS )z'Overriding filters when copying a file.N)r  r|   )r9   r'   r'   r(   Útest02_copyFile_overrideÂ  s    z-GroupFiltersTestCase.test02_copyFile_overridec             C   sn   | j  |¡}t ¡ }| d¡r$| j}|  |j|¡ ||ƒ |  |j|¡ |  ¡ r\| j  |¡}|  |j|¡ d S )Nr  )	r1   r’   r>   r   r  r|   rK   r“   rJ   )r9   ÚpathnameZchange_filtersZnew_filtersr8   Zold_filtersr'   r'   r(   Ú_test_changeÇ  s    
z!GroupFiltersTestCase._test_changec                s    ‡ fdd„}ˆ   d|ˆ j¡ dS )z Changing the filters of a group.c                s   ˆ j | _d S )N)r|   r“   )r8   )r9   r'   r(   Úset_filtersÜ  s    z7GroupFiltersTestCase.test03_change.<locals>.set_filtersré   N)r!  r|   )r9   r"  r'   )r9   r(   Útest03_changeÙ  s    z"GroupFiltersTestCase.test03_changec             C   s   dd„ }|   d|t ¡ ¡ dS )z Deleting the filters of a group.c             S   s   | ` d S )N)r“   )r8   r'   r'   r(   Údel_filtersã  s    z7GroupFiltersTestCase.test04_delete.<locals>.del_filtersz/explicit_yesN)r!  r>   r   )r9   r$  r'   r'   r(   Útest04_deleteà  s    z"GroupFiltersTestCase.test04_delete)N)N)r!   r"   r#   r>   r   r|   r0   r  r  r  r  r  r!  r#  r%  rv   r'   r'   )r:   r(   r  y  s   

r  zBLOSC not availablec               @   s*   e Zd ZejdddZdd„ Zdd„ ZdS )	ÚSetBloscMaxThreadsTestCaser   r¯   )r   r¢   c             C   s   t  d¡}tjr,td|ƒ td| jjd ƒ |  || jjd ¡ | jjddt  	¡ d| j
d t  d	¡}tjr€td|ƒ tddƒ |  |d¡ d
S )z Checking set_blosc_max_threads()r   zPrevious max threads:z
Should be:ÚMAX_BLOSC_THREADSré   Ú
some_array)é   r)  )r  r  r|   r-   N)r>   Úset_blosc_max_threadsr   r?   rB   r1   ÚparamsrK   r  Ú	Int32Atomr|   )r9   Únthreads_oldr'   r'   r(   Útest00ì  s    






z!SetBloscMaxThreadsTestCase.test00c             C   sr   t  d¡}| jjddt  ¡ d| jd |  ¡  t  d¡}tjrZt	d|ƒ t	d| jj
d ƒ |  || jj
d ¡ d	S )
z*Checking set_blosc_max_threads() (re-open)r   ré   r(  )r)  r)  )r  r  r|   zPrevious max threads:z
Should be:r'  N)r>   r*  r1   r  r,  r|   rJ   r   r?   rB   r+  rK   )r9   r-  r'   r'   r(   Útest01ý  s    




z!SetBloscMaxThreadsTestCase.test01N)r!   r"   r#   r>   r   r|   r.  r/  r'   r'   r'   r(   r&  è  s   r&  c               @   s`   e Zd Zdd„ Zedd„ ƒZdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚFilterTestCasec             C   s   |   ttƒ  ¡ ƒtj¡ d S )N)rK   rD   r   Ú_packÚnumpyÚint64)r9   r'   r'   r(   Útest_filter_pack_type  s    z$FilterTestCase.test_filter_pack_typec             C   s0   t jd dkrtt| ƒƒS tt| ƒƒ d¡S d S )Nr   r}   ÚL)r@   Úversion_infoÚhexÚintÚrstrip)Únr'   r'   r(   Ú_hexl  s    zFilterTestCase._hexlc             C   s    t ƒ }|  |  | ¡ ¡d¡ d S )NZ0x0)r   rK   r;  r1  )r9   Úfilter_r'   r'   r(   Útest_filter_pack_01  s    z"FilterTestCase.test_filter_pack_01c             C   s&   t ddd}|  |  | ¡ ¡d¡ d S )Nr-   F)r¥   Z0x101)r   rK   r;  r1  )r9   r<  r'   r'   r(   Útest_filter_pack_02  s    z"FilterTestCase.test_filter_pack_02c             C   s*   t ddddd}|  |  | ¡ ¡d¡ d S )Né	   r¤   T)r¥   r©   Z0x30109)r   rK   r;  r1  )r9   r<  r'   r'   r(   Útest_filter_pack_03  s    z"FilterTestCase.test_filter_pack_03c             C   s(   t dddd}|  |  | ¡ ¡d¡ d S )Nr-   Frz   )r¥   Úleast_significant_digitZ	0x5040101)r   rK   r;  r1  )r9   r<  r'   r'   r(   Útest_filter_pack_04#  s    z"FilterTestCase.test_filter_pack_04c             C   sV   t  t d¡¡}|  |j¡ |  |j¡ |  |jd ¡ |  |j	d¡ |  |j
d ¡ d S )Nr   )r   Ú_unpackr2  r3  ÚassertFalser¥   r©   rK   rA  r   r¢   )r9   r<  r'   r'   r(   Útest_filter_unpack_01'  s    z$FilterTestCase.test_filter_unpack_01c             C   sV   t  t d¡¡}|  |j¡ |  |j¡ |  |jd ¡ |  |j	d¡ |  |j
d¡ d S )Ni  r-   r¤   )r   rC  r2  r3  rD  r¥   r©   rK   rA  r   r¢   )r9   r<  r'   r'   r(   Útest_filter_unpack_02/  s    z$FilterTestCase.test_filter_unpack_02c             C   sV   t  t d¡¡}|  |j¡ |  |j¡ |  |jd ¡ |  |j	d¡ |  |j
d¡ d S )Ni	 r?  r¤   )r   rC  r2  r3  r;   r¥   r©   rK   rA  r   r¢   )r9   r<  r'   r'   r(   Útest_filter_unpack_037  s    z$FilterTestCase.test_filter_unpack_03c             C   sV   t  t d¡¡}|  |j¡ |  |j¡ |  |jd¡ |  |j	d¡ |  |j
d¡ d S )Nirz   r-   r¤   )r   rC  r2  r3  rD  r¥   r©   rK   rA  r   r¢   )r9   r<  r'   r'   r(   Útest_filter_unpack_04?  s    z$FilterTestCase.test_filter_unpack_04N)r!   r"   r#   r4  Ústaticmethodr;  r=  r>  r@  rB  rE  rF  rG  rH  r'   r'   r'   r(   r0    s   r0  c                   s^   e Zd ZdZi Zef deie—ŽZ‡ fdd„Zdd„ Zdd„ Z	d	d
„ Z
dd„ Zdd„ Z‡  ZS )ÚDefaultDriverTestCaseNÚdriverc                s^   t t| ƒ ¡  | jj}| j |dd¡ | jj|dddgdd | jj|ddt 	¡ idd d S )	NÚtestattré)   r6   r-   r}   )rM   r4   r$   )
r/   rJ  r0   r1   r2   Úset_node_attrr5   r3   r>   r   )r9   r2   )r:   r'   r(   r0   M  s    zDefaultDriverTestCase.setUpc             C   s   |   tj | j¡¡ d S )N)r;   rÈ   rý   Úisfiler  )r9   r'   r'   r(   ÚassertIsFileW  s    z"DefaultDriverTestCase.assertIsFilec             C   s    |   t| jtjƒ¡ |  ¡  d S )N)r;   r<   r1   r>   ZFilerP  )r9   r'   r'   r(   Útest_newFileZ  s    z"DefaultDriverTestCase.test_newFilec             C   sÎ   | j  ¡  d | _ |  ¡  tj| jfd| jdœ| j—Ž| _ | j j}|  	| j  
|d¡d¡ |  t|jtjƒ¡ |  	|jjd¡ |  t|jtjƒ¡ |  	|jjd¡ |  d|jjk¡ |  	|jjjjt ¡ j¡ d S )NrÌ   )ÚmoderK  rL  rM  r6   r4   r$   )r1   rÇ   rP  r>   r¼   r  ÚDRIVERÚDRIVER_PARAMSr2   rK   Úget_node_attrr;   r<   r6   r   rL   r4   r   r]   Úcolsr$   Údtyper   )r9   r2   r'   r'   r(   Útest_readFile^  s    
z#DefaultDriverTestCase.test_readFilec             C   sP  | j  ¡  d | _ |  ¡  tj| jfd| jdœ| j—Ž| _ | j j}|  	| j  
|d¡d¡ |  t|jtjƒ¡ |  	|jjd¡ |  t|jtjƒ¡ |  	|jjd¡ |  d|jjk¡ |  	|jjjjt ¡ j¡ | j j}| j  |dd	¡ | j j|d
ddgd
d | j j|ddt ¡ idd | jf d| jdœ| j—Ž | j j}|  	| j  
|d¡d¡ |  	| j  
|d¡d	¡ |  t|jtjƒ¡ |  	|jjd¡ |  t|jtjƒ¡ |  	|jjd
¡ |  t|jtjƒ¡ |  	|jjd¡ |  d|jjk¡ |  	|jjjjt ¡ j¡ |  t|jtjƒ¡ |  	|jjd¡ |  d|jjk¡ |  	|jjjjt ¡ j¡ d S )NÚa)rR  rK  rL  rM  r6   r4   r$   Ú	testattr2é*   r‚   r-   r}   )rM   Útable2r%   )r1   rÇ   rP  r>   r¼   r  rS  rT  r2   rK   rU  r;   r<   r6   r   rL   r4   r   r]   rV  r$   rW  r   rN  r5   r3   r   rJ   r‚   r\  r%   )r9   r2   r'   r'   r(   Útest_openFileAv  sF    
z$DefaultDriverTestCase.test_openFileAc             C   sH  | j  ¡  d | _ |  ¡  tj| jfd| jdœ| j—Ž| _ | j j}|  	| j  
|d¡d¡ |  t|jtjƒ¡ |  	|jjd¡ |  t|jtjƒ¡ |  	|jjd¡ |  d|jjk¡ |  	|jjjjt ¡ j¡ | j  |dd	¡ | j j|d
ddgd
d | j j|ddt ¡ idd | jf d| jdœ| j—Ž | j j}|  	| j  
|d¡d¡ |  	| j  
|d¡d	¡ |  t|jtjƒ¡ |  	|jjd¡ |  t|jtjƒ¡ |  	|jjd
¡ |  t|jtjƒ¡ |  	|jjd¡ |  d|jjk¡ |  	|jjjjt ¡ j¡ |  t|jtjƒ¡ |  	|jjd¡ |  d|jjk¡ |  	|jjjjt ¡ j¡ d S )Nzr+)rR  rK  rL  rM  r6   r4   r$   rZ  r[  r‚   r-   r}   )rM   r\  r%   )r1   rÇ   rP  r>   r¼   r  rS  rT  r2   rK   rU  r;   r<   r6   r   rL   r4   r   r]   rV  r$   rW  r   rN  r5   r3   r   rJ   r‚   r\  r%   )r9   r2   r'   r'   r(   Útest_openFileRW­  sD    
z%DefaultDriverTestCase.test_openFileRW)r!   r"   r#   rS  rT  rž   rŸ   r0   rP  rQ  rX  r]  r^  rv   r'   r'   )r:   r(   rJ  H  s   
7rJ  z1.8.9zrequires HDF5 >= 1.8,9c               @   s,   e Zd ZdZef deiej—ŽZdd„ ZdS )ÚSec2DriverTestCaseZ	H5FD_SEC2rK  c             C   s|   | j  ¡ }|  t|ƒdk¡ tjd dk rR|  dd„ |d d… D ƒdddd	g¡ n&|  d
d„ |d d… D ƒdddd	g¡ d S )Nr   r)  c             S   s   g | ]}t |ƒ‘qS r'   )Úord)r~   rd   r'   r'   r(   r€   í  s    z:Sec2DriverTestCase.test_get_file_image.<locals>.<listcomp>r   é‰   éH   éD   éF   c             S   s   g | ]}|‘qS r'   r'   )r~   rd   r'   r'   r(   r€   ð  s    )r1   Úget_file_imager;   r\   r@   r6  rK   )r9   Úimager'   r'   r(   Útest_get_file_imageé  s    
z&Sec2DriverTestCase.test_get_file_imageN)	r!   r"   r#   rS  rž   rJ  rT  rŸ   rg  r'   r'   r'   r(   r_  ä  s   r_  c               @   s,   e Zd ZdZef deiej—ŽZdd„ ZdS )ÚStdioDriverTestCaseZ
H5FD_STDIOrK  c             C   s|   | j  ¡ }|  t|ƒdk¡ tjd dk rR|  dd„ |d d… D ƒdddd	g¡ n&|  d
d„ |d d… D ƒdddd	g¡ d S )Nr   r)  c             S   s   g | ]}t |ƒ‘qS r'   )r`  )r~   rd   r'   r'   r(   r€   ü  s    z;StdioDriverTestCase.test_get_file_image.<locals>.<listcomp>r   ra  rb  rc  rd  c             S   s   g | ]}|‘qS r'   r'   )r~   rd   r'   r'   r(   r€   ÿ  s    )r1   re  r;   r\   r@   r6  rK   )r9   rf  r'   r'   r(   rg  ø  s    
z'StdioDriverTestCase.test_get_file_imageN)	r!   r"   r#   rS  rž   rJ  rT  rŸ   rg  r'   r'   r'   r(   rh  ó  s   rh  c               @   s,   e Zd ZdZef deiej—ŽZdd„ ZdS )ÚCoreDriverTestCaseÚ	H5FD_CORErK  c             C   s|   | j  ¡ }|  t|ƒdk¡ tjd dk rR|  dd„ |d d… D ƒdddd	g¡ n&|  d
d„ |d d… D ƒdddd	g¡ d S )Nr   r)  c             S   s   g | ]}t |ƒ‘qS r'   )r`  )r~   rd   r'   r'   r(   r€     s    z:CoreDriverTestCase.test_get_file_image.<locals>.<listcomp>r   ra  rb  rc  rd  c             S   s   g | ]}|‘qS r'   r'   )r~   rd   r'   r'   r(   r€     s    )r1   re  r;   r\   r@   r6  rK   )r9   rf  r'   r'   r(   rg    s    
z&CoreDriverTestCase.test_get_file_imageN)	r!   r"   r#   rS  rž   rJ  rT  rŸ   rg  r'   r'   r'   r(   ri    s   ri  c                   s”   e Zd ZdZ‡ fd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e edk d¡dd„ ƒZ‡  ZS )Ú CoreDriverNoBackingStoreTestCaserj  c                s&   t t| ƒ ¡  tjdd| _d | _d S )Nz.h5)r  )r/   rk  r0   r¹   rº   r  r1   )r9   )r:   r'   r(   r0     s    z&CoreDriverNoBackingStoreTestCase.setUpc                sx   | j r| j  ¡  n4| jtjjkrFtjj}x| | j¡D ]}| ¡  q6W d | _ tj 	| j¡rft 
| j¡ tt| ƒ ¡  d S )N)r1   rÇ   r  r>   ÚfileÚ_open_filesÚget_handlers_by_namerÈ   rý   rO  rÉ   r/   rk  rÊ   )r9   Ú
open_filesr1   )r:   r'   r(   rÊ     s    z)CoreDriverNoBackingStoreTestCase.tearDownc             C   sš   |   tj | j¡¡ tj| jd| jdd| _| jj	}| j 
|dd¡ | jj|dddgdd	 | jj|d
dt ¡ id
d	 | j ¡  |   tj | j¡¡ dS )z'Ensure that nothing is written to file.r¸   F)rR  rK  Údriver_core_backing_storerL  rM  r6   r-   r}   )rM   r4   r$   N)rD  rÈ   rý   rO  r  r>   r¼   rS  r1   r2   rN  r5   r3   r   rÇ   )r9   r2   r'   r'   r(   rQ  (  s    


z-CoreDriverNoBackingStoreTestCase.test_newFilec             C   s$  |   tj | j¡¡ tj| jd| jdd| _| jj	}| j 
|dd¡ | jj|dddgdd	 | jj|d
dt ¡ id
d	 |  | j |d¡d¡ |  t|jtjƒ¡ |  |jjd¡ |  t|jtjƒ¡ |  |jjd
¡ |  d|jjk¡ |  |jjjjt ¡ j¡ | j ¡  |   tj | j¡¡ d S )Nr¸   F)rR  rK  rp  rL  rM  r6   r-   r}   )rM   r4   r$   )rD  rÈ   rý   rO  r  r>   r¼   rS  r1   r2   rN  r5   r3   r   rK   rU  r;   r<   r6   r   rL   r4   r   r]   rV  r$   rW  rÇ   )r9   r2   r'   r'   r(   Útest_readNewFileW;  s$    


z2CoreDriverNoBackingStoreTestCase.test_readNewFileWc             C   s$  |   tj | j¡¡ tj| jd| jdd| _| jj	}| j 
|dd¡ | jj|dddgdd	 | jj|d
dt ¡ id
d	 |  | j |d¡d¡ |  t|jtjƒ¡ |  |jjd¡ |  t|jtjƒ¡ |  |jjd
¡ |  d|jjk¡ |  |jjjjt ¡ j¡ | j ¡  |   tj | j¡¡ d S )NrY  F)rR  rK  rp  rL  rM  r6   r-   r}   )rM   r4   r$   )rD  rÈ   rý   rO  r  r>   r¼   rS  r1   r2   rN  r5   r3   r   rK   rU  r;   r<   r6   r   rL   r4   r   r]   rV  r$   rW  rÇ   )r9   r2   r'   r'   r(   Útest_readNewFileAV  s$    


z2CoreDriverNoBackingStoreTestCase.test_readNewFileAc             C   s6   |   tj | j¡¡ | jtjtj| jd| j	dd d S )Nzr+F)rR  rK  rp  )
rD  rÈ   rý   rO  r  rp   r>   ÚHDF5ExtErrorr¼   rS  )r9   r'   r'   r(   Útest_openNewFileRWq  s    
z3CoreDriverNoBackingStoreTestCase.test_openNewFileRWc             C   s6   |   tj | j¡¡ | jtjtj| jd| j	dd d S )NrÌ   F)rR  rK  rp  )
rD  rÈ   rý   rO  r  rp   r>   rs  r¼   rS  )r9   r'   r'   r(   Útest_openNewFileRw  s    
z2CoreDriverNoBackingStoreTestCase.test_openNewFileRc             C   s^   t j|dd}|j}| |dd¡ |j|dddgdd |j|d	d
t  ¡ id	d | ¡  d S )Nr¸   )rR  rL  rM  r6   r-   r}   )rM   r4   r$   )r>   r¼   r2   rN  r5   r3   r   rÇ   )r9   r  r1   r2   r'   r'   r(   Ú_create_file}  s    z-CoreDriverNoBackingStoreTestCase._create_filec             C   sÎ   |   | j¡ |  tj | j¡¡ tj| jd| jdd| _	| j	j
}|  | j	 |d¡d¡ |  t|jtjƒ¡ |  |jjd¡ |  t|jtjƒ¡ |  |jjd¡ |  d|jjk¡ |  |jjjjt ¡ j¡ d S )	NrÌ   F)rR  rK  rp  rL  rM  r6   r4   r$   )rv  r  r;   rÈ   rý   rO  r>   r¼   rS  r1   r2   rK   rU  r<   r6   r   rL   r4   r   r]   rV  r$   rW  r   )r9   r2   r'   r'   r(   rX  ˆ  s    

z.CoreDriverNoBackingStoreTestCase.test_readFilec             C   s>   t  ¡ }t|dƒ}x|D ]}| |¡ qW | ¡  | ¡ }|S )NÚrb)ÚhashlibÚmd5r   ÚupdaterÇ   Ú	hexdigest)r9   r  ry  ÚfdÚdatar{  r'   r'   r(   Ú_get_digestœ  s    

z,CoreDriverNoBackingStoreTestCase._get_digestc             C   sD  |   | j¡ |  tj | j¡¡ |  | j¡}tj| jd| j	dd| _
| j
j}|  | j
 |d¡d¡ |  t|jtjƒ¡ |  |jjd¡ |  t|jtjƒ¡ |  |jjd¡ |  d|jjk¡ |  |jjjjt ¡ j¡ | j
j}| j
 |d	d
¡ | j
j|dddgdd | j
j|ddt ¡ idd | j
 ¡  |  ||  | j¡¡ d S )NrY  F)rR  rK  rp  rL  rM  r6   r4   r$   rZ  r[  r‚   r-   r}   )rM   r\  r%   )rv  r  r;   rÈ   rý   rO  r~  r>   r¼   rS  r1   r2   rK   rU  r<   r6   r   rL   r4   r   r]   rV  r$   rW  r   rN  r5   r3   r   rÇ   )r9   r{  r2   r'   r'   r(   r]  ©  s*    


z/CoreDriverNoBackingStoreTestCase.test_openFileAc             C   sD  |   | j¡ |  tj | j¡¡ |  | j¡}tj| jd| j	dd| _
| j
j}|  | j
 |d¡d¡ |  t|jtjƒ¡ |  |jjd¡ |  t|jtjƒ¡ |  |jjd¡ |  d|jjk¡ |  |jjjjt ¡ j¡ | j
j}| j
 |d	d
¡ | j
j|dddgdd | j
j|ddt ¡ idd | j
 ¡  |  ||  | j¡¡ d S )Nzr+F)rR  rK  rp  rL  rM  r6   r4   r$   rZ  r[  r‚   r-   r}   )rM   r\  r%   )rv  r  r;   rÈ   rý   rO  r~  r>   r¼   rS  r1   r2   rK   rU  r<   r6   r   rL   r4   r   r]   rV  r$   rW  r   rN  r5   r3   r   rÇ   )r9   r{  r2   r'   r'   r(   r^  Í  s*    


z0CoreDriverNoBackingStoreTestCase.test_openFileRWz1.8.9zHDF5 >= "1.8.9" requiredc             C   sà   t j| jd| jdd| _| jj}| j |dd¡ | jj|dddgdd	 | jj|d
dt  	¡ id
d	 | j 
¡ }|  t|ƒdk¡ tjd dk r¶|  dd„ |d d… D ƒddddg¡ n&|  dd„ |d d… D ƒddddg¡ d S )Nr¸   F)rR  rK  rp  rL  rM  r6   r-   r}   )rM   r4   r$   r   r)  c             S   s   g | ]}t |ƒ‘qS r'   )r`  )r~   rd   r'   r'   r(   r€      s    zHCoreDriverNoBackingStoreTestCase.test_get_file_image.<locals>.<listcomp>r   ra  rb  rc  rd  c             S   s   g | ]}|‘qS r'   r'   )r~   rd   r'   r'   r(   r€     s    )r>   r¼   r  rS  r1   r2   rN  r5   r3   r   re  r;   r\   r@   r6  rK   )r9   r2   rf  r'   r'   r(   rg  ñ  s    


z4CoreDriverNoBackingStoreTestCase.test_get_file_image)r!   r"   r#   rS  r0   rÊ   rQ  rq  rr  rt  ru  rv  rX  r~  r]  r^  r   ÚskipIfr   rg  rv   r'   r'   )r:   r(   rk    s   $$rk  c                   sT   e Zd ZdZdddœZef deie—ŽZdd„ Z‡ fdd	„Zd
d„ Z	dd„ Z
‡  ZS )ÚSplitDriverTestCaseZ
H5FD_SPLITz-xm.h5z-xr.h5)Údriver_split_meta_extÚdriver_split_raw_extrK  c             C   s   t j|  ¡ dS )N)Úprefix)r¹   rº   Z_getName)r9   r'   r'   r(   Ú_getTempFileName  s    z$SplitDriverTestCase._getTempFileNamec                s&   t tˆ ƒ ¡  ‡ fdd„dD ƒˆ _d S )Nc                s   g | ]}ˆ j ˆ j|  ‘qS r'   )r  rT  )r~   Úk)r9   r'   r(   r€     s    z-SplitDriverTestCase.setUp.<locals>.<listcomp>)r  r‚  )r/   r€  r0   Úh5fnames)r9   )r:   )r9   r(   r0     s    
zSplitDriverTestCase.setUpc             C   s>   | j  ¡  x$| jD ]}tj |¡rt |¡ qW t | ¡ d S )N)	r1   rÇ   r†  rÈ   rý   rO  rÉ   ÚTestCaserÊ   )r9   Úfnamer'   r'   r(   rÊ     s
    
zSplitDriverTestCase.tearDownc             C   s&   x | j D ]}|  tj |¡¡ qW d S )N)r†  r;   rÈ   rý   rO  )r9   rˆ  r'   r'   r(   rP    s    z SplitDriverTestCase.assertIsFile)r!   r"   r#   rS  rT  rž   rŸ   r„  r0   rÊ   rP  rv   r'   r'   )r:   r(   r€    s   r€  c                   s<   e Zd ZdZi ZeZ‡ fdd„Z‡ fdd„Zdd„ Z	‡  Z
S )ÚNotSpportedDriverTestCaseNc                s    t t| ƒ ¡  tjdd| _d S )Nz.h5)r  )r/   r‰  r0   r¹   rº   r  )r9   )r:   r'   r(   r0   )  s    zNotSpportedDriverTestCase.setUpc                s\   t jj}| j|kr0x| | j¡D ]}| ¡  q W tj | j¡rJt 	| j¡ t
t| ƒ ¡  d S )N)r>   rl  rm  r  rn  rÇ   rÈ   rý   rþ   rÉ   r/   r‰  rÊ   )r9   ro  r1   )r:   r'   r(   rÊ   -  s    
z"NotSpportedDriverTestCase.tearDownc             C   s>   | j | jtj| jfd| jdœ| j—Ž |  tj	 
| j¡¡ d S )Nr¸   )rR  rK  )rp   Ú	EXCEPTIONr>   r¼   r  rS  rT  rD  rÈ   rý   rO  )r9   r'   r'   r(   rQ  6  s    z&NotSpportedDriverTestCase.test_newFile)r!   r"   r#   rS  rT  rq   rŠ  r0   rÊ   rQ  rv   r'   r'   )r:   r(   r‰  $  s   	r‰  ÚH5FD_LOGc                   s@   e Zd ZdZef deiej—ŽZ‡ fdd„Z‡ fdd„Z	‡  Z
S )ÚLogDriverTestCaser‹  rK  c                s$   dt jddi| _tt| ƒ ¡  d S )NÚdriver_log_filez.log)r  )r¹   rº   rT  r/   rŒ  r0   )r9   )r:   r'   r(   r0   G  s    zLogDriverTestCase.setUpc                s4   t j | jd ¡r"t  | jd ¡ tt| ƒ ¡  d S )Nr  )rÈ   rý   rþ   rT  rÉ   r/   rŒ  rÊ   )r9   )r:   r'   r(   rÊ   O  s    zLogDriverTestCase.tearDown)r!   r"   r#   rS  rž   ÚBaseLogDriverTestCaserT  rŸ   r0   rÊ   rv   r'   r'   )r:   r(   rŒ  C  s   rŒ  c               @   s$   e Zd ZdZef deiej—ŽZdS )ÚDirectDriverTestCaseÚH5FD_DIRECTrK  N)r!   r"   r#   rS  rž   rJ  rT  rŸ   r'   r'   r'   r(   r  V  s   r  c               @   s   e Zd ZdZeZdS )r  r  N)r!   r"   r#   rS  ÚRuntimeErrorrŠ  r'   r'   r'   r(   r  ]  s   c               @   s$   e Zd ZdZef deiej—ŽZdS )ÚWindowsDriverTestCaseÚH5FD_WINDOWSrK  N)r!   r"   r#   rS  rž   rJ  rT  rŸ   r'   r'   r'   r(   r’  c  s   r’  c               @   s   e Zd ZdZeZdS )r’  r“  N)r!   r"   r#   rS  r‘  rŠ  r'   r'   r'   r(   r’  j  s   c               @   s   e Zd ZdZdS )ÚFamilyDriverTestCaseZH5FD_FAMILYN)r!   r"   r#   rS  r'   r'   r'   r(   r”  o  s   r”  c               @   s   e Zd ZdZdS )ÚMultiDriverTestCaseZ
H5FD_MULTIN)r!   r"   r#   rS  r'   r'   r'   r(   r•  s  s   r•  c               @   s   e Zd ZdZdS )ÚMpioDriverTestCaseZ	H5FD_MPION)r!   r"   r#   rS  r'   r'   r'   r(   r–  w  s   r–  c               @   s   e Zd ZdZdS )ÚMpiPosixDriverTestCaseZH5FD_MPIPOSIXN)r!   r"   r#   rS  r'   r'   r'   r(   r—  {  s   r—  c               @   s   e Zd ZdZdS )ÚStreamDriverTestCaseZH5FD_STREAMN)r!   r"   r#   rS  r'   r'   r'   r(   r˜    s   r˜  zHDF5 >= "1.8.9" requiredc                   sv   e Zd ZdZ‡ fdd„Z‡ fdd„Zd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 )ÚInMemoryCoreDriverTestCaserj  c                s$   t t| ƒ ¡  t d¡| _d | _d S )Nz.h5)r/   r™  r0   r¹   rº   r  r1   )r9   )r:   r'   r(   r0   ‡  s    z InMemoryCoreDriverTestCase.setUpc                sB   | j r| j  ¡  d | _ tj | j¡r0t | j¡ tt| ƒ 	¡  d S )N)
r1   rÇ   rÈ   rý   rO  r  rÉ   r/   r™  rÊ   )r9   )r:   r'   r(   rÊ   Œ  s    
z#InMemoryCoreDriverTestCase.tearDownú	in-memoryÚTitler¸   c             C   sl   t j|||| jdd}zF|j|jdddgdd | |jdd	tƒ id
¡ d|jj_| 	¡ }W d | 
¡  X |S )Nr   )rR  rM   rK  rp  r6   r-   r}   r   )rM   r4   r$   r   rM  )r>   r¼   rS  r5   r2   r3   r   rÂ   rL  re  rÇ   )r9   r  rM   rR  r1   rf  r'   r'   r(   Ú_create_image•  s    



z(InMemoryCoreDriverTestCase._create_imagec             C   s–   | j | jdd}|  t|ƒdk¡ tjd dk rX|  dd„ |d d… D ƒdd	d
dg¡ n&|  dd„ |d d… D ƒdd	d
dg¡ |  tj	 
| j¡¡ d S )Nr¸   )rR  r   r)  c             S   s   g | ]}t |ƒ‘qS r'   )r`  )r~   rd   r'   r'   r(   r€   ª  s    z<InMemoryCoreDriverTestCase.test_newFileW.<locals>.<listcomp>r   ra  rb  rc  rd  c             S   s   g | ]}|‘qS r'   r'   )r~   rd   r'   r'   r(   r€   ¬  s    )rœ  r  r;   r\   r@   r6  rK   rD  rÈ   rý   rþ   )r9   rf  r'   r'   r(   Útest_newFileW¦  s    (&z(InMemoryCoreDriverTestCase.test_newFileWc             C   s–   | j | jdd}|  t|ƒdk¡ tjd dk rX|  dd„ |d d… D ƒdd	d
dg¡ n&|  dd„ |d d… D ƒdd	d
dg¡ |  tj	 
| j¡¡ d S )NrY  )rR  r   r)  c             S   s   g | ]}t |ƒ‘qS r'   )r`  )r~   rd   r'   r'   r(   r€   ³  s    z<InMemoryCoreDriverTestCase.test_newFileA.<locals>.<listcomp>r   ra  rb  rc  rd  c             S   s   g | ]}|‘qS r'   r'   )r~   rd   r'   r'   r(   r€   µ  s    )rœ  r  r;   r\   r@   r6  rK   rD  rÈ   rý   rþ   )r9   rf  r'   r'   r(   Útest_newFileA¯  s    (&z(InMemoryCoreDriverTestCase.test_newFileAc             C   s  |   | j¡}|  tj | j¡¡ tj| jd| j|dd| _	|  
t| j	jjdƒ¡ |  | j	 dd¡d¡ |  
t| j	jjdƒ¡ |  | j	 dd¡d¡ |  
t| j	jd	ƒ¡ |  | j	 d
d¡d¡ |  
t| j	jdƒ¡ |  | j	 dd¡d¡ |  | j	jj ¡ ddg¡ d S )NrÌ   r   )rR  rK  Údriver_core_imagerp  rP   ré   r›  rL  rM  r6   z/arrayr   r4   z/tabler   r-   r}   )rœ  r  rD  rÈ   rý   rþ   r>   r¼   rS  r1   r;   rü   r2   rÂ   rK   rU  r6   r`   )r9   rf  r'   r'   r(   Útest_openFileR¸  s    

z)InMemoryCoreDriverTestCase.test_openFileRc             C   sN  |   | j¡}|  tj | j¡¡ tj| jd| j|dd| _	|  
t| j	jjdƒ¡ |  | j	 dd¡d¡ |  
t| j	jjdƒ¡ |  | j	 dd¡d¡ |  
t| j	jd	ƒ¡ |  | j	 d
d¡d¡ |  
t| j	jdƒ¡ |  | j	 dd¡d¡ |  | j	jj ¡ ddg¡ | j	j| j	jdttdƒƒdd d| j	jj_| j	 ¡  |  tj | j¡¡ d S )Nzr+r   )rR  rK  rŸ  rp  rP   ré   r›  rL  rM  r6   z/arrayr   r4   z/tabler   r-   r}   r‚   i'  ÚArray2)rM   r[  )rœ  r  rD  rÈ   rý   rþ   r>   r¼   rS  r1   r;   rü   r2   rÂ   rK   rU  r6   r`   r5   rÎ   r   rZ  rÇ   )r9   rf  r'   r'   r(   r^  Í  s(    


z*InMemoryCoreDriverTestCase.test_openFileRWc             C   sö  t  d¡}|  |¡}|  tj | j¡¡ tj	| jd| j
|dd| _|  t| jjjdƒ¡ |  | j dd¡d¡ |  t| jjjdƒ¡ |  | j dd¡d	¡ |  t| jjd
ƒ¡ |  | j dd¡d¡ |  t| jjdƒ¡ |  | j dd¡d¡ |  | jjj ¡ ddg¡ ttdtjj ƒƒ}| jj| jjd|dd d| jjj_| j ¡ }| j ¡  |  tj | j¡¡ |  t|ƒt|ƒ¡ |  ||¡ tj	| jd| j
|dd| _|  t| jjjdƒ¡ |  | j dd¡d¡ |  t| jjjdƒ¡ |  | j dd¡d	¡ |  t| jjd
ƒ¡ |  | j dd¡d¡ |  t| jjdƒ¡ |  | j dd¡d¡ |  | jjj ¡ ddg¡ |  t| jjjdƒ¡ |  | j dd¡d¡ |  t| jjdƒ¡ |  | j dd¡d¡ |  | jjj ¡ |¡ | j ¡  |  tj | j¡¡ d S )Nz.h5zr+r   )rR  rK  rŸ  rp  rP   ré   r›  rL  rM  r6   z/arrayr   r4   z/tabler   r-   r}   r‚   r¡  )rM   r[  rÌ   rZ  z/array2)r¹   rº   rœ  rD  rÈ   rý   rþ   r  r>   r¼   rS  r1   r;   rü   r2   rÂ   rK   rU  r6   r`   rÎ   r   Ú
parametersÚDRIVER_CORE_INCREMENTr5   rZ  re  rÇ   ÚassertNotEqualr\   r‚   )r9   r  Úimage1r}  Úimage2r'   r'   r(   Útest_openFileRW_updateê  s\    









z1InMemoryCoreDriverTestCase.test_openFileRW_updatec             C   s"  |   | j¡}|  tj | j¡¡ tj| jd| j|dd| _	|  
t| j	jjdƒ¡ |  | j	 dd¡d¡ |  
t| j	jjdƒ¡ |  | j	 dd¡d¡ |  
t| j	jd	ƒ¡ |  | j	 d
d¡d¡ |  
t| j	jdƒ¡ |  | j	 dd¡d¡ |  | j	jj ¡ ddg¡ | j	 ¡  |  tj | j¡¡ d S )NrY  r   )rR  rK  rŸ  rp  rP   ré   r›  rL  rM  r6   z/arrayr   r4   z/tabler   r-   r}   )rœ  r  rD  rÈ   rý   rþ   r>   r¼   rS  r1   r;   rü   r2   rÂ   rK   rU  r6   r`   rÇ   )r9   rf  r'   r'   r(   r]  *	  s"    


z)InMemoryCoreDriverTestCase.test_openFileAc             C   sö  t  d¡}|  |¡}|  tj | j¡¡ tj	| jd| j
|dd| _|  t| jjjdƒ¡ |  | j dd¡d¡ |  t| jjjdƒ¡ |  | j dd¡d	¡ |  t| jjd
ƒ¡ |  | j dd¡d¡ |  t| jjdƒ¡ |  | j dd¡d¡ |  | jjj ¡ ddg¡ ttdtjj ƒƒ}| jj| jjd|dd d| jjj_| j ¡ }| j ¡  |  tj | j¡¡ |  t|ƒt|ƒ¡ |  ||¡ tj	| jd| j
|dd| _|  t| jjjdƒ¡ |  | j dd¡d¡ |  t| jjjdƒ¡ |  | j dd¡d	¡ |  t| jjd
ƒ¡ |  | j dd¡d¡ |  t| jjdƒ¡ |  | j dd¡d¡ |  | jjj ¡ ddg¡ |  t| jjjdƒ¡ |  | j dd¡d¡ |  t| jjdƒ¡ |  | j dd¡d¡ |  | jjj ¡ |¡ | j ¡  |  tj | j¡¡ d S )Nz.h5rY  r   )rR  rK  rŸ  rp  rP   ré   r›  rL  rM  r6   z/arrayr   r4   z/tabler   r-   r}   r‚   r¡  )rM   r[  rÌ   rZ  z/array2)r¹   rº   rœ  rD  rÈ   rý   rþ   r  r>   r¼   rS  r1   r;   rü   r2   rÂ   rK   rU  r6   r`   rÎ   r   r¢  r£  r5   rZ  re  rÇ   r¤  r\   r‚   )r9   r  r¥  r}  r¦  r'   r'   r(   Útest_openFileA_updateC	  s\    









z0InMemoryCoreDriverTestCase.test_openFileA_updatec             C   s”   t j| jdd| jdd| _| jj| jjdddgdd	 | j | jjd
dtƒ id¡ d| jjj	_
|  t| jƒd k	¡ | j ¡  |  tj | j¡¡ d S )Nr¸   r›  r   )rR  rM   rK  rp  r6   r-   r}   r   )rM   r4   r$   r   rM  )r>   r¼   r  rS  r1   r5   r2   r3   r   rÂ   rL  r;   rˆ   rÇ   rD  rÈ   rý   rþ   )r9   r'   r'   r(   Útest_strƒ	  s    

z#InMemoryCoreDriverTestCase.test_str)rš  r›  r¸   )r!   r"   r#   rS  r0   rÊ   rœ  r  rž  r   r^  r§  r]  r¨  r©  rv   r'   r'   )r:   r(   r™  ƒ  s   	
		@@r™  c                   sL   e Zd ZdZdZdZdZ‡ fdd„Zdd„ Zd	d
„ Z	dd„ Z
dd„ Z‡  ZS )ÚQuantizeTestCaser¸   zThis is the table titlerW   rz   c                sö   t t| ƒ ¡  t ddd¡| _tj d¡| _tj 	ddd¡ 
d¡| _|  ¡  | j ¡  t dgd dgd	  d
gd  dgd	  dgd  dgd	  dgd  dgd	  dgd  dgd	  dgd  ¡| _t dgd dgd  dgd  ¡| _d S )Ng      Àg      @rM  i@B iÀ½ðÿr3  r}   g      Àrz   g      Àr)  g       Àg      ð¿g        g      ð?g       @g      @g      @g       Àr   é!   g       @)r/   rª  r0   r2  Zlinspacer}  ZrandomZrandom_sampleÚ
randomdataZrandintZastypeÚ
randomintsry   r1   rÇ   ZasarrayÚquantizeddata_0Úquantizeddata_m1)r9   )r:   r'   r(   r0   	  s    

rzQuantizeTestCase.setUpc       	      C   s(  | j j}tdddd}| j j|dtƒ d|d}| j|d d …< | j j|dtƒ d|d}| j|d d …< | j j|dtƒ d	|d}| j	|d d …< tddd
d}| j j|dtƒ d	|d}| j	|d d …< tdddd}| j j|dtƒ d	|d}| j	|d d …< tdddd}| j j|dtƒ d	|d}| j	|d d …< d S )Nr-   r¯   )r   r¢   rA  Úintegers)i@B )r|   ÚfloatsÚdata1)rM  r   Údata0r}   Údata2rX   Údatam1)
r1   r2   r   r  r   r­  r   r¬  r   r}  )	r9   r2   r|   Zintsr±  r²  r³  r´  rµ  r'   r'   r(   ry   ®	  s6    





zQuantizeTestCase.populateFilec             C   st   t | jdƒ}t | jdƒ}t | jdƒ}t | jdƒ}tj || j¡ tj || j¡ tj || j¡ tj || j¡ dS )z!Checking the quantize() function.r   r-   r}   rX   N)r   r}  r2  ÚtestingÚassert_array_equalr®  r¯  )r9   Úquantized_0Úquantized_1Úquantized_2Úquantized_m1r'   r'   r(   Útest00_quantizeDataË	  s    z$QuantizeTestCase.test00_quantizeDatac             C   s¬   t | jdƒ}t | jdƒ}t | jdƒ}t | jdƒ}|  t || j ¡ ¡ dk ¡ |  t || j ¡ ¡ dk ¡ |  t || j ¡ ¡ dk ¡ |  t || j ¡ ¡ dk ¡ d	S )
zAChecking the maximum error introduced by the quantize() function.r   r-   r}   rX   g      à?gš™™™™™©?g{®Gázt?g      ð?N)r   r¬  r;   r2  ÚabsÚmax)r9   r¸  r¹  rº  r»  r'   r'   r(   Útest01_quantizeDataMaxError×	  s    z,QuantizeTestCase.test01_quantizeDataMaxErrorc             C   sö   t  | jd¡| _tj | jjjdd… | j	¡ tj | jjj
dd… | j	¡ tj | jjjdd… | j¡ tj | jjjdd… | j¡ tj | jjjdd… | j¡ |  | jjjdd… j| jj¡ |  t | jjjdd… | j ¡ ¡ dk ¡ dS )z+Checking quantized data as written to disk.rÌ   Ngš™™™™™©?)r>   r¼   r  r1   r2  r¶  r·  r2   r²  r}  r´  r³  r®  rµ  r¯  r°  r­  rK   rW  r;   r½  r±  r¬  r¾  )r9   r'   r'   r(   Útest02_arrayê	  s    
 zQuantizeTestCase.test02_array)r!   r"   r#   rR  rM   rt   Z
appendrowsr0   ry   r¼  r¿  rÀ  rv   r'   r'   )r:   r(   rª  —	  s   rª  c              C   s¨  dd l } t ¡ }d}x4t|ƒ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j¡¡ | 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-¡¡ | t t.¡¡ | t t/¡¡ | t t0¡¡ | t t1¡¡ | t t2¡¡ | t t3¡¡ | t t4¡¡ | t t5¡¡ | t t6¡¡ | t t7¡¡ | t t8¡¡ | t t9¡¡ | t t:¡¡ | t t;¡¡ | t t<¡¡ | t t=¡¡ | t t>¡¡ | t t?¡¡ | t t@¡¡ |S )Nr   r-   )AÚdoctestr   Z	TestSuiter   ZaddTestZ	makeSuiterœ   r    r®   r°   r±   r²   r³   r´   rµ   r¶   ró   rô   r
  r  r  r&  r0  ZDocTestSuiter>   r|   rJ  r_  rh  ri  rk  r€  rŒ  r  r’  r”  r•  r–  r—  r˜  r™  rª  r   Zheavyr)   r£   r§   r¨   rª   r«   r¬   r­   r  r  r  r  r  r  r  rõ   rö   r÷   rø   rù   rú   )rÁ  ZtheSuiteZniterrd   r'   r'   r(   Úsuite
  sz    rÂ  Ú__main__)ZdefaultTest)yÚ__doc__Z
__future__r   r   rÈ   r@   rx  r¹   rl   r2  r>   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   Ztables.parametersr   Ztables.hdf5extensionr   r   Ztables.utilsr   Ztables.testsr   Ztables.tests.commonr   r   r   r   r‡  Z	six.movesr   ZIsDescriptionr   ZTempFileMixinr)   rw   rx   rœ   r  Zbzip2_availr    Z	lzo_availr£   r§   r¨   rª   r«   r¬   r­   Zblosc_availr®   r°   Zblosc_compressor_listr±   r²   r³   r´   rµ   Zmin_blosc_bitshuffle_versionr¶   r·   ró   rô   rõ   rö   r÷   rø   rù   rú   rû   r
  r  r  r  r  r  r  r  r  r  r&  r0  rJ  r_  rh  ri  rk  r€  r‰  Zhdf5extensionZ_supported_driversrŽ  rŒ  r  r’  r”  r•  r–  r—  r˜  r™  rª  rÂ  r!   Z
parse_argvÚargvZprint_versionsÚmainr'   r'   r'   r(   Ú<module>   s  H V  

















     &o#<  v  mI
