3
h                 @   s   d dl Z d dlZyd dlmZ W n  ek
r@   d dlmZ Y nX d dlmZ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normalise_float_reprcached_nextc               @   s   e Zd Zedd ZdS )Cachedc             C   s   t |S )N)next)selfx r   n/var/www/html/CrowdFlow/Picklecon/ble_analysis_env/lib/python3.6/site-packages/Cython/Tests/TestCythonUtils.pyr      s    zCached.cached_nextN)__name__
__module____qualname__r   r   r   r   r   r   r      s   r   c               @   sl   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d ZdS )TestCythonUtilsc             C   sD   | j dtd | j dtd | j dtd | j 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j|}| j|d  | j|j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  }| jt|t | jt|t | j|t  d S )N)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   | j tt|| d S )N)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  | jt|| | j|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}| j|j|d | j|th | jt|t| | j|j|d | j|th | j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}|j| t| | j|t  | j|j|d | j|th | jt	|t
| d S )Nr-   r   )r   r.   r/   r   r   r$   r%   r   r+   r0   r!   )r   r&   r(   r1   r   r   r   test_clear_method_cachesM   s    

z(TestCythonUtils.test_clear_method_cachesc             C   s`   t  }d}t|}||f}t||t  | jt|| | j||h t| | j||h d S )Nr)   )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          (      sb  g  t  fdd}|ddddd(} dgks4t| j|dd	dif W d Q R X  dd
gksbtG dd dt} d d = | j|Z |dddd0} dgkst| j|dddif |dW d Q R X  dd
gkstW d Q R X  d d = | jt^ |dddd2} dgkst| j|dddif tdW d Q R X  dd
gksTtW d Q R X d S )Nc              ?   s"    j d | |fV   j d d S )Nenterexit)append)argskwargs)statesr   r   genk   s    

z<TestCythonUtils.test_try_finally_contextmanager.<locals>.genr      r-      )r   r7   r   r8   c               @   s   e Zd ZdS )zDTestCythonUtils.test_try_finally_contextmanager.<locals>.MyExceptionN)r   r   r   r   r   r   r   MyExceptionv   s   r@   )yrA   zFAIL INSIDESTOP)r   r>   r-   )r   r>   )r   r>   )r	   AssertionErrorr   RuntimeErrorassertRaisesStopIteration)r   r=   	call_argsr@   r   )r<   r   test_try_finally_contextmanageri   s*    

z/TestCythonUtils.test_try_finally_contextmanagerc             C   sz   t j}t j}t  }t _t  }t _z
t  W d |t _|t _X |j }|j }ddlm} | j|| |rv| j|| d S )Nr>   )__version__)	sysstderrstdoutr   r
   getvalue rI   assertIn)r   orig_stderrorig_stdoutrK   rL   versionr   r   r   test_print_version   s    
z"TestCythonUtils.test_print_versionc             C   sn   t j}t j}t  } t _t _z
t  W d |t _|t _X |j }ddlm} | j|| | j	|j
|d d S )Nr>   )rI   r   )rJ   rK   rL   r   r
   rM   rN   rI   rO   r   count)r   rP   rQ   rL   rR   r   r   r   test_print_version_stdouterr   s    
z,TestCythonUtils.test_print_version_stdouterrc             C   s   d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8g}x^|D ]V\}}| j t|t| t|}| j t|t| | j ||d#|||t|f  q4W d S )9N.0.000000.11.1.01.000000000000000000000-00000000000000000000001.000000000000000000000
12345.00251E5100000..1E-5.0000011.1E-5.00001112.3E-5.000123.1E101000000000.1.1E1011000000000.123.4E101234000000000.	123.456E0123.456
123.456E-112.3456
123.456E-21.23456	123.456E11234.56	123.456E212345.62.1E80R210000000000000000000000000000000000000000000000000000000000000000000000000000000.z.normalise_float_repr(%r) == %r != %r  (%.330f))rV   rV   )rW   rV   )rX   rX   )rY   rY   )rZ   rY   )r[   rY   )r\   rY   )r]   r]   )r^   r_   )r`   ra   )rb   rc   )rd   re   )rf   rg   )rh   ri   )rj   rk   )rl   rm   )rn   ro   )rp   rq   )rr   rs   )rt   ru   )rv   rw   )r   floatr   )r   ZexamplesZ	float_strZnorm_strresultr   r   r   test_normalise_float_repr   s8    z)TestCythonUtils.test_normalise_float_reprN)r   r   r   r   r   r'   r$   r,   r2   r3   r6   rH   rS   rU   rz   r   r   r   r   r      s    r   )rJ   Zunittestr   ImportErrorioZCython.Utilsr   r   r   r   r   r   r	   r
   r   r#   r!   r+   r4   r   ZTestCaser   r   r   r   r   <module>   s   ,