U
    ½mœd¶  ã                   @   sR   d dl Zd dlZd dlmZ ddlmZmZ G dd„ dejƒZG dd„ deƒZdS )	é    N)Úh5té   )ÚTestCaseÚutc                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚTestCompoundzG
        Feature: Compound types can be created from Python dtypes
    c                 C   s‚   t  dtjfdg¡}tj|dd�}| d¡| d¡ }}|  |tj¡ |  |tj	¡ |  | 
d¡d¡ |  | 
d¡tj ¡ ¡ dS )zL Reference types are correctly stored in compound types (issue 144)
        Úa)Úbú<f4T)Zlogicalr   r   N)ÚnpÚdtypeÚh5pyZ	ref_dtyper   Ú	py_createZget_member_typeÚassertEqualZSTD_REF_OBJZ
IEEE_F32LEZget_member_offsetÚget_size)ÚselfÚdtÚtidÚt1Út2© r   úL/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/h5py/tests/test_h5t.pyÚtest_ref   s    zTestCompound.test_refc                 C   s¨   d}dddgdddgdd	d
gdœ}t  |¡}t tj|¡}t|d |d |d ƒD ]2\}}}| t|tƒrt| 	d¡n||t 
|¡¡ qR|  |j|¡ |  |jj|¡ d S )Né   Úf1Úf2Zf3r	   z<i4ú<f8r   é   é   )ÚnamesÚformatsÚoffsetsr   r    r   Úutf8)r
   r   r   ÚcreateZCOMPOUNDÚzipÚinsertÚ
isinstanceÚstrÚencoder   r   Úitemsize)r   ÚsizeZ	type_dictZexpected_dtyper   ÚnameÚoffsetr   r   r   r   Útest_out_of_order_offsets#   s&    ý
  ÿýz&TestCompound.test_out_of_order_offsetsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r,   r   r   r   r   r      s   r   c                   @   s   e Zd ZdZdd„ ZdS )ÚTestTypeFloatIDzTest TypeFloatID.c                 C   sˆ  |   ¡  ¡ }d}d}d}d}d}d}tjddd	d
dddgdddddddgdddddddgdddddddggtjd �}tjdd!d"d#d$d%d&gdd'd(d)d*d+d,gdd-d.d/d0d1d2gdd3dd4d5d6d7ggtjd �}	tj |¡}
tj 	|¡}t
j ¡ }| d8d9d:d;d9¡ | d<¡ | d=¡ | ¡  tj |
|||¡}| tjjtjj|¡ ~t
j ¡ }| d>d9d?d;d9¡ | d<¡ | d=¡ | ¡  tj |
|||¡}| tjjtjj|	¡ ~t
j ¡ }| d>d@d:d;d@¡ | d<¡ | d>¡ | ¡  tj |
|||¡}| tjjtjj|	¡ ~t
j ¡ }| d>d@d:d;d@¡ | d<¡ | dA¡ | ¡  tj |
|||¡}| tjjtjj|	¡ ~tj |
|t
j|¡}| tjjtjj|	¡ ~~~
t |dB¡}|| dCdC… }tj ||¡ |  |jt dD¡¡ || dCdC… }tj ||	¡ |  |jt dD¡¡ || }z|  |jt dE¡¡ W n* tk
�rN   |  |jt dD¡¡ Y nX || }|  |jt dF¡¡ || }|  |jtj¡ dCS )Gz@Custom floats are correctly promoted to standard floats on read.s   DS1s   DS2s   DS3s   DS4s   DS5)é   é   ga™  È¾gØÊÿÿ>g];>ÿÿçè=g–Çqÿÿ�û=g¥Éÿÿgý=gˆß  `Ó½gZÃF  À>g†Ï½ÿÿ· >g;c  �÷=g¬ƒñÿÿ—>g4-  ˆ>gt¨  Ðî=g4žŽ  û=gÀ]  >g;Ôÿÿ'>gÄòÔ  (>gÊ% (ç=gýi  hÏ=gÄ£  àÝ½gÞSdþÿÇÝ½g²j°ÿÿ×å½gÀ@  H>gü¨áÿÿ?>g„6  0>g�<‡   >)r   g¾[ñÿÿ_>g�¥öÿÿØ½gÛ  8â=gT p  àå=gæ ˆï=g4'ÞÿÿçÓ½g&…1  Ðé=gæ3   
>géò¯ÿÿ/û=g¾Iýÿÿ/>gXãúÿÿÏ>g­§Ùÿÿ÷×½gb®9  P>g43ûÿÿ?	>g¸–   Ø>gcEÀÿÿ/ò=g[ª¨þÿ>g(‰e   ç=g[~µÿÿÿæ=g(‰e   ÷=gº×º 0Ü=gð¨   >g~,›ÿÿçû=é   é	   é   r   é   é5   é   é   é
   i  ÚrNr	   z<f2r   )Úmktempr'   r
   ÚarrayZfloat32r   Zh5fr"   Zh5sZcreate_simpler   Z
IEEE_F16LEÚcopyZ
set_fieldsZset_sizeZ	set_ebiasÚlockZh5dÚwriteÚALLZNATIVE_LDOUBLEÚFileÚtestingZassert_array_equalr   r   ÚAttributeErrorZ
longdouble)r   Ztest_filenameZdatasetZdataset2Zdataset3Zdataset4Zdataset5ZdimsZwdataZwdata2ÚfidÚspaceZmytypeZdsetZmytype2Zmytype3Zmytype4ÚfÚvaluesr   r   r   Útest_custom_float_promotion>   sè    
  þ  þ  þ  þ÷õ
  þ  þ  þ  þ÷õ











z+TestTypeFloatID.test_custom_float_promotionN)r-   r.   r/   r0   rJ   r   r   r   r   r1   ;   s   r1   )	Únumpyr
   r   r   Úcommonr   r   r   r1   r   r   r   r   Ú<module>
   s
   )