o
    i                     @   s   d dl Z d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZ dd Zdd	 Zd
d Zdd Zdd ZG dd de
ZedkrLe  dS dS )    N)njit)types)captured_stdoutTestCase)numpy_supportc                 C   s~   | j }|j }t|D ]2}| | }t|D ]}|| }| j|j|j |j |j 7  _q| j|j7  _| j|j8  _q
dS )zbBase on https://github.com/numba/numba/issues/370

    Modified to add test-able side effect.
    N)sizerangerowpcol)arr1arr2n1n2i1st1i2st2 r   _/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/numba/tests/test_recarray_usecases.pyusecase1   s   $r   c                 C   s,   t |D ]}| | }t|j|j|j qdS )zD
    Base on test1 of https://github.com/numba/numba/issues/381
    Nr   printf1s1f2xNkyr   r   r   usecase2   s   r!   c                 C   s0   t |D ]}t| j| | j| | j|  qdS )zD
    Base on test2 of https://github.com/numba/numba/issues/381
    Nr   r   r   r   r   r   r   usecase3'       r#   c                 C   s0   t |D ]}| | }t|j| j| |j qdS )zD
    Base on test3 of https://github.com/numba/numba/issues/381
    Nr   r   r   r   r   usecase4/   s   r%   c                 C   s0   t |D ]}t| | j| j| | | j qdS )zD
    Base on test4 of https://github.com/numba/numba/issues/381
    Nr   r"   r   r   r   usecase58   r$   r&   c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )TestRecordUsecasec                 C   s(   g d}t || _t j|dd| _d S )N))r   <f8)r   |S3)r   r(   T)align)npdtypeunaligned_dtypealigned_dtype)selffieldsr   r   r   setUpB   s   zTestRecordUsecase.setUpc                 C   s,  t }tdtjfdtjfdtjfg}t|}t|d d  |d d  f|}tjd|d}tjd|d}t|j	d |_
t|j	d |_t|j	d |_t|j	d |_
t|j	d |_t|j	d |_| }| }| }	| }
||| ||	|
 tj||	 tj||
 d S )Nr
   r	   r      r,      )r   r+   r,   float64r   
from_dtyper   recarrayaranger   r
   r	   r   copytestingassert_equal)r/   pyfuncmystruct_dtmystructcfuncr   r   expect1expect2got1got2r   r   r   test_usecase1G   s.   
 

zTestRecordUsecase.test_usecase1c                 C   sP   d}t j||d}t ||_t d|d |_t jdg|jd  dd|_|S )N   r3      abcr   r)   )r+   r7   r8   r   r   arrayshaper   )r/   r,   r   ar   r   r   _setup_usecase2to5i   s   z$TestRecordUsecase._setup_usecase2to5c                 C   s   |  |}t|}t|d d  tjf|}t  ||t| tj	
 }W d    n1 s1w   Y  t  ||t| tj	
 }W d    n1 sPw   Y  | || d S N)rK   r   r6   r   r   intpr   lensysstdoutgetvalueassertEqual)r/   r<   r,   rH   record_typer?   expectgotr   r   r   _test_usecase2to5q   s   

z#TestRecordUsecase._test_usecase2to5c                 C       |  t| j |  t| j d S rL   )rV   r!   r-   r.   r/   r   r   r   test_usecase2      zTestRecordUsecase.test_usecase2c                 C   rW   rL   )rV   r#   r-   r.   rX   r   r   r   test_usecase3   rZ   zTestRecordUsecase.test_usecase3c                 C   rW   rL   )rV   r%   r-   r.   rX   r   r   r   test_usecase4   rZ   zTestRecordUsecase.test_usecase4c                 C   rW   rL   )rV   r&   r-   r.   rX   r   r   r   test_usecase5   rZ   zTestRecordUsecase.test_usecase5N)__name__
__module____qualname__r1   rD   rK   rV   rY   r[   r\   r]   r   r   r   r   r'   @   s    "r'   __main__)rO   unittestnumpyr+   numbar   
numba.corer   numba.tests.supportr   r   numba.npr   r   r!   r#   r%   r&   r'   r^   mainr   r   r   r   <module>   s     		Q