
    d                         d Z ddlmZ ddlmZmZ ddlmZmZm	Z	 ddl
Zddl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 G d de          Zd ZdS )zv
    Common high-level operations test

    Tests features common to all high-level objects, like the .name property.
    )File)is_hdf5Empty   )utTestCaseUNICODE_FILENAMESNc                       e Zd Zd Zd ZdS )BaseTestc                 T    t          |                                 d          | _        d S Nw)r   mktempfselfs    4lib/python3.11/site-packages/h5py/tests/test_base.pysetUpzBaseTest.setUp   s    dkkmmS))    c                 J    | j         r| j                                          d S d S N)r   closer   s    r   tearDownzBaseTest.tearDown   s)    6 	FLLNNNNN	 	r   N)__name__
__module____qualname__r   r    r   r   r   r      s2        * * *    r   r   c                       e Zd ZdZd ZdS )TestNamez>
        Feature: .name attribute returns the object name
    c                 p    | j                             d          }|                     |j        d           dS )z" Anonymous objects have name None N)r   create_groupassertIsnamer   grps     r   test_anonymouszTestName.test_anonymous(   s3    f!!$''ch%%%%%r   N)r   r   r   __doc__r&   r   r   r   r   r   "   s-         & & & & &r   r   c                       e Zd ZdZd ZdS )
TestParentzG
        test the parent group of the high-level interface objects
    c                 N   | j                             d           }|                     t                    5  |j         d d d            n# 1 swxY w Y   | j                             d          }|                    d          }|j        j        }|                     |d           d S )Nbarfooz/bar)r   r!   assertRaises
ValueErrorparentr#   assertEqual)r   r%   sub_grpr/   s       r   test_object_parentzTestParent.test_object_parent3   s    f!!$''z** 	 	JJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 f!!%((""5))$(((((s   A		AAN)r   r   r   r'   r2   r   r   r   r)   r)   -   s-         ) ) ) ) )r   r)   c                   4     e Zd ZdZ fdZd Zd Zd Z xZS )TestMappingzX
        Test if the registration of Group as a
        Mapping behaves as expected
    c                     t                                                       d}| j                            d          | _        | j        j                            d|          | _        d S )N)abr+   x)superr   r   r!   r%   attrscreateattr)r   data	__class__s     r   r   zTestMapping.setUpG   sO    6&&u--FL''T22			r   c                 
   | j                                         }|                     t          |          t                     | j                                        }|                     t          |          t                     d S r   )r   keysassertIsInstancereprstrr%   )r   key_1key_2s      r   	test_keyszTestMapping.test_keysM   s^    d5kk3///d5kk3/////r   c                 
   | j                                         }|                     t          |          t                     | j                                        }|                     t          |          t                     d S r   )r   valuesrA   rB   rC   r%   )r   value_1value_2s      r   test_valueszTestMapping.test_valuesS   s`    &--//d7mmS111(//##d7mmS11111r   c                 
   | j                                         }|                     t          |          t                     | j                                        }|                     t          |          t                     d S r   )r   itemsrA   rB   rC   r%   )r   item_1item_2s      r   
test_itemszTestMapping.test_itemsY   s`    d6llC000!!d6llC00000r   )	r   r   r   r'   r   rF   rK   rP   __classcell__)r>   s   @r   r4   r4   @   so         
3 3 3 3 30 0 02 2 21 1 1 1 1 1 1r   r4   c                       e Zd ZdZ ed           ed          z   Zd Zd Zd Zd Z	d Z
 ej        e d	          d
             ZdS )TestReprz7
        repr() works correctly with Unicode names
          c                 V    |                      t          |          t                     d S r   )rA   rB   rC   )r   objs     r   _check_typezTestRepr._check_typeh   s$    d3ii-----r   c                 n    | j                             | j                  }|                     |           dS )z Group repr() with unicode N)r   r!   USTRINGrX   r$   s     r   
test_groupzTestRepr.test_groupk   s3    f!!$,//r   c                 p    | j                             | j        d          }|                     |           dS )z Dataset repr() with unicode )r   N)r   create_datasetrZ   rX   )r   dsets     r   test_datasetzTestRepr.test_datasetp   s5    v$$T\488r   c                     t          j        d          | j        d<   | j        d         }|                     |           dS )z  Named type repr() with unicode r   typeN)npdtyper   rX   )r   typs     r   test_namedtypezTestRepr.test_namedtypeu   s:    #vfVnr   c                     t          d          }|                     t          d          |           |                     |           d S )Nr   )rc   i)r   assertNotEqualrX   )r   r=   s     r   
test_emptyzTestRepr.test_empty{   sM    3E,,,d333r   z#Filesystem unicode support requiredc                 Z   t          j        | j        dz             }	 t          |d          5 }|                     |           ddd           n# 1 swxY w Y   	 t          j        |           dS # t          $ r Y dS w xY w# 	 t          j        |           w # t          $ r Y w w xY wxY w)z! File object repr() with unicode z.hdf5r   N)tempfiler   rZ   r   rX   osunlink	Exception)r   fnamer   s      r   	test_filezTestRepr.test_file   s    W 455	eC $A  ###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $	%        	%       sd   B AB AB AB A2 2
B ?B B*BB*
B'$B*&B''B*N)r   r   r   r'   chrrZ   rX   r[   r_   re   ri   r   skipIfr	   rp   r   r   r   rS   rS   `   s          c$ii##d))#G. . .  
  
    
 RY$$&KLL
 
 ML
 
 
r   rS   c                      t          t          j                    d          j        } t	          |           sJ t          j                    } t	          |           rJ d S r   )r   rk   r   filenamer   )rt   s    r   test_is_hdf5ru      sW    HO%%s++4H8  Hx       r   )r'   h5pyr   h5py._hl.baser   r   commonr   r   r	   numpyrb   rl   rk   r   r   r)   r4   rS   ru   r   r   r   <module>rz      sd          ( ( ( ( ( ( ( ( 3 3 3 3 3 3 3 3 3 3     				     x   	& 	& 	& 	& 	&x 	& 	& 	&) ) ) ) ) ) ) )&1 1 1 1 1( 1 1 1@+ + + + +x + + +Z! ! ! ! !r   