B
    Üi‚\ë ã               @   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mZ ddl	Z	ddl
mZmZ ddlZddlmZmZmZmZmZmZmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZ ddlmZ ddl m!Z! G dd„ deƒZ"G dd„ dej#eƒZ$G dd„ de$ƒZ%G dd„ de$ƒZ&G dd„ de$ƒZ'G dd„ de$ƒZ(G dd„ de$ƒZ)G dd„ de$ƒZ*G dd„ dej#eƒZ+G d d!„ d!e+ƒZ,G d"d#„ d#e+ƒZ-G d$d%„ d%e+ƒZ.G d&d'„ d'e+ƒZ/G d(d)„ d)e+ƒZ0G d*d+„ d+e+ƒZ1G d,d-„ d-ej#eƒZ2G d.d/„ d/e2ƒZ3G d0d1„ d1e2ƒZ4G d2d3„ d3ej5eƒZ6G d4d5„ d5ej5eƒZ7G d6d7„ d7ej#eƒZ8G d8d9„ d9ej#eƒZ9G d:d;„ d;eƒZ:G d<d=„ d=ej5eƒZ;G d>d?„ d?ej#eƒZ<d@dA„ Z=e>dBkr¶e ?ej@¡ e A¡  ejBdAdC dS )DzIThis test unit checks node attributes that are persistent (AttributeSet).é    )Úprint_function)Úabsolute_importN)ÚLooseVersion)Úassert_array_equalÚassert_almost_equal)ÚIsDescriptionÚ	Int32AtomÚ	StringColÚIntColÚInt16ColÚFloatColÚ
Float32Col)ÚDataTypeWarning)ÚNODE_CACHE_SLOTS)Úcommon)ÚunittestÚtest_filename)Ú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	   Zvar1r
   Zvar2r   Zvar3r   Zvar4r   Zvar5© r   r   ú;lib/python3.7/site-packages/tables/tests/test_attributes.pyr      s
   
r   c                   sô   e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd7d
d„Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Ze ejd2 d3k d4¡d5d6„ ƒZ‡  Z S )8ÚCreateTestCasec                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   r#   #   s    

zCreateTestCase.setUpc             C   sØ   d}| j  | jjdd| ¡ | j  | jjdd| ¡ | j  | jjdd| ¡ | jrztjr`t	dƒ | j
d| jd | j j| _|  | j  | jjd¡d| ¡ |  | j  | jjd¡d| ¡ |  | j  | jjd¡d| ¡ d	S )
z7Checking setting large string attributes (File methods)i   Úattr1ÚpÚaÚnz(closing file version)zr+)ÚmodeÚnode_cache_slotsN)r$   Úset_node_attrr%   r!   r   r   Úcloser   ÚverboseÚprintÚ_reopenr3   ÚassertEqualÚget_node_attr)r,   Ú
attrlengthr   r   r   Útest01_setAttributes1   s    


z#CreateTestCase.test01_setAttributesc             C   s2   | j r.tjrtdƒ | jd| jd | jj| _d S )Nz(closing file version)zr+)r2   r3   )r5   r   r6   r7   r8   r3   r$   r%   )r,   r   r   r   ÚreopenK   s
    zCreateTestCase.reopenc             C   sH   |   ¡  |  || jjjk¡ |  || jjjk¡ |  || jjjk¡ d S )N)r=   ZassertFalser%   r!   Ú_v_attrsr   Úattrsr   )r,   Únamer   r   r   Úcheck_missingS   s    zCreateTestCase.check_missingÚ c             C   sð  |   |¡ | j | jj||¡ | j | jj||¡ | j | jj||¡ |  ¡  |  | j 	| jj|¡|¡ |  | j 	| jj|¡|¡ |  | j 	| jj|¡|¡ | j 
| jj|¡ | j 
| jj|¡ | j 
| jj|¡ |   |¡ | jj ||¡ | jj ||¡ | jj ||¡ |  ¡  |  | jj |¡|¡ |  | jj |¡|¡ |  | jj |¡|¡ | jj |¡ | jj |¡ | jj |¡ |   |¡ t| jjj||ƒ t| jjj||ƒ t| jjj||ƒ |  ¡  |  t| jjj|ƒ|¡ |  t| jjj|ƒ|¡ |  t| jjj|ƒ|¡ t| jjj|ƒ t| jjj|ƒ t| jjj|ƒ |   |¡ || jjj|< || jjj|< || jjj|< |  ¡  |  | jjj| |¡ |  | jjj| |¡ |  | jjj| |¡ | jjj|= | jjj|= | jjj|= |   |¡ dS )z*Check validity of attribute name filteringN)rA   r$   r4   r%   r!   r   r   r=   r9   r:   Údel_node_attrÚ
_f_setattrÚset_attrÚ
_f_getattrÚget_attrZ
_f_delattrZdel_attrÚsetattrr>   r?   ÚgetattrÚdelattr)r,   r@   Úvalr   r   r   Ú
check_nameZ   sZ    



zCreateTestCase.check_namec          	   C   s~   t  ¡ < t  dtj¡ |  d¡ |  d¡ |  d¡ |  d¡ W dQ R X |  t| jd¡ |  t| jd¡ |  t| jd	¡ dS )
z!Checking attribute names validityÚignorer0   za:bz/a/bÚ.NrB   Ú__members__r   )	ÚwarningsÚcatch_warningsÚsimplefilterÚtablesÚNaturalNameWarningrL   ÚassertRaisesÚ
ValueErrorÚ	TypeError)r,   r   r   r   Útest01a_setAttributes–   s    



z$CreateTestCase.test01a_setAttributesc             C   sÀ   d}| j j dd| ¡ | j j dd| ¡ | j j dd| ¡ | jrntjrTt	dƒ | j
d| jd | jj | _ |  | j j d¡d| ¡ |  | j j d¡d| ¡ |  | j j d¡d| ¡ d	S )
z7Checking setting large string attributes (Node methods)i   r.   r/   r0   r1   z(closing file version)zr+)r2   r3   N)r%   r!   rD   r   rE   r   r5   r   r6   r7   r8   r3   r$   r9   rF   rG   )r,   r;   r   r   r   Útest02_setAttributes¢   s    
z#CreateTestCase.test02_setAttributesc             C   s¨   d}d| | j j_d| | jj_d| | jj_| jr\tjrBt	dƒ | j
d| jd | jj| _|  | jjjjd| ¡ |  | jjjjd| ¡ |  | jjjjd| ¡ dS )	z?Checking setting large string attributes (AttributeSet methods)i   r/   r0   r1   z(closing file version)zr+)r2   r3   N)r+   r>   r.   r'   r?   r)   r5   r   r6   r7   r8   r3   r$   r%   r9   r!   r   r   )r,   r;   r   r   r   Útest03_setAttributes¹   s    
z#CreateTestCase.test03_setAttributesc             C   s  d| j j_d| j j_d| j j_tjr6td| j j ¡ ƒ d| j	j
_d| j	j
_d| j	j
_tjrltd| j	j
 ¡ ƒ d| jj
_d| jj
_d| jj
_tjr¢td| jj
 ¡ ƒ | jrÐtjr¶tdƒ | jd| jd | jj| _| jj}|  |j d¡d	d
dg¡ |  |j d¡dddg¡ |  |j d¡dddd	d
dg¡ | jj}|  |j
 ¡ dddg¡ |  |j
 d¡ddddddddddddddg¡ |  |j
 d¡dddddddddddddddddg¡ | jj}|  |j
 ¡ dd d!g¡ |  |j
 d¡dd"ddg¡ |  |j
 d¡dd"dddd d!g¡ d#S )$zChecking listing attributes.Ú1Ú2Ú3zAttribute list:z(closing file version)zr+)r2   r3   ÚuserÚpqÚqrÚrsÚsysÚCLASSÚTITLEÚVERSIONÚallr0   ÚbÚcÚFIELD_0_FILLÚFIELD_0_NAMEÚFIELD_1_FILLÚFIELD_1_NAMEÚFIELD_2_FILLÚFIELD_2_NAMEÚFIELD_3_FILLÚFIELD_3_NAMEÚFIELD_4_FILLÚFIELD_4_NAMEÚNROWSÚiÚjÚkZFLAVORN)r+   r>   r_   r`   ra   r   r6   r7   Ú_f_listr'   r?   r0   rh   rg   r)   rv   ru   rt   r5   r8   r3   r$   r%   r!   r9   r   r   )r,   r!   r   r   r   r   r   Útest04_listAttributesÏ   sn    












z$CreateTestCase.test04_listAttributesc             C   s&  d| j j_d| j j_d| j j_| j j`| jrTtjr:tdƒ | j	d| j
d | jj| _| jj}tjrrtd|j ¡ ƒ |  |j ¡ dd	g¡ tjr td
|j d¡ƒ |  |j d¡ddddd	g¡ |j`tjrÚtd|j ¡ ƒ |  |j ¡ d	g¡ tjrtd
|j ¡ ƒ |  |j d¡dddd	g¡ dS )zChecking removing attributes.r[   r\   r]   z(closing file version)zr+)r2   r3   zAttribute list:r`   ra   zAttribute list in disk:rf   rc   rd   re   N)r+   r>   r_   r`   ra   r5   r   r6   r7   r8   r3   r$   r%   r!   rw   r9   )r,   r!   r   r   r   Útest05_removeAttributes  s2    



z&CreateTestCase.test05_removeAttributesc             C   s:  d| j j_d| j j_d| j j_| j | j d¡ | jr\tj	rBt
dƒ | jd| jd | jj| _| jj}tj	rzt
d|j ¡ ƒ |  |j ¡ d	d
g¡ tj	r¨t
d|j d¡ƒ |  |j d¡dddd	d
g¡ | j | jd	d¡ tj	rît
d|j ¡ ƒ |  |j ¡ d
g¡ tj	rt
d|j ¡ ƒ |  |j d¡dddd
g¡ dS )z9Checking removing attributes (using File.del_node_attr())r[   r\   r]   r_   z(closing file version)zr+)r2   r3   zAttribute list:r`   ra   zAttribute list in disk:rf   rc   rd   re   r!   N)r+   r>   r_   r`   ra   r$   rC   r5   r   r6   r7   r8   r3   r%   r!   rw   r9   )r,   r!   r   r   r   Útest05b_removeAttributes:  s2    



z'CreateTestCase.test05b_removeAttributesc             C   sb   t jrtdƒ td| jjjƒ | jj`|  | jj d¡ddg¡ t jr^tdƒ td| jjjƒ dS )z$Checking removing system attributes.zBefore removing CLASS attributezSystem attrs:rb   rd   re   zAfter removing CLASS attributeN)	r   r6   r7   r+   r>   Z_v_attrnamessysrc   r9   rw   )r,   r   r   r   Útest06_removeAttributesa  s    
z&CreateTestCase.test06_removeAttributesc          	   C   sÎ   d| j j_d| j j_d| j j_| j j dd¡ | jr\tjrBt	dƒ | j
d| jd | jj| _| jj}tjrzt	d	|j ¡ ƒ |  |j ¡ dd
dg¡ tjrªt	d|j d¡ƒ |  |j d¡ddddd
dg¡ dS )zChecking renaming attributes.r[   r\   r]   r_   Úopz(closing file version)zr+)r2   r3   zAttribute list:r`   ra   zAttribute list in disk:rf   rc   rd   re   N)r+   r>   r_   r`   ra   Ú	_f_renamer5   r   r6   r7   r8   r3   r$   r%   r!   rw   r9   )r,   r!   r   r   r   Útest07_renameAttributeso  s"    



z&CreateTestCase.test07_renameAttributesc             C   sr   t jrtdƒ td| jjjƒ | jj dd¡ t jrLtdƒ td| jjjƒ | jj}|  	|j 
d¡dddg¡ d	S )
z$Checking renaming system attributes.zBefore renaming CLASS attributez
All attrs:rc   r|   zAfter renaming CLASS attributerf   rd   re   N)r   r6   r7   r+   r>   Z_v_attrnamesr}   r%   r!   r9   rw   )r,   r!   r   r   r   Útest08_renameAttributesŠ  s    z&CreateTestCase.test08_renameAttributesc          	   C   sþ   d| j j_d| j j_d| j j_d| j j_d| j j_dddg| j j_| jrptjrVtdƒ | j	d	| j
d
 | jj| _| jj}tjrŒtd|jjƒ |  |jjd¡ |  |jjd¡ |  |jjdddg¡ tjrÚtd|j d¡ƒ |  |j d¡ddddddg¡ dS )z Checking overwriting attributes.r[   r\   r]   Ú4é   r    é   z(closing file version)zr+)r2   r3   zValue of Attribute pq:zAttribute list in disk:rf   rc   rd   re   r_   r`   ra   N)r+   r>   r_   r`   ra   r5   r   r6   r7   r8   r3   r$   r%   r!   r9   rw   )r,   r!   r   r   r   Útest09_overwriteAttributes›  s*    





z)CreateTestCase.test09_overwriteAttributesc             C   sæ   d| j j_d| j j_d| j j_| j j | jj¡ | jr^t	j
rDtdƒ | jd| jd | jj| _| jj}t	j
r|td|j ¡ ƒ |  |j ¡ dd	d
g¡ t	j
r¬td|j d¡ƒ |  |j d¡dddddddddddddddd	d
g¡ dS )zChecking copying attributes.r[   r\   r]   z(closing file version)zr+)r2   r3   zAttribute list:r_   r`   ra   zComplete attribute list:rf   rc   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rd   re   N)r+   r>   r_   r`   ra   Ú_f_copyr%   r   r5   r   r6   r7   r8   r3   r$   rw   r9   )r,   r   r   r   r   Útest10a_copyAttributesº  s2    



z%CreateTestCase.test10a_copyAttributesc             C   sè   d| j j_d| j j_d| j j_| j | j | jj¡ | j	r`t
jrFtdƒ | jd| jd | jj| _| jj}t
jr~td|j ¡ ƒ |  |j ¡ dd	d
g¡ t
jr®td|j d¡ƒ |  |j d¡dddddddddddddddd	d
g¡ dS )z-Checking copying attributes (copy_node_attrs)r[   r\   r]   z(closing file version)zr+)r2   r3   zAttribute list:r_   r`   ra   zComplete attribute list:rf   rc   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rd   re   N)r+   r>   r_   r`   ra   r$   Zcopy_node_attrsr%   r   r5   r   r6   r7   r8   r3   rw   r9   )r,   r   r   r   r   Útest10b_copyAttributesÝ  s2    



z%CreateTestCase.test10b_copyAttributesc             C   s¢   d| j jd< d| j jd< | j | j | jd¡ | jrZtjr@tdƒ | j	d| j
d | jj| _| jj}tjrztd	|j d
¡ƒ |  |jd d¡ |  |jd d¡ dS )z0Checking copying attributes during group copies.ZGROUP2rc   z1.3re   Úagroup2z(closing file version)zr+)r2   r3   zComplete attribute list:rf   N)r+   r>   r$   Ú	copy_noder%   r5   r   r6   r7   r8   r3   r‡   rw   r9   )r,   r‡   r   r   r   Útest10c_copyAttributes   s    
z%CreateTestCase.test10c_copyAttributesc             C   s¤   | j j}d|jd< d|jd< | j || j d¡ | jr\tjrBtdƒ | j	d| j
d | jj | _ | j j}tjr|td	|j d
¡ƒ |  |jd d¡ |  |jd d¡ dS )z/Checking copying attributes during leaf copies.ZTABLE2rc   z1.3re   Úatable2z(closing file version)zr+)r2   r3   zComplete attribute list:rf   N)r%   r   r>   r$   rˆ   r5   r   r6   r7   r8   r3   rŠ   rw   r9   )r,   r   rŠ   r   r   r   Útest10d_copyAttributes  s    


z%CreateTestCase.test10d_copyAttributesc             C   s"   | j j}d|_|  |d d¡ dS )z#Checking the __getitem__ interface.r[   r_   N)r+   r>   r_   r9   )r,   r?   r   r   r   Útest11a_getitem+  s    zCreateTestCase.test11a_getitemc             C   s$   | j j}d|d< |  |d d¡ dS )z#Checking the __setitem__ interface.r\   r_   N)r+   r>   r9   )r,   r?   r   r   r   Útest11b_setitem2  s    zCreateTestCase.test11b_setitemc             C   s*   | j j}d|_|d= |  d| ¡ k¡ dS )z#Checking the __delitem__ interface.r[   r_   N)r+   r>   r_   Ú
assertTruerw   )r,   r?   r   r   r   Útest11c_delitem9  s    zCreateTestCase.test11c_delitemc             C   s,   | j j}|  t|jd¡ |  t|jd¡ dS )z<Checking that KeyError is raised in __getitem__/__delitem__.r_   N)r+   r>   rU   ÚKeyErrorÚ__getitem__Ú__delitem__)r,   r?   r   r   r   Útest11d_KeyErrorA  s    zCreateTestCase.test11d_KeyErrorc             C   s€   t  ddgddgg¡}|| jjd< |j ¡ | jjd< |j| jjd< t| jjd |ƒ t| jjd |jƒ t| jjd |jƒ dS )	z7Checking setting 2D and non-contiguous NumPy attributesr   r    r   r‚   r0   rg   rh   N)Únumpyr)   r?   ÚTÚcopyr   )r,   Údatar   r   r   Útest_2d_non_contiguousH  s    z%CreateTestCase.test_2d_non_contiguousr   r‚   z2Special method `__dir__()` introduced in Python-3.c          
   C   s0  t jr tddƒ td| jj ƒ | jj}d}d}x||gD ]}d||< q:W d}d}x:||gD ].}t ¡  t 	d	t
j¡ d||< W d
Q R X q\W t|ƒ}|  d|¡ |  d|¡ |  | d¡d¡ |  ||¡ |  ||¡ |  | |¡d¡ |  ||¡ |  ||¡ |  | |¡d¡ |  tt|ƒƒt|ƒ¡ d
S )zChecking AttributeSet.__dir__Ú
z<-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=zRunning %s.test12_dir...Z	good_attrZBETTER_ATTRr    Z5badzSYS%rM   Nr-   r„   )r   r6   r7   r-   r   r+   r>   rP   rQ   rR   rS   rT   ÚdirZassertInr9   ÚcountZassertNotInZassertSequenceEqualÚsortedÚset)r,   ZattrsetZ	user_attrZsys_attrr0   Zbad_userZbad_sysZcompletionsr   r   r   Ú
test12_dir`  s4    

zCreateTestCase.test12_dir)rB   )!r   r   r   r#   r<   r=   rA   rL   rX   rY   rZ   rx   ry   rz   r{   r~   r   rƒ   r…   r†   r‰   r‹   rŒ   r   r   r“   r˜   r   ÚskipIfrb   Úversion_inforž   Ú__classcell__r   r   )r-   r   r   "   s2   
<D''##r   c               @   s   e Zd ZdZeZeedZdS )ÚNotCloseCreateF)r3   N)r   r   r   r5   r   r3   ÚdictÚopen_kwargsr   r   r   r   r¢     s   r¢   c               @   s   e Zd ZdZeZeedZdS )ÚCloseCreateT)r3   N)r   r   r   r5   r   r3   r£   r¤   r   r   r   r   r¥   •  s   r¥   c               @   s   e Zd ZdZdZeedZdS )ÚNoCacheNotCloseCreateFr   )r3   N)r   r   r   r5   r3   r£   r¤   r   r   r   r   r¦   ›  s   r¦   c               @   s   e Zd ZdZdZeedZdS )ÚNoCacheCloseCreateTr   )r3   N)r   r   r   r5   r3   r£   r¤   r   r   r   r   r§   ¡  s   r§   c               @   s    e Zd ZdZe ZeedZdS )ÚDictCacheNotCloseCreateF)r3   N)r   r   r   r5   r   r3   r£   r¤   r   r   r   r   r¨   §  s   r¨   c               @   s    e Zd ZdZe ZeedZdS )ÚDictCacheCloseCreateT)r3   N)r   r   r   r5   r   r3   r£   r¤   r   r   r   r   r©   ­  s   r©   c                   s4  e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!d?d@„ Z"dAdB„ Z#dCdD„ Z$dEdF„ Z%dGdH„ Z&‡  Z'S )IÚTypesTestCasec                sT   d| j i| _tt| ƒ ¡  | jj| _| j | jddgd¡| _| j 	| jdd¡| _
d S )NÚallow_paddingr   r    zArray titler!   zGroup title)r«   r¤   r"   rª   r#   r$   r%   r(   r)   r*   r+   )r,   )r-   r   r   r#   µ  s    
zTypesTestCase.setUpc             C   sÊ   d| j j_d| j j_d| j j_tjrTtd| j jjƒ td| j jjƒ td| j jjƒ | jrŠtjrhtdƒ | j	dd | j
j| _| j
jj| _ |  | jjjjd¡ |  | jjjjd¡ |  | jjjjd¡ d	S )
z6Checking setting Bool attributes (scalar, Python case)TFzpq -->zqr -->zrs -->z(closing file version)zr+)r2   N)r)   r?   r_   r`   ra   r   r6   r7   r5   r8   r$   r%   r   r9   )r,   r   r   r   Útest00a_setBoolAttributesÁ  s     



z'TypesTestCase.test00a_setBoolAttributesc             C   s*  t  d¡| jj_t  d¡| jj_t  d¡| jj_tjrft	d| jjjƒ t	d| jjjƒ t	d| jjjƒ | j
rœtjrzt	dƒ | jdd | jj| _| jjj| _|  t| jjjjt jƒ¡ |  t| jjjjt jƒ¡ |  t| jjjjt jƒ¡ |  | jjjjd¡ |  | jjjjd¡ |  | jjjjd¡ d	S )
z5Checking setting Bool attributes (scalar, NumPy case)TFzpq -->zqr -->zrs -->z(closing file version)zr+)r2   N)r”   Zbool_r)   r?   r_   r`   ra   r   r6   r7   r5   r8   r$   r%   r   rŽ   Ú
isinstancer9   )r,   r   r   r   Útest00b_setBoolAttributesÙ  s&    
z'TypesTestCase.test00b_setBoolAttributesc             C   sÜ   t  d¡| jj_t  d¡| jj_t  d¡| jj_tjrftd| jjjƒ td| jjjƒ td| jjjƒ | j	rœtjrztdƒ | j
dd | jj| _| jjj| _|  | jjjjd¡ |  | jjjjd¡ |  | jjjjd¡ d	S )
z4Checking setting Bool attributes (NumPy, 0-dim case)TFzpq -->zqr -->zrs -->z(closing file version)zr+)r2   N)r”   r)   r?   r_   r`   ra   r   r6   r7   r5   r8   r$   r%   r   r9   )r,   r   r   r   Útest00c_setBoolAttributesô  s     
z'TypesTestCase.test00c_setBoolAttributesc             C   s  t  dg¡| jj_t  dgg¡| jj_t  ddgddgg¡| jj_tjrxtd| jjjƒ td| jjjƒ td| jjjƒ | j	r®tjrŒtdƒ | j
dd | jj| _| jjj| _t| jjjjt  dg¡ƒ t| jjjjt  dgg¡ƒ t| jjjjt  ddgddgg¡ƒ d	S )
z7Checking setting Bool attributes (NumPy, multidim case)TFzpq -->zqr -->zrs -->z(closing file version)zr+)r2   N)r”   r)   r?   r_   r`   ra   r   r6   r7   r5   r8   r$   r%   r   r   )r,   r   r   r   Útest00d_setBoolAttributes  s"    
z'TypesTestCase.test00d_setBoolAttributesc             C   s  d| j j_d| j j_d| j j_tjrTtd| j jjƒ td| j jjƒ td| j jjƒ | jrŠtjrhtdƒ | j	dd	 | j
j| _| j
jj| _ |  t| jjjjtjƒ¡ |  t| jjjjtjƒ¡ |  t| jjjjtjƒ¡ |  | jjjjd¡ |  | jjjjd¡ |  | jjjjd¡ d
S )z5Checking setting Int attributes (scalar, Python case)r    r   r‚   zpq -->zqr -->zrs -->z(closing file version)zr+)r2   N)r)   r?   r_   r`   ra   r   r6   r7   r5   r8   r$   r%   r   rŽ   r­   r”   Zint_r9   )r,   r   r   r   Útest01a_setIntAttributes%  s&    



z&TypesTestCase.test01a_setIntAttributesc             C   sÊ   dddddddg}x&|D ]}t | jj|tjd|d	ƒ qW tjrdx"|D ]}td
|t| jj|ƒƒ qFW | jrštjrxtdƒ | j	dd | j
j| _| j
jj| _x*|D ]"}tt| jj|ƒtjd|d	ƒ q W dS )z4Checking setting Int attributes (scalar, NumPy case)Úint8Úint16Úint32Úint64Úuint8Úuint16Úuint32r    )Údtypeztype, value-->z(closing file version)zr+)r2   N)rH   r)   r?   r”   r   r6   r7   rI   r5   r8   r$   r%   r   r   )r,   Ú
checktypesr¹   r   r   r   Útest01b_setIntAttributes@  s"    




z&TypesTestCase.test01b_setIntAttributesc             C   sÄ   dddddddg}x*|D ]"}t | jj|tjdd	g|d
ƒ qW | jrttjrRtdƒ | jdd | j	j
| _
| j	j
j| _xJ|D ]B}tjrštd|t| jj|ƒƒ tt| jj|ƒtjdd	g|d
ƒ qzW dS )z;Checking setting Int attributes (unidimensional NumPy case)r²   r³   r´   rµ   r¶   r·   r¸   r    r   )r¹   z(closing file version)zr+)r2   ztype, value-->N)rH   r)   r?   r”   r5   r   r6   r7   r8   r$   r%   r   rI   r   )r,   rº   r¹   r   r   r   Útest01c_setIntAttributes[  s     

"

z&TypesTestCase.test01c_setIntAttributesc             C   sè   dddddddg}x<|D ]4}t jdd	d
dg|dddd	… }t| jj||ƒ qW | jr†tjrdtdƒ | jdd | j	j
| _
| j	j
j| _x\|D ]T}t jdd	d
dg|dddd	… }tjrÌtd|t| jj|ƒƒ tt| jj|ƒ|ƒ qŒW dS )z@Checking setting Int attributes (unidimensional, non-contiguous)r²   r³   r´   rµ   r¶   r·   r¸   r    r   r‚   r   )r¹   Nz(closing file version)zr+)r2   ztype, value-->)r”   r)   rH   r?   r5   r   r6   r7   r8   r$   r%   r   rI   r   )r,   rº   r¹   Úarrr   r   r   Útest01d_setIntAttributest  s"    

 

 z&TypesTestCase.test01d_setIntAttributesc             C   sÔ   dddddddg}x2|D ]*}t | jj|tjdd	gd	d
gg|dƒ qW | jr|tjrZtdƒ | jdd | j	j
| _
| j	j
j| _xR|D ]J}tjr¢td|t| jj|ƒƒ tt| jj|ƒtjdd	gd	d
gg|dƒ q‚W dS )z:Checking setting Int attributes (bidimensional NumPy case)r²   r³   r´   rµ   r¶   r·   r¸   r    r   r‚   )r¹   z(closing file version)zr+)r2   ztype, value-->N)rH   r)   r?   r”   r5   r   r6   r7   r8   r$   r%   r   rI   r   )r,   rº   r¹   r   r   r   Útest01e_setIntAttributesŽ  s"    


 

z&TypesTestCase.test01e_setIntAttributesc             C   s  d| j j_d| j j_d| j j_tjrTtd| j jjƒ td| j jjƒ td| j jjƒ | jrŠtjrhtdƒ | j	dd	 | j
j| _| j
jj| _ |  t| jjjjtjƒ¡ |  t| jjjjtjƒ¡ |  t| jjjjtjƒ¡ |  | jjjjd¡ |  | jjjjd¡ |  | jjjjd¡ d
S )z+Checking setting Float (double) attributes.g      ð?g       @g      @zpq -->zqr -->zrs -->z(closing file version)zr+)r2   N)r)   r?   r_   r`   ra   r   r6   r7   r5   r8   r$   r%   r   rŽ   r­   r”   Zfloat_)r,   r   r   r   Útest02a_setFloatAttributes¨  s&    



z(TypesTestCase.test02a_setFloatAttributesc             C   s¶   ddg}x&|D ]}t | jj|tjd|dƒ qW tjrZx"|D ]}td|t| jj|ƒƒ q<W | jrtjrntdƒ | j	dd | j
j| _| j
jj| _x |D ]}tt| jj|ƒdƒ q–W d	S )
z6Checking setting Float attributes (scalar, NumPy case)Úfloat32Úfloat64gš™™™™™ñ?)r¹   ztype, value-->z(closing file version)zr+)r2   N)rH   r)   r?   r”   r   r6   r7   rI   r5   r8   r$   r%   r   r   )r,   rº   r¹   r   r   r   Útest02b_setFloatAttributesÄ  s     




z(TypesTestCase.test02b_setFloatAttributesc             C   sÈ   ddg}x*|D ]"}t | jj|tjddg|dƒ qW tjr^x"|D ]}td|t| jj|ƒƒ q@W | jr”tjrrtdƒ | j	dd	 | j
j| _| j
jj| _x.|D ]&}tt| jj|ƒtjddg|dƒ qšW d
S )z=Checking setting Float attributes (unidimensional NumPy case)rÁ   rÂ   gš™™™™™ñ?gÍÌÌÌÌÌ @)r¹   ztype, value-->z(closing file version)zr+)r2   N)rH   r)   r?   r”   r   r6   r7   rI   r5   r8   r$   r%   r   r   )r,   rº   r¹   r   r   r   Útest02c_setFloatAttributesß  s"    




z(TypesTestCase.test02c_setFloatAttributesc             C   sì   ddg}x<|D ]4}t jddddg|ddd	d
… }t| jj||ƒ qW tjrpx"|D ]}td|t| jj|ƒƒ qRW | jr¦tjr„tdƒ | j	dd | j
j| _| j
jj| _x@|D ]8}t jddddg|ddd	d
… }tt| jj|ƒ|ƒ q¬W d	S )zJChecking setting Float attributes (unidimensional,
        non-contiguous)rÁ   rÂ   gš™™™™™ñ?gÍÌÌÌÌÌ @gÍÌÌÌÌÌ@gffffff@)r¹   r    Nr   ztype, value-->z(closing file version)zr+)r2   )r”   r)   rH   r?   r   r6   r7   rI   r5   r8   r$   r%   r   r   )r,   rº   r¹   r½   r   r   r   Útest02d_setFloatAttributesù  s"    
 


 z(TypesTestCase.test02d_setFloatAttributesc             C   sØ   ddg}x2|D ]*}t | jj|tjddgddgg|dƒ qW tjrfx"|D ]}td|t| jj|ƒƒ qHW | jrœtjrztdƒ | j	d	d
 | j
j| _| j
jj| _x6|D ].}tt| jj|ƒtjddgddgg|dƒ q¢W dS )z:Checking setting Int attributes (bidimensional NumPy case)rÁ   rÂ   gš™™™™™ñ?gÍÌÌÌÌÌ @gÍÌÌÌÌÌ@)r¹   ztype, value-->z(closing file version)zr+)r2   N)rH   r)   r?   r”   r   r6   r7   rI   r5   r8   r$   r%   r   r   )r,   rº   r¹   r   r   r   Útest02e_setFloatAttributes  s$    

 


z(TypesTestCase.test02e_setFloatAttributesc             C   sÞ   ddg| j j_d| j j_dddœ| j j_tjr^td| j jjƒ td| j jjƒ td	| j jjƒ | jr”tjrrtd
ƒ | j	dd | j
j| _| j
jj| _ |  | jjjjddg¡ |  | jjjjd¡ |  | jjjjdddœ¡ dS )z#Checking setting Object attributes.g      ð?r   )r    r   gÍÌÌÌÌ@@r    )ZddfZdsdzpq -->zqr -->zrs -->z(closing file version)zr+)r2   N)r)   r?   r_   r`   ra   r   r6   r7   r5   r8   r$   r%   r   r9   )r,   r   r   r   Útest03_setObjectAttributes/  s     

z(TypesTestCase.test03_setObjectAttributesc             C   s  d| j j_d| j j_d| j j_tjrTtd| j jjƒ td| j jjƒ td| j jjƒ | jrŠtjrhtdƒ | j	dd	 | j
j| _| j
jj| _ |  t| jjjjtjƒ¡ |  t| jjjjtjƒ¡ |  t| jjjjtjƒ¡ |  | jjjjd¡ |  | jjjjd¡ |  | jjjjd¡ d
S )z0Checking setting string attributes (scalar case)ÚfooZbarÚbazzpq -->zqr -->zrs -->z(closing file version)zr+)r2   N)r)   r?   r_   r`   ra   r   r6   r7   r5   r8   r$   r%   r   rŽ   r­   r”   Zstr_r9   )r,   r   r   r   Útest04a_setStringAttributesH  s&    



z)TypesTestCase.test04a_setStringAttributesc             C   s|   t  dg¡| jj_tjr(td| jjjƒ | jr^tjr<tdƒ | jdd | j	j
| _
| j	j
j| _t| j
jjjt  dg¡ƒ dS )z?Checking setting string attributes (unidimensional 1-elem case)rÈ   zpq -->z(closing file version)zr+)r2   N)r”   r)   r?   r_   r   r6   r7   r5   r8   r$   r%   r   r   )r,   r   r   r   Útest04b_setStringAttributesc  s    
z)TypesTestCase.test04b_setStringAttributesc             C   s’   t  dg¡| jj_tjr(td| jjjƒ | jrttjr<tdƒ | jdd | j	j
| _
| j	j
j| _tjrttd| jjjƒ t| j
jjjt  dg¡ƒ dS )zMChecking setting string attributes (empty unidimensional
        1-elem case)rB   zpq -->z(closing file version)zr+)r2   N)r”   r)   r?   r_   r   r6   r7   r5   r8   r$   r%   r   r   )r,   r   r   r   Útest04c_setStringAttributesu  s    
z)TypesTestCase.test04c_setStringAttributesc             C   s€   t  ddg¡| jj_tjr*td| jjjƒ | jr`tjr>tdƒ | jdd | j	j
| _
| j	j
j| _t| j
jjjt  ddg¡ƒ dS )z?Checking setting string attributes (unidimensional 2-elem case)rÈ   Úbar3zpq -->z(closing file version)zr+)r2   N)r”   r)   r?   r_   r   r6   r7   r5   r8   r$   r%   r   r   )r,   r   r   r   Útest04d_setStringAttributes‹  s    
z)TypesTestCase.test04d_setStringAttributesc             C   s€   t  ddg¡| jj_tjr*td| jjjƒ | jr`tjr>tdƒ | jdd | j	j
| _
| j	j
j| _t| j
jjjt  ddg¡ƒ dS )zMChecking setting string attributes (empty unidimensional
        2-elem case)rB   zpq -->z(closing file version)zr+)r2   N)r”   r)   r?   r_   r   r6   r7   r5   r8   r$   r%   r   r   )r,   r   r   r   Útest04e_setStringAttributesž  s    
z)TypesTestCase.test04e_setStringAttributesc             C   s   t  ddgddgg¡| jj_tjr2td| jjjƒ | jrhtjrFtdƒ | jdd | j	j
| _
| j	j
j| _t| j
jjjt  ddgddgg¡ƒ d	S )
z>Checking setting string attributes (bidimensional 4-elem case)rÈ   Úfoo2Úfoo3Zfoo4zpq -->z(closing file version)zr+)r2   N)r”   r)   r?   r_   r   r6   r7   r5   r8   r$   r%   r   r   )r,   r   r   r   Útest04f_setStringAttributes±  s    


z)TypesTestCase.test04f_setStringAttributesc             C   s  d| j j_d| j j_d| j j_tjrTtd| j jjƒ td| j jjƒ td| j jjƒ | jrŠtjrhtdƒ | j	dd	 | j
j| _| j
jj| _ |  t| jjjjtjƒ¡ |  t| jjjjtjƒ¡ |  t| jjjjtjƒ¡ |  | jjjjd¡ |  | jjjjd¡ |  | jjjjd¡ d
S )z-Checking setting Complex (python) attributes.y      ð?       @y       @      @y      @      @zpq -->zqr -->zrs -->z(closing file version)zr+)r2   N)r)   r?   r_   r`   ra   r   r6   r7   r5   r8   r$   r%   r   rŽ   r­   r”   Zcomplex_r9   )r,   r   r   r   Útest05a_setComplexAttributesÆ  s&    



z*TypesTestCase.test05a_setComplexAttributesc             C   s¶   ddg}x&|D ]}t | jj|tjd|dƒ qW tjrZx"|D ]}td|t| jj|ƒƒ q<W | jrtjrntdƒ | j	dd | j
j| _| j
jj| _x |D ]}tt| jj|ƒdƒ q–W d	S )
z8Checking setting Complex attributes (scalar, NumPy case)Ú	complex64Ú
complex128yš™™™™™ñ?       @)r¹   ztype, value-->z(closing file version)zr+)r2   N)rH   r)   r?   r”   r   r6   r7   rI   r5   r8   r$   r%   r   r   )r,   rº   r¹   r   r   r   Útest05b_setComplexAttributesâ  s     




z*TypesTestCase.test05b_setComplexAttributesc             C   sÈ   ddg}x*|D ]"}t | jj|tjddg|dƒ qW tjr^x"|D ]}td|t| jj|ƒƒ q@W | jr”tjrrtdƒ | j	dd	 | j
j| _| j
jj| _x.|D ]&}tt| jj|ƒtjddg|dƒ qšW d
S )z?Checking setting Complex attributes (unidimensional NumPy case)rÔ   rÕ   gš™™™™™ñ?gÍÌÌÌÌÌ @)r¹   ztype, value-->z(closing file version)zr+)r2   N)rH   r)   r?   r”   r   r6   r7   rI   r5   r8   r$   r%   r   r   )r,   rº   r¹   r   r   r   Útest05c_setComplexAttributesý  s"    




z*TypesTestCase.test05c_setComplexAttributesc             C   sØ   ddg}x2|D ]*}t | jj|tjddgddgg|dƒ qW tjrfx"|D ]}td|t| jj|ƒƒ qHW | jrœtjrztdƒ | j	d	d
 | j
j| _| j
jj| _x6|D ].}tt| jj|ƒtjddgddgg|dƒ q¢W dS )z:Checking setting Int attributes (bidimensional NumPy case)rÔ   rÕ   gš™™™™™ñ?gÍÌÌÌÌÌ @gÍÌÌÌÌÌ@)r¹   ztype, value-->z(closing file version)zr+)r2   N)rH   r)   r?   r”   r   r6   r7   rI   r5   r8   r$   r%   r   r   )r,   rº   r¹   r   r   r   Útest05d_setComplexAttributes  s$    

 


z*TypesTestCase.test05d_setComplexAttributesc             C   s  d| j j_d| j j_d| j j_tjrbtjdkrBt	dt
| j jjƒƒ t	d| j jjƒ t	d| j jjƒ | jr˜tjrvt	dƒ | jd	d
 | jj| _| jjj| _ |  t| j jjtjƒ¡ |  t| j jjtjƒ¡ |  t| j jjtjƒ¡ |  | j jjd¡ |  | j jjd¡ |  | j jjd¡ dS )z1Checking setting unicode attributes (scalar case)u	   paraÅ€lelrB   rÉ   Zwin32zpq -->zqr -->zrs -->z(closing file version)zr+)r2   N)r)   r?   r_   r`   ra   r   r6   rb   Úplatformr7   Úreprr5   r8   r$   r%   r   rŽ   r­   r”   Zunicode_r9   )r,   r   r   r   Útest06a_setUnicodeAttributes2  s(    




z*TypesTestCase.test06a_setUnicodeAttributesc             C   sz   t  dg¡| jj_tjr(td| jjjƒ | jr^tjr<tdƒ | jdd | j	j
| _
| j	j
j| _t| jjjt  dg¡ƒ dS )z@Checking setting unicode attributes (unidimensional 1-elem case)u	   paraÅ€lelzpq -->z(closing file version)zr+)r2   N)r”   r)   r?   r_   r   r6   r7   r5   r8   r$   r%   r   r   )r,   r   r   r   Útest06b_setUnicodeAttributesQ  s    

z*TypesTestCase.test06b_setUnicodeAttributesc             C   sœ   t jdgdd| jj_tjr,td| jjjƒ | jr|tjr@tdƒ | jdd | j	j
| _
| j	j
j| _tjr|tdt| jjjƒƒ t| jjjt jdgddƒ dS )	zNChecking setting unicode attributes (empty unidimensional
        1-elem case)rB   ÚU1)r¹   zpq -->z(closing file version)zr+)r2   N)r”   r)   r?   r_   r   r6   r7   r5   r8   r$   r%   r   rÚ   r   )r,   r   r   r   Útest06c_setUnicodeAttributesd  s    

z*TypesTestCase.test06c_setUnicodeAttributesc             C   s~   t  ddg¡| jj_tjr*td| jjjƒ | jr`tjr>tdƒ | jdd | j	j
| _
| j	j
j| _t| jjjt  ddg¡ƒ dS )z@Checking setting unicode attributes (unidimensional 2-elem case)u	   paraÅ€lelrÍ   zpq -->z(closing file version)zr+)r2   N)r”   r)   r?   r_   r   r6   r7   r5   r8   r$   r%   r   r   )r,   r   r   r   Útest06d_setUnicodeAttributes}  s    

z*TypesTestCase.test06d_setUnicodeAttributesc             C   s†   t jddgdd| jj_tjr.td| jjjƒ | jrdtjrBtdƒ | jdd | j	j
| _
| j	j
j| _t| jjjt jddgddƒ dS )	zNChecking setting unicode attributes (empty unidimensional
        2-elem case)rB   rÝ   )r¹   zpq -->z(closing file version)zr+)r2   N)r”   r)   r?   r_   r   r6   r7   r5   r8   r$   r%   r   r   )r,   r   r   r   Útest06e_setUnicodeAttributes  s    

z*TypesTestCase.test06e_setUnicodeAttributesc             C   sŽ   t  ddgddgg¡| jj_tjr2td| jjjƒ | jrhtjrFtdƒ | jdd | j	j
| _
| j	j
j| _t| jjjt  ddgddgg¡ƒ d	S )
z?Checking setting unicode attributes (bidimensional 4-elem case)u	   paraÅ€lelrÐ   rÑ   u
   paraÅ€lel4zpq -->z(closing file version)zr+)r2   N)r”   r)   r?   r_   r   r6   r7   r5   r8   r$   r%   r   r   )r,   r   r   r   Útest06f_setUnicodeAttributes¤  s    



z*TypesTestCase.test06f_setUnicodeAttributesc             C   sJ  t jd| jd}t  d|¡| jj_t  d|¡| jj_t  dg|¡| jj_	t
jr~td| jjjƒ td| jjjƒ td| jjj	ƒ | jr´t
jr’td	ƒ | jd
d | jj| _| jjj| _|  t| jjjt jƒ¡ |  t| jjjt jƒ¡ |  t| jjj	t jƒ¡ t| jjjt  d|¡ƒ t| jjjt  d|¡ƒ t| jjj	t  dg|¡ƒ dS )z-Checking setting RecArray (NumPy) attributes.zi4,f8)Úalignr   )r   r   )r    g       @zpq -->zqr -->zrs -->z(closing file version)zr+)r2   N)r”   r¹   ÚalignedÚzerosr)   r?   r_   Úonesr`   ra   r   r6   r7   r5   r8   r$   r%   r   rŽ   r­   Úndarrayr   )r,   Údtr   r   r   Útest07a_setRecArrayAttributes¹  s(    
z+TypesTestCase.test07a_setRecArrayAttributesc             C   sN  t  dddgfg¡}t  d|¡| jj_t  d|¡| jj_t  dg|¡| jj_t	j
r‚td| jjjƒ td| jjjƒ td	| jjjƒ | jr¸t	j
r–td
ƒ | jdd | jj| _| jjj| _|  t| jjjt jƒ¡ |  t| jjjt jƒ¡ |  t| jjjt jƒ¡ t| jjjt  d|¡ƒ t| jjjt  d|¡ƒ t| jjjt  dg|¡ƒ dS )z4Checking setting nested RecArray (NumPy) attributes.Úf1)ré   Úi2)Úf2Úf8r   )r   r   ))r    g       @zpq -->zqr -->zrs -->z(closing file version)zr+)r2   ))r    r   N)r”   r¹   rä   r)   r?   r_   rå   r`   ra   r   r6   r7   r5   r8   r$   r%   r   rŽ   r­   ræ   r   )r,   rç   r   r   r   Útest07b_setRecArrayAttributesÖ  s(    
z+TypesTestCase.test07b_setRecArrayAttributesc             C   sf  t jdddgfgdd}t  d|¡| jj_t  d|¡| jj_t  dd	gd
ffg|¡| jj_t	j
rtd| jjjƒ td| jjjƒ td| jjjƒ | jrÆt	j
r¤tdƒ | jdd | jj| _| jjj| _|  t| jjjt jƒ¡ |  t| jjjt jƒ¡ |  t| jjjt jƒ¡ t| jjjt  d|¡ƒ t| jjjt  d|¡ƒ t| jjjt  dd	gdffg|¡ƒ dS )z=Checking setting multidim nested RecArray (NumPy) attributes.ré   )ré   rê   )r   )rë   rì   T)râ   r   )r   r   r    r‚   g       @zpq -->zqr -->zrs -->z(closing file version)zr+)r2   N)r”   r¹   rä   r)   r?   r_   rå   r`   ra   r   r6   r7   r5   r8   r$   r%   r   rŽ   r­   ræ   r   )r,   rç   r   r   r   Útest07c_setRecArrayAttributesô  s*    
z+TypesTestCase.test07c_setRecArrayAttributesc             C   sL  t jd| jd}t  d|¡| jj_t  d|¡| jj_t  dg|¡| jj_	t
jr~td| jjjƒ td| jjjƒ td| jjj	ƒ | jr¶t
jr’td	ƒ | jd
dd | jj| _| jjj| _|  t| jjjt jƒ¡ |  t| jjjt jƒ¡ |  t| jjj	t jƒ¡ t| jjjt  d|¡ƒ t| jjjt  d|¡ƒ t| jjj	t  dg|¡ƒ dS )ziChecking setting aligned RecArray (NumPy) attributes with `allow_aligned` param set to False when reopen.zi4,f8)râ   r   )r   r   )r    g       @zpq -->zqr -->zrs -->z(closing file version)zr+F)r2   Zallow_alignN)r”   r¹   rã   rä   r)   r?   r_   rå   r`   ra   r   r6   r7   r5   r8   r$   r%   r   rŽ   r­   ræ   r   )r,   rç   r   r   r   Ú!test08_setRecArrayNotAllowPadding  s(    
z/TypesTestCase.test08_setRecArrayNotAllowPadding)(r   r   r   r#   r¬   r®   r¯   r°   r±   r»   r¼   r¾   r¿   rÀ   rÃ   rÄ   rÅ   rÆ   rÇ   rÊ   rË   rÌ   rÎ   rÏ   rÒ   rÓ   rÖ   r×   rØ   rÛ   rÜ   rÞ   rß   rà   rá   rè   rí   rî   rï   r¡   r   r   )r-   r   rª   ³  sH    rª   c               @   s   e Zd ZdZdZdZdS )ÚNotCloseTypesTestCaseFN)r   r   r   r«   rã   r5   r   r   r   r   rð   2  s   rð   c               @   s   e Zd ZdZdZdZdS )ÚNoCloseAlignedTypesTestCaseTFN)r   r   r   r«   rã   r5   r   r   r   r   rñ   8  s   rñ   c               @   s   e Zd ZdZdZdZdS )Ú"CloseNotAlignedPaddedTypesTestCaseFTN)r   r   r   r«   rã   r5   r   r   r   r   rò   >  s   rò   c               @   s   e Zd ZdZdZdZdS )ÚCloseTypesTestCaseTFN)r   r   r   r«   rã   r5   r   r   r   r   ró   D  s   ró   c               @   s   e Zd ZdZdZdZdS )ÚCloseAlignedTypesTestCaseFTN)r   r   r   r«   rã   r5   r   r   r   r   rô   J  s   rô   c               @   s   e Zd ZdZdZdZdS )ÚCloseAlignedPaddedTypesTestCaseTN)r   r   r   r«   rã   r5   r   r   r   r   rõ   O  s   rõ   c                   s.   e Zd ZeddZ‡ fdd„Zdd„ Z‡  ZS )ÚNoSysAttrsTestCaseF)Zpytables_sys_attrsc                s^   t t| ƒ ¡  | jj| _| j | jdtd¡| _| j | jddgd¡| _	| j 
| jdd¡| _d S )Nr   zTable titler   r    zArray titler!   zGroup title)r"   rö   r#   r$   r%   r&   r   r'   r(   r)   r*   r+   )r,   )r-   r   r   r#   X  s    

zNoSysAttrsTestCase.setUpc             C   s¼  d| j j_d| j j_d| j j_tjr6td| j j ¡ ƒ d| j	j
_d| j	j
_d| j	j
_tjrltd| j	j
 ¡ ƒ d| jj
_d| jj
_d| jj
_tjr¢td| jj
 ¡ ƒ | jrÌtjr¶tdƒ | jdd | jj| _| jj}|  |j d¡d	d
dg¡ |  |j d¡g ¡ |  |j d¡d	d
dg¡ | jj}|  |j
 ¡ dddg¡ |  |j
 d¡g ¡ |  |j
 d¡dddg¡ | jj}|  |j
 ¡ dddg¡ |  |j
 d¡g ¡ |  |j
 d¡dddg¡ dS )z6Checking listing attributes (no system attrs version).r[   r\   r]   zAttribute list:z(closing file version)zr+)r2   r^   r_   r`   ra   rb   rf   r0   rg   rh   rt   ru   rv   N)r+   r>   r_   r`   ra   r   r6   r7   rw   r'   r?   r0   rh   rg   r)   rv   ru   rt   r5   r8   r$   r%   r!   r9   r   r   )r,   r!   r   r   r   r   r   Útest00_listAttributesf  s@    









z(NoSysAttrsTestCase.test00_listAttributes)r   r   r   r£   r¤   r#   r÷   r¡   r   r   )r-   r   rö   U  s   
rö   c               @   s   e Zd ZdZdS )ÚNoSysAttrsNotCloseFN)r   r   r   r5   r   r   r   r   rø   ”  s   rø   c               @   s   e Zd ZdZdS )ÚNoSysAttrsCloseTN)r   r   r   r5   r   r   r   r   rù   ˜  s   rù   c               @   s2   e Zd ZedƒZe eej	ƒdk d¡dd„ ƒZ
dS )ÚCompatibilityTestCasezissue_368.h5z1.9.0zrequires numpy >= 1.9c             C   s   |   | j dd¡d¡ d S )Nú/Zpy2_pickled_unicodeÚabc)r9   r$   r:   )r,   r   r   r   Útest_pickled_unicode_attrsŸ  s    z0CompatibilityTestCase.test_pickled_unicode_attrsN)r   r   r   r   Úh5fnamer   rŸ   r   r”   Ú__version__rý   r   r   r   r   rú   œ  s   rú   c               @   s@   e Zd ZedƒZe ejd dko.ejd dk d¡dd„ ƒZ	d	S )
ÚPicklePy2UnpicklePy3TestCasezissue_560.h5r   r‚   r    r   zbug not fixed on python3<=3.3.c             C   sF   |   | j dd¡tj¡ | j dd¡}|   |t¡ |  |d d¡ d S )Nrû   Zpy2_pickled_datetimeZpy2_pickled_dictÚszjust a string)ZassertIsInstancer$   r:   Údatetimer£   r9   )r,   Údr   r   r   Útest_pickled_datetime_object·  s    z9PicklePy2UnpicklePy3TestCase.test_pickled_datetime_objectN)
r   r   r   r   rþ   r   rŸ   rb   r    r  r   r   r   r   r   ´  s   r   c               @   s   e Zd Zdd„ ZdS )ÚSegFaultPythonTestCasec             C   s‚   d| j jj_|  | j jjjd¡ d| j jj_|  | j jjjd¡ |  ¡  |  | j jjjd¡ |  | j jjjd¡ tjr~t	dƒ dS )z;Checking workaround for Python unpickle problem (see #253).Ú0z0.z3Great! '0' and '0.' values can be safely retrieved.N)
r$   r%   r>   Ztrouble1r9   Ztrouble2r8   r   r6   r7   )r,   r   r   r   Útest00_segfaultÐ  s    z&SegFaultPythonTestCase.test00_segfaultN)r   r   r   r  r   r   r   r   r  Î  s   r  c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚEmbeddedNullsTestCasec             C   sD   d}|| j jj_|  | j jjj|¡ |  ¡  |  | j jjj|¡ d S )Nzstring with a null byte   in it)r$   r%   r>   r@   r9   r8   )r,   Úvaluer   r   r   Útest_unicodeâ  s
    z"EmbeddedNullsTestCase.test_unicodec             C   sD   d}|| j jj_|  | j jjj|¡ |  ¡  |  | j jjj|¡ d S )Ns   string with a null byte   in it)r$   r%   r>   r@   r9   r8   )r,   r	  r   r   r   Ú
test_bytesì  s
    z EmbeddedNullsTestCase.test_bytesN)r   r   r   r
  r  r   r   r   r   r  ß  s   
r  c                   s@   e Zd Z‡ fdd„Z‡ fdd„Zdd„ Zdd„ Zd	d
„ Z‡  ZS )ÚVlenStrAttrTestCasec                s*   t t| ƒ ¡  tdƒ| _t | j¡| _d S )Nzvlstr_attr.h5)r"   r  r#   r   rþ   rS   Z	open_filer$   )r,   )r-   r   r   r#   ø  s    
zVlenStrAttrTestCase.setUpc                s   | j  ¡  tt| ƒ ¡  d S )N)r$   r5   r"   r  ÚtearDown)r,   )r-   r   r   r  ý  s    
zVlenStrAttrTestCase.tearDownc             C   s$   d}|   | j d|¡| d¡¡ dS )z5Checking file with variable length string attributes.Zvlen_str_scalarrû   ÚasciiN)r9   r$   r:   Úencode)r,   Úattrr   r   r   Útest01_vlen_str_scalar  s    z*VlenStrAttrTestCase.test01_vlen_str_scalarc             C   sX   d}| j  d|¡}|  |jd¡ x2t|ƒD ]&\}}d||f }|  || d¡¡ q*W dS )z:Checking file with variable length string attributes (1d).Zvlen_str_arrayrû   r    z%s_%dr  N)r$   r:   r9   ÚndimÚ	enumerater  )r,   r  ÚvÚidxÚitemr	  r   r   r   Útest02_vlen_str_array  s    z)VlenStrAttrTestCase.test02_vlen_str_arrayc             C   sp   d}| j  d|¡}|  |jd¡ xJt|ƒD ]>\}}x4t|ƒD ](\}}d|||f }|  || d¡¡ q<W q*W dS )z:Checking file with variable length string attributes (2d).Zvlen_str_matrixrû   r   z%s_%d%dr  N)r$   r:   r9   r  r  r  )r,   r  ÚmÚrowZrowdataÚcolr  r	  r   r   r   Útest03_vlen_str_matrix  s    z*VlenStrAttrTestCase.test03_vlen_str_matrix)	r   r   r   r#   r  r  r  r  r¡   r   r   )r-   r   r  ÷  s
   
r  c               @   s   e Zd ZedƒZdd„ ZdS )ÚUnsupportedAttrTypeTestCasezattr-u16.h5c             C   s   |   tt| j¡ dS )z$Checking file with unsupported type.N)ZassertWarnsr   rÚ   r$   )r,   r   r   r   Útest00_unsupportedType!  s    z2UnsupportedAttrTypeTestCase.test00_unsupportedTypeN)r   r   r   r   rþ   r  r   r   r   r   r    s   r  c               @   sP   e Zd Zdd„ Zdd„ Ze ejdkd¡dd„ ƒZ	e ejdkd¡d	d
„ ƒZ
dS )ÚSpecificAttrsTestCasec             C   s<   | j  ddtƒ d¡}tjr(td|jjƒ |  |jjd¡ dS )z'Testing EArray specific attrs (create).rû   Úea)r   r   r   z	EXTDIM-->r    N)	r$   Úcreate_earrayr   r   r6   r7   r?   ÚEXTDIMr9   )r,   r  r   r   r   Útest00_earray*  s    z#SpecificAttrsTestCase.test00_earrayc             C   sP   | j  ddtƒ d¡}|  d¡ | j jj}tjr<td|j	j
ƒ |  |j	j
d¡ dS )z%Testing EArray specific attrs (open).rû   r  )r   r    r   Úrz	EXTDIM-->r   N)r$   r   r   r8   r%   r  r   r6   r7   r?   r!  r9   )r,   r  r   r   r   Útest01_earray2  s    

z#SpecificAttrsTestCase.test01_earray)r‚   zrequires Python 2c             C   s$   d}|| j j_|  | j jj|¡ d S )Nu   Elevation âˆ’200m)r$   r%   Ú_v_titler9   )r,   Útitler   r   r   Útest02_unicode_title<  s    
z*SpecificAttrsTestCase.test02_unicode_titlec             C   s,   d}|| j j_|  ¡  |  | j jj|¡ d S )Nu   Elevation âˆ’200m)r$   r%   r%  r8   r9   )r,   r&  r   r   r   Útest03_unicode_title_reopenC  s    
z1SpecificAttrsTestCase.test03_unicode_title_reopenN)r   r   r   r"  r$  r   rŸ   rb   r    r'  r(  r   r   r   r   r  (  s   
r  c              C   sv  t  ¡ } d}xbt|ƒD ]T}|  t  t¡¡ |  t  t¡¡ |  t  t¡¡ |  t  t¡¡ |  t  t	¡¡ |  t  t
¡¡ |  t  t¡¡ |  t  t¡¡ |  t  t¡¡ |  t  t¡¡ |  t  t¡¡ |  t  t¡¡ |  t  t¡¡ |  t  t¡¡ |  t  t¡¡ |  t  t¡¡ |  t  t¡¡ |  t  t¡¡ |  t  t¡¡ |  t  t¡¡ |  t  t¡¡ qW | S )Nr    )r   Z	TestSuiter   ZaddTestZ	makeSuiter¢   r¥   r¦   r§   r¨   r©   rð   ró   rò   rñ   rô   rõ   rø   rù   rú   r   r  r  r  r  r  )ZtheSuiteZniterrt   r   r   r   ÚsuiteL  s2    r)  Ú__main__)ZdefaultTest)CÚ__doc__Z
__future__r   r   rb   r  rP   Zdistutils.versionr   r”   Znumpy.testingr   r   rS   r   r   r	   r
   r   r   r   Ztables.exceptionsr   Ztables.parametersr   Ztables.testsr   Ztables.tests.commonr   r   r   ZTestCaseZ	six.movesr   r   ZTempFileMixinr   r¢   r¥   r¦   r§   r¨   r©   rª   rð   rñ   rò   ró   rô   rõ   rö   rø   rù   ZTestFileMixinrú   r   r  r  r  r  r  r)  r   Z
parse_argvÚargvZprint_versionsÚmainr   r   r   r   Ú<module>   sr   $    q       ?'
$
