o
    µ2śh  ć                   @   sl   d dl ZddlmZ d dl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é   )ŚTestCase)ŚFilec                   @   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   ś[/var/www/html/chatgem/venv/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    ŚtearDown0   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   ŚassertFalser-   Śget_num_scalesr   r   r   r    Śtest_attach_dimensionscaleB   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   r1   r
   r   Śdetach_scaler2   r-   r3   r   r   r   r    Śtest_detach_dimensionscaleL   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   )r-   r   r   Ś	get_labelr
   r   r   r   r   r    Śtest_label_dimensionscaleV   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.   )ŚdsidŚresr   r   r    Śfunc\   s   ’z8TestH5DSBindings.test_iter_dimensionscales.<locals>.funcr   r	   r   r   )r   r   Śiterater
   r   r-   r.   )r   r;   r:   r   r   r    Śtest_iter_dimensionscales[   s   z*TestH5DSBindings.test_iter_dimensionscalesN)	r$   r%   r&   r'   r0   r4   r6   r8   r=   r   r   r   r    r(   5   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_scaler-   Śdimsr   r   r   r   r    Śtest_make_scaleg   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
   rB   r   r   r   r    Śtest_get_dimensionp   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
   rB   r   r   r   r    Śtest_lent   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
   rB   r-   )r   rB   r   r   r    Ś	test_iterx   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ŚreprrB   Śstrr"   ©r   Śdsr   r   r    Ś	test_repr   s   
zTestDimensionManager.test_reprN)r$   r%   r&   rC   rF   rI   rO   rW   r   r   r   r    r>   e   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   rG   r   r   r   r    rI      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	   rP   r   Ś r   Śzr   )r-   r
   rB   Ś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	   rP   r   rY   )r
   rB   r[   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
   rB   r5   r-   rH   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
   rB   r   r-   rH   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   rY   śx2 name)r-   r
   rB   rD   Ś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	   rY   r   rb   r   )r-   r
   rB   Ś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	   rY   rb   )r-   r
   rB   Ś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
   rB   Ś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   rJ   r   r   )rK   Śir   r   r    rM   Ā   rN   z5TestDimensionsHighLevel.test_iter.<locals>.<listcomp>r   r	   rY   rb   )r-   r
   rB   r   r   r   r    rO   Į   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-   rS   rB   r"   rR   rT   rU   r   r   r    rW   Ä   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
   r/   r-   rH   rB   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,   r2   r   r   r   r    Śtest_is_scaleŃ   s   z%TestDimensionsHighLevel.test_is_scaleN)r$   r%   r&   rI   r\   r^   r_   ra   rd   rf   rh   rj   rO   rW   rn   ro   r   r   r   r    rX      s    rX   )
Śnumpyr   Ścommonr   r   r   r   r(   r>   rX   r   r   r   r    Ś<module>   s   
#0!