U
    {±ËhS  ã                   @   sh   d dl Z d dlmZmZ dd„ ZG dd„ de jƒZG dd„ deƒZG d	d
„ d
eƒZG dd„ de jƒZ	dS )é    N)ÚCodeÚUtilityCodec                 C   s(   | d o| d   ¡ | d o$| d   ¡ fS )Nr   é   )Ústrip)Útup© r   úI/tmp/pip-unpacked-wheel-fhl22ezh/Cython/Compiler/Tests/TestUtilityLoad.pyÚ
strip_2tup   s    r	   c                   @   s@   e Zd ZdZdZdZeddZd ZdZ	e
jZdd„ Zd	d
„ ZdS )ÚTestUtilityLoaderz#
    Test loading UtilityCodes
    )ztest {{loader}} prototypeztest {{loader}} impl)zreq {{loader}} protozreq {{loader}} implÚLoader)ÚloaderzTestUtilityLoader.cc                 C   s(   t | j | j| j¡ƒ}|  || j¡ d S )N)r	   ÚclsÚload_as_stringÚnameÚfilenameÚassertEqualÚexpected©ÚselfÚgotr   r   r   Útest_load_as_string   s    z%TestUtilityLoader.test_load_as_stringc                 C   sŽ   | j j| j| jd}t|j|jfƒ}|  || j¡ |j	\}t|j|jfƒ}|  || j
¡ | j j| j| jd}t|j|jfƒ}|  || j¡ d S )N)Ú	from_file)r   Úloadr   r   r	   ÚprotoÚimplr   r   ÚrequiresÚrequiredZload_cached©r   Zutilityr   r   r   r   r   Ú	test_load   s    zTestUtilityLoader.test_loadN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   ÚdictÚcontextr   r   r   r   r   r   r   r   r   r   r   r
   	   s   
r
   c                   @   sn   e Zd ZdZejd  dd¡ejd  dd¡fZejd  dd¡ejd  dd¡fZ	e
jZdd„ Zdd	„ Zd
S )ÚTestTempitaUtilityLoaderz=
    Test loading UtilityCodes with Tempita substitution
    r   z
{{loader}}r   r   c                 C   s.   t | jj| j| j| jdƒ}|  || j¡ d S )N©r$   )r	   r   r   r   r   r$   r   Úexpected_tempitar   r   r   r   r   6   s    z,TestTempitaUtilityLoader.test_load_as_stringc                 C   s–   | j j| j| j| jd}t|j|jfƒ}|  || j	¡ |j
\}t|j|jfƒ}|  || j¡ | j j| j| j| jd}t|j|jfƒ}|  || j	¡ d S )Nr&   )r   r$   )r   r   r   r   r$   r	   r   r   r   r'   r   Úrequired_tempitar   r   r   r   r   :   s    z"TestTempitaUtilityLoader.test_loadN)r   r    r!   r"   r
   r   Úreplacer'   r   r(   r   ZTempitaUtilityCoder   r   r   r   r   r   r   r%   *   s   ÿÿr%   c                   @   sJ   e Zd ZdZdZdZdZdZeddZ	dZ
d	ZejZd
e_ejZejZd
S )ÚTestCythonUtilityLoaderz)
    Test loading CythonUtilityCodes
    )Nztest {{cy_loader}} impl)Nztest CyLoader impl)Nzreq {{cy_loader}} impl)Nzreq CyLoader implZCyLoader)Z	cy_loaderZTestCyUtilityLoaderzTestCyUtilityLoader.pyxN)r   r    r!   r"   r   r'   r   r(   r#   r$   r   r   r   ZCythonUtilityCoder   r   r
   r   r%   Ztest_load_tempitar   r   r   r   r*   H   s   
r*   c                   @   s   e Zd Zdd„ ZdS )ÚTestUtilityCodec           
      C   s¾   t j dd¡}t j dd¡}t j dd¡}t j dd¡}t j dd¡}t j dd¡}||||||g}tt|ƒƒD ]H}tt|ƒƒD ]6}	|	|kr¢|  || ||	 ¡ q€|  || ||	 ¡ q€qpd S )	NZNumpyImportUFunczNumpyImportArray.cZNumpyImportArrayZpyunicode_strlenzStringTools.cZpyunicode_from_unicodeZIncludeStringHZIncludeCppStringH)r   r   r   ÚrangeÚlenr   ZassertNotEqual)
r   Zc1Úc2Úc3Zc4Zc5Zc6ÚcodesÚmÚnr   r   r   Útest_equalityb   s    zTestUtilityCode.test_equalityN)r   r    r!   r3   r   r   r   r   r+   a   s   r+   )
ZunittestZCython.Compilerr   r   r	   ZTestCaser
   r%   r*   r+   r   r   r   r   Ú<module>   s   !