U
    ?h                     @   sP   d Z ddlmZ ddlmZ ddlmZmZ G dd deZe	dkrLe
  dS )	zW
Test function name mangling.
The mangling affects the ABI of numba compiled binaries.
    )types)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   K/var/www/html/venv/lib/python3.8/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   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  |V  qdS )z_{:02x}N)format).0cr   r   r   	<genexpr>   s   z2TestMangling.test_unicode_fname.<locals>.<genexpr>utf8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text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
numba.corer   Znumba.core.funcdescr   Znumba.tests.supportr   r   r   r$   mainr   r   r   r   <module>   s   