a
    =Â×_ýˆ ã                   @   sÊ  d 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& G d
d„ dej'ƒZ(G dd„ de j)e&ƒZ*G dd„ dej'ƒZ+G dd„ de j)e&ƒZ,G dd„ de,ƒZ-e" .e j/ d¡G dd„ de,ƒƒZ0e" .e j1 d¡G dd„ de,ƒƒZ2G dd„ de,ƒZ3G dd„ de,ƒZ4G dd„ de,ƒZ5G d d!„ d!e,ƒZ6G d"d#„ d#e,ƒZ7e" .e j/ d¡G d$d%„ d%e,ƒƒZ8e" .e j9 d&¡G d'd(„ d(e,ƒƒZ:e" .e j9 d&¡G d)d*„ d*e,ƒƒZ;e" .e j9 d&¡e" .d+e <¡ vd,¡G d-d.„ d.e,ƒƒƒZ=e" .e j9 d&¡e" .d+e <¡ vd,¡G d/d0„ d0e,ƒƒƒZ>e" .e j9 d&¡e" .d1e <¡ vd2¡G d3d4„ d4e,ƒƒƒZ?e" .e j9 d&¡e" .d5e <¡ vd6¡G d7d8„ d8e,ƒƒƒZ@e" .e j9 d&¡e" .d9e <¡ vd:¡G d;d<„ d<e,ƒƒƒZAe" .e j9 d&¡e" .e$e jBk d=e jB ¡G d>d?„ d?e,ƒƒƒZCG d@dA„ dAe j)e&ƒZDG dBdC„ dCeDƒZEG dDdE„ dEeDƒZFG dFdG„ dGeDƒZGG dHdI„ dIeDƒZHG dJdK„ dKeDƒZIG dLdM„ dMeDƒZJG dNdO„ dOeDƒZKe" .e j1 d¡G dPdQ„ dQeDƒƒZLG dRdS„ dSe j)e&ƒZMG dTdU„ dUeMƒZNG dVdW„ dWeMƒZOG dXdY„ dYeMƒZPG dZd[„ d[eMƒZQG d\d]„ d]eMƒZRG d^d_„ d_eMƒZSG d`da„ daeMƒZTG dbdc„ dceMƒZUG ddde„ dee j)e&ƒZVG dfdg„ dge j)e&ƒZWe" .e j9 dh¡G didj„ dje j)e&ƒƒZXG dkdl„ dle&ƒZYG dmdn„ dne j)e&ƒZZe" .e#dok dp¡G dqdr„ dreZƒƒZ[e" .e#dok dp¡G dsdt„ dteZƒƒZ\e" .e#dok dp¡G dudv„ dveZƒƒZ]G dwdx„ dxe&ƒZ^G dydz„ dzeZƒZ_G d{d|„ d|e&ƒZ`d}ejajbv r¬eZZcne`ZcG d~d„ decƒZderØG d€d„ deZƒZenG d‚d„ de`ƒZeer G dƒd„„ d„eZƒZfnG d…d„„ d„e`ƒZfG d†d‡„ d‡e`ƒZgG dˆd‰„ d‰e`ƒZhG dŠd‹„ d‹e`ƒZiG dŒd„ de`ƒZjG dŽd„ de`ƒZke" .e#dok d¡G d‘d’„ d’e&ƒƒZlG d“d”„ d”e j)e&ƒZmd•d–„ Zneod—krÆe  pejq¡ e  r¡  e"jsd–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)

é    N)Ú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)ÚPyTablesTestCasec                   @   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.9/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 )ÚCreateTestCaseú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ÚatableúTable titleÚanarrayé   úArray titleÚagroupúGroup title)Úsuperr'   ÚsetUpÚh5fileÚrootÚcreate_tabler   ÚtableÚcreate_arrayÚarrayÚcreate_groupÚgroup©Úself©Ú	__class__r%   r&   r2   4   s    
ÿÿÿzCreateTestCase.setUpc                 C   s<   |   | jt¡ |   | jt¡ |   | jt¡ |   | jt¡ dS )zTesting table creation.N)ÚassertIsInstancer6   r   r8   r   r   r:   r   r;   r%   r%   r&   Útest00_isClassD   s    zCreateTestCase.test00_isClassc                 C   sd   z| j  | jddgd¡| _W n8 tjyT   tjrPt 	¡ \}}}t
dƒ t
|ƒ Y n0 |  d¡ dS )z-Checking protection against node overwriting.r,   r-   r.   z(
Great!, the next NameError was catched!zexpected a tables.NodeErrorN)r3   r7   r4   r8   ÚtablesZ	NodeErrorr   ÚverboseÚsysÚexc_infoÚprintÚfail)r<   ÚtypeÚvalueÚ	tracebackr%   r%   r&   Útest01_overwriteNodeL   s    ÿ
z#CreateTestCase.test01_overwriteNodec                 C   sÐ   |   tj¡( | j | jddgd¡| _W d  ƒ n1 s:0    Y  |   tj¡( | j | jddgd¡| _W d  ƒ n1 s~0    Y  |   tj¡( | j | jddgd¡| _W d  ƒ n1 sÂ0    Y  dS )z%Checking syntax in object tree names.z arrayr-   r.   Nz$arrayÚfor)ZassertWarnsrA   ZNaturalNameWarningr3   r7   r4   r8   r;   r%   r%   r&   Útest02_syntaxnameZ   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.r0   r+   r.   N)	Ú_reopenÚassertEqualr3   r4   r/   Ú_v_titler*   Útitler,   r;   r%   r%   r&   Útest03a_titleAttrk   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ÿ  r:   ÚtÚTITLEr6   Úarrr-   N)r3   r9   r4   rN   rO   Z
_f_getattrr5   r   rP   Zget_attrr7   )r<   Ztitlelengthr:   r6   rT   r%   r%   r&   Útest03b_titleLengthv   s    ÿ
ÿz"CreateTestCase.test03b_titleLengthc                 C   s  t }g }t|ƒD ]}| d| ¡ qi }d}|D ] }tjdd|d||< |d7 }q0d|d< | j | jd|d	¡}|j}g }td
ƒD ]P}	g }
tt	|j
ƒƒD ]"}||	 ||| < |
 ||	 ¡ q–| ¡  | t|
ƒ¡ q€| ¡  | ¡  ¡ }tjr
td|d ƒ td|d ƒ |  ||¡ dS )z+Checking a large number of fields in tablesúint%dr   Úint32r-   ©ÚdfltÚposú=Z_v_alignr6   úMetaRecord instanceé
   zOriginal row list:éÿÿÿÿzRetrieved row list:N)r   ÚrangeÚappendr   Ú	from_typer3   r5   r4   ÚrowÚlenÚcolnamesÚtupleÚflushÚreadÚtolistr   rB   rE   rN   )r<   Ú	varnumberÚvarnamesÚiÚ
recordDictÚvarnamer6   rb   ZlistrowsÚjZrowlistZlistoutr%   r%   r&   Útest04_maxFields‹   s8    
ÿzCreateTestCase.test04_maxFieldsc           	      C   sÔ   t d }g }t|ƒD ]}| d| ¡ qi }d}|D ]}tjddd||< |d7 }q4tjdtjd z| j	 
| jd|d	¡ W n8 tjy´   tjr°t ¡ \}}}td
ƒ t|ƒ Y n0 |  d¡ tjdtjd dS )z<Checking an excess of the maximum number of fields in tablesr-   rV   r   rW   ©rY   Úerror)Úcategoryr6   r\   z1
Great!, the next PerformanceWarning was catched!z%expected an tables.PerformanceWarningÚdefaultN)r   r_   r`   r   ra   ÚwarningsÚfilterwarningsrA   ZPerformanceWarningr3   r5   r4   r   rB   rC   rD   rE   rF   )	r<   ri   rj   rk   rl   rm   rG   rH   rI   r%   r%   r&   Útest05_maxFieldsExceeded¹   s*    
ÿ
z'CreateTestCase.test05_maxFieldsExceededc                 C   sv   i }t dd|d< t dd|d< t|dƒ}|  |¡ |  t¡$ | j | jd|d¡ W d  ƒ n1 sh0    Y  dS )z>Checking an excess (256) of the maximum length in column namesr-   rp   ÚÿaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaA   bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr\   r6   N)r   r   ÚassertIsNotNoneÚassertRaisesÚ
ValueErrorr3   r5   r4   ©r<   rl   r6   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   rX   rw   A   bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr6   r\   N)r   r3   r5   r4   rN   rd   r{   r%   r%   r&   Útest06_noMaxColumnNameLengthò   s    ÿz+CreateTestCase.test06_noMaxColumnNameLength)r   r    r!   rP   ÚexpectedrowsZmaxshortZmaxintÚcompressr2   r@   rJ   rL   rQ   rU   ro   rv   r|   r}   Ú__classcell__r%   r%   r=   r&   r'   -   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&   r     s   
r   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 )ÚFiltersTreeTestCaseúA titler]   c                    s   t t| ƒ ¡  |  ¡  d S ©N)r1   r‚   r2   ÚpopulateFiler;   r=   r%   r&   r2     s    zFiltersTreeTestCase.setUpc                 C   s¶  | j j}tdƒD ]ž}| j j|dt| jd d}|j}t| jƒD ]2}d| j|  |d< ||d< |d |d< | ¡  q>| 	¡  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rn| j j|dt|ƒ | jd}n>|dkr| j  |dt|ƒ ¡}n| j j|dt|ƒ | jd}|}qd S )Né   Útable1©rP   Úfiltersú%04dr"   r#   é   r$   c                 S   s   g | ]}|d  ‘qS ©r"   r%   ©Ú.0Úxr%   r%   r&   Ú
<listcomp>$  ó    z4FiltersTreeTestCase.populateFile.<locals>.<listcomp>c                 S   s   g | ]}|d  ‘qS ©r$   r%   r   r%   r%   r&   r   %  r‘   Úarray1úcol 1Úarray2úcol 3Úearray1r   r   ©r   Úearray2Zvlarray1Zvlarray2r-   r:   ©r‰   )r3   r4   r_   r5   r   rP   rb   Únrowsr`   rf   Úiterrowsr7   Úcreate_earrayr   r   Zcreate_vlarrayr9   ÚstrÚgfiltersr‰   )r<   r:   rn   r6   Údrk   Úvar1ListÚvar3ListÚea1Úea2Zvla1Zvla2Úgroup2r%   r%   r&   r…     sX    þ


þ
ÿ



ÿ
ÿ


ÿ
ÿ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u rZtƒ }n| j}|  	t|ƒt| jjƒ¡ g d¢}|D ]H}| j 
|¡}t|tƒr¶|  	t|ƒt|jƒ¡ q„|  	t|ƒt|jƒ¡ q„| jjjj}| jdu rþ| jdu rötƒ }n| j}n| j}t jr*tdt|ƒƒ tdt|jƒƒ |  	t|ƒt|jƒ¡ g d	¢}|D ]L}| j 
|¡}t|tƒr€|  	t|ƒt|jƒ¡ n|  	t|ƒt|jƒ¡ qL| jdu rÂ| jdu 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ƒ¡ g d
¢}|D ]L}| j 
|¡}t|tƒrT|  	t|ƒt|jƒ¡ n|  	t|ƒt|jƒ¡ q g d¢}|D ]*}| j 
|¡}|  	ttƒ ƒt|jƒ¡ qzdS )z<Checking inheritance of filters on trees (open file version)Ú
ú<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=z!Running %s.test00_checkFilters...úTest filter:úFilters in file:N©z/table1z/group0/earray1z/group0/vlarray1ú/group0zTest gfilter:©ú/group0/group1z/group0/group1/earray1z/group0/group1/vlarray1z/group0/group1/table1z/group0/group1/group2/table1©z/group0/group1/group2/group3z$/group0/group1/group2/group3/earray1z%/group0/group1/group2/group3/vlarray1z#/group0/group1/group2/group3/table1z#/group0/group1/group2/group3/group4©z/array1z/group0/array1z/group0/group1/array1z/group0/group1/group2/array1z#/group0/group1/group2/group3/array1)r   rB   rE   r>   r   Úreprr‰   r3   r   rN   Úget_nodeÚ
isinstancer   Ú
_v_filtersr4   Úgroup0Úgroup1rŸ   r¥   Úgroup3)r<   r‰   ÚnodelistÚnodeÚobjrµ   rŸ   r¶   r%   r%   r&   Útest00_checkFiltersI  sl    
ÿ



z'FiltersTreeTestCase.test00_checkFiltersc           	      C   s®  t jr tddƒ td| jj ƒ |  ¡  | jdu r:tƒ }n| j}t jrftdt|ƒƒ tdt| j	jƒƒ |  
t|ƒt| j	jƒ¡ g d¢}|D ]H}| j	 |¡}t|tƒr¼|  
t|ƒt|jƒ¡ qŠ|  
t|ƒt|jƒ¡ qŠ| j	jjj}| jdu r| jdu rþtƒ }n| j}n| j}t jr2tdt|ƒƒ tdt|jƒƒ |  
t|ƒt|jƒ¡ g d¢}|D ]L}| j	 |¡}t|tƒrˆ|  
t|ƒt|jƒ¡ n|  
t|ƒt|jƒ¡ qT| jdu rÊ| jdu 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 g d	¢}|D ]L}| j	 |¡}t|tƒrX|  
t|ƒt|jƒ¡ n|  
t|ƒt|jƒ¡ q$g d
¢}|D ]*}| j	 |¡}|  
ttƒ ƒt|jƒ¡ q~dS )z=Checking inheritance of filters on trees (close file version)r¦   r§   z!Running %s.test01_checkFilters...Nr¨   r©   rª   r¬   r®   r¯   )r   rB   rE   r>   r   rM   r‰   r   r°   r3   rN   r±   r²   r   r³   r4   r´   rµ   rŸ   r¥   r¶   )	r<   r‰   r·   r¸   Zobject_rµ   rŸ   r¶   r¹   r%   r%   r&   Útest01_checkFilters´  sn    
ÿ


z'FiltersTreeTestCase.test01_checkFilters)
r   r    r!   rP   r›   r2   r…   rº   r»   r€   r%   r%   r=   r&   r‚     s   9kr‚   c                   @   s&   e Zd Zeƒ ZeddZeedZdS )ÚFiltersCase1r-   ©Ú	complevelrš   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¾   Úcomplibr½   rš   Nr¿   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š   Nr¿   r%   r%   r%   r&   rÆ   /  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š   Nr¿   r%   r%   r%   r&   rÌ   6  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-   FrÎ   rš   Nr¿   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-   FrÎ   rš   )r   r    r!   r‰   r   rŸ   rÀ   rÁ   r%   r%   r%   r&   rÒ   B  s   rÒ   c                   @   s$   e Zd ZeddZdZeedZdS )ÚFiltersCase7r-   r½   Nrš   r¿   r%   r%   r%   r&   rÓ   H  s   
rÓ   c                   @   s   e Zd ZdZdZeedZdS )ÚFiltersCase8Nrš   )r   r    r!   r‰   rŸ   rÀ   rÁ   r%   r%   r%   r&   rÔ   N  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†   rÃ   rË   rš   Nr¿   r%   r%   r%   r&   rÕ   T  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Å   r†   TrË   rš   Nr¿   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-   úblosc:blosclzrØ   r†   TrË   rš   Nr¿   r%   r%   r%   r&   rÙ   d  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:lz4rØ   r†   TrË   rš   )r   r‰   rŸ   rÀ   rÁ   r1   rÛ   r2   r;   r=   r%   r&   r2   p  s    zFiltersCaseBloscLZ4.setUp©r   r    r!   r2   r€   r%   r%   r=   r&   rÛ   l  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:lz4hcrØ   r†   TrË   rš   )r   r‰   rŸ   rÀ   rÁ   r1   rÝ   r2   r;   r=   r%   r&   r2   {  s    ÿÿzFiltersCaseBloscLZ4HC.setUprÜ   r%   r%   r=   r&   rÝ   w  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:snappyrØ   r†   TrË   rš   )r   r‰   rŸ   rÀ   rÁ   r1   rÞ   r2   r;   r=   r%   r&   r2   ‰  s    ÿÿzFiltersCaseBloscSnappy.setUprÜ   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:zlibrØ   r†   TrË   rš   )r   r‰   rŸ   rÀ   rÁ   r1   rß   r2   r;   r=   r%   r&   r2   –  s    zFiltersCaseBloscZlib.setUprÜ   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:zstdrØ   r†   TrË   rš   )r   r‰   rŸ   rÀ   rÁ   r1   rà   r2   r;   r=   r%   r&   r2   ¡  s    zFiltersCaseBloscZstd.setUprÜ   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-   rÚ   rØ   r†   T)r¾   rÉ   Z
bitshufflerÅ   rš   Nr¿   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 )ÚCopyGroupTestCaserƒ   r]   c                    s6   t t| ƒ ¡  t d¡| _t | jd¡| _|  	¡  d S )Nú.h5Úw)
r1   râ   r2   ÚtempfileÚmktempÚh5fname2rA   Ú	open_fileÚh5file2r…   r;   r=   r%   r&   r2   ·  s    zCopyGroupTestCase.setUpc              	   C   s”  | j j}d|j_d|j_tdƒD ]l}tdƒD ].}| j j|dt|ƒ d d}| j j|dt	| j
d d}|j}t| jƒD ]2}d	| j|  |d
< ||d< |d |d< | ¡  qv| ¡  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_|	 |¡ |
 |¡ q.| j j|dt|ƒ d d}|}d|j_d|j_q d S )Núan string for root groupé|   r†   r‹   Úbgrouprš   r‡   rˆ   rŠ   r"   r#   r$   ú	an stringéê   c                 S   s   g | ]}|d  ‘qS rŒ   r%   r   r%   r%   r&   r   á  r‘   z2CopyGroupTestCase.populateFile.<locals>.<listcomp>c                 S   s   g | ]}|d  ‘qS r’   r%   r   r%   r%   r&   r   â  r‘   r“   r”   r•   r–   r—   r   r   r˜   r™   úan string for earrayé{   r:   úan string for group©r3   r4   Ú_v_attrsZattr1Zattr2r_   r9   rž   r5   r   rP   rb   r›   r`   rf   Úattrsrœ   r7   r   r   r   ©r<   r:   rn   rk   r¥   r6   r    r¡   r¢   r£   r¤   r¶   r%   r%   r&   r…   Á  sT    ÿþ


þ
ÿ
ÿzCopyGroupTestCase.populateFilec                    s0   | j jr| j  ¡  t | j¡ tt| ƒ ¡  d S r„   )	ré   ÚisopenÚcloseÚosÚremoverç   r1   râ   ÚtearDownr;   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¦   r§   z!Running %s.test00_nonRecursive...F©Ú	recursiver‰   ÚrúThe origin node list -->úThe copied node list -->N)r   rB   rE   r>   r   r3   r4   r´   rµ   Úcopy_childrenré   r‰   r÷   rA   rè   rç   ÚlistÚ_v_childrenÚkeysÚsortrN   Ú_v_nchildren©r<   Ú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}|D ]}t||jƒ}t|tƒr®|j}| d¡}|j}| d¡}n |j}| d¡}|j}| d¡}| jd	urâ| d
¡ t jrtd|j|f ƒ td|j|f ƒ |  ||¡ t jr*tdƒ |D ].}	tt||	ƒƒ}
tt||	ƒƒ}|  |
|¡ q.| jd	urz|  |j| j¡ t jrptdƒ qpd	S )z:Checking non-recursive copy of a Group (attributes copied)r¦   r§   z&Running %s.test01_nonRecursiveAttrs...Fr-   )rü   r‰   Úcopyuserattrsrý   ÚallNÚFILTERSúsrcattrskeys for node %s: %súdstattrskeys for node %s: %sú)The attrs names has been copied correctlyú,The attrs contents has been copied correctly)r   rB   rE   r>   r   r3   r4   r´   rµ   Ú_f_copy_childrenré   r‰   r÷   rA   rè   rç   ÚgetattrÚ_v_namer²   r   ró   Ú_f_listrô   rù   rN   rž   r  ©r<   r  r  ÚsrcnodeÚdstnodeÚsrcattrsÚsrcattrskeysÚdstattrsÚdstattrskeysÚsrcattrnameÚsrcattrvalueÚdstattrvaluer%   r%   r&   Útest01_nonRecursiveAttrs&  s\    
ÿ
ý







ÿÿz*CopyGroupTestCase.test01_nonRecursiveAttrsc                 C   sr  t jr tddƒ td| jj ƒ | jj}| j d¡D ]}|r4| j 	||¡}q4| 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 }| ¡ D ]"}	|röd}qè| |	j|d
… ¡ qèd}g }
| ¡ D ](}	|r.d}q|
 |	j|d
… ¡ qt jrbtd|ƒ td|
ƒ |  ||
¡ d
S )z"Checking recursive copy of a Groupr¦   r§   zRunning %s.test02_Recursive...ú/Trû   r-   r   rý   Nrþ   rÿ   )r   rB   rE   r>   r   ré   r4   r  Úsplitr9   r±   r3   r  r   r‰   rc   Ú_v_pathnamer÷   rA   rè   rç   Ú_f_walknodesr`   rN   )r<   r:   Ú	groupnamer  r  ÚlenSrcGroupÚlenDstGroupÚfirstr	  r¸   r
  r%   r%   r&   Útest02_Recursiveb  sR    

þ




z"CopyGroupTestCase.test02_Recursivec           
      C   sl  t jr tddƒ td| jj ƒ | jj}| j d¡D ]}|r4| j 	||¡}q4| j 
| j¡}| j 
| j¡}|j|d| jd t|jƒ}|dkrd}| jr¾| j ¡  t | jd	¡| _| j 
| j¡}t|jƒ}|dkrÔd}d}i }| ¡ D ]"}	|ròd}qä|	j|d
… ||	j< qäd}| ¡ D ]R}	|r&d}qt|	tƒrLt|	jƒt||	j ƒk nt|	jƒt||	j ƒk qd
S )z4Checking recursive copy of a Group (cheking Filters)r¦   r§   z%Running %s.test03_RecursiveFilters...r"  Trû   r-   r   rý   N)r   rB   rE   r>   r   ré   r4   r  r#  r9   r±   r3   r  r  r‰   rc   r$  r÷   rA   rè   rç   r%  r  r²   r   r°   r³   )
r<   r:   r&  r  r  r'  r(  r)  r	  r¸   r%   r%   r&   Útest03_RecursiveFiltersš  sP    
ÿþ


z)CopyGroupTestCase.test03_RecursiveFilters)r   r    r!   rP   r›   r2   r…   rú   r  r!  r*  r+  r€   r%   r%   r=   r&   râ   ³  s   
<!<8râ   c                   @   s   e Zd ZdZdZdZdZdS )ÚCopyGroupCase1r   Nr­   r"  ©r   r    r!   r÷   r‰   r  r  r%   r%   r%   r&   r,  Ñ  s   r,  c                   @   s   e Zd ZdZdZdZdZdS )ÚCopyGroupCase2r-   Nr­   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   Nr«   ú/group2/group3r-  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½   r«   r0  N©r   r    r!   r÷   r   r‰   r  r  r%   r%   r%   r&   r1  æ  s   
r1  c                   @   s   e Zd ZdZeƒ ZdZdZdS )ÚCopyGroupCase5r   r"  r0  Nr2  r%   r%   r%   r&   r3  í  s   r3  c                   @   s"   e Zd ZdZeddZdZdZdS )ÚCopyGroupCase6r-   TrÐ   r«   r0  Nr2  r%   r%   r%   r&   r4  ô  s   
r4  c                   @   s$   e Zd ZdZedddZdZdZdS )ÚCopyGroupCase7r   r-   FrÎ   r"  Nr2  r%   r%   r%   r&   r5  û  s   r5  c                   @   s$   e Zd ZdZedddZdZdZdS )ÚCopyGroupCase8r-   rÊ   rÄ   r"  Nr2  r%   r%   r%   r&   r6    s   r6  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 )ÚCopyFileTestCaserƒ   r]   c                    s&   t t| ƒ ¡  t d¡| _|  ¡  d S ©Nrã   )r1   r7  r2   rå   ræ   rç   r…   r;   r=   r%   r&   r2     s    zCopyFileTestCase.setUpc              	   C   s”  | j j}d|j_d|j_tdƒD ]l}tdƒD ].}| j j|dt|ƒ d d}| j j|dt	| j
d d}|j}t| jƒD ]2}d	| j|  |d
< ||d< |d |d< | ¡  qv| ¡  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_|	 |¡ |
 |¡ q.| j j|dt|ƒ d d}|}d|j_d|j_q d S )Nrê   rë   r†   r‹   rì   rš   r‡   rˆ   rŠ   r"   r#   r$   rí   rî   c                 S   s   g | ]}|d  ‘qS rŒ   r%   r   r%   r%   r&   r   7  r‘   z1CopyFileTestCase.populateFile.<locals>.<listcomp>c                 S   s   g | ]}|d  ‘qS r’   r%   r   r%   r%   r&   r   8  r‘   r“   r”   r•   r–   r—   r   r   r˜   r™   rï   rð   r:   rñ   rò   rõ   r%   r%   r&   r…     sV    ÿþ


þ
þ
ÿ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ù   r1   r7  rú   r;   r=   r%   r&   rú   T  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¦   r§   zRunning %s.test00_overwrite...rä   r-   r   N)rP   Ú	overwriter  r‰   rý   rþ   rÿ   )r   rB   rE   r>   r   Úopenrç   r÷   r3   Ú	copy_filerP   rM   rA   rè   ré   r4   r  r  r  r  rN   r  )r<   Zfile2hr  r  r	  r
  r%   r%   r&   Útest00_overwrite^  s2    
ý

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¦   r§   z!Running %s.test00a_srcdstequal...N)
r   rB   rE   r>   r   ry   ÚIOErrorr3   r>  Úfilenamer;   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¦   r§   z Running %s.test00b_firstclass...r   Nr-   )rP   r  r‰   r<  rý   rþ   rÿ   )r   rB   rE   r>   r   r3   r÷   rA   r>  Úh5fnamerç   rP   rè   ré   r4   r  r  r  r  rN   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¡ |D ]ì}t||jƒ}|j}| d	¡}|j}	|	 d
¡}
| j	dur&|
 d¡ t jrRtd|j|f ƒ td|j|
f ƒ |  ||
¡ t jrntdƒ |D ].}tt||ƒƒ}tt|	|ƒƒ}|  ||¡ qr| j	dur¾|  |	j| j	¡ t jràtdƒ qàdS )z/Checking copy of a File (attributes not copied)r¦   r§   zRunning %s.test01_copy...r   ©rP   r  r‰   rý   rþ   rÿ   rC   r  Nr  r  r  r  r  )r   rB   rE   r>   r   r3   r>  rç   rP   r‰   r÷   rM   rA   rè   ré   r4   r  r  r  r  rN   r  r  r  ró   r  rù   rž   r  )r<   r  r  r	  r
  r  r  r  r  r  r  r  r  r   r%   r%   r&   Útest01_copy²  s`    
þ




ÿÿzCopyFileTestCase.test01_copyc                 C   sV  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}|D ]ä}t||jƒ}|j}| d¡}|j}| d¡}t jrÆtd|j|f ƒ td	|j|f ƒ | j	d
urÚ| d¡ |  ||¡ t jrôtdƒ |D ],}	tt||	ƒƒ}
tt||	ƒƒ}|  |
|¡ qø| j	d
urB|  |j| j	¡ t jrltdƒ qld
S )z+Checking copy of a File (attributes copied)r¦   r§   zRunning %s.test02_Attrs...r-   rE  rý   r  r  r  Nr  r  r  )r   rB   rE   r>   r   r3   r>  rç   rP   r‰   r÷   rM   rA   rè   ré   r4   r  r  ró   r  rù   rN   rž   r  r  r%   r%   r&   Útest02_Attrsø  sL    
þ

ÿÿ

zCopyFileTestCase.test02_Attrs)r   r    r!   rP   r›   r2   r…   rú   r?  rB  rD  rF  rG  r€   r%   r%   r=   r&   r7  
  s   	=
'"Fr7  c                   @   s   e Zd ZdZdZdZdS )ÚCopyFileCase1r   úA new titleN©r   r    r!   r÷   rP   r‰   r%   r%   r%   r&   rH  .  s   rH  c                   @   s   e Zd ZdZdZdZdS )ÚCopyFileCase2r-   rI  NrJ  r%   r%   r%   r&   rK  4  s   rK  c                   @   s   e Zd ZdZdZeddZdS )ÚCopyFileCase3r   rI  r-   r½   N©r   r    r!   r÷   rP   r   r‰   r%   r%   r%   r&   rL  :  s   rL  c                   @   s   e Zd ZdZdZeddZdS )ÚCopyFileCase4r-   rI  r½   NrM  r%   r%   r%   r&   rN  @  s   rN  c                   @   s   e Zd ZdZdZeddZdS )ÚCopyFileCase5r   rI  TrÐ   NrM  r%   r%   r%   r&   rO  F  s   rO  c                   @   s   e Zd ZdZdZeddZdS )ÚCopyFileCase6r-   rI  TrÐ   NrM  r%   r%   r%   r&   rP  L  s   rP  c                   @   s    e Zd ZdZdZedddZdS )ÚCopyFileCase7r   rI  r-   rÊ   rÄ   NrM  r%   r%   r%   r&   rQ  R  s   rQ  c                   @   s    e Zd ZdZdZedddZdS )ÚCopyFileCase8r-   rI  rÊ   rÄ   NrM  r%   r%   r%   r&   rR  X  s   rR  c                   @   s   e Zd Zdd„ ZdS )ÚCopyFileCase10c              	   C   s‚   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 t | j¡ nt | j¡ 0 dS )	z2Checking copy of a File (checking not overwriting)r¦   r§   z!Running %s.test01_notoverwrite...rã   rä   F)r<  N)r   rB   rE   r>   r   rå   ræ   rç   rA   rè   ré   r÷   ry   r@  r3   r>  rø   rù   r;   r%   r%   r&   Útest01_notoverwrite`  s    
ÿ
ÿz"CopyFileCase10.test01_notoverwriteN)r   r    r!   rT  r%   r%   r%   r&   rS  ^  s   rS  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©rV  rW  r‰   Zexplicit_yesrš   ú/explicit_yesZimplicit_yesz/explicit_yes/implicit_yes)
r1   rU  r2   rA   ZIntAtomr3   r9   Úcreate_carrayr   r‰   )r<   rV  rW  r9   rZ  r=   r%   r&   r2   y  s4    

ÿ
ÿÿ
ÿÿ
ÿzGroupFiltersTestCase.setUpNc                 C   sˆ   |D ]~}t |dƒr|j}n|j}|d ur:|  ||¡  d S |j d¡r`|  |t ¡ d|j ¡ q|j d¡r|  || jd|j ¡ qd S )Nr‰   Z_noz"node ``%s`` should have no filtersÚ_yesznode ``%s`` should have filters)	r9  r‰   r³   rN   r  ÚendswithrA   r   r$  )r<   r3   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]  r3   r;   r%   r%   r&   Útest00_propagate©  s    z%GroupFiltersTestCase.test00_propagatec              	   C   sl   t jdd}zN| jj||d z$t |¡}| j||d W | ¡  n
| ¡  0 W t 	|¡ nt 	|¡ 0 d S )Nrã   ©Úsuffixrš   )
rå   ræ   r3   r>  rA   rè   r]  r÷   rø   rù   )r<   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)ra  r;   r%   r%   r&   Útest01_copyFileº  s    z$GroupFiltersTestCase.test01_copyFilec                 C   s   |   | j¡ dS )z'Overriding filters when copying a file.N)ra  r‰   r;   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[  )	r3   r±   rA   r   r\  r‰   rN   r³   rM   )r<   ÚpathnameZchange_filtersZnew_filtersr:   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 r„   )r‰   r³   ©r:   r;   r%   r&   Úset_filtersÙ  s    z7GroupFiltersTestCase.test03_change.<locals>.set_filtersr"  N)re  r‰   )r<   rg  r%   r;   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 r„   )r³   rf  r%   r%   r&   Údel_filtersà  s    z7GroupFiltersTestCase.test04_delete.<locals>.del_filtersrY  N)re  rA   r   )r<   ri  r%   r%   r&   Útest04_deleteÝ  s    z"GroupFiltersTestCase.test04_delete)N)N)r   r    r!   rA   r   r‰   r2   r]  r^  ra  rb  rc  re  rh  rj  r€   r%   r%   r=   r&   rU  v  s   

rU  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Ä   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   úPrevious max threads:ú
Should be:ÚMAX_BLOSC_THREADSr"  Ú
some_array©é   rq  rX  r-   N)rA   Úset_blosc_max_threadsr   rB   rE   r3   ÚparamsrN   rZ  Ú	Int32Atomr‰   ©r<   Z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"  ro  rp  rX  rl  rm  rn  N)rA   rr  r3   rZ  rt  r‰   rM   r   rB   rE   rs  rN   ru  r%   r%   r&   Útest01ú  s    

þ

z!SetBloscMaxThreadsTestCase.test01N)r   r    r!   rA   r   r‰   rv  rw  r%   r%   r%   r&   rk  å  s   rk  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 r„   )rN   rG   r   Ú_packÚnumpyÚint64r;   r%   r%   r&   Útest_filter_pack_type
  s    z$FilterTestCase.test_filter_pack_typec                 C   s   t t| ƒƒS r„   )ÚhexÚint)Únr%   r%   r&   Ú_hexl  s    zFilterTestCase._hexlc                 C   s    t ƒ }|  |  | ¡ ¡d¡ d S )NZ0x0©r   rN   r€  ry  ©r<   Z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-   FrÍ   Z0x101r  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0x30109r  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-   Fr†   )rÉ   Úleast_significant_digitZ	0x5040101r  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   Ú_unpackrz  r{  ÚassertFalserÉ   rÑ   rN   r‡  r¾   rÅ   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‰  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   rŠ  rz  r{  Ú
assertTruerÉ   rÑ   rN   r‡  r¾   rÅ   r‚  r%   r%   r&   Útest_filter_unpack_031  s    z$FilterTestCase.test_filter_unpack_03c                 C   sV   t  t d¡¡}|  |j¡ |  |j¡ |  |jd¡ |  |j	d¡ |  |j
d¡ d S )Nir†   r-   rÇ   r‰  r‚  r%   r%   r&   Útest_filter_unpack_049  s    z$FilterTestCase.test_filter_unpack_04N)r   r    r!   r|  Ústaticmethodr€  rƒ  r„  r†  rˆ  rŒ  r  r  r  r%   r%   r%   r&   rx  	  s   
rx  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é)   r8   r-   r‹   ©rP   r6   r"   )
r1   r’  r2   r3   r4   Úset_node_attrr7   r5   rA   r   ©r<   r4   r=   r%   r&   r2   G  s    ÿzDefaultDriverTestCase.setUpc                 C   s   |   tj | j¡¡ d S r„   )rŽ  rø   r:  ÚisfilerC  r;   r%   r%   r&   ÚassertIsFileQ  s    z"DefaultDriverTestCase.assertIsFilec                 C   s   |   | jtj¡ |  ¡  d S r„   )r?   r3   rA   ZFilerš  r;   r%   r%   r&   Útest_newFileT  s    z"DefaultDriverTestCase.test_newFilec                 C   sÄ   | j  ¡  d | _ |  ¡  tj| jfd| jdœ| j¤Ž| _ | j j}|  	| j  
|d¡d¡ |  |jtj¡ |  	|jjd¡ |  |jtj¡ |  	|jjd¡ |  d|jj¡ |  	|jjjjt ¡ j¡ d S )Nrý   ©Úmoder“  r”  r•  r8   r6   r"   )r3   r÷   rš  rA   rè   rC  ÚDRIVERÚDRIVER_PARAMSr4   rN   Úget_node_attrr?   r8   r   rO   r6   r   ÚassertInrd   Úcolsr"   Údtyper   r˜  r%   r%   r&   Útest_readFileX  s     
ÿþz#DefaultDriverTestCase.test_readFilec                 C   s2  | j  ¡  d | _ |  ¡  tj| jfd| jdœ| j¤Ž| _ | j j}|  	| j  
|d¡d¡ |  |jtj¡ |  	|jjd¡ |  |jtj¡ |  	|jjd¡ |  d|jj¡ |  	|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	¡ |  |jtj¡ |  	|jjd¡ |  |jtj¡ |  	|jjd
¡ |  |jtj¡ |  	|jjd¡ |  d|jj¡ |  	|jjjjt ¡ j¡ |  |jtj¡ |  	|jjd¡ |  d|jj¡ |  	|jjjjt ¡ j¡ d S )NÚarœ  r”  r•  r8   r6   r"   Ú	testattr2é*   r•   r-   r‹   r–  Útable2r#   ©r3   r÷   rš  rA   rè   rC  rž  rŸ  r4   rN   r   r?   r8   r   rO   r6   r   r¡  rd   r¢  r"   r£  r   r—  r7   r5   r   rM   r•   r¨  r#   r˜  r%   r%   r&   Útest_openFileAp  sL    
ÿþÿz$DefaultDriverTestCase.test_openFileAc                 C   s*  | j  ¡  d | _ |  ¡  tj| jfd| jdœ| j¤Ž| _ | j j}|  	| j  
|d¡d¡ |  |jtj¡ |  	|jjd¡ |  |jtj¡ |  	|jjd¡ |  d|jj¡ |  	|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	¡ |  |jtj¡ |  	|jjd¡ |  |jtj¡ |  	|jjd
¡ |  |jtj¡ |  	|jjd¡ |  d|jj¡ |  	|jjjjt ¡ j¡ |  |jtj¡ |  	|jjd¡ |  d|jj¡ |  	|jjjjt ¡ j¡ d S )Núr+rœ  r”  r•  r8   r6   r"   r¦  r§  r•   r-   r‹   r–  r¨  r#   r©  r˜  r%   r%   r&   Útest_openFileRW§  sJ    
ÿþÿz%DefaultDriverTestCase.test_openFileRW)r   r    r!   rž  rŸ  rÀ   rÁ   r2   rš  r›  r¤  rª  r¬  r€   r%   r%   r=   r&   r’  B  s   
7r’  ú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_SEC2r“  c                 C   s@   | j  ¡ }|  t|ƒd¡ |  dd„ |d d… D ƒg d¢¡ d S )Nr   c                 S   s   g | ]}|‘qS r%   r%   ©rŽ   rk   r%   r%   r&   r   æ  r‘   z:Sec2DriverTestCase.test_get_file_image.<locals>.<listcomp>r   ©é‰   éH   éD   éF   ©r3   Úget_file_imageÚassertGreaterrc   rN   ©r<   Úimager%   r%   r&   Útest_get_file_imageã  s    
z&Sec2DriverTestCase.test_get_file_imageN©	r   r    r!   rž  rÀ   r’  rŸ  rÁ   rº  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_STDIOr“  c                 C   s@   | j  ¡ }|  t|ƒd¡ |  dd„ |d d… D ƒg d¢¡ d S )Nr   c                 S   s   g | ]}|‘qS r%   r%   r¯  r%   r%   r&   r   ñ  r‘   z;StdioDriverTestCase.test_get_file_image.<locals>.<listcomp>r   r°  rµ  r¸  r%   r%   r&   rº  î  s    
z'StdioDriverTestCase.test_get_file_imageNr»  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 )ÚCoreDriverTestCaseÚ	H5FD_COREr“  c                 C   s@   | j  ¡ }|  t|ƒd¡ |  dd„ |d d… D ƒg d¢¡ d S )Nr   c                 S   s   g | ]}|‘qS r%   r%   r¯  r%   r%   r&   r   ü  r‘   z:CoreDriverTestCase.test_get_file_image.<locals>.<listcomp>r   r°  rµ  r¸  r%   r%   r&   rº  ù  s    
z&CoreDriverTestCase.test_get_file_imageNr»  r%   r%   r%   r&   r½  ô  s   r½  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 )Ú CoreDriverNoBackingStoreTestCaser¾  c                    s&   t t| ƒ ¡  tjdd| _d | _d S ©Nrã   r_  )r1   r¿  r2   rå   ræ   rC  r3   r;   r=   r%   r&   r2     s    z&CoreDriverNoBackingStoreTestCase.setUpc                    st   | j r| j  ¡  n0| jtjjv rBtjj}| | j¡D ]}| ¡  q4d | _ tj 	| j¡rbt 
| j¡ tt| ƒ ¡  d S r„   )r3   r÷   rC  rA   ÚfileÚ_open_filesÚget_handlers_by_namerø   r:  r™  rù   r1   r¿  rú   ©r<   Z
open_filesr3   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©r  r“  Údriver_core_backing_storer”  r•  r8   r-   r‹   r–  r6   r"   N)r‹  rø   r:  r™  rC  rA   rè   rž  r3   r4   r—  r7   r5   r   r÷   r˜  r%   r%   r&   r›    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¡ |  |jtj¡ |  |jjd¡ |  |jtj¡ |  |jjd
¡ |  d|jj¡ |  |jjjjt ¡ j¡ | j ¡  |   tj | j¡¡ d S )Nrä   FrÅ  r”  r•  r8   r-   r‹   r–  r6   r"   ©r‹  rø   r:  r™  rC  rA   rè   rž  r3   r4   r—  r7   r5   r   rN   r   r?   r8   r   rO   r6   r   r¡  rd   r¢  r"   r£  r÷   r˜  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¡ |  |jtj¡ |  |jjd¡ |  |jtj¡ |  |jjd
¡ |  d|jj¡ |  |jjjjt ¡ j¡ | j ¡  |   tj | j¡¡ d S )Nr¥  FrÅ  r”  r•  r8   r-   r‹   r–  r6   r"   rÇ  r˜  r%   r%   r&   Útest_readNewFileAD  s(    
þÿ
z2CoreDriverNoBackingStoreTestCase.test_readNewFileAc                 C   s6   |   tj | j¡¡ | jtjtj| jd| j	dd d S )Nr«  FrÅ  ©
r‹  rø   r:  r™  rC  ry   rA   ZHDF5ExtErrorrè   rž  r;   r%   r%   r&   Útest_openNewFileRW_  s
    
þz3CoreDriverNoBackingStoreTestCase.test_openNewFileRWc                 C   s6   |   tj | j¡¡ | jtjtj| jd| j	dd d S )Nrý   FrÅ  rÊ  r;   r%   r%   r&   Útest_openNewFileRe  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ä   ©r  r”  r•  r8   r-   r‹   r–  r6   r"   )rA   rè   r4   r—  r7   r5   r   r÷   )r<   rA  r3   r4   r%   r%   r&   Ú_create_filek  s    ÿz-CoreDriverNoBackingStoreTestCase._create_filec                 C   sÄ   |   | j¡ |  tj | j¡¡ tj| jd| jdd| _	| j	j
}|  | j	 |d¡d¡ |  |jtj¡ |  |jjd¡ |  |jtj¡ |  |jjd¡ |  d|jj¡ |  |jjjjt ¡ j¡ d S )	Nrý   FrÅ  r”  r•  r8   r6   r"   )rÎ  rC  rŽ  rø   r:  r™  rA   rè   rž  r3   r4   rN   r   r?   r8   r   rO   r6   r   r¡  rd   r¢  r"   r£  r   r˜  r%   r%   r&   r¤  v  s    
þz.CoreDriverNoBackingStoreTestCase.test_readFilec                 C   s:   t  ¡ }t|dƒ}|D ]}| |¡ q| ¡  | ¡ }|S )NÚrb)ÚhashlibÚmd5r=  Úupdater÷   Ú	hexdigest)r<   rA  rÑ  ÚfdÚdatarÓ  r%   r%   r&   Ú_get_digestŠ  s    
z,CoreDriverNoBackingStoreTestCase._get_digestc                 C   s:  |   | j¡ |  tj | j¡¡ |  | j¡}tj| jd| j	dd| _
| j
j}|  | j
 |d¡d¡ |  |jtj¡ |  |jjd¡ |  |jtj¡ |  |jjd¡ |  d|jj¡ |  |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 )Nr¥  FrÅ  r”  r•  r8   r6   r"   r¦  r§  r•   r-   r‹   r–  r¨  r#   ©rÎ  rC  rŽ  rø   r:  r™  rÖ  rA   rè   rž  r3   r4   rN   r   r?   r8   r   rO   r6   r   r¡  rd   r¢  r"   r£  r   r—  r7   r5   r   r÷   ©r<   rÓ  r4   r%   r%   r&   rª  —  s.    
þÿ
z/CoreDriverNoBackingStoreTestCase.test_openFileAc                 C   s:  |   | j¡ |  tj | j¡¡ |  | j¡}tj| jd| j	dd| _
| j
j}|  | j
 |d¡d¡ |  |jtj¡ |  |jjd¡ |  |jtj¡ |  |jjd¡ |  d|jj¡ |  |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 )Nr«  FrÅ  r”  r•  r8   r6   r"   r¦  r§  r•   r-   r‹   r–  r¨  r#   r×  rØ  r%   r%   r&   r¬  »  s.    
þÿ
z0CoreDriverNoBackingStoreTestCase.test_openFileRWr­  ú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¡ |  dd„ |d d… D ƒg d¢¡ d S )Nrä   FrÅ  r”  r•  r8   r-   r‹   r–  r6   r"   r   c                 S   s   g | ]}|‘qS r%   r%   r¯  r%   r%   r&   r   í  r‘   zHCoreDriverNoBackingStoreTestCase.test_get_file_image.<locals>.<listcomp>r   r°  )rA   rè   rC  rž  r3   r4   r—  r7   r5   r   r¶  r·  rc   rN   )r<   r4   r¹  r%   r%   r&   rº  ß  s    
þÿ
z4CoreDriverNoBackingStoreTestCase.test_get_file_image)r   r    r!   rž  r2   rú   r›  rÈ  rÉ  rË  rÌ  rÎ  r¤  rÖ  rª  r¬  r   ÚskipIfr   rº  r€   r%   r%   r=   r&   r¿  ÿ  s   $$r¿  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©Zdriver_split_meta_extZdriver_split_raw_extr“  c                 C   s   t j|  ¡ dS )N)Úprefix)rå   ræ   Z_getNamer;   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%   )rC  rŸ  )rŽ   Úkr;   r%   r&   r   þ  r‘   z-SplitDriverTestCase.setUp.<locals>.<listcomp>rÜ  )r1   rÛ  r2   Úh5fnamesr;   r=   r;   r&   r2   û  s    
ÿzSplitDriverTestCase.setUpc                 C   s:   | j  ¡  | jD ]}tj |¡rt |¡ qt | ¡ d S r„   )	r3   r÷   rà  rø   r:  r™  rù   ÚTestCaserú   ©r<   Úfnamer%   r%   r&   rú     s
    

zSplitDriverTestCase.tearDownc                 C   s"   | j D ]}|  tj |¡¡ qd S r„   )rà  rŽ  rø   r:  r™  râ  r%   r%   r&   rš  	  s    
z SplitDriverTestCase.assertIsFile)r   r    r!   rž  rŸ  rÀ   rÁ   rÞ  r2   rú   rš  r€   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 rÀ  )r1   rä  r2   rå   ræ   rC  r;   r=   r%   r&   r2     s    zNotSpportedDriverTestCase.setUpc                    sX   t jj}| j|v r,| | j¡D ]}| ¡  qtj | j¡rFt 	| j¡ t
t| ƒ ¡  d S r„   )rA   rÁ  rÂ  rC  rÃ  r÷   rø   r:  r;  rù   r1   rä  rú   rÄ  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ä   rœ  )ry   Ú	EXCEPTIONrA   rè   rC  rž  rŸ  r‹  rø   r:  r™  r;   r%   r%   r&   r›     s    ÿÿz&NotSpportedDriverTestCase.test_newFile)r   r    r!   rž  rŸ  rz   rå  r2   rú   r›  r€   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æ  r“  c                    s$   dt jddi| _tt| ƒ ¡  d S )NÚdriver_log_filez.logr_  )rå   ræ   rŸ  r1   rç  r2   r;   r=   r%   r&   r2   1  s    ÿzLogDriverTestCase.setUpc                    s4   t j | jd ¡r"t  | jd ¡ tt| ƒ ¡  d S )Nrè  )rø   r:  r;  rŸ  rù   r1   rç  rú   r;   r=   r%   r&   rú   9  s    zLogDriverTestCase.tearDown)r   r    r!   rž  rÀ   ÚBaseLogDriverTestCaserŸ  rÁ   r2   rú   r€   r%   r%   r=   r&   rç  -  s   rç  c                   @   s$   e Zd ZdZef deiej¤ŽZdS )ÚDirectDriverTestCaseÚH5FD_DIRECTr“  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ZdS )rê  rë  N©r   r    r!   rž  ÚRuntimeErrorrå  r%   r%   r%   r&   rê  G  s   c                   @   s$   e Zd ZdZef deiej¤ŽZdS )ÚWindowsDriverTestCaseÚH5FD_WINDOWSr“  Nrì  r%   r%   r%   r&   rï  M  s   ÿÿrï  c                   @   s   e Zd ZdZeZdS )rï  rð  Nrí  r%   r%   r%   r&   rï  T  s   c                   @   s   e Zd ZdZdS )ÚFamilyDriverTestCaseZH5FD_FAMILYN©r   r    r!   rž  r%   r%   r%   r&   rñ  Y  s   rñ  c                   @   s   e Zd ZdZdS )ÚMultiDriverTestCaseZ
H5FD_MULTINrò  r%   r%   r%   r&   ró  ]  s   ró  c                   @   s   e Zd ZdZdS )ÚMpioDriverTestCaseZ	H5FD_MPIONrò  r%   r%   r%   r&   rô  a  s   rô  c                   @   s   e Zd ZdZdS )ÚMpiPosixDriverTestCaseZH5FD_MPIPOSIXNrò  r%   r%   r%   r&   rõ  e  s   rõ  c                   @   s   e Zd ZdZdS )ÚStreamDriverTestCaseZH5FD_STREAMNrò  r%   r%   r%   r&   rö  i  s   rö  rÙ  c                       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 )ÚInMemoryCoreDriverTestCaser¾  c                    s$   t t| ƒ ¡  t d¡| _d | _d S r8  )r1   r÷  r2   rå   ræ   rC  r3   r;   r=   r%   r&   r2   q  s    z InMemoryCoreDriverTestCase.setUpc                    sB   | j r| j  ¡  d | _ tj | j¡r0t | j¡ tt| ƒ 	¡  d S r„   )
r3   r÷   rø   r:  r™  rC  rù   r1   r÷  rú   r;   r=   r%   r&   rú   v  s    
z#InMemoryCoreDriverTestCase.tearDownú	in-memoryÚTitlerä   c                 C   st   t j|||| jdd}zN|j|jdddgdd | |jdd	tƒ id
¡ d|jj_| 	¡ }W | 
¡  n
| 
¡  0 |S )Nr   ©r  rP   r“  rÆ  r8   r-   r‹   r   r–  r6   r"   r   r•  )rA   rè   rž  r7   r4   r5   r   ró   r”  r¶  r÷   )r<   rA  rP   r  r3   r¹  r%   r%   r&   Ú_create_image  s    
þ
ÿÿ

z(InMemoryCoreDriverTestCase._create_imagec                 C   sZ   | j | jdd}|  t|ƒd¡ |  dd„ |d d… D ƒg d¢¡ |  tj | j¡¡ d S )Nrä   rÍ  r   c                 S   s   g | ]}|‘qS r%   r%   r¯  r%   r%   r&   r   “  r‘   z<InMemoryCoreDriverTestCase.test_newFileW.<locals>.<listcomp>r   r°  ©	rû  rC  r·  rc   rN   r‹  rø   r:  r;  r¸  r%   r%   r&   Útest_newFileW  s    "z(InMemoryCoreDriverTestCase.test_newFileWc                 C   sZ   | j | jdd}|  t|ƒd¡ |  dd„ |d d… D ƒg d¢¡ |  tj | j¡¡ d S )Nr¥  rÍ  r   c                 S   s   g | ]}|‘qS r%   r%   r¯  r%   r%   r&   r   ™  r‘   z<InMemoryCoreDriverTestCase.test_newFileA.<locals>.<listcomp>r   r°  rü  r¸  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   ©r  r“  Zdriver_core_imagerÆ  rS   r"  rù  r”  r•  r8   ú/arrayr   r6   ú/tabler   r-   r‹   )rû  rC  r‹  rø   r:  r;  rA   rè   rž  r3   rŽ  r9  r4   ró   rN   r   r8   rg   r¸  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 )Nr«  r   rÿ  rS   r"  rù  r”  r•  r8   r   r   r6   r  r   r-   r‹   r•   i'  ÚArray2r–  r§  )rû  rC  r‹  rø   r:  r;  rA   rè   rž  r3   rŽ  r9  r4   ró   rN   r   r8   rg   r7   r  r_   r¦  r÷   r¸  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 )Nrã   r«  r   rÿ  rS   r"  rù  r”  r•  r8   r   r   r6   r  r   r-   r‹   r•   r  r–  r§  rý   r¦  ú/array2©rå   ræ   rû  r‹  rø   r:  r;  rC  rA   rè   rž  r3   rŽ  r9  r4   ró   rN   r   r8   rg   r  r_   Ú
parametersZDRIVER_CORE_INCREMENTr7   r¦  r¶  r÷   ZassertNotEqualrc   r•   )r<   rA  Úimage1rÕ  Úimage2r%   r%   r&   Útest_openFileRW_updateÎ  sh    


ýÿ


ý
ÿÿ
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 )Nr¥  r   rÿ  rS   r"  rù  r”  r•  r8   r   r   r6   r  r   r-   r‹   )rû  rC  r‹  rø   r:  r;  rA   rè   rž  r3   rŽ  r9  r4   ró   rN   r   r8   rg   r÷   r¸  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 )Nrã   r¥  r   rÿ  rS   r"  rù  r”  r•  r8   r   r   r6   r  r   r-   r‹   r•   r  r–  r§  rý   r¦  r  r  )r<   rC  r  rÕ  r  r%   r%   r&   Útest_openFileA_update'	  sh    


ýÿ


ý
ÿÿ
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ƒ¡ | j ¡  |  tj | j¡¡ d S )Nrä   rù  r   rú  r8   r-   r‹   r   r–  r6   r"   r   r•  )rA   rè   rC  rž  r3   r7   r4   r5   r   ró   r”  rx   rž   r÷   r‹  rø   r:  r;  r;   r%   r%   r&   Útest_strg	  s    þÿÿ
z#InMemoryCoreDriverTestCase.test_str)rø  rù  rä   )r   r    r!   rž  r2   rú   rû  rý  rþ  r  r¬  r	  rª  r
  r  r€   r%   r%   r=   r&   r÷  m  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ä   r(   r]   r†   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      @r•  é@B iÀ½ðÿr{  r‹   g      Àr†   g      Àrq  g       Àg      ð¿g        ç      ð?g       @g      @g      @g       Àr   é!   g       @)r1   r  r2   rz  ZlinspacerÕ  ZrandomZrandom_sampleÚ
randomdataZrandintZastypeÚ
randomintsr…   r3   r÷   ZasarrayÚquantizeddata_0Úquantizeddata_m1r;   r=   r%   r&   r2   	  s8    
ÿÿ
0ÿÿÿÿÿÿÿÿ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Å   r‡  Úintegers)r  rš   ÚfloatsÚdata1)r•  r   Údata0r‹   Údata2r^   Údatam1)
r3   r4   r   rZ  r	   r  r
   r  r   rÕ  )	r<   r4   r‰   Zintsr  r  r  r  r  r%   r%   r&   r…   ’	  sJ    ÿÿÿÿÿÿÿÿÿÿ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‹   r^   N)r   rÕ  rz  ÚtestingÚassert_array_equalr  r  ©r<   Zquantized_0Zquantized_1Zquantized_2Z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‹   r^   g      à?çš™™™™™©?g{®Gázt?r  N)r   r  rŽ  rz  ÚabsÚmaxr  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ý   Nr  )rA   rè   rC  r3   rz  r  r  r4   r  rÕ  r  r  r  r  r  r  r  rN   r£  rŽ  r  r  r  r   r;   r%   r%   r&   Útest02_arrayÎ	  s(    ÿÿÿÿ ÿÿzQuantizeTestCase.test02_array)r   r    r!   r  rP   r~   Z
appendrowsr2   r…   r  r!  r"  r€   r%   r%   r=   r&   r  {	  s   r  c                  C   s¢  dd l } t ¡ }d}t|ƒD ]&}| t t¡¡ | t t¡¡ | t t¡¡ | t t	¡¡ | t t
¡¡ | t t¡¡ | t t¡¡ | t t¡¡ | t t¡¡ | t t¡¡ | t t¡¡ | t t¡¡ | t t¡¡ | t t¡¡ | t t¡¡ | t t¡¡ | t t¡¡ | |  t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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.  rH  rK  rU  rk  rx  ZDocTestSuiterA   r‰   r’  r®  r¼  r½  r¿  rÛ  rç  rê  rï  rñ  ró  rô  rõ  rö  r÷  r  r   Zheavyr'   rÆ   rÌ   rÏ   rÒ   rÓ   rÔ   rÕ   rL  rN  rO  rP  rQ  rR  rS  r/  r1  r3  r4  r5  r6  )r#  ZtheSuiteZniterrk   r%   r%   r&   Úsuiteè	  sz    r$  Ú__main__)ZdefaultTest)tÚ__doc__rø   rC   rÐ  rå   rt   rz  rA   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IsDescriptionr   ZTempFileMixinr'   r   r‚   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/  r1  r3  r4  r5  r6  r7  rH  rK  rL  rN  rO  rP  rQ  rR  rS  rU  rk  rx  r’  r®  r¼  r½  r¿  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#9 


 r  mI
