B
    ¬»ˆds   ã               @   s€   d dl Z d dlZddlmZmZ d dlmZmZm	Z	 d dl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dS )é    Né   )ÚutÚTestCase)ÚFileÚGroupÚDatasetc               @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚBaseDatasetaP  
    data is a 3-dimensional dataset with dimensions [z, y, x]

    The z dimension is labeled. It does not have any attached scales.
    The y dimension is not labeled. It has one attached scale.
    The x dimension is labeled. It has two attached scales.

    data2 is a 3-dimensional dataset with no associated dimension scales.
    c             C   sP  t |  ¡ dƒ| _t dd¡| jd< t dd¡| jd< t dd¡| jd< tj | jd j¡ tj 	| jd j| jd jd¡ t dd¡| jd< tj | jd jd	¡ tj 	| jd j| jd jd¡ t d
d¡| jd< tj | jd jd¡ tj 	| jd j| jd jd¡ t dd¡| jd< tj 
| jd jdd¡ tj 
| jd jdd¡ d S )NÚw)é   é   é   ÚfÚdataÚdata2r   Úx1Úx2s   x2 namer   Úy1s   y1 namer   r
   Úz1r   ó   zó   x)r   Úmktempr   ÚnpZonesÚh5pyÚh5dsZ	set_scaleÚidÚattach_scaleZ	set_label)Úself© r   úR/var/www/html/venv/lib/python3.7/site-packages/h5py/tests/test_dimension_scales.pyÚsetUp   s       zBaseDataset.setUpc             C   s   | j r| j  ¡  d S )N)r   Úclose)r   r   r   r   ÚtearDown1   s    zBaseDataset.tearDownN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r!   r   r   r   r   r      s   
r   c               @   sL   e Zd ZdZdd„ Zdd„ Zdd„ Ze e	j
jdkd	¡d
d„ ƒZdd„ ZdS )ÚTestH5DSBindingszA
        Feature: Datasets can be created from existing data
    c             C   sn   |   tj | jd j¡¡ |  tj | jd j¡d¡ |  | jd jd d¡ |  tj | jd j¡d¡ dS )z0 Create a dimension scale from existing dataset r   ó    ZCLASSs   DIMENSION_SCALEr   s   x2 nameN)	Ú
assertTruer   r   Úis_scaler   r   ÚassertEqualÚget_scale_nameÚattrs)r   r   r   r   Útest_create_dimensionscale<   s    z+TestH5DSBindings.test_create_dimensionscalec             C   sª   |   tj | jd j| jd jd¡¡ |  tj | jd j| jd jd¡¡ |  tj | jd jd¡d¡ |  tj | jd jd¡d¡ |  tj | jd jd¡d¡ d S )Nr   r   r   r   r   )	r(   r   r   Úis_attachedr   r   ÚassertFalser*   Úget_num_scales)r   r   r   r   Útest_attach_dimensionscaleC   s    ""z+TestH5DSBindings.test_attach_dimensionscalec             C   sŽ   |   tj | jd j| jd jd¡¡ tj | jd j| jd jd¡ |  tj | jd j| jd jd¡¡ |  tj 	| jd jd¡d¡ d S )Nr   r   r   r   )
r(   r   r   r.   r   r   Údetach_scaler/   r*   r0   )r   r   r   r   Útest_detach_dimensionscaleM   s    " "z+TestH5DSBindings.test_detach_dimensionscale)r   r   r   z$Reading non-existent label segfaultsc             C   s^   |   tj | jd jd¡d¡ |   tj | jd jd¡d¡ |   tj | jd jd¡d¡ d S )Nr   r   r   r   r'   r   r   )r*   r   r   Z	get_labelr   r   )r   r   r   r   Útest_label_dimensionscaleX   s    z*TestH5DSBindings.test_label_dimensionscalec             C   s:   dd„ }t j | jd jd|d¡}|  t j |¡d¡ d S )Nc             S   s   t j | ¡}|dkr| S d S )Ns   x2 name)r   r   r+   )ZdsidÚresr   r   r   Úfuncb   s    z8TestH5DSBindings.test_iter_dimensionscales.<locals>.funcr   r   r   s   x2 name)r   r   Ziterater   r   r*   r+   )r   r6   r5   r   r   r   Útest_iter_dimensionscalesa   s    z*TestH5DSBindings.test_iter_dimensionscalesN)r"   r#   r$   r%   r-   r1   r3   r   Z
skipUnlessr   ÚversionZhdf5_version_tupler4   r7   r   r   r   r   r&   6   s   

r&   c               @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestDimensionManagerc             C   s„   | j d  d¡ |  | j d jd d | j d ¡ | j d  d¡ | j d jd  | j d ¡ |  | j d jd d | j d ¡ d S )	Nr   s   foobarr   r   Zfoobarr   s   foobazZfoobaz)r   Z
make_scaler*   Údimsr   )r   r   r   r   Útest_make_scalem   s
    "z$TestDimensionManager.test_make_scalec          	   C   s*   |   t¡ | jd jd  W d Q R X d S )Nr   r   )ÚassertRaisesÚ
IndexErrorr   r:   )r   r   r   r   Útest_get_dimensionv   s    z'TestDimensionManager.test_get_dimensionc             C   s4   |   t| jd jƒd¡ |   t| jd jƒd¡ d S )Nr   r   r   )r*   Úlenr   r:   )r   r   r   r   Útest_lenz   s    zTestDimensionManager.test_lenc             C   s8   | j d j}|  dd„ |D ƒ|d |d |d g¡ d S )Nr   c             S   s   g | ]}|‘qS r   r   )Ú.0Údr   r   r   ú
<listcomp>   s    z2TestDimensionManager.test_iter.<locals>.<listcomp>r   r   r   )r   r:   r*   )r   r:   r   r   r   Ú	test_iter~   s    zTestDimensionManager.test_iterc             C   s@   | j  dd¡}|  t|jƒt¡ | j  ¡  |  t|jƒt¡ d S )NÚx)r   r   )r   Zcreate_datasetÚassertIsInstanceÚreprr:   Ústrr    )r   Údsr   r   r   Ú	test_repr…   s    
zTestDimensionManager.test_reprN)r"   r#   r$   r;   r>   r@   rD   rJ   r   r   r   r   r9   k   s
   	r9   c               @   st   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestDimensionsHighLevelc             C   s¬   |   t| jd jd ƒd¡ |   t| jd jd ƒd¡ |   t| jd jd ƒd¡ |   t| jd jd ƒd¡ |   t| jd jd ƒd¡ |   t| jd jd ƒd¡ d S )Nr   r   r   r   r   )r*   r?   r   r:   )r   r   r   r   r@   Ž   s    z TestDimensionsHighLevel.test_lenc             C   s    |   | jd jd jd¡ |   | jd jd jd¡ |   | jd jd jd¡ |   | jd jd jd¡ |   | jd jd jd¡ |   | jd jd jd¡ d S )	Nr   r   rE   r   Ú r   Úzr   )r*   r   r:   Úlabel)r   r   r   r   Útest_get_label–   s    z&TestDimensionsHighLevel.test_get_labelc             C   sd   d| j d jd _|  | j d jd jd¡ |  | j d jd jd¡ |  | j d jd jd¡ d S )NZfoor   r   r   rE   r   rL   )r   r:   rN   r*   )r   r   r   r   Útest_set_labelž   s    z&TestDimensionsHighLevel.test_set_labelc             C   s–   | j d jd  | j d ¡ |  t| j d jd ƒd¡ |  | j d jd d | j d ¡ | j d jd  | j d ¡ |  t| j d jd ƒd¡ d S )Nr   r   r   r   r   r   )r   r:   r2   r*   r?   )r   r   r   r   Útest_detach_scale¤   s
    "z)TestDimensionsHighLevel.test_detach_scalec             C   sr   | j d d | j d< | j d jd  | j d ¡ |  t| j d jd ƒd¡ |  | j d jd d | j d ¡ d S )Nr   .Zx3r   r   r   )r   r:   r   r*   r?   )r   r   r   r   Útest_attach_scale«   s    z)TestDimensionsHighLevel.test_attach_scalec          	   C   sž   |   | jd jd d | jd ¡ |  t¡$ | jd jd d | jd f W d Q R X |   | jd jd d | jd ¡ |   | jd jd d | jd ¡ d S )	Nr   r   r   r   r   r   rL   zx2 name)r*   r   r:   r<   ÚRuntimeError)r   r   r   r   Útest_get_dimension_scale±   s
    "("z0TestDimensionsHighLevel.test_get_dimension_scalec             C   s8   |   | jd jd  ¡ d| jd fd| jd fg¡ d S )Nr   r   rL   r   zx2 namer   )r*   r   r:   Úitems)r   r   r   r   Útest_get_items¸   s    z&TestDimensionsHighLevel.test_get_itemsc             C   s$   |   | jd jd  ¡ ddg¡ d S )Nr   r   rL   zx2 name)r*   r   r:   Úkeys)r   r   r   r   Útest_get_keys¾   s    z%TestDimensionsHighLevel.test_get_keysc             C   s0   |   | jd jd  ¡ | jd | jd g¡ d S )Nr   r   r   r   )r*   r   r:   Úvalues)r   r   r   r   Útest_get_valuesÁ   s    z'TestDimensionsHighLevel.test_get_valuesc             C   s*   |   dd„ | jd jd D ƒddg¡ d S )Nc             S   s   g | ]}|‘qS r   r   )rA   Úir   r   r   rC   È   s    z5TestDimensionsHighLevel.test_iter.<locals>.<listcomp>r   r   rL   zx2 name)r*   r   r:   )r   r   r   r   rD   Ç   s    z!TestDimensionsHighLevel.test_iterc             C   sH   | j d }|  t|jd ƒdd… d¡ | j  ¡  |  t|jƒt¡ d S )Nr   r   r   é   z"x" dimension 2)r   r*   rG   r:   r    rF   rH   )r   rI   r   r   r   rJ   Ê   s    

z!TestDimensionsHighLevel.test_reprc             C   st   | j d jd | j d jd< |  t| j d jd ƒd¡ |  t| j d jd ƒd¡ |  t| j d jd ƒd¡ d S )Nr   ZDIMENSION_LISTr   r   r   r   )r   r,   r*   r?   r:   )r   r   r   r   Útest_attributesÐ   s
    
z'TestDimensionsHighLevel.test_attributesc             C   sp   |   | jd j¡ |   | jd j¡ |   | jd j¡ |  | jd j¡ |  | jd j¡ |  | jd j¡ dS )zTest Dataset.is_scale propertyr   r   r   r   r   r   N)r(   r   r)   r/   )r   r   r   r   Útest_is_scale×   s    z%TestDimensionsHighLevel.test_is_scaleN)r"   r#   r$   r@   rO   rP   rQ   rR   rT   rV   rX   rZ   rD   rJ   r]   r^   r   r   r   r   rK   Œ   s   rK   )ÚsysÚnumpyr   Úcommonr   r   r   r   r   r   r   r&   r9   rK   r   r   r   r   Ú<module>
   s   #5!