a
    ñ»jA  ã                   @   sB   d dl Z d dlZd dlmZ G dd„ dejƒZedkr>e ¡  dS )é    N)Úpatchc                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )Ú	UtilsTestc                 C   s\   ddl m} |ƒ }|� W d  ƒ n1 s,0    Y  |  | ¡ ¡ |  | ddd¡¡ dS )zTest NoLock context managerr   )ÚNoLockN)Úwebsocket._utilsr   ÚassertIsNoneÚ	__enter__Ú__exit__)Úselfr   Úlock© r   ú@E:\soccer\ml_env\Lib\site-packages\websocket/tests/test_utils.pyÚtest_nolock   s    zUtilsTest.test_nolockc                 C   sv   ddl m} |  |d d¡ƒ¡ |  |d d¡ƒ¡ |  |dƒ¡ |  |d d¡ƒ¡ |  |dƒ¡ |  |d	ƒ¡ d
S )z/Test UTF-8 validation when wsaccel is availabler   )Úvalidate_utf8úHello, World!úutf-8õ   ðŸŒŸ Unicode testó   Hello, bytesõ   HÃ©llo with accÃ©ntsó   ÿþó   €€N)r   r   Ú
assertTrueÚencodeÚassertFalse)r	   r   r   r   r   Ú!test_utf8_validation_with_wsaccel(   s    z+UtilsTest.test_utf8_validation_with_wsaccelc                    s  dt jv rt jd= ddl}|j‰ ‡ fdd„}td|d��Ê ddlm} |  | d 	d	¡¡¡ |  | d
¡¡ |  | d 	d	¡¡¡ |  | d 	d	¡¡¡ |  | d 	d	¡¡¡ |  | d 	d	¡¡¡ |  | d¡¡ |  
| d¡¡ |  
| d¡¡ W d  ƒ n1 �s
0    Y  dS )z<Test UTF-8 validation fallback when wsaccel is not availableúwebsocket._utilsr   Nc                    s.   d| v rt d| › d�ƒ‚ˆ | g|¢R i |¤ŽS )NZwsaccelzNo module named 'ú')ÚImportError)ÚnameÚargsÚkwargs©Zoriginal_importr   r   Úmock_importB   s    z<UtilsTest.test_utf8_validation_fallback.<locals>.mock_importzbuiltins.__import__)Zside_effectr   r   r   z
ASCII textr   r   Ú ó    r   r   )ÚsysÚmodulesÚbuiltinsÚ
__import__r   r   Z_utilsr   r   r   r   )r	   r&   r!   Úutilsr   r    r   Útest_utf8_validation_fallback7   s     
z'UtilsTest.test_utf8_validation_fallbackc                 C   sV   ddl m} tdƒ}|  ||ƒd¡ tddƒ}|  ||ƒd¡ tƒ }|  ||ƒ¡ dS )z!Test extract_err_message functionr   )Úextract_err_messagezTest error messagez	First argú
Second argN)r   r*   Ú	ExceptionÚassertEqualr   )r	   r*   Zexc_with_argsZexc_multi_argsÚexc_no_argsr   r   r   Útest_extract_err_message^   s    
z"UtilsTest.test_extract_err_messagec                 C   sl   ddl m} tddƒ}|  ||ƒd¡ tddƒ}|  ||ƒ¡ tdƒ}|  ||ƒ¡ tƒ }|  ||ƒ¡ dS )	z Test extract_error_code functionr   )Úextract_error_codei”  z	Not foundzError messager+   z
Single argN)r   r0   r,   r-   r   )r	   r0   Zexc_with_codeZexc_with_stringZexc_single_argr.   r   r   r   Útest_extract_error_coden   s    

z!UtilsTest.test_extract_error_codec                 C   s   dt jv rt jd= dS )zClean up after testsr   N)r$   r%   )r	   r   r   r   ÚtearDown‚   s    
zUtilsTest.tearDownN)	Ú__name__Ú
__module__Ú__qualname__r   r   r)   r/   r1   r2   r   r   r   r   r      s   'r   Ú__main__)r$   ZunittestZunittest.mockr   ZTestCaser   r3   Úmainr   r   r   r   Ú<module>   s
   p