o
    g×ič   ć                   @   st   d dl ZddlmZmZ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Śis_main_threadŚ	make_name)Ś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"   ś^/home/ubuntu/SoloSpeech/.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   ŚassertFalser0   Śget_num_scalesr    r"   r"   r#   Śtest_attach_dimensionscaleB   s   ’’"z+TestH5DSBindings.test_attach_dimensionscalec                 C   sä   t  }t dd”| j|< | j| }tj |j| jd jd” tj |j| jd jd” |  tj 	|j| jd jd”” |  
tj |jd”d” tj |j| jd jd” |  tj 	|j| jd jd”” |  
tj |jd”d” d S )Nr	   r   r   r   r   r   )r   r   r   r   r   r   r   r   r.   r4   r0   r6   Śdetach_scaler5   ©r!   ŚnameŚdsr"   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   )r0   r   r   Ś	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   r1   )ŚdsidŚresr"   r"   r#   Śfunc^   s   ’z8TestH5DSBindings.test_iter_dimensionscales.<locals>.funcr   r   r   r   )r   r   Śiterater   r   r0   r1   )r!   rA   r@   r"   r"   r#   Śtest_iter_dimensionscales]   s   z*TestH5DSBindings.test_iter_dimensionscalesN)	r'   r(   r)   r*   r3   r7   r<   r>   rC   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_scaler0   Śdimsr   r    r"   r"   r#   Śtest_make_scalei   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   rH   r    r"   r"   r#   Śtest_get_dimensionr   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   rH   r    r"   r"   r#   Śtest_lenv   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   rH   r0   )r!   rH   r"   r"   r#   Ś	test_iterz   s
   žzTestDimensionManager.test_iterc                 C   sN   | j  t dd”}|  t|jt” t r%| j  ”  |  t|jt” d S d S )N)r   r   Śf4)	r   Ścreate_datasetr   ŚassertIsInstanceŚreprrH   Śstrr   r%   ©r!   r;   r"   r"   r#   Ś	test_repr   s   
žzTestDimensionManager.test_reprN)r'   r(   r)   rI   rL   rO   rU   r\   r"   r"   r"   r#   rD   g   s    	rD   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   rM   r    r"   r"   r#   rO      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   Śxr   Ś r   Śzr   )r0   r   rH   Ś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   r^   r   r_   )r   rH   ra   r0   r    r"   r"   r#   Śtest_set_label   s   z&TestDimensionsHighLevel.test_set_labelc                 C   s  t d}| jd d | j|< | j| }|jd  | jd ” |jd  | jd ” |  t|jd d” |  |jd d | jd ” |  |jd d | jd ” |jd  | jd ” |  t|jd d” |  |jd d | jd ” |jd  | jd ” |  t|jd d” d S )	NŚdata3r   .r   r   r   r   r   )r   r   rH   r   r0   rN   r8   r9   r"   r"   r#   Śtest_attach_detach_scale¢   s   
z0TestDimensionsHighLevel.test_attach_detach_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   rH   rJ   Ś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   rg   r   )r0   r   rH   Ś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_   rg   )r0   r   rH   Ś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   rH   Ś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   rP   r"   r"   )rQ   Śir"   r"   r#   rS   Ź   rT   z5TestDimensionsHighLevel.test_iter.<locals>.<listcomp>r   r   r_   rg   )r0   r   rH   r    r"   r"   r#   rU   É   s   *z!TestDimensionsHighLevel.test_iterc                 C   sR   | j d }|  t|jd dd d” t r'| j  ”  |  t|jt” d S d S )Nr   r   r   é   z"x" dimension 2)r   r0   rY   rH   r   r%   rX   rZ   r[   r"   r"   r#   r\   Ģ   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   rN   rH   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)   rO   rb   rd   rf   ri   rk   rm   ro   rU   r\   rs   rt   r"   r"   r"   r#   r]      s    r]   )Śnumpyr   Ścommonr   r   r   r   r   r   r+   rD   r]   r"   r"   r"   r#   Ś<module>   s   
#2#