o
    b¦µiÁ  ã                   @   sl   d dl Zd dlmZmZmZ ddlm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)Úh5pÚh5fÚversioné   )ÚTestCasec                   @   sB   e Zd ZdZdd„ Zdd„ Zdd„ Ze e	j
dk d	¡d
d„ ƒZdS )Ú
TestLibverz5
        Feature: Setting/getting lib ver bounds
    c                 C   ó8   t  t j¡}| tjtj¡ |  tjtjf| ¡ ¡ dS )z Test libver bounds set/get N)	r   ÚcreateÚFILE_ACCESSÚset_libver_boundsr   ÚLIBVER_EARLIESTÚLIBVER_LATESTÚassertEqualÚget_libver_bounds©ÚselfÚplist© r   úG/home/ubuntu/.local/lib/python3.10/site-packages/h5py/tests/test_h5p.pyÚtest_libver   ó
   ÿzTestLibver.test_libverc                 C   r   )z. Test libver bounds set/get for H5F_LIBVER_V18N)	r   r	   r
   r   r   r   Ú
LIBVER_V18r   r   r   r   r   r   Útest_libver_v18   r   zTestLibver.test_libver_v18c                 C   r   )z/ Test libver bounds set/get for H5F_LIBVER_V110N)	r   r	   r
   r   r   r   ÚLIBVER_V110r   r   r   r   r   r   Útest_libver_v110%   r   zTestLibver.test_libver_v110)r   é   é   zRequires HDF5 1.11.4 or laterc                 C   r   )z/ Test libver bounds set/get for H5F_LIBVER_V112N)	r   r	   r
   r   r   r   ÚLIBVER_V112r   r   r   r   r   r   Útest_libver_v112,   s
   ÿzTestLibver.test_libver_v112N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   ÚutÚskipIfr   Úhdf5_version_tupler   r   r   r   r   r      s    ÿr   c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚTestDAzU
    Feature: setting/getting chunk cache size on a dataset access property list
    c                 C   s@   t  t j¡}d}d}d}| |||¡ |  |||f| ¡ ¡ dS )útest get/set chunk cache i'  i@B g      à?N)r   r	   ÚDATASET_ACCESSÚset_chunk_cacher   Úget_chunk_cache)r   ÚdalistÚnslotsÚnbytesÚw0r   r   r   Útest_chunk_cache9   s   ÿzTestDA.test_chunk_cachec                 C   st   t  t j¡}|  | ¡  ¡ d¡ d}| | d¡¡ |  | ¡  ¡ |¡ d}| | d¡¡ |  | ¡  ¡ |¡ dS )ztest get/set efile prefix Ú zpath/to/external/datasetúutf-8z	${ORIGIN}N)r   r	   r(   r   Úget_efile_prefixÚdecodeÚset_efile_prefixÚencode)r   r+   Úefile_prefixr   r   r   Útest_efile_prefixD   s   ÿÿzTestDA.test_efile_prefixc                 C   sL   t  t j¡}|  | ¡  ¡ d¡ d}| | d¡¡ |  | ¡  ¡ |¡ dS )ztest get/set virtual prefix r0   zpath/to/virtual/datasetr1   N)r   r	   r(   r   Úget_virtual_prefixr3   Úset_virtual_prefixr5   )r   r+   Úvirtual_prefixr   r   r   Útest_virtual_prefixS   s   ÿzTestDA.test_virtual_prefixN)r   r    r!   r"   r/   r7   r;   r   r   r   r   r&   5   s
    r&   c                   @   sZ   e Zd ZdZdd„ Zdd„ Ze ej	dkp$ej	dd… d	ko$ej	d d
kd¡dd„ ƒZ
dS )ÚTestFAzL
    Feature: setting/getting mdc config on a file access property list
    c                 C   s"   t  t j¡}| ¡ }| |¡ dS )ztest get/set mdc config N)r   r	   r
   Úget_mdc_configÚset_mdc_config)r   ÚfalistÚconfigr   r   r   Útest_mdc_configb   s   zTestFA.test_mdc_configc                 C   s8   t  t j¡}d}d}| ||¡ |  ||f| ¡ ¡ dS )r'   i (  i   N)r   r	   r
   Úset_alignmentr   Úget_alignment)r   r?   Ú	thresholdÚ	alignmentr   r   r   Útest_set_alignmenti   s   
ÿzTestFA.test_set_alignment)r   é   r   Né   )r   é
   é   z1Requires HDF5 1.12.1 or later or 1.10.x >= 1.10.7c                 C   s8   t  t j¡}d}d}| ||¡ |  ||f| ¡ ¡ dS )ztest get/set file lockingFN)r   r	   r
   Úset_file_lockingr   Úget_file_locking)r   r?   Úuse_file_lockingÚignore_when_disabledr   r   r   Útest_set_file_lockings   s   
ÿzTestFA.test_set_file_locking)r   r    r!   r"   rA   rF   r#   Ú
skipUnlessr   r%   rO   r   r   r   r   r<   ^   s    

ýr<   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestPLc                 C   sÄ   t  t j¡}| d¡ |  d| ¡ ¡ | d¡ |  d| ¡ ¡ t  t j¡}| d¡ |  d| ¡ ¡ | d¡ |  d| ¡ ¡ t  t j¡}| d¡ |  d| ¡ ¡ | d¡ |  d| ¡ ¡ dS )z:
        tests if the object track times  set/get
        FTN)r   r	   ÚGROUP_CREATEÚset_obj_track_timesr   Úget_obj_track_timesÚDATASET_CREATEÚOBJECT_CREATE)r   ÚgcidÚdcidÚocidr   r   r   Útest_obj_track_timesƒ   s   





zTestPL.test_obj_track_timesc                 C   sv   t  t j¡}| d¡ |  d| ¡ ¡ t jt jB }| |¡ |  || ¡ ¡ t  t j¡}| |¡ |  || ¡ ¡ dS )z7
        tests the link creation order set/get
        r   N)	r   r	   rR   Úset_link_creation_orderr   Úget_link_creation_orderÚCRT_ORDER_TRACKEDÚCRT_ORDER_INDEXEDÚFILE_CREATE)r   rW   ÚflagsÚfcplr   r   r   Útest_link_creation_trackingž   s   


z"TestPL.test_link_creation_trackingc                 C   sv   t  t j¡}| ¡ }|  d|¡ |  t¡ | dd¡ W d  ƒ n1 s&w   Y  | dd¡ |  d| ¡ ¡ dS )z1
        test the attribute phase change
        )é   é   i   rd   Nr   )r   r   )r   r	   rV   Úget_attr_phase_changer   ÚassertRaisesÚ
ValueErrorÚset_attr_phase_change)r   ÚcidÚretr   r   r   Útest_attr_phase_change°   s   ÿzTestPL.test_attr_phase_changeN)r   r    r!   rZ   rb   rk   r   r   r   r   rQ   ‚   s    rQ   )Úunittestr#   Úh5pyr   r   r   Úcommonr   r   r&   r<   rQ   r   r   r   r   Ú<module>   s   	$)$