o
    b¦µiõ  ć                   @   s   d Z ddlZddlZddlm  mZ ddlm  m	Z
 ddlmZ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 )z0
    Tests for the (internal) selections module
é    Né   )ŚTestCaseŚutc                   @   s   e Zd Zdd Zdd ZdS )ŚBaseSelectionc                 C   s(   t  |  ” d”| _| j dd”j| _d S )NŚwŚx© )Śh5pyŚFileŚmktempŚfŚcreate_datasetŚidŚdsid©Śselfr   r   śN/home/ubuntu/.local/lib/python3.10/site-packages/h5py/tests/test_selections.pyŚsetUp   s   zBaseSelection.setUpc                 C   s   | j r
| j  ”  d S d S )N)r   Ścloser   r   r   r   ŚtearDown   s   ’zBaseSelection.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d Zdd ZdS )	ŚTestTypeGenerationzU
        Internal feature: Determine output types from dataset dtype and fields.
    c                 C   s<   t  d”}t |d”\}}|  ||” |  |t  d”” dS )z. Non-compound types are handled appropriately Śir   N)ŚnpŚdtypeŚsel2Śread_dtypesŚassertEqual©r   ŚdtŚoutŚformatr   r   r   Śtest_simple$   s   
zTestTypeGeneration.test_simplec                 C   sJ   t  d”}|  t” t |d”\}}W d   dS 1 sw   Y  dS )z3 Field names for non-field types raises ValueError r   ©ŚaN)r   r   ŚassertRaisesŚ
ValueErrorr   r   r    r   r   r   Śtest_simple_fieldexc+   s   
"’z'TestTypeGeneration.test_simple_fieldexcc                 C   sŽ   t  g d¢”}t |d”\}}|  ||” |  ||” t |d”\}}|  ||” |  |t  ddg”” t |d”\}}|  |t  d”” |  |t  dg”” |  t” t |d”\}}W d	   d	S 1 shw   Y  d	S )
z( Compound types with elemental subtypes )©r&   r   ©Śbr   )Ścz|S10r   )r&   r,   r*   r+   r%   r   )ŚjŚkN)r   r   r   r   r   r'   r(   r    r   r   r   Śtest_compound_simple1   s   "’z'TestTypeGeneration.test_compound_simpleN)r   r   r   Ś__doc__r$   r)   r0   r   r   r   r   r      s
    r   c                   @   ó   e Zd ZdZdd ZdS )ŚTestScalarSliceRuleszD
        Internal feature: selections rules for scalar datasets
    c                 C   sź   t  | jd”\}}|  |d” |  | ” d” t  | jtf”\}}|  |d” |  | ” d” |  t” t  | jd”\}}W d   n1 sHw   Y  | j 	dd”j
}|  t” t  |d”\}}W d   dS 1 snw   Y  dS )z* Permissible arguments for scalar slicing r   Nr   )r   Śy)r   Śread_selections_scalarr   r   Śget_select_npointsŚEllipsisr'   r(   r   r   r   ŚRuntimeError)r   ŚshapeŚ	selectionr   r   r   r   Ś	test_argsN   s   ’"’zTestScalarSliceRules.test_argsN)r   r   r   r1   r;   r   r   r   r   r3   H   s    r3   c                   @   r2   )ŚTestSelectionz/ High-level routes to generate a selection
    c                 C   sĀ  | j  dd”}|jddddf }t dtg d¢|”}|  |tj” t dd|”}|  |tj” t dt 	g d	¢”|”}|  |tj
” t dd
|”}|  |tj” |  t” t dd|” W d    n1 sjw   Y  t d||”}|  |tj” |  t” t d|d ” W d    n1 sw   Y  |  t” t d||” W d    n1 s°w   Y  t d||”}|  ||” |  t” t d||” W d    d S 1 sŚw   Y  d S )NŚdset)éd   r>   r   r>   )é
   ©r   é   é   )r@   )é   )TFFFTr   )r>   Śfoo)r   r   Ś	regionrefŚselŚselectŚlistŚassertIsInstanceŚFancySelectionr   ŚarrayŚPointSelectionŚSimpleSelectionr'   Ś	TypeErrorŚ	Selectionr   )r   r=   ŚregrefŚstŚst1Śst2Śst3Śst4r   r   r   Śtest_selectiond   s4   ’’’"’zTestSelection.test_selectionN)r   r   r   r1   rV   r   r   r   r   r<   _   s    r<   )r1   Śnumpyr   r	   Śh5py._hl.selectionsŚ_hlŚ
selectionsrF   Śh5py._hl.selections2Śselections2r   Ścommonr   r   r   r   r3   r<   r   r   r   r   Ś<module>   s   		*