
    da                         d dl Zd dlmZmZmZ ddlmZ  G d de          Z G d de          Z	 G d	 d
e          Z
 G d de          ZdS )    N)h5ph5fversion   )TestCasec                       e Zd ZdZd Z ej        ej        dk     d          d             Z	 ej        ej        dk     d          d             Z
 ej        ej        dk     d          d	             Zd
S )
TestLibverz5
        Feature: Setting/getting lib ver bounds
    c                    t          j        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plists     3lib/python3.11/site-packages/h5py/tests/test_h5p.pytest_libverzTestLibver.test_libver   sm    
3?++ 3S5FGGG#-s/@A0022	4 	4 	4 	4 	4    r   
      Requires HDF5 1.10.2 or laterc                    t          j        t           j                  }|                    t          j        t          j                   |                     t          j        t          j        f|                                           dS )z. Test libver bounds set/get for H5F_LIBVER_V18N)	r   r   r   r   r   r   
LIBVER_V18r   r   r   s     r   test_libver_v18zTestLibver.test_libver_v18   sm     
3?++ 3S^DDD#-s~>0022	4 	4 	4 	4 	4r   c                    t          j        t           j                  }|                    t          j        t          j                   |                     t          j        t          j        f|                                           dS )z/ Test libver bounds set/get for H5F_LIBVER_V110N)	r   r   r   r   r   r   LIBVER_V110r   r   r   s     r   test_libver_v110zTestLibver.test_libver_v110'   k     
3?++@@@#.#/:0022	4 	4 	4 	4 	4r   )r         zRequires HDF5 1.11.4 or laterc                    t          j        t           j                  }|                    t          j        t          j                   |                     t          j        t          j        f|                                           dS )z/ Test libver bounds set/get for H5F_LIBVER_V112N)	r   r   r   r   r   r   LIBVER_V112r   r   r   s     r   test_libver_v112zTestLibver.test_libver_v1120   r"   r   N)__name__
__module____qualname____doc__r   utskipIfr   hdf5_version_tupler   r!   r'    r   r   r	   r	      s         4 4 4 RYw)J6.0 04 40 04 RYw)J6.0 04 40 04 RYw)J6.0 04 40 04 4 4r   r	   c                       e Zd ZdZd Z ej        ej        dk     d          d             Z	 ej        ej        dk     d          d             Z
d	S )
TestDAzU
    Feature: setting/getting chunk cache size on a dataset access property list
    c                     t          j        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w0s        r   test_chunk_cachezTestDA.test_chunk_cache=   su    C.//vvr222&&"-//11	3 	3 	3 	3 	3r   )r         zRequires HDF5 1.8.17 or laterc                 F   t          j        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   r4   r   get_efile_prefixdecodeset_efile_prefixencode)r   r7   efile_prefixs      r   test_efile_prefixzTestDA.test_efile_prefixH   s    C.//002299;;R@@@1 3 3G < <===002299;;%	' 	' 	' # 3 3G < <===002299;;%	' 	' 	' 	' 	'r   r   r   c                 ~   t          j        t           j                  }|                     |                                                                d           d}|                    |                    d                     |                     |                                                                |           dS )ztest get/set virtual prefix r?   zpath/to/virtual/datasetr@   N)r   r   r4   r   get_virtual_prefixrB   set_virtual_prefixrD   )r   r7   virtual_prefixs      r   test_virtual_prefixzTestDA.test_virtual_prefixY   s     C.//2244;;==rBBB2!!."7"7"@"@AAA2244;;=='	) 	) 	) 	) 	)r   N)r(   r)   r*   r+   r;   r,   r-   r   r.   rF   rK   r/   r   r   r1   r1   9   s         	3 	3 	3 RYw)J6.0 0' '0 0' RYw)J6.0 0) )0 0) ) )r   r1   c                       e Zd ZdZd Zd Z ej        ej	        dk    p#ej	        dd         dk    oej	        d         dk    d	          d
             Z
dS )TestFAzL
    Feature: setting/getting mdc config on a file access property list
    c                     t          j        t           j                  }|                                }|                    |           dS )ztest get/set mdc config N)r   r   r   get_mdc_configset_mdc_config)r   falistconfigs      r   test_mdc_configzTestFA.test_mdc_configj   s>    CO,,&&((f%%%%%r   c                     t          j        t           j                  }d}d}|                    ||           |                     ||f|                                           dS )r3   i (  i   N)r   r   r   set_alignmentr   get_alignment)r   rQ   	threshold	alignments       r   test_set_alignmentzTestFA.test_set_alignmentq   sk    CO,,		Y	222)Y/--//	1 	1 	1 	1 	1r   )r      r   Nr   )r   r      z1Requires HDF5 1.12.1 or later or 1.10.x >= 1.10.7c                     t          j        t           j                  }d}d}|                    ||           |                     ||f|                                           dS )ztest get/set file lockingFN)r   r   r   set_file_lockingr   get_file_locking)r   rQ   use_file_lockingignore_when_disableds       r   test_set_file_lockingzTestFA.test_set_file_locking{   ss     CO,, $ 02FGGG*,@A0022	4 	4 	4 	4 	4r   )r(   r)   r*   r+   rS   rY   r,   
skipUnlessr   r.   ra   r/   r   r   rM   rM   f   s         & & &1 1 1 R]"j0 	[		#BQB	'7	2	Yw7QRS7TXY7Y;= =4 4	= =4 4 4r   rM   c                        e Zd Zd Zd Zd ZdS )TestPLc                    t          j        t           j                  }|                    d           |                     d|                                           |                    d           |                     d|                                           t          j        t           j                  }|                    d           |                     d|                                           |                    d           |                     d|                                           t          j        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ocids       r   test_obj_track_timeszTestPL.test_obj_track_times   s   
 z#*++  ''' 8 8 : :;;;  &&&t7799:::z#,--  ''' 8 8 : :;;;  &&&t7799::: z#+,,  ''' 8 8 : :;;;  &&&t7799:::::r   c                    t          j        t           j                  }|                    d           |                     d|                                           t           j        t           j        z  }|                    |           |                     ||                                           t          j        t           j                  }|                    |           |                     ||                                           dS )z7
        tests the link creation order set/get
        r   N)	r   r   rf   set_link_creation_orderr   get_link_creation_orderCRT_ORDER_TRACKEDCRT_ORDER_INDEXEDFILE_CREATE)r   rk   flagsfcpls       r   test_link_creation_trackingz"TestPL.test_link_creation_tracking   s    
 z#*++$$Q'''D88::;;;%(==$$U+++ < < > >??? z#/**$$U+++ < < > >?????r   c                    t          j        t           j                  }|                                }|                     d|           |                     t                    5  |                    dd           ddd           n# 1 swxY w Y   |                    dd           |                     d|                                           dS )z1
        test the attribute phase change
        )r<      i   ry   Nr   )r   r   )r   r   rj   get_attr_phase_changer   assertRaises
ValueErrorset_attr_phase_change)r   cidrets      r   test_attr_phase_changezTestPL.test_attr_phase_change   s    
 j*++''))$$$ z** 	0 	0%%eQ///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0
 	!!!Q''' 9 9 ; ;<<<<<s   #BB
B
N)r(   r)   r*   rn   rw   r   r/   r   r   rd   rd      sD        ; ; ;6@ @ @$= = = = =r   rd   )unittestr,   h5pyr   r   r   commonr   r	   r1   rM   rd   r/   r   r   <module>r      s        " " " " " " " " " "      &4 &4 &4 &4 &4 &4 &4 &4P*) *) *) *) *)X *) *) *)Z!4 !4 !4 !4 !4X !4 !4 !4H?= ?= ?= ?= ?=X ?= ?= ?= ?= ?=r   