U
    #ºc¯  ã                   @   s:   d dl Z d dlZd dlZd dlmZmZ G dd„ dƒZdS )é    N)Úassert_array_equalÚIS_PYPYc                   @   sø   e Zd Zejjedddd„ ƒZdd„ Zdd„ Z	ejjeddd	d
„ ƒZ
ej dejejejejejejejejejejejejejg¡dd„ ƒZdd„ Zdd„ Zdd„ Zej dedƒ¡dd„ ƒZdd„ Z dd„ Z!dd„ Z"dd„ Z#d d!„ Z$d"d#„ Z%d$S )%Ú
TestDLPackzPyPy can't get refcounts.)Úreasonc                 C   s<   t  d¡}| ¡ }t |¡dks$t‚~t |¡dks8t‚d S ©Né   é   é   )ÚnpÚarangeÚ
__dlpack__ÚsysÚgetrefcountÚAssertionError©ÚselfÚxÚy© r   ú@/tmp/pip-unpacked-wheel-b2rbor69/numpy/core/tests/test_dlpack.pyÚtest_dunder_dlpack_refcount	   s
    
z&TestDLPack.test_dunder_dlpack_refcountc              	   C   s<   t  d¡}|jd d t t¡ |jdd W 5 Q R X d S )Nr   )Ústreamé   )r
   r   r   ÚpytestÚraisesÚRuntimeError©r   r   r   r   r   Útest_dunder_dlpack_stream   s    
z$TestDLPack.test_dunder_dlpack_streamc              	   C   sT   t  dt jfdt jfg¡}t jd|d}|d }t t¡ t  |¡ W 5 Q R X d S )NÚintÚchar)r   ©Údtype)	r
   r!   Úint32Úint8Úzerosr   r   ÚBufferErrorÚfrom_dlpack)r   Údtr   Úzr   r   r   Ú%test_strides_not_multiple_of_itemsize   s
    z0TestDLPack.test_strides_not_multiple_of_itemsizec                 C   s>   t  d¡}t  |¡}t |¡dks&t‚~t |¡dks:t‚d S r   )r
   r   r&   r   r   r   r   r   r   r   Útest_from_dlpack_refcount    s
    

z$TestDLPack.test_from_dlpack_refcountr!   c                 C   s6   t jd|d}t  |¡}|j|jks(t‚t||ƒ d S )Nr   r    )r
   r   r&   r!   r   r   )r   r!   r   r   r   r   r   Útest_dtype_passthrough(   s    
z!TestDLPack.test_dtype_passthroughc              	   C   s4   t  t  d¡¡}t t¡ t  |¡ W 5 Q R X d S )Nz
2021-05-27)r
   ZasarrayZ
datetime64r   r   r%   r&   r   r   r   r   Útest_invalid_dtype5   s    zTestDLPack.test_invalid_dtypec              	   C   s@   t  d¡ ¡ }t jd|d}t t¡ t  |¡ W 5 Q R X d S )Nz=i8r   r    )r
   r!   Znewbyteorderr   r   r   r%   r&   )r   r'   r   r   r   r   Útest_invalid_byte_swapping;   s    z%TestDLPack.test_invalid_byte_swappingc                 C   s¢   t  d¡ d¡}|d }t|t  |¡ƒ |d d …df }t|t  |¡ƒ |dd d …f }t|t  |¡ƒ |d }t|t  |¡ƒ t  |¡ ¡ }t|t  |¡ƒ d S )Né   )r   r   r   r   )r
   r   Zreshaper   r&   ZdiagonalÚcopy)r   r   Úy1Úy2Zy3Zy4Zy5r   r   r   Útest_non_contiguousB   s    zTestDLPack.test_non_contiguousÚndimé!   c                 C   s0   d| }t j|t jd}|t  |¡jks,t‚d S )N)r   r    )r
   r$   Úfloat64r&   Úshaper   )r   r3   r6   r   r   r   r   Útest_higher_dimsT   s    zTestDLPack.test_higher_dimsc                 C   sV   t  d¡}| ¡ dkst‚t  |¡}| ¡ dks4t‚|d d d… }| ¡ dksRt‚d S )Nr   )r   r   r	   )r
   r   Z__dlpack_device__r   r&   )r   r   r   r(   r   r   r   Útest_dlpack_device[   s    

zTestDLPack.test_dlpack_devicec                 C   s   t  d¡}| ¡ }t‚d S )Nr   )r
   r   r   r   )r   r   Ú_r   r   r   Údlpack_deleter_exceptionc   s    
z#TestDLPack.dlpack_deleter_exceptionc              	   C   s"   t  t¡ |  ¡  W 5 Q R X d S )N)r   r   r   r:   )r   r   r   r   Ú test_dlpack_destructor_exceptionh   s    z+TestDLPack.test_dlpack_destructor_exceptionc              	   C   s4   t  d¡}d|j_t t¡ | ¡  W 5 Q R X d S )Nr   F)r
   r   ÚflagsZ	writeabler   r   r%   r   r   r   r   r   Útest_readonlyl   s    
zTestDLPack.test_readonlyc                 C   s"   t  d¡}t  |¡}t||ƒ d S )Ng      ð?)r
   Úarrayr&   r   r   r   r   r   Ú
test_ndim0r   s    

zTestDLPack.test_ndim0c                 C   s8   t jdddt jdt jddd}t  |¡}t||ƒ d S )NZf8)é
   r   r   )é   éP   é   iè  r    ÚF)r!   r6   ÚstridesÚbufferÚorder)r
   ZndarrayZonesÚuint8r&   r   r   r   r   r   Útest_size1dims_arraysw   s    
 ÿ
z TestDLPack.test_size1dims_arraysN)&Ú__name__Ú
__module__Ú__qualname__r   ÚmarkZskipifr   r   r   r)   r*   Zparametrizer
   r#   Zint16r"   Zint64rH   Zuint16Zuint32Zuint64Zfloat16Zfloat32r5   Z	complex64Z
complex128r+   r,   r-   r2   Úranger7   r8   r:   r;   r=   r?   rI   r   r   r   r   r      sB   

         ü

r   )r   r   Znumpyr
   Znumpy.testingr   r   r   r   r   r   r   Ú<module>   s   