
    1Vh                         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e      Z
 G d de
      Z G d	 d
e
      Z G d de
      Zy)    N   )utTestCase)FileGroupDatasetc                       e Zd ZdZd Zd Zy)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                    t        | j                         d      | _        t        j                  dd      | j                  d<   t        j                  dd      | j                  d<   t        j                  dd      | j                  d<   t
        j                  j                  | j                  d   j                         t
        j                  j                  | j                  d   j                  | j                  d   j                  d       t        j                  dd      | j                  d<   t
        j                  j                  | j                  d   j                  d	       t
        j                  j                  | j                  d   j                  | j                  d   j                  d       t        j                  d
d      | j                  d<   t
        j                  j                  | j                  d   j                  d       t
        j                  j                  | j                  d   j                  | j                  d   j                  d       t        j                  dd      | j                  d<   t
        j                  j                  | j                  d   j                  dd       t
        j                  j                  | j                  d   j                  dd       y )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selfs    P/home/dcms/DCMS/lib/python3.12/site-packages/h5py/tests/test_dimension_scales.pysetUpzBaseDataset.setUp   s   dkkmS)C0v'')S1wwwC(t		DFF4LOO,		tvvf~00$&&,//1EwwC(t		DFF4LOOZ8		tvvf~00$&&,//1EwwC(t		DFF4LOOZ8		tvvf~00$&&,//1EwwC(t		DFF6N--q$7		DFF6N--q$7    c                 R    | j                   r| j                   j                          y y )N)r   closer#   s    r%   tearDownzBaseDataset.tearDown1   s    66FFLLN r'   N)__name__
__module____qualname____doc__r&   r*    r'   r%   r
   r
      s    8$r'   r
   c                   .    e Zd ZdZd Zd Zd Zd Zd Zy)TestH5DSBindingszA
        Feature: Datasets can be created from existing data
    c                    | j                  t        j                  j                  | j                  d   j
                               | j                  t        j                  j                  | j                  d   j
                        d       | j                  | j                  d   j                  d   d       | j                  t        j                  j                  | j                  d   j
                        d       y)z0 Create a dimension scale from existing dataset r   r'   CLASSs   DIMENSION_SCALEr   r   N)	
assertTruer   r   is_scaler   r    assertEqualget_scale_nameattrsr#   s    r%   test_create_dimensionscalez+TestH5DSBindings.test_create_dimensionscale<   s    		**466$<??;<11$&&,//BCH++G46HI11$&&,//BJOr'   c                 &   | j                  t        j                  j                  | j                  d   j
                  | j                  d   j
                  d             | j                  t        j                  j                  | j                  d   j
                  | j                  d   j
                  d             | j                  t        j                  j                  | j                  d   j
                  d      d       | j                  t        j                  j                  | j                  d   j
                  d      d       | j                  t        j                  j                  | j                  d   j
                  d      d       y )Nr   r   r   r   r   )	r4   r   r   is_attachedr   r    assertFalser6   get_num_scalesr#   s    r%   test_attach_dimensionscalez+TestH5DSBindings.test_attach_dimensionscaleC   s   II!!$&&."3"3TVVD\__aH	 	II!!$&&."3"3TVVD\__aH	J11$&&.2C2CQGK11$&&.2C2CQGK11$&&.2C2CQGKr'   c                    | j                  t        j                  j                  | j                  d   j
                  | j                  d   j
                  d             t        j                  j                  | j                  d   j
                  | j                  d   j
                  d       | j                  t        j                  j                  | j                  d   j
                  | j                  d   j
                  d             | j                  t        j                  j                  | j                  d   j
                  d      d       y )Nr   r   r   r   )
r4   r   r   r;   r   r    detach_scaler<   r6   r=   r#   s    r%   test_detach_dimensionscalez+TestH5DSBindings.test_detach_dimensionscaleM   s    II!!$&&."3"3TVVD\__aH	 			tvvf~00$&&,//1EII!!$&&."3"3TVVD\__aH	 	11$&&.2C2CQGKr'   c                    | j                  t        j                  j                  | j                  d   j
                  d      d       | j                  t        j                  j                  | j                  d   j
                  d      d       | j                  t        j                  j                  | j                  d   j
                  d      d       y )Nr   r   r   r   r'   r   r   )r6   r   r   	get_labelr   r    r#   s    r%   test_label_dimensionscalez*TestH5DSBindings.test_label_dimensionscaleW   s    ,,TVVF^->->BDI,,TVVF^->->BCH,,TVVF^->->BDIr'   c                     d }t         j                  j                  | j                  d   j                  d|d      }| j                  t         j                  j                  |      d       y )Nc                 P    t         j                  j                  |       }|dk(  r| S y )Nr   )r   r   r7   )dsidress     r%   funcz8TestH5DSBindings.test_iter_dimensionscales.<locals>.func]   s(    ))**40Cj  !r'   r   r   r   r   )r   r   iterater   r    r6   r7   )r$   rI   rH   s      r%   test_iter_dimensionscalesz*TestH5DSBindings.test_iter_dimensionscales\   sP    	
 iiv 1 11dA>11#6
Cr'   N)	r+   r,   r-   r.   r9   r>   rA   rD   rK   r/   r'   r%   r1   r1   6   s%    PLLJ
Dr'   r1   c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestDimensionManagerc                    | j                   d   j                  d       | j                  | j                   d   j                  d   d   | j                   d          | j                   d   j                  d       | j                   d   j                  d   j	                  | j                   d          | j                  | j                   d   j                  d   d   | j                   d          y )	Nr   s   foobarr   r   foobarr   s   foobazfoobaz)r   
make_scaler6   dimsr!   r#   s    r%   test_make_scalez$TestDimensionManager.test_make_scaleh   s    t	*,,Q/9466$<Hw""9-vA++DFF7O<,,Q/9466'?Kr'   c                     | j                  t              5  | j                  d   j                  d    d d d        y # 1 sw Y   y xY w)Nr   r   )assertRaises
IndexErrorr   rR   r#   s    r%   test_get_dimensionz'TestDimensionManager.test_get_dimensionq   s;    z* 	#FF6N"	# 	# 	#s	   <Ac                     | j                  t        | j                  d   j                        d       | j                  t        | j                  d   j                        d       y )Nr   r   r   r6   lenr   rR   r#   s    r%   test_lenzTestDimensionManager.test_lenu   sH    TVVF^00115TVVG_112A6r'   c                     | j                   d   j                  }| j                  |D cg c]  }| c}|d   |d   |d   g       y c c}w )Nr   r   r   r   )r   rR   r6   )r$   rR   ds      r%   	test_iterzTestDimensionManager.test_itery   sJ    vvf~""1Q!Wd1gtAw'	s   	Ac                    | j                   j                  dd      }| j                  t        |j                        t
               | j                   j                          | j                  t        |j                        t
               y )Nx)r   r   )r   create_datasetassertIsInstancereprrR   strr)   r$   dss     r%   	test_reprzTestDimensionManager.test_repr   sU    VV""3.d277mS1d277mS1r'   N)r+   r,   r-   rS   rW   r[   r^   rg   r/   r'   r%   rM   rM   f   s    L#72r'   rM   c                   Z    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)TestDimensionsHighLevelc                    | j                  t        | j                  d   j                  d         d       | j                  t        | j                  d   j                  d         d       | j                  t        | j                  d   j                  d         d       | j                  t        | j                  d   j                  d         d       | j                  t        | j                  d   j                  d         d       | j                  t        | j                  d   j                  d         d       y )Nr   r   r   r   r   rY   r#   s    r%   r[   z TestDimensionsHighLevel.test_len   s    TVVF^0034a8TVVF^0034a8TVVF^0034a8TVVG_11!45q9TVVG_11!45q9TVVG_11!45q9r'   c                    | j                  | j                  d   j                  d   j                  d       | j                  | j                  d   j                  d   j                  d       | j                  | j                  d   j                  d   j                  d       | j                  | j                  d   j                  d   j                  d       | j                  | j                  d   j                  d   j                  d       | j                  | j                  d   j                  d   j                  d       y )	Nr   r   r`   r    r   zr   )r6   r   rR   labelr#   s    r%   test_get_labelz&TestDimensionsHighLevel.test_get_label   s    ,,Q/55s;,,Q/55r:,,Q/55s;--a066;--a066;--a066;r'   c                    d| j                   d   j                  d   _        | j                  | j                   d   j                  d   j                  d       | j                  | j                   d   j                  d   j                  d       | j                  | j                   d   j                  d   j                  d       y )Nfoor   r   r   r`   r   rl   )r   rR   rn   r6   r#   s    r%   test_set_labelz&TestDimensionsHighLevel.test_set_label   s    ',vA$,,Q/55s;,,Q/55r:,,Q/55u=r'   c                 0   | j                   d   j                  d   j                  | j                   d          | j                  t	        | j                   d   j                  d         d       | j                  | j                   d   j                  d   d   | j                   d          | j                   d   j                  d   j                  | j                   d          | j                  t	        | j                   d   j                  d         d       y )Nr   r   r   r   r   r   )r   rR   r@   r6   rZ   r#   s    r%   test_detach_scalez)TestDimensionsHighLevel.test_detach_scale   s    vA++DFF4L9TVVF^0034a8,,Q/2DFF4LAvA++DFF4L9TVVF^0034a8r'   c                    | j                   d   d   | j                   d<   | j                   d   j                  d   j                  | j                   d          | j                  t	        | j                   d   j                  d         d       | j                  | j                   d   j                  d   d   | j                   d          y )Nr   .x3r   r   r   )r   rR   r!   r6   rZ   r#   s    r%   test_attach_scalez)TestDimensionsHighLevel.test_attach_scale   s    vvd|C(tvA++DFF4L9TVVF^0034a8,,Q/2DFF4LAr'   c                    | j                  | j                  d   j                  d   d   | j                  d          | j                  t              5  | j                  d   j                  d   d   | j                  d   f d d d        | j                  | j                  d   j                  d   d   | j                  d          | j                  | j                  d   j                  d   d   | j                  d          y # 1 sw Y   xY w)	Nr   r   r   r   r   r   rl   x2 name)r6   r   rR   rU   RuntimeErrorr#   s    r%   test_get_dimension_scalez0TestDimensionsHighLevel.test_get_dimension_scale   s    ,,Q/2DFF4LA|, 	5FF7O  #A&t4	5,,Q/3TVVD\B,,Q/	:DFF4LI	5 	5s   /DDc                     | j                  | j                  d   j                  d   j                         d| j                  d   fd| j                  d   fg       y )Nr   r   rl   r   ry   r   )r6   r   rR   itemsr#   s    r%   test_get_itemsz&TestDimensionsHighLevel.test_get_items   sQ    FF6N"((*$&&,)TVVD\!:;	r'   c                 |    | j                  | j                  d   j                  d   j                         ddg       y Nr   r   rl   ry   )r6   r   rR   keysr#   s    r%   test_get_keysz%TestDimensionsHighLevel.test_get_keys   s2    ,,Q/446YHr'   c                     | j                  | j                  d   j                  d   j                         | j                  d   | j                  d   g       y )Nr   r   r   r   )r6   r   rR   valuesr#   s    r%   test_get_valuesz'TestDimensionsHighLevel.test_get_values   sG    FF6N"))+VVD\466$<(	r'   c                     | j                  | j                  d   j                  d   D cg c]  }| c}ddg       y c c}w r   )r6   r   rR   )r$   is     r%   r^   z!TestDimensionsHighLevel.test_iter   s7    TVVF^%8%8%;<!<r9oN<s   	>c                     | j                   d   }| j                  t        |j                  d         dd d       | j                   j	                          | j                  t        |j                        t               y )Nr   r   r      z"x" dimension 2)r   r6   rc   rR   r)   rb   rd   re   s     r%   rg   z!TestDimensionsHighLevel.test_repr   sY    VVF^bggaj)!B/1BCd277mS1r'   c                    | j                   d   j                  d   | j                   d   j                  d<   | j                  t        | j                   d   j                  d         d       | j                  t        | j                   d   j                  d         d       | j                  t        | j                   d   j                  d         d       y )Nr   DIMENSION_LISTr   r   r   r   )r   r8   r6   rZ   rR   r#   s    r%   test_attributesz'TestDimensionsHighLevel.test_attributes   s    26&&.2F2F3w./TVVG_11!45q9TVVG_11!45q9TVVG_11!45q9r'   c                    | j                  | j                  d   j                         | j                  | j                  d   j                         | j                  | j                  d   j                         | j                  | j                  d   j                         | j                  | j                  d   j                         | j                  | j                  d   j                         y)zTest Dataset.is_scale propertyr   r   r   r   r   r   N)r4   r   r5   r<   r#   s    r%   test_is_scalez%TestDimensionsHighLevel.test_is_scale   s    t--.t--.t--.../001112r'   N)r+   r,   r-   r[   ro   rr   rt   rw   r{   r~   r   r   r^   rg   r   r   r/   r'   r%   ri   ri      sG    :<>9BJIO2:3r'   ri   )sysnumpyr   commonr   r   r   r   r   r   r
   r1   rM   ri   r/   r'   r%   <module>r      sP        % %  (  F-D{ -D`2; 2BR3k R3r'   