U
    hâËdÂ  ã                   @   sT   d dl Zd dlmZmZ d dlmZmZ d dlZG dd„ deƒZ	e
dkrPe ¡  dS )é    N)Ú
from_dtypeÚcuda)Úskip_on_cudasimÚCUDATestCasec                   @   s$   e Zd Zdd„ Zedƒdd„ ƒZdS )ÚTestAlignmentc                 C   s˜   t jddgdd�}t|ƒ}t |d d … f¡dd„ ƒ}t jd|d�}t|jƒD ] }|| }d	|_|d
 d |_	qN|d |ƒ |  
t  |j|j	k¡¡ d S )N©ÚaZint32©ÚbZfloat64T)Úalignc                 S   s   t  d¡}| | j| | _d S ©Né   ©r   Úgridr
   r   ©r   Úi© r   ú_/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numba/cuda/tests/cudapy/test_alignment.pyÚfoo   s    
z0TestAlignment.test_record_alignment.<locals>.fooé   )Údtyper   r   é{   )r   r   )Únpr   r   r   ÚjitZrecarrayÚrangeÚsizer   r
   Ú
assertTrueÚall)ÚselfÚ	rec_dtypeÚrecr   Z
a_recarrayr   Za_recr   r   r   Útest_record_alignment   s    
z#TestAlignment.test_record_alignmentz"Simulator does not check alignmentc              	   C   s`   t  ddg¡}t|ƒ}|  t¡�"}t |d d … f¡dd„ ƒ}W 5 Q R X |  dt|j	ƒk¡ d S )Nr   r	   c                 S   s   t  d¡}| | j| | _d S r   r   r   r   r   r   r   !   s    
z6TestAlignment.test_record_alignment_error.<locals>.fooztype float64 is not aligned)
r   r   r   ÚassertRaisesÚ	Exceptionr   r   r   ÚstrÚ	exception)r   r   r    Zraisesr   r   r   r   Útest_record_alignment_error   s    z)TestAlignment.test_record_alignment_errorN)Ú__name__Ú
__module__Ú__qualname__r!   r   r&   r   r   r   r   r      s   r   Ú__main__)Únumpyr   Znumbar   r   Znumba.cuda.testingr   r   Zunittestr   r'   Úmainr   r   r   r   Ú<module>   s   "