o
    8ήc                     @   s  d dl mZmZ d dlmZmZ d dlmZ d dl	Z	G dd de Z
G dd de ZG d	d
 d
e ZG dd de ZG dd de ZG dd de ZG dd de ZG dd de ZG dd de ZG dd de ZG dd de ZG dd de ZG dd de ZG dd  d e ZG d!d" d"e ZG d#d$ d$e ZG d%d& d&e ZG d'd( d(e ZG d)d* d*e ZG d+d, d,e ZG d-d. d.e ZG d/d0 d0e ZG d1d2 d2e	j Z!G d3d4 d4e	j Z"G d5d6 d6e	j Z#e$d7kre	%  dS dS )8    )irbinding)types	datamodel)test_factoryNc                   @      e Zd ZejZdS )TestBoolN)__name__
__module____qualname__r   booleanfe_type r   r   A/tmp/pip-target-vg8gfxp4/lib/python/numba/tests/test_datamodel.pyr          
r   c                   @   r   )TestPyObjectN)r	   r
   r   r   pyobjectr   r   r   r   r   r      r   r   c                   @   r   )TestInt8N)r	   r
   r   r   int8r   r   r   r   r   r      r   r   c                   @   r   )	TestInt16N)r	   r
   r   r   int16r   r   r   r   r   r      r   r   c                   @   r   )	TestInt32N)r	   r
   r   r   int32r   r   r   r   r   r      r   r   c                   @   r   )	TestInt64N)r	   r
   r   r   int64r   r   r   r   r   r      r   r   c                   @   r   )	TestUInt8N)r	   r
   r   r   uint8r   r   r   r   r   r       r   r   c                   @   r   )
TestUInt16N)r	   r
   r   r   uint16r   r   r   r   r   r   $   r   r   c                   @   r   )
TestUInt32N)r	   r
   r   r   uint32r   r   r   r   r   r   (   r   r   c                   @   r   )
TestUInt64N)r	   r
   r   r   uint64r   r   r   r   r   r!   ,   r   r!   c                   @   r   )	TestFloatN)r	   r
   r   r   float32r   r   r   r   r   r#   0   r   r#   c                   @   r   )
TestDoubleN)r	   r
   r   r   float64r   r   r   r   r   r%   4   r   r%   c                   @   r   )TestComplexN)r	   r
   r   r   	complex64r   r   r   r   r   r'   8   r   r'   c                   @   r   )TestDoubleComplexN)r	   r
   r   r   
complex128r   r   r   r   r   r)   <   r   r)   c                   @   s   e Zd ZeejZdS )TestPointerOfInt32N)r	   r
   r   r   CPointerr   r   r   r   r   r   r+   @   s    r+   c                   @      e Zd ZeejdZdS )TestUniTupleOf2xInt32   Nr	   r
   r   r   UniTupler   r   r   r   r   r   r.   D       r.   c                   @   r-   )TestUniTupleEmptyr   Nr0   r   r   r   r   r3   H   r2   r3   c                   @   s   e Zd ZeejejgZdS )TestTupleInt32Float32N)r	   r
   r   r   Tupler   r$   r   r   r   r   r   r4   L   s    r4   c                   @   s   e Zd Zeg ZdS )TestTupleEmptyN)r	   r
   r   r   r5   r   r   r   r   r   r6   P   s    r6   c                   @      e Zd ZeejddZdS )Test1DArrayOfInt32   CNr	   r
   r   r   Arrayr   r   r   r   r   r   r8   T       r8   c                   @   r7   )Test2DArrayOfComplex128r/   r:   N)r	   r
   r   r   r<   r*   r   r   r   r   r   r>   X   r=   r>   c                   @   r7   )Test0DArrayOfInt32r   r:   Nr;   r   r   r   r   r?   \   r=   r?   c                   @   sD   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S )TestArgInfoc                    s  t j t  |}t }tt g }tj||dd}t }|	|
   fdd|D }|||}|||}	| t|	t| tdd |D }
| |
|j dd |D }dd |	D }| || ||dd tt|D  |  tt| d	S )
z
        Test round-tripping types *fe_args* through the default data model's
        argument conversion and unpacking logic.
        test_arguments)namec                    s"   g | ]}t  | d qS N)r   Constantlookupget_value_type).0tdmmr   r   
<listcomp>p   s    z2TestArgInfo._test_as_arguments.<locals>.<listcomp>c                 S      g | ]}|j qS r   type)rG   vr   r   r   rK   x       c                 S   rL   r   rM   rG   ar   r   r   rK   {   rP   c                 S   rL   r   rM   rQ   r   r   r   rK   |   rP   c                 S   s   g | ]}d qS )zarg%ir   )rG   ir   r   r   rK      s    N)r   default_manager	ArgPackerr   ModuleFunctionTypeVoidTypeFunction	IRBuilderposition_at_endappend_basic_blockas_argumentsfrom_argumentsassertEquallentupleargument_typesassign_namesrangeret_voidllparse_assemblystr)selffe_argsfimodulefntyfunctionbuilderargsvaluesasargsvaltysexpect_types	got_typesr   rI   r   _test_as_argumentsb   s*   
zTestArgInfo._test_as_argumentsc                 C   s(   t jt t jddt jg}| | d S )Nr9   r:   )r   r   r<   r(   rv   ri   rj   r   r   r   test_int32_array_complex   s
   z$TestArgInfo.test_int32_array_complexc                 C   $   t t jddgd }| | d S )Nr9   r:   r/   r   r<   r   rv   rw   r   r   r   test_two_arrays      zTestArgInfo.test_two_arraysc                 C   ry   )Nr   r:   r/   rz   rw   r   r   r   test_two_0d_arrays   r|   zTestArgInfo.test_two_0d_arraysc                 C   s~   t t jdt t jdg}| | t t jdd}t |dt |dg}| | t t t jddg}| | d S )Nr/      r9   r:   )r   r1   r   rv   r<   )ri   rj   arrtyr   r   r   test_tuples   s   



zTestArgInfo.test_tuplesc                 C   s*   t t jdt dt jg}| | d S )Nr   r   )r   r1   r   r5   r   rv   rw   r   r   r   test_empty_tuples   s
   zTestArgInfo.test_empty_tuplesc                 C   s*   t jt t ddt jg}| | d S )Nr   r/   )r   r   r1   r5   r   rv   rw   r   r   r   test_nested_empty_tuples   s
   z$TestArgInfo.test_nested_empty_tuplesN)
r	   r
   r   rv   rx   r{   r}   r   r   r   r   r   r   r   r@   `   s    %r@   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestMemInfoc                 C   s   t j| _d S rC   )r   rT   rJ   )ri   r   r   r   setUp   s   zTestMemInfo.setUpc                 C   s"   t j}| j| }| |  d S rC   )r   r   rJ   assertFalsecontains_nrt_meminfori   tydmr   r   r   test_number   s   
zTestMemInfo.test_numberc                 C   s*   t jd d  }| j| }| |  d S rC   )r   r   rJ   
assertTruer   r   r   r   r   
test_array   s   
zTestMemInfo.test_arrayc                 C   s,   t jt jdd}| j| }| |  d S Nr/   )dtypecount)r   r1   r   rJ   r   r   r   r   r   r   test_tuple_of_number   s   
z TestMemInfo.test_tuple_of_numberc                 C   s4   t jt jd d  dd}| j| }| |  d S r   )r   r1   r   rJ   r   r   r   r   r   r   test_tuple_of_array   s   
zTestMemInfo.test_tuple_of_arrayN)r	   r
   r   r   r   r   r   r   r   r   r   r   r      s    r   c                   @   s   e Zd Zdd ZdS )TestMiscc                 C   sd   dd l }ddlm} |dd }|jd|jd|j}||}||| |j	||
d d S )Nr   )njitc                 S   s$   t | jd D ]}|| | |< qd S )Nr   )rd   shape)rR   brS   r   r   r   copy   s   z%TestMisc.test_issue2921.<locals>.copy   )r   )FTTTT)numpynumbar   aranger   viewbool_
zeros_liketestingassert_equalarray)ri   npr   r   r   rR   r   r   r   test_issue2921   s   


zTestMisc.test_issue2921N)r	   r
   r   r   r   r   r   r   r      s    r   __main__)&llvmliter   r   rf   
numba.corer   r   numba.core.datamodel.testingr   unittestr   r   r   r   r   r   r   r   r   r!   r#   r%   r'   r)   r+   r.   r3   r4   r6   r8   r>   r?   TestCaser@   r   r   r	   mainr   r   r   r   <module>   s@    P
