o
    i                     @   s   d dl Z d dlZd dlZd dlZd dlmZmZ d dlm	Z	 d dl
mZ d dlm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)jitnjit)types)TestCase)numpy_supportc                 C      | S N xr	   r	   X/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/numba/tests/test_conversion.pyidentity      r   c                 C   s   | | S r   r	   r   yr	   r	   r   addition      r   c                 C   s   | |kS r   r	   r   r	   r	   r   equality   r   r   c                 C   r   r   r	   )r   r   zr	   r	   r   foobar   r   r   c                   @   s   e Zd 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d Zdd Zdd Zdd Zdd Zdd Zdd Zd S )!TestConversionz-
    Testing Python to Native conversion
    c                 C   s   t }tttj|}g d}|D ]
}| ||| qt|D ]
}| ||| q"tttj|}g d}|D ]
}| ||| q=t|D ]
}| ||| qMd S N)y              ?y      ?      ?y            y      ?        )r   r   r   	complex64assertEqualnp
complex128)selfpyfunccfuncxsr   r	   r	   r   test_complex_identity   s   z$TestConversion.test_complex_identityc                 C   s   t }tttjtj|}g d}|D ]}|}| |||||  qt|D ]}|}| |||||  q)tttjtj|}g d}|D ]}|}| |||||  qKt|D ]}|}| |||||  q`d S r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r	   r	   r   test_complex_addition1   s,   
z$TestConversion.test_complex_additionc                 C   R   t }ttjtjf|}d}d}t||D ]\}}| |||||| qd S NTFr      )r   r   r   booleanintp	itertoolsproductr   r   r   r   r   ysr	   r	   r   test_boolean_as_intI      z"TestConversion.test_boolean_as_intc                 C   r"   r#   )r   r   r   r(   float64r*   r+   r   r,   r	   r	   r   test_boolean_as_floatS   r/   z$TestConversion.test_boolean_as_floatc                 C   sR   t }ttjtjf|}d}d}t||D ]\}}| |||||| qd S )Nr$   )r   r   r   r(   r*   r+   r   r,   r	   r	   r   test_boolean_eq_boolean]   r/   z&TestConversion.test_boolean_eq_booleanc                 C   sL   dd }|  t tddd|d W d    d S 1 sw   Y  d S )Nc                 S   r   r   r	   r
   r	   r	   r   fm   r   z3TestConversion.test_negative_to_unsigned.<locals>.fzuintp(uintp)Tnopython)assertRaisesOverflowErrorr   r   r3   r	   r	   r   test_negative_to_unsignedl   s   "z(TestConversion.test_negative_to_unsignedc                 C   sp   t }tttjtjtj|}d}| t |D ]\}}}|||| qW d    d S 1 s1w   Y  d S )N)r%   )r   r&   r'   )r   r'   r&   )r   r   r   uint64r7   r8   )r   r   r   test_fail_argsabcr	   r	   r   'test_multiple_args_negative_to_unsignedt   s   "z6TestConversion.test_multiple_args_negative_to_unsignedc           
   
   C   s6  t }tdtjfdtjfdtjfg}t|}t|d d  |d d  tjtj|}tj	d|d}t
|jd |_t
|jd |_t
|jd |_| |> |ddf|ddff}|D ] \}}}	| t ||||	 W d    n1 s{w   Y  q`~~~~	t  W d    d S 1 sw   Y  d S )Nprowcol   dtyper'   r&   )r   r   rF   r0   r   
from_dtyper   r   r;   recarrayarangesizerA   rB   rC   assertRefCountr7   r8   gccollect)
r   r   mystruct_dtmystructr   st1r<   r=   r>   r?   r	   r	   r   test_multiple_args_records   s2   

"z)TestConversion.test_multiple_args_recordsc                 C   s(   dd }|  | tddd|  d S )Nc                   S      d S r   r	   r	   r	   r	   r   r3      r   z1TestConversion.test_with_no_parameters.<locals>.fz()Tr4   )r   r   r9   r	   r	   r   test_with_no_parameters   s    z&TestConversion.test_with_no_parametersc              	      sz  dd } fdd  |}t |tjf|}| j|  ||d W d   n1 s,w   Y  | j| " | t ||d W d   n1 sLw   Y  W d   n1 s[w   Y  t tj|f|}| j|  |d| W d   n1 s~w   Y  | j| + | t |d| W d   n1 sw   Y  W d   dS W d   dS 1 sw   Y  dS )zF
        Check that argument cleanup doesn't leak references.
        c                 S   rR   r   r	   r   r	   r	   r   r3      r   z0TestConversion.check_argument_cleanup.<locals>.fc                    s*   | g}t | tr| D ]}| |7 }q
|S r   )
isinstancetuple)objobjsv_objectsr	   r   rZ      s
   
z7TestConversion.check_argument_cleanup.<locals>._objectsr'   Nr&   )r   r   uint32rK   r7   r8   )r   typrV   r3   objectsr   r	   rY   r   check_argument_cleanup   s0   "z%TestConversion.check_argument_cleanupc                 C   s(   t td}| ttjdd| d S N   xyzr'   C)
memoryview	bytearrayr^   r   
MemoryViewbyte)r   memr	   r	   r   test_cleanup_buffer   s   z"TestConversion.test_cleanup_bufferc                 C   sB   t dt jfdt jfg}t jd|d}| t||d  d S )Nr   r   r'   rE   r   )r   rF   r0   zerosr^   r   rG   )r   rF   recarrr	   r	   r   test_cleanup_record   s   z"TestConversion.test_cleanup_recordc                 C   s8   t td}tttjddd}| |||f d S )Nr`   r'   ra      )rb   rc   r   UniTuplerd   re   r^   r   rf   tpr	   r	   r   test_cleanup_tuple   s   z!TestConversion.test_cleanup_tuplec                 C   s2   t td}tttjdd}| || d S r_   )rb   rc   r   Optionalrd   re   r^   rm   r	   r	   r   test_cleanup_optional   s   z$TestConversion.test_cleanup_optionalc                    s<   t ttjdddd  t t dd fdd}d S )NTr4   c                 S   rR   r   r	   )stringr	   r	   r   bar   s   z9TestConversion.test_stringliteral_to_unicode.<locals>.barc                      s    d d S )Nzliteral stringr	   r	   rs   r	   r   foo2   s   z:TestConversion.test_stringliteral_to_unicode.<locals>.foo2)r   r   voidunicode_type)r   ru   r	   rt   r   test_stringliteral_to_unicode   s   
z,TestConversion.test_stringliteral_to_unicodeN)__name__
__module____qualname____doc__r    r!   r.   r1   r2   r:   r@   rQ   rS   r^   rg   rj   ro   rq   rx   r	   r	   r	   r   r      s"    

r   __main__)rL   r*   numpyr   unittestnumbar   r   
numba.corer   numba.tests.supportr   numba.npr   r   r   r   r   r   ry   mainr	   r	   r	   r   <module>   s"     E