a
    v=ic"                     @   s   d Z ddlZddlmZ ddlmZmZ ddlZddlZddl	Z	dd Z
dd	 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S )z!
    Tests the h5py.File object.
    N_drivers   )utTestCasec                   C   s   t jt jjt jjS N)h5pyh5fget_obj_countOBJ_ALLZOBJ_FILE r   r   f/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/h5py/tests/test_file2.pynfiles   s    r   c                   C   s   t jt jjt jjS r   )r   r	   r
   r   Z	OBJ_GROUPr   r   r   r   ngroups   s    r   c                   @   s   e Zd ZdZdd ZdS )TestDealloczj
        Behavior on object deallocation.  Note most of this behavior is
        delegated to FileID.
    c                 C   s   t  }t }|  }t|d}|d }| t  |d  | t |d  ~| | | t  | | t |d  |j}| | | t  |d  | t |d  ~| t  |d  | t | ~| t  | | t | dS )z\ File objects close automatically when out of scope, but
        other objects remain open. w/r   N)r   r   mktempr   FileassertEqual
assertTruefile)selfZstart_nfilesZstart_ngroupsfnamefgr   r   r   test_autoclose&   s*    

zTestDealloc.test_autocloseN)__name__
__module____qualname____doc__r   r   r   r   r   r      s   r   c                   @   s   e Zd Zdd Zdd ZdS )TestDriverRegistrationc                    sf   d g  fdd}t d| | dt   |  }t j|ddddd |  dddd	fg d S )
Nc                    s   ||f d< t d | S )Nr   Zsec2r   )plistargskwargsZcalled_withr   r   set_faplO   s    z=TestDriverRegistration.test_register_driver.<locals>.set_fapl
new-driverr   r   r   )driverdriver_arg_0driver_arg_1moder   )r)   r*   )r   register_driverassertInregistered_driversr   r   r   )r   r&   r   r   r%   r   test_register_driverL   s    z+TestDriverRegistration.test_register_driverc                 C   s   t ddd  | dt   t d | dt   | t(}|  }t j	|ddd W d    n1 sr0    Y  | 
t|jd d S )Nr'   c                 S   s   d S r   r   )r"   r   r   r   <lambda>`       z?TestDriverRegistration.test_unregister_driver.<locals>.<lambda>r   r(   r+   z Unknown driver type "new-driver")r   r,   r-   r.   Zunregister_driverZassertNotInassertRaises
ValueErrorr   r   r   str	exception)r   er   r   r   r   test_unregister_driver_   s    
.z-TestDriverRegistration.test_unregister_driverN)r   r   r   r/   r8   r   r   r   r   r!   K   s   r!   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
	TestCachec                 C   s6   |   }t|d}| t|j  g d d S )Nr   )r   	           ?r   r   r   r   listidZget_access_plistZ	get_cacher   r   r   r   r   r   test_defaultsn   s
    zTestCache.test_defaultsc                 C   s:   |   }tj|ddd}| t|j  g d d S )Nr      )Zrdcc_nbytes)r   r:   rB   r<   r=   r@   r   r   r   test_nbytest   s
    zTestCache.test_nbytesc                 C   s:   |   }tj|ddd}| t|j  g d d S )Nr   }   )Zrdcc_nslots)r   rD   r;   r<   r=   r@   r   r   r   test_nslotsz   s
    zTestCache.test_nslotsc                 C   s:   |   }tj|ddd}| t|j  g d d S )Nr         ?)Zrdcc_w0)r   r:   r;   rF   r=   r@   r   r   r   test_w0   s
    zTestCache.test_w0N)r   r   r   rA   rC   rE   rG   r   r   r   r   r9   m   s   r9   c                   @   sn   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
eddd Zdd Zdd ZdS )TestFileObjc                 C   s   t |d}| |jd | |jt| |jdttdd | t|dg | t|d d d  ttd |	  d S )Nr   fileobjtest   data)
r   r   r   r(   filenamereprcreate_datasetr>   rangecloser   rI   r   r   r   r   check_write   s    $zTestFileObj.check_writec                 C   sj   t |d}| t|dg | t|d d d  ttd | jt|jdttdd |  d S )NrrJ   rK   zanother.test   rL   )	r   r   r   r>   rQ   r3   	ExceptionrP   rR   rS   r   r   r   
check_read   s
    $zTestFileObj.check_readc                 C   sh   t  L}| t| d | | | t| d | | W d    n1 sZ0    Y  d S )Nr   )ioBytesIOr   lengetvaluerT   assertGreaterrX   )r   rI   r   r   r   test_BytesIO   s
    

zTestFileObj.test_BytesIOc              	   C   s   |   }zt|dL}| tj|d | | | tj|d | | W d    n1 sf0    Y  t|d}| | W d    n1 s0    Y  W t	| nt	| 0 d S )Nzwb+r   rb)
r   openr   ospathgetsizerT   r]   rX   remove)r   r   rI   r   r   r   	test_file   s    
(*zTestFileObj.test_filec                 C   s   t  }|j}t|d}~|jdttdd | t|dg | t|d d d  ttd | 	t
j| |  | t
j| d S Nr   rJ   rK   rL   )tempfileNamedTemporaryFilenamer   r   rP   r>   rQ   r   r   ra   rb   isfilerR   ZassertFalse)r   rI   r   r   r   r   r   test_TemporaryFile   s    $zTestFileObj.test_TemporaryFilec                 C   sF   | j ttjd ddd | j ttjdddd | j ttj| ddd d S )NrI   xr2   Zrogue)r3   rW   r   r   )r   r   r   r   test_exception_open   s    zTestFileObj.test_exception_openc                 C   sL   G dd dt j}t| d}|jdttdd | tt|d  d S )Nc                   @   s   e Zd Zdd ZdS )z6TestFileObj.test_exception_read.<locals>.BrokenBytesIOc                 S   s   t dd S NzI am broken)rW   r   br   r   r   readinto   s    z?TestFileObj.test_exception_read.<locals>.BrokenBytesIO.readintoN)r   r   r   rq   r   r   r   r   BrokenBytesIO   s   rr   r   rJ   rK   rL   )	rY   rZ   r   r   rP   r>   rQ   r3   rW   )r   rr   r   r   r   r   test_exception_read   s    zTestFileObj.test_exception_readc                 C   sh   G dd dt j}| }t|d}z.| jt|jdttdd W d|_	|
  nd|_	|
  0 d S )Nc                       s    e Zd ZdZ fddZ  ZS )z7TestFileObj.test_exception_write.<locals>.BrokenBytesIOFc                    s   | j rt |S tdd S rn   )allow_writesuperwriterW   ro   	__class__r   r   rv      s    z=TestFileObj.test_exception_write.<locals>.BrokenBytesIO.write)r   r   r   rt   rv   __classcell__r   r   rw   r   rr      s   rr   r   rJ   rK   rL   T)rY   rZ   r   r   r3   rW   rP   r>   rQ   rt   rR   )r   rr   Zbior   r   r   r   test_exception_write   s    

z TestFileObj.test_exception_writez-Incompletely closed files can cause segfaultsc                 C   s.   t  }t|d}|  | t|j d S )Nr   )rY   rZ   r   r   rR   r3   rW   rS   r   r   r   test_exception_close   s    z TestFileObj.test_exception_closec                 C   sp   t tj| jdd}| tj: t	|d}|
d}|jddt d W d    n1 sb0    Y  d S )Nza.h5wbr   grouprM   Zfoo)rM   Zdtype)r`   ra   rb   jointempdirr3   rY   UnsupportedOperationr   r   create_grouprP   Zstring_dtype)r   rI   r   r}   r   r   r   test_exception_writeonly   s
    
z$TestFileObj.test_exception_writeonlyc                 C   sj   t  }t|d}|jdttdd | t|d d d  ttd d |_| 	t
t|d  d S rf   )rY   rZ   r   r   rP   r>   rQ   r   rq   r3   rW   rS   r   r   r   test_method_vanish   s    $zTestFileObj.test_method_vanishN)r   r   r   rT   rX   r^   re   rk   rm   rs   rz   r   skipr{   r   r   r   r   r   r   rH      s   	


rH   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestTrackOrderc                 C   s<   t dD ].}|d dkr(|t| q|g|t|< qd S )Nd   
   r   )rQ   r   r5   )r   r   ir   r   r   populate   s    zTestTrackOrder.populatec                 C   sD   |   }tj|ddd}| | | t|dd tdD  d S )Nr   TZtrack_orderc                 S   s   g | ]}t |qS r   r5   .0r   r   r   r   
<listcomp>  r1   z3TestTrackOrder.test_track_order.<locals>.<listcomp>r   )r   r   r   r   r   r>   rQ   r@   r   r   r   test_track_order  s    

zTestTrackOrder.test_track_orderc                 C   sH   |   }tj|ddd}| | | t|tdd tdD  d S )Nr   Fr   c                 S   s   g | ]}t |qS r   r   r   r   r   r   r     r1   z6TestTrackOrder.test_no_track_order.<locals>.<listcomp>r   )r   r   r   r   r   r>   sortedrQ   r@   r   r   r   test_no_track_order  s    

z"TestTrackOrder.test_no_track_orderN)r   r   r   r   r   r   r   r   r   r   r      s   r   )r    r   Zh5py._hl.filesr   commonr   r   rY   rg   ra   r   r   r   r!   r9   rH   r   r   r   r   r   <module>
   s   ,"w