U
    ,d                     @   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 )8    )irbinding)types	datamodel)test_factoryNc                   @   s   e Zd ZejZdS )TestBoolN)__name__
__module____qualname__r   booleanfe_type r   r   >/tmp/pip-unpacked-wheel-eu7e0c37/numba/tests/test_datamodel.pyr      s   r   c                   @   s   e Zd ZejZdS )TestPyObjectN)r   r	   r
   r   Zpyobjectr   r   r   r   r   r      s   r   c                   @   s   e Zd ZejZdS )TestInt8N)r   r	   r
   r   Zint8r   r   r   r   r   r      s   r   c                   @   s   e Zd ZejZdS )	TestInt16N)r   r	   r
   r   int16r   r   r   r   r   r      s   r   c                   @   s   e Zd ZejZdS )	TestInt32N)r   r	   r
   r   int32r   r   r   r   r   r      s   r   c                   @   s   e Zd ZejZdS )	TestInt64N)r   r	   r
   r   int64r   r   r   r   r   r      s   r   c                   @   s   e Zd ZejZdS )	TestUInt8N)r   r	   r
   r   uint8r   r   r   r   r   r       s   r   c                   @   s   e Zd ZejZdS )
TestUInt16N)r   r	   r
   r   Zuint16r   r   r   r   r   r   $   s   r   c                   @   s   e Zd ZejZdS )
TestUInt32N)r   r	   r
   r   Zuint32r   r   r   r   r   r   (   s   r   c                   @   s   e Zd ZejZdS )
TestUInt64N)r   r	   r
   r   Zuint64r   r   r   r   r   r   ,   s   r   c                   @   s   e Zd ZejZdS )	TestFloatN)r   r	   r
   r   float32r   r   r   r   r   r   0   s   r   c                   @   s   e Zd ZejZdS )
TestDoubleN)r   r	   r
   r   Zfloat64r   r   r   r   r   r   4   s   r   c                   @   s   e Zd ZejZdS )TestComplexN)r   r	   r
   r   	complex64r   r   r   r   r   r   8   s   r   c                   @   s   e Zd ZejZdS )TestDoubleComplexN)r   r	   r
   r   
complex128r   r   r   r   r   r!   <   s   r!   c                   @   s   e Zd ZeejZdS )TestPointerOfInt32N)r   r	   r
   r   ZCPointerr   r   r   r   r   r   r#   @   s   r#   c                   @   s   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   s   r$   c                   @   s   e Zd ZeejdZdS )TestUniTupleEmptyr   Nr&   r   r   r   r   r(   H   s   r(   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   r)   L   s   r)   c                   @   s   e Zd Zeg ZdS )TestTupleEmptyN)r   r	   r
   r   r*   r   r   r   r   r   r+   P   s   r+   c                   @   s   e Zd ZeejddZdS )Test1DArrayOfInt32   CNr   r	   r
   r   Arrayr   r   r   r   r   r   r,   T   s   r,   c                   @   s   e Zd ZeejddZdS )Test2DArrayOfComplex128r%   r.   N)r   r	   r
   r   r0   r"   r   r   r   r   r   r1   X   s   r1   c                   @   s   e Zd ZeejddZdS )Test0DArrayOfInt32r   r.   Nr/   r   r   r   r   r2   \   s   r2   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.
        Ztest_arguments)namec                    s"   g | ]}t  | d qS N)r   ConstantlookupZget_value_type).0tdmmr   r   
<listcomp>p   s   z2TestArgInfo._test_as_arguments.<locals>.<listcomp>c                 S   s   g | ]
}|j qS r   type)r8   vr   r   r   r<   x   s     c                 S   s   g | ]
}|j qS r   r=   r8   ar   r   r   r<   {   s     c                 S   s   g | ]
}|j qS r   r=   r@   r   r   r   r<   |   s     c                 S   s   g | ]}d qS )zarg%ir   )r8   ir   r   r   r<      s     N)r   default_managerZ	ArgPackerr   ModuleFunctionTypeZVoidTypeZFunctionZ	IRBuilderZposition_at_endZappend_basic_blockZas_argumentsZfrom_argumentsassertEquallentupleZargument_typesZassign_namesrangeZret_voidllZparse_assemblystr)selffe_argsfimoduleZfntyfunctionZbuilderargsvaluesZasargsZvaltysZexpect_typesZ	got_typesr   r:   r   _test_as_argumentsb   s*    
zTestArgInfo._test_as_argumentsc                 C   s(   t jt t jddt jg}| | d S )Nr-   r.   )r   r   r0   r    rS   rL   rM   r   r   r   test_int32_array_complex   s
    z$TestArgInfo.test_int32_array_complexc                 C   s$   t t jddgd }| | d S )Nr-   r.   r%   r   r0   r   rS   rT   r   r   r   test_two_arrays   s    zTestArgInfo.test_two_arraysc                 C   s$   t t jddgd }| | d S )Nr   r.   r%   rV   rT   r   r   r   test_two_0d_arrays   s    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%      r-   r.   )r   r'   r   rS   r0   )rL   rM   Z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   r'   r   r*   r   rS   rT   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   r'   r*   r   rS   rT   r   r   r   test_nested_empty_tuples   s
    z$TestArgInfo.test_nested_empty_tuplesN)
r   r	   r
   rS   rU   rW   rX   rZ   r[   r\   r   r   r   r   r3   `   s   %r3   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 r5   )r   rC   r;   )rL   r   r   r   setUp   s    zTestMemInfo.setUpc                 C   s"   t j}| j| }| |  d S r5   )r   r   r;   assertFalsecontains_nrt_meminforL   tydmr   r   r   test_number   s    
zTestMemInfo.test_numberc                 C   s*   t jd d  }| j| }| |  d S r5   )r   r   r;   
assertTruer`   ra   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   r'   r   r;   r_   r`   ra   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 rg   )r   r'   r   r;   re   r`   ra   r   r   r   test_tuple_of_array   s    
zTestMemInfo.test_tuple_of_arrayN)r   r	   r
   r^   rd   rf   rj   rk   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   )rI   shape)rA   brB   r   r   r   copy   s    z%TestMisc.test_issue2921.<locals>.copy   )rh   )FTTTT)ZnumpyZnumbarm   Zaranger   viewZbool_Z
zeros_likeZtestingZassert_equalarray)rL   nprm   rp   ro   rA   r   r   r   test_issue2921   s    


zTestMisc.test_issue2921N)r   r	   r
   ru   r   r   r   r   rl      s   rl   __main__)&Zllvmliter   r   rJ   Z
numba.corer   r   Znumba.core.datamodel.testingr   Zunittestr   r   r   r   r   r   r   r   r   r   r   r   r   r!   r#   r$   r(   r)   r+   r,   r1   r2   ZTestCaser3   r]   rl   r   mainr   r   r   r   <module>   s<   P
