o
    1ή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J ~t|dksJ d S N         )nparange
__dlpack__sysgetrefcountselfxy r   C/tmp/pip-target-vg8gfxp4/lib/python/numpy/core/tests/test_dlpack.pytest_dunder_dlpack_refcount	   s
   
z&TestDLPack.test_dunder_dlpack_refcountc                 C   sR   t d}|jd d tt |jdd W d    d S 1 s"w   Y  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   sj   t dt jfdt jfg}t jd|d}|d }tt t | W d    d S 1 s.w   Y  d S )Nintchar)r   dtype)	r
   r    int32int8zerosr   r   r   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J ~t|dksJ d S 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J t|| d S )Nr   r   )r
   r   r$   r    r   )r   r    r   r   r   r   r   test_dtype_passthrough(   s   
z!TestDLPack.test_dtype_passthroughc                 C   sJ   t t d}tt t | W d    d S 1 sw   Y  d S )Nz
2021-05-27)r
   asarray
datetime64r   r   	TypeErrorr$   r   r   r   r   test_invalid_dtype5   s   "zTestDLPack.test_invalid_dtypec                 C   sV   t d }t jd|d}tt t | W d    d S 1 s$w   Y  d S )Nz=i8r   r   )r
   r    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   reshaper   r$   diagonalcopy)r   r   y1y2y3y4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J d S )N)r   r   )r
   r#   float64r$   shape)r   r:   r=   r   r   r   r   test_higher_dimsT   s   zTestDLPack.test_higher_dimsc                 C   sV   t d}| dksJ t |}| dksJ |d d d }| dks)J d S )Nr   )r   r   r	   )r
   r   __dlpack_device__r$   )r   r   r   r&   r   r   r   test_dlpack_device[   s   

zTestDLPack.test_dlpack_devicec                 C   s   t d}| }t)Nr   )r
   r   r   r   )r   r   _r   r   r   dlpack_deleter_exceptionc   s   
z#TestDLPack.dlpack_deleter_exceptionc                 C   s8   t t |   W d    d S 1 sw   Y  d S )N)r   r   r   rB   )r   r   r   r    test_dlpack_destructor_exceptionh   s   
"z+TestDLPack.test_dlpack_destructor_exceptionc                 C   sJ   t d}d|j_tt |  W d    d S 1 sw   Y  d S )Nr   F)r
   r   flags	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 )Nf8)
   r   r   )   P      i  r   F)r    r=   stridesbufferorder)r
   ndarrayonesuint8r$   r   r   r   r   r   test_size1dims_arraysw   s
   

z TestDLPack.test_size1dims_arraysN)&__name__
__module____qualname__r   markskipifr   r   r   r'   r(   parametrizer
   r"   int16r!   int64rT   uint16uint32uint64float16float32r<   	complex64
complex128r)   r-   r/   r9   ranger>   r@   rB   rC   rF   rH   rU   r   r   r   r   r      s2    



r   )r   r   numpyr
   numpy.testingr   r   r   r   r   r   r   <module>   s
    