
    ܙdv                         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	m
Z
 d dlZd dlmZ d Zd Zd Zd	 Zd
 Z G d de
          Zedk    r ej                     dS dS )    N)types)compile_isolated)captured_stdouttagTestCase)numpy_supportc                 8   | j         }|j         }t          |          D ]{}| |         }t          |          D ]7}||         }|xj        |j        |j        z  |j        z   |j        z
  z  c_        8|xj        |j        z  c_        |xj        |j        z  c_        |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st2s           Blib/python3.11/site-packages/numba/tests/test_recarray_usecases.pyusecase1r      s    
 
B	BBii  2h)) 	9 	9Br(CGGsusu}sw.88GGG37     c                 z    t          |          D ]*}| |         }t          |j        |j        |j                   +dS )zD
    Base on test1 of https://github.com/numba/numba/issues/381
    Nr   printf1s1f2xNkys       r   usecase2r%      sG     1XX    aDadAD!$   r   c                     t          |          D ]4}t          | j        |         | j        |         | j        |                    5dS )zD
    Base on test2 of https://github.com/numba/numba/issues/381
    Nr   r!   r"   r#   s      r   usecase3r(   '   sJ     1XX ) )ad1gqtAwQ(((() )r   c                     t          |          D ]0}| |         }t          |j        | j        |         |j                   1dS )zD
    Base on test3 of https://github.com/numba/numba/issues/381
    Nr   r    s       r   usecase4r*   /   sK     1XX # #aDadADGQT""""# #r   c                     t          |          D ]4}t          | |         j        | j        |         | |         j                   5dS )zD
    Base on test4 of https://github.com/numba/numba/issues/381
    Nr   r'   s      r   usecase5r,   8   sJ     1XX ) )adgqtAw!(((() )r   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestRecordUsecasec                 v    g d}t          j        |          | _        t          j        |d          | _        d S )N))r   <f8)r   |S3)r   r0   T)align)npdtypeunaligned_dtypealigned_dtype)selffieldss     r   setUpzTestRecordUsecase.setUpB   s<    >>>!x//XfD999r   c                 8   t           }t          j        dt          j        fdt          j        fdt          j        fg          }t	          j        |          }t          ||d d          |d d          f          }|j        }t          j        d|          }t          j        d|          }t          j	        |j
                  dz   |_        t          j	        |j
                  dz   |_        t          j	        |j
                  dz   |_        t          j	        |j
                  dz   |_        t          j	        |j
                  dz   |_        t          j	        |j
                  dz   |_        |                                }|                                }	|                                }
|	                                } |||	            ||
|           t          j                            ||
           t          j                            |	|           d S )Nr   r   r      r4      )r   r3   r4   float64r   
from_dtyper   entry_pointrecarrayaranger
   r   r   r   copytestingassert_equal)r7   pyfuncmystruct_dtmystructcrescfuncr   r   expect1expect2got1got2s               r   test_usecase1zTestRecordUsecase.test_usecase1G   s    hbj 1!2:.!2:. 0 1 1 !+K88!!!hqqqk(BCC k!;///k!;///	#(##a')CH%%))CH%%)	#(##a')CH%%))CH%%)((**((**||~~||~~w   dD

...

.....r   c                     d}t          j        ||          }t          j        |          |_        t          j        d|dz             |_        t          j        dg|j        d         z  d          |_        |S )N   r<      abcr   r1   )r3   rA   rB   r   r   arrayshaper   )r7   r4   r"   as       r   _setup_usecase2to5z$TestRecordUsecase._setup_usecase2to5j   si    K'''y||yAE""x!'!*,E:::r   c                 N   |                      |          }t          j        |          }t          ||d d          t          j        f          }|j        }t                      5   ||t          |                     t          j
                                        }d d d            n# 1 swxY w Y   t                      5   ||t          |                     t          j
                                        }d d d            n# 1 swxY w Y   |                     ||           d S N)rW   r   r?   r   r   intpr@   r   lensysstdoutgetvalueassertEqual)	r7   rF   r4   rT   record_typerI   rJ   expectgots	            r   _test_usecase2to5z#TestRecordUsecase._test_usecase2to5r   s   ''..#.u55QQQ(DEE  	+ 	+F5#e**%%%Z((**F	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+  	( 	(E%U$$$*%%''C	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	%%%%%s$   #8B''B+.B+ 8DDDc                     |                      t          | j                   |                      t          | j                   d S rY   )rc   r%   r5   r6   r7   s    r   test_usecase2zTestRecordUsecase.test_usecase2   :    x)=>>>x);<<<<<r   c                     |                      t          | j                   |                      t          | j                   d S rY   )rc   r(   r5   r6   re   s    r   test_usecase3zTestRecordUsecase.test_usecase3   rg   r   c                     |                      t          | j                   |                      t          | j                   d S rY   )rc   r*   r5   r6   re   s    r   test_usecase4zTestRecordUsecase.test_usecase4   rg   r   c                     |                      t          | j                   |                      t          | j                   d S rY   )rc   r,   r5   r6   re   s    r   test_usecase5zTestRecordUsecase.test_usecase5   rg   r   N)__name__
__module____qualname__r9   rO   rW   rc   rf   ri   rk   rm    r   r   r.   r.   @   s        : : :
!/ !/ !/F  & & & = = == = == = == = = = =r   r.   __main__)r\   numpyr3   
numba.corer   numba.core.compilerr   numba.tests.supportr   r   r   unittestnumba.npr   r   r%   r(   r*   r,   r.   rn   mainrq   r   r   <module>rz      s   



           0 0 0 0 0 0 > > > > > > > > > >  " " " " " "  $     ) ) )# # #) ) )P= P= P= P= P= P= P= P=f zHMOOOOO r   