o
    €eÜ  ã                   @   s¢   d dl Z d dlZzd dlmZ W n ey   d dlmZ Y nw d dlmZmZmZm	Z	m
Z
mZmZmZ dZeeƒZeefZG dd„ deƒZG dd„ dejƒZdS )	é    N)ÚStringIO)Ú_CACHE_NAME_PATTERNÚ_build_cache_nameÚ_find_cache_attributesÚbuild_hex_versionÚcached_methodÚclear_method_cachesÚtry_finally_contextmanagerÚprint_versionÚcached_nextc                   @   s   e Zd Zedd„ ƒZdS )ÚCachedc                 C   s   t |ƒS ©N)Únext)ÚselfÚx© r   úLD:\Projects\ConvertPro\env\Lib\site-packages\Cython/Tests/TestCythonUtils.pyr      s   zCached.cached_nextN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r      s    r   c                   @   sd   e 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S )ÚTestCythonUtilsc                 C   sD   |   dtdƒ¡ |   dtdƒ¡ |   dtdƒ¡ |   dtdƒ¡ d S )	NZ
0x001D00A1z0.29a1Z
0x001D03C4z	0.29.3rc4Z
0x001D00F0z0.29Z
0x040000F0z4.0)ÚassertEqualr   )r   r   r   r   Útest_build_hex_version   s   z&TestCythonUtils.test_build_hex_versionc                 C   s8   d}t |ƒ}t |¡}|  |d ¡ |  | d¡|¡ d S )NZfooé   )r   r   ÚmatchZassertIsNotr   Úgroup)r   Úmethod_nameÚ
cache_namer   r   r   r   Útest_cache_method_name!   s
   
z&TestCythonUtils.test_cache_method_namec                 C   s8   t ƒ }|  t|tƒ¡ |  t|tƒ¡ |  |tƒ ¡ d S r   )r   ÚassertFalseÚhasattrÚ
CACHE_NAMEÚ
assertTrueÚMETHOD_NAMEÚset_of_names_equalÚset)r   Úobjr   r   r   Útest_requirements_for_Cached)   s   z,TestCythonUtils.test_requirements_for_Cachedc                 C   s   |   tt|ƒƒ|¡ d S r   )r   r%   r   )r   r&   Úvaluer   r   r   r$   0   s   z"TestCythonUtils.set_of_names_equalc                 C   sR   t ƒ }d}t|ƒ}t|ti ƒ t||i ƒ |  t||ƒ¡ |  |t||fh¡ d S ©NÚbar)r   r   Úsetattrr!   r   r    r$   ÚNAMES)r   r&   r   r   r   r   r   Útest_find_cache_attributes3   s   z*TestCythonUtils.test_find_cache_attributesc                 C   s„   t ƒ }ttdƒƒ}|fdi}|  | |¡d¡ |  |th¡ |  t|tƒ|¡ |  | |¡d¡ |  |th¡ |  t|tƒ|¡ d S )Né   r   )	r   ÚiterÚranger   r   r$   r,   Úgetattrr!   ©r   r&   r(   Úcacher   r   r   Útest_cached_method>   s   
z"TestCythonUtils.test_cached_methodc                 C   sr   t ƒ }ttdƒƒ}|fdi}| |¡ t|ƒ |  |tƒ ¡ |  | |¡d¡ |  |th¡ |  t	|t
ƒ|¡ d S )Nr.   r   )r   r/   r0   r   r   r$   r%   r   r,   r1   r!   r2   r   r   r   Útest_clear_method_cachesM   s   

z(TestCythonUtils.test_clear_method_cachesc                 C   s`   t ƒ }d}t|ƒ}||f}t||tƒ ƒ |  t||ƒ¡ |  ||h¡ t|ƒ |  ||h¡ d S r)   )r   r   r+   Úobjectr   r    r$   r   )r   r&   r   r   Únamesr   r   r   Ú,test_clear_method_caches_with_missing_method[   s   z<TestCythonUtils.test_clear_method_caches_with_missing_methodc              	      s¨  g ‰ t ‡ fdd„ƒ}|ddddd}ˆ dgksJ ‚|  |d	d
dif¡ W d   ƒ n1 s.w   Y  ˆ ddgks;J ‚G dd„ dtƒ}ˆ d d …= |  |¡5 |dddd}ˆ dgks]J ‚|  |dddif¡ |dƒ‚1 snw   Y  ˆ ddgks{J ‚W d   ƒ n1 s…w   Y  ˆ d d …= |  t¡6 |dddd}ˆ dgks¤J ‚|  |dddif¡ tdƒ‚1 sµw   Y  ˆ ddgksÂJ ‚W d   ƒ d S 1 sÍw   Y  d S )Nc                  ?   s$    ˆ   d¡ | |fV  ˆ   d¡ d S )NÚenterÚexit)Úappend)ÚargsÚkwargs©Zstatesr   r   Úgenk   s   €

z<TestCythonUtils.test_try_finally_contextmanager.<locals>.genr   é   r.   é   )r   r9   )r   r@   r.   r   r:   c                   @   s   e Zd ZdS )zDTestCythonUtils.test_try_finally_contextmanager.<locals>.MyExceptionN)r   r   r   r   r   r   r   ÚMyExceptionv   s    rB   )Úy)r   r@   rC   zFAIL INSIDEÚSTOP)r	   r   ÚRuntimeErrorÚassertRaisesÚStopIteration)r   r?   Z	call_argsrB   r   r>   r   Útest_try_finally_contextmanageri   s6   þ
ýû
ý"ûz/TestCythonUtils.test_try_finally_contextmanagerc                 C   sŠ   t j}t j}tƒ  }t _tƒ  }t _ztƒ  W |t _|t _n|t _|t _w | ¡ }| ¡ }ddlm} |  ||¡ |rC|  ||¡ d S d S )Nr@   ©Ú__version__)	ÚsysÚstderrÚstdoutr   r
   ÚgetvalueÚ rJ   ÚassertIn)r   Úorig_stderrÚorig_stdoutrL   rM   Úversionr   r   r   Útest_print_version‰   s"   ÿÿz"TestCythonUtils.test_print_versionc                 C   sz   t j}t j}tƒ  } t _t _ztƒ  W |t _|t _n|t _|t _w | ¡ }ddlm} |  ||¡ |  	| 
|¡d¡ d S )Nr@   rI   r   )rK   rL   rM   r   r
   rN   rO   rJ   rP   r   Úcount)r   rQ   rR   rM   rS   r   r   r   Útest_print_version_stdouterrœ   s   ÿz,TestCythonUtils.test_print_version_stdouterrN)r   r   r   r   r   r'   r$   r-   r4   r5   r8   rH   rT   rV   r   r   r   r   r      s     r   )rK   Zunittestr   ÚImportErrorÚioZCython.Utilsr   r   r   r   r   r   r	   r
   r#   r!   r,   r6   r   ZTestCaser   r   r   r   r   Ú<module>   s    ÿ(