a
    v=ic  ã                   @   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
   Zz1r   ó   zó   x)r   Úmktempr   ÚnpZonesÚh5pyÚh5dsZ	set_scaleÚidÚattach_scaleZ	set_label©Úself© r   úq/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/h5py/tests/test_dimension_scales.pyÚsetUp   s       zBaseDataset.setUpc                 C   s   | j r| j  ¡  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   Z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   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 )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   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   ƒ n1 s00    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   s   g | ]}|‘qS r   r   )Ú.0Údr   r   r   Ú
<listcomp>   r(   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>   rA   rE   rK   r   r   r   r   r9   k   s
   	r9   c                   @   sl   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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   rA   Ž   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   rF   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   rF   r   rM   )r   r:   rO   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   ƒ n1 s`0    Y  |   | jd jd d | jd ¡ |   | jd jd d | jd ¡ d S )	Nr   r   r   r   r   r   rM   ú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   rM   r   rT   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   rM   rT   )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   s   g | ]}|‘qS r   r   )rB   Úir   r   r   rD   È   r(   z5TestDimensionsHighLevel.test_iter.<locals>.<listcomp>r   r   rM   rT   )r*   r   r:   r   r   r   r   rE   Ç   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*   rH   r:   r!   rG   rI   rJ   r   r   r   rK   Ê   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_attributesN)r#   r$   r%   rA   rP   rQ   rR   rS   rV   rX   rZ   r\   rE   rK   r_   r   r   r   r   rL   Œ   s   rL   )ÚsysÚnumpyr   Úcommonr   r   r   r   r   r   r   r'   r9   rL   r   r   r   r   Ú<module>
   s   #5!