B
      ›\û  ã               @   sT   d Z ddlmZmZ ddlmZ ddlmZmZ G dd„ deƒZ	e
dkrPe ¡  d	S )
zW
Test function name mangling.
The mangling affects the ABI of numba compiled binaries.
é    )ÚtypesÚutils)Údefault_mangleré   )ÚunittestÚTestCasec               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestManglingc             C   s&   d}t jf}t||ƒ}|  |d¡ d S )NÚfooZ_Z3fooi)r   Úint32r   ÚassertEqual)ÚselfÚfnameÚargtypesÚname© r   ú8lib/python3.7/site-packages/numba/tests/test_mangling.pyÚtest_one_args   s    
zTestMangling.test_one_argsc             C   s*   d}t jt jf}t||ƒ}|  |d¡ d S )Nr	   Z_Z3fooif)r   r
   Úfloat32r   r   )r   r   r   r   r   r   r   Útest_two_args   s    
zTestMangling.test_two_argsc             C   s|   d}t jt jf}t||ƒ}|  |t¡ |d }d dd„ | d¡D ƒ¡}d| }d t	|ƒ|¡}|  
||¡ |  |d	¡ d S )
Nu   foà² é   Ú c             s   s   | ]}d   t |¡¡V  qdS )z${:02x}N)Úformatr   Z	asbyteint)Ú.0Úcr   r   r   ú	<genexpr>    s   z2TestMangling.test_unicode_fname.<locals>.<genexpr>Úutf8Zfoz_Z{}{}ifz^_Z[a-zA-Z0-9_\$]+$)r   r
   r   r   ZassertIsInstanceÚstrÚjoinÚencoder   Úlenr   ZassertRegexpMatches)r   r   r   r   ZunicharÚencÚtextZexpectr   r   r   Útest_unicode_fname   s    

zTestMangling.test_unicode_fnameN)Ú__name__Ú
__module__Ú__qualname__r   r   r"   r   r   r   r   r      s   r   Ú__main__N)Ú__doc__Znumbar   r   Znumba.funcdescr   Zsupportr   r   r   r#   Úmainr   r   r   r   Ú<module>   s   