o
    i~                     @   s   d dl Z d dlZ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lmZ dd Zd	d
 Zdd Zdd ZG dd deZedkrZe  dS dS )    N)compile_isolatedFlags)jit)types)TestCase)numpy_supportc                 C      | S N xr
   r
   j/var/www/html/eduruby.in/lip-sync/lip-sync-env/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jgtjd}g d}|D ]}| ||| qt|D ]}| ||| q#t|tjgtjd}g d}|D ]}| ||| q?t|D ]}| ||| qPd S Nreturn_type)y              ?y      ?      ?y            y      ?        )r   r   r   	complex64assertEqualentry_pointnp
complex128)selfpyfunccresxsr   r
   r
   r   test_complex_identity"   s$   

z$TestConversion.test_complex_identityc                 C   s   t }t|tjtjgtjd}g d}|D ]}|}| |||||  qt|D ]}|}| |||||  q*t|tjtjgtjd}g d}|D ]}|}| |||||  qMt|D ]}|}| |||||  qcd S r   )r   r   r   r   r   r   r   r   )r    r!   r"   r#   r   r   r
   r
   r   test_complex_addition6   s,   z$TestConversion.test_complex_additionc                 C   V   t }t|tjtjg}|j}d}d}t||D ]\}}| |||||| qd S NTFr      )	r   r   r   booleanZintpr   	itertoolsproductr   r    r!   r"   cfuncr#   Zysr
   r
   r   test_boolean_as_intO      z"TestConversion.test_boolean_as_intc                 C   r&   r'   )	r   r   r   r,   float64r   r-   r.   r   r/   r
   r
   r   test_boolean_as_floatZ   r2   z$TestConversion.test_boolean_as_floatc                 C   sV   t }t|tjtjg}|j}d}d}t||D ]\}}| |||||| qd S )Nr(   )r   r   r   r,   r   r-   r.   r   r/   r
   r
   r   test_boolean_eq_booleane   r2   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   fv   r   z3TestConversion.test_negative_to_unsigned.<locals>.fzuintp(uintp)TZnopython)assertRaisesOverflowErrorr   r    r6   r
   r
   r   test_negative_to_unsignedu   s   "z(TestConversion.test_negative_to_unsignedc                 C   sv   t }t|tjtjtjgtjd}|j}d}| t |D ]\}}}|||| qW d    d S 1 s4w   Y  d S )Nr   )r)   )r   r*   r+   )r   r+   r*   )r   r   r   uint64r   r9   r:   )r    r!   r"   r0   test_fail_argsabcr
   r
   r   'test_multiple_args_negative_to_unsigned}   s   "z6TestConversion.test_multiple_args_negative_to_unsignedc              
   C   s<  t }tdtjfdtjfdtjfg}t|}t||d d  tjtjg|d d  d}|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  qc~~~	~
t  W d    d S 1 sw   Y  d S )	Nprowcolr      dtyper+   r*   )r   r   rH   r3   r   
from_dtyper   r   r=   r   ZrecarrayZarangesizerC   rD   rE   assertRefCountr9   r:   gcZcollect)r    r!   Zmystruct_dtZmystructr"   r0   Zst1r>   r?   r@   rA   r
   r
   r   test_multiple_args_records   s0   


"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   r6      r   z1TestConversion.test_with_no_parameters.<locals>.fz()Tr7   )r   r   r;   r
   r
   r   test_with_no_parameters   s    z&TestConversion.test_with_no_parametersc              	      s~  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 sMw   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   rN   r	   r
   r   r
   r
   r   r6      r   z0TestConversion.check_argument_cleanup.<locals>.fc                    s*   | g}t | tr| D ]}| |7 }q
|S r	   )
isinstancetuple)objZobjsv_objectsr
   r   rU      s
   
z7TestConversion.check_argument_cleanup.<locals>._objectsr+   Nr*   )r   r   Zuint32rK   r   r9   r:   )r    typrR   r6   objectsr"   r
   rT   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	bytearrayrX   r   Bufferintc)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+   rG   r   )r   rH   r3   ZzerosrX   r   rI   )r    rH   Z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 )NrZ   r+   r[      )r\   r]   r   ZUniTupler^   r_   rX   r    r`   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 rY   )r\   r]   r   Optionalr^   r_   rX   rd   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 )NTr7   c                 S   rN   r	   r
   )stringr
   r
   r   bar   s   z9TestConversion.test_stringliteral_to_unicode.<locals>.barc                      s    d d S )Nzliteral stringr
   r
   rj   r
   r   foo2   s   z:TestConversion.test_stringliteral_to_unicode.<locals>.foo2)r   r   voidZunicode_type)r    rl   r
   rk   r   test_stringliteral_to_unicode   s   
z,TestConversion.test_stringliteral_to_unicodeN)__name__
__module____qualname____doc__r$   r%   r1   r4   r5   r<   rB   rM   rO   rX   ra   rb   rf   rh   rn   r
   r
   r
   r   r      s"    r   __main__)arrayrL   r-   sysnumpyr   ZunittestZnumba.core.compilerr   r   Znumbar   Z
numba.corer   Znumba.tests.supportr   Znumba.npr   r   r   r   r   r   ro   mainr
   r
   r
   r   <module>   s(     L