o
    šeQ!  ć                   @   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Śx2ó   x2 namer   Śy1s   y1 namer   r
   Śz1r   ó   zó   x)r   Śmktempr   ŚnpZonesŚh5pyŚh5dsZ	set_scaleŚidŚattach_scaleZ	set_label©Śself© r   śPD:\Projects\ConvertPro\env\Lib\site-packages\h5py/tests/test_dimension_scales.pyŚsetUp   s      zBaseDataset.setUpc                 C   s   | j r
| j  ”  d S d S )N)r   Ścloser   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   r   N)	Ś
assertTruer   r   Śis_scaler   r   ŚassertEqualŚget_scale_nameŚattrsr   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_scalesr   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   r0   r   r   Śdetach_scaler1   r,   r2   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 )Nr   )r   r   r-   )ZdsidŚresr   r   r    Śfuncb   s   ’z8TestH5DSBindings.test_iter_dimensionscales.<locals>.funcr   r   r   r   )r   r   Ziterater   r   r,   r-   )r   r8   r7   r   r   r    Śtest_iter_dimensionscalesa   s   z*TestH5DSBindings.test_iter_dimensionscalesN)r$   r%   r&   r'   r/   r3   r5   r   Z
skipUnlessr   ŚversionZhdf5_version_tupler6   r9   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    d S 1 sw   Y  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   ó   g | ]}|qS r   r   )Ś.0Śdr   r   r    Ś
<listcomp>   ó    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   Zdsr   r   r    Ś	test_repr   s   
zTestDimensionManager.test_reprN)r$   r%   r&   r=   r@   rC   rI   rO   r   r   r   r    r;   k   s    	r;   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   rA   r   r   r   r    rC      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   rJ   r   Ś r   Śzr   )r,   r   r<   Ślabelr   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   rJ   r   rQ   )r   r<   rS   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<   r4   r,   rB   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,   rB   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    n1 s0w   Y  |   | jd jd d | jd ” |   | jd jd d | jd ” d S )	Nr   r   r   r   r   r   rQ   śx2 name)r,   r   r<   r>   ŚRuntimeErrorr   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   rQ   r   rX   r   )r,   r   r<   Śitemsr   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   rQ   rX   )r,   r   r<   Śkeysr   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<   Śvaluesr   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   rD   r   r   )rE   Śir   r   r    rG   Č   rH   z5TestDimensionsHighLevel.test_iter.<locals>.<listcomp>r   r   rQ   rX   )r,   r   r<   r   r   r   r    rI   Ē   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,   rL   r<   r"   rK   rM   rN   r   r   r    rO   Ź   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,   rB   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+   r1   r   r   r   r    Śtest_is_scale×   s   z%TestDimensionsHighLevel.test_is_scaleN)r$   r%   r&   rC   rT   rU   rV   rW   rZ   r\   r^   r`   rI   rO   rc   rd   r   r   r   r    rP      s    rP   )ŚsysŚnumpyr   Ścommonr   r   r   r   r   r   r   r(   r;   rP   r   r   r   r    Ś<module>   s   	#5!