U
    ½mœdè  ã                   @   s¨   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„ deƒ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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                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚBaseTestc                 C   s   t |  ¡ dƒ| _d S ©NÚw)r   ÚmktempÚf©Úself© r   úM/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/h5py/tests/test_base.pyÚsetUp   s    zBaseTest.setUpc                 C   s   | j r| j  ¡  d S ©N)r   Úcloser   r   r   r   ÚtearDown   s    zBaseTest.tearDownN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r	      s   r	   c                   @   s   e Zd ZdZdd„ ZdS )ÚTestNamez>
        Feature: .name attribute returns the object name
    c                 C   s   | j  d¡}|  |jd¡ dS )z" Anonymous objects have name None N)r   Úcreate_groupZassertIsÚname©r   Úgrpr   r   r   Útest_anonymous(   s    zTestName.test_anonymousN)r   r   r   Ú__doc__r   r   r   r   r   r   "   s   r   c                   @   s   e Zd ZdZdd„ ZdS )Ú
TestParentzG
        test the parent group of the high-level interface objects
    c              	   C   sV   | j  d ¡}|  t¡� |j W 5 Q R X | j  d¡}| d¡}|jj}|  |d¡ d S )NÚbarZfooz/bar)r   r   ÚassertRaisesÚ
ValueErrorÚparentr   ÚassertEqual)r   r   Zsub_grpr$   r   r   r   Útest_object_parent3   s    
zTestParent.test_object_parentN)r   r   r   r   r&   r   r   r   r   r    -   s   r    c                       s8   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Zdd	„ Z‡  ZS )
ÚTestMappingzX
        Test if the registration of Group as a
        Mapping behaves as expected
    c                    s2   t ƒ  ¡  d}| j d¡| _| jj d|¡| _d S )N)ÚaÚbr!   Úx)Úsuperr   r   r   r   ÚattrsÚcreateÚattr©r   Údata©Ú	__class__r   r   r   G   s    
zTestMapping.setUpc                 C   s8   | j  ¡ }|  t|ƒt¡ | j ¡ }|  t|ƒt¡ d S r   )r   ÚkeysÚassertIsInstanceÚreprÚstrr   )r   Zkey_1Zkey_2r   r   r   Ú	test_keysM   s    

zTestMapping.test_keysc                 C   s8   | j  ¡ }|  t|ƒt¡ | j ¡ }|  t|ƒt¡ d S r   )r   Úvaluesr4   r5   r6   r   )r   Zvalue_1Zvalue_2r   r   r   Útest_valuesS   s    

zTestMapping.test_valuesc                 C   s8   | j  ¡ }|  t|ƒt¡ | j ¡ }|  t|ƒt¡ d S r   )r   Úitemsr4   r5   r6   r   )r   Zitem_1Zitem_2r   r   r   Ú
test_itemsY   s    

zTestMapping.test_items)	r   r   r   r   r   r7   r9   r;   Ú__classcell__r   r   r1   r   r'   @   s
   r'   c                   @   s^   e Zd ZdZedƒedƒ Zdd„ Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
e e d¡dd„ ƒZdS )ÚTestReprz7
        repr() works correctly with Unicode names
    éü   éß   c                 C   s   |   t|ƒt¡ d S r   )r4   r5   r6   )r   Úobjr   r   r   Ú_check_typeh   s    zTestRepr._check_typec                 C   s   | j  | j¡}|  |¡ dS )z Group repr() with unicode N)r   r   ÚUSTRINGrA   r   r   r   r   Ú
test_groupk   s    zTestRepr.test_groupc                 C   s   | j  | jd¡}|  |¡ dS )z Dataset repr() with unicode )r   N)r   Zcreate_datasetrB   rA   )r   Zdsetr   r   r   Útest_datasetp   s    zTestRepr.test_datasetc                 C   s(   t  d¡| jd< | jd }|  |¡ dS )z  Named type repr() with unicode r   ÚtypeN)ÚnpÚdtyper   rA   )r   Útypr   r   r   Útest_namedtypeu   s    
zTestRepr.test_namedtypec                 C   s*   t dd�}|  t dd�|¡ |  |¡ d S )Nr   )rG   Úi)r   ZassertNotEqualrA   r/   r   r   r   Ú
test_empty{   s    
zTestRepr.test_emptyz#Filesystem unicode support requiredc                 C   s`   t  | jd ¡}z$t|dƒ�}|  |¡ W 5 Q R X W 5 zt |¡ W n tk
rX   Y nX X dS )z! File object repr() with unicode z.hdf5r   N)Útempfiler   rB   ÚosÚunlinkÚ	Exceptionr   rA   )r   Úfnamer   r   r   r   Ú	test_file€   s    zTestRepr.test_fileN)r   r   r   r   ÚchrrB   rA   rC   rD   rI   rK   r   ZskipIfr   rQ   r   r   r   r   r=   `   s   r=   c                  C   s4   t t ¡ dƒj} t| ƒst‚t ¡ } t| ƒr0t‚d S r
   )r   rL   r   Úfilenamer   ÚAssertionError)rS   r   r   r   Útest_is_hdf5�   s    rU   )r   Zh5pyr   Zh5py._hl.baser   r   Úcommonr   r   r   ÚnumpyrF   rM   rL   r	   r   r    r'   r=   rU   r   r   r   r   Ú<module>
   s   
 -