o
    b¦µiµ  ã                   @   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   ÚnpÚonesÚh5pyÚh5dsÚ	set_scaleÚidÚattach_scaleÚ	set_label©Úself© r"   úT/home/ubuntu/.local/lib/python3.10/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                   @   s8   e Zd ZdZdd„ Zdd„ Zdd„ Z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   ó    Ú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   ÚassertFalser0   Ú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   r4   r   r   Údetach_scaler5   r0   r6   r    r"   r"   r#   Útest_detach_dimensionscaleM   s   ÿ ÿ"z+TestH5DSBindings.test_detach_dimensionscalec                 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   )r0   r   r   Ú	get_labelr   r   r    r"   r"   r#   Útest_label_dimensionscaleW   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   r1   )ÚdsidÚresr"   r"   r#   Úfunc]   s   ÿz8TestH5DSBindings.test_iter_dimensionscales.<locals>.funcr   r   r   r   )r   r   Úiterater   r   r0   r1   )r!   r>   r=   r"   r"   r#   Útest_iter_dimensionscales\   s   z*TestH5DSBindings.test_iter_dimensionscalesN)	r'   r(   r)   r*   r3   r7   r9   r;   r@   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   Úfoobarr   s   foobazÚfoobaz)r   Ú
make_scaler0   Údimsr   r    r"   r"   r#   Útest_make_scaleh   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   rE   r    r"   r"   r#   Útest_get_dimensionq   s   "ÿz'TestDimensionManager.test_get_dimensionc                 C   s4   |   t| jd jƒd¡ |   t| jd jƒd¡ d S )Nr   r   r   ©r0   Úlenr   rE   r    r"   r"   r#   Útest_lenu   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   rE   r0   )r!   rE   r"   r"   r#   Ú	test_itery   s
   þzTestDimensionManager.test_iterc                 C   s@   | j  dd¡}|  t|jƒt¡ | j  ¡  |  t|jƒt¡ d S )NÚx)r   r   )r   Úcreate_datasetÚassertIsInstanceÚreprrE   Ústrr%   ©r!   Údsr"   r"   r#   Ú	test_repr€   s   
zTestDimensionManager.test_reprN)r'   r(   r)   rF   rI   rL   rR   rZ   r"   r"   r"   r#   rA   f   s    	rA   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   rJ   r    r"   r"   r#   rL   ‰   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   rS   r   Ú r   Úzr   )r0   r   rE   Ú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 )NÚfoor   r   r   rS   r   r\   )r   rE   r^   r0   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   rE   r8   r0   rK   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   .Úx3r   r   r   )r   rE   r   r0   rK   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   r\   úx2 name)r0   r   rE   rG   Ú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   r\   r   re   r   )r0   r   rE   Ú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   r\   re   )r0   r   rE   Ú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   )r0   r   rE   Ú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   rM   r"   r"   )rN   Úir"   r"   r#   rP   Ã   rQ   z5TestDimensionsHighLevel.test_iter.<locals>.<listcomp>r   r   r\   re   )r0   r   rE   r    r"   r"   r#   rR   Â   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   r0   rV   rE   r%   rU   rW   rX   r"   r"   r#   rZ   Å   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   ÚDIMENSION_LISTr   r   r   r   )r   r2   r0   rK   rE   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/   r5   r    r"   r"   r#   Útest_is_scaleÒ   s   z%TestDimensionsHighLevel.test_is_scaleN)r'   r(   r)   rL   r_   ra   rb   rd   rg   ri   rk   rm   rR   rZ   rq   rr   r"   r"   r"   r#   r[   ‡   s    r[   )ÚsysÚnumpyr   Úcommonr   r   r   r   r   r   r   r+   rA   r[   r"   r"   r"   r#   Ú<module>   s   	#0!