o
    Þ­j  ã                   @   sv  d dl Z d dlZd dlmZ d dlmZmZ d dlmZ d dl	m
Z
 	 e j d¡Zer/edkr9eƒ Ze e
ƒ ¡ nedkrAeƒ Zned	krIe
ƒ Znd
d„ e d¡D ƒZeZejjejjde ¡ ee ¡ ƒd�dd„ ƒƒZejjdd„ ƒZdd„ Zdd„ Zejjdd„ ƒZejjdd„ ƒZejjdd„ ƒZdd„ Zdd „ Z ejjd!d"„ ƒZ!ejjd#d$„ ƒZ"e#d%kr¹e $d&e%g¡ dS dS )'é    N)ÚMock)ÚgTTSÚ	gTTSError)Ú_main_langs)Ú_extra_langsÚ
TEST_LANGSÚallÚmainÚextrac                 C   s   i | ]}|r||“qS © r   )Ú.0Úlr   r   úP/var/www/html/CropPilot/venv/lib/python3.10/site-packages/gtts/tests/test_tts.pyÚ
<dictcomp>$   s    r   ú,Úlang)Úidsc                 C   sN   d}	 dD ]}| d  |¡ }t|||dd�}| |¡ | ¡ jdks$J ‚qdS )z*Test all supported languages and file savezThis is a test)FTztest_{}_.mp3F)Útextr   ÚslowÚ
lang_checkiÜ  N)Úformatr   ÚsaveÚstatÚst_size)Útmp_pathr   r   r   ÚfilenameÚttsr   r   r   Útest_TTS(   s   
ùr   c                  C   sJ   d} d}d}t  t¡� t|| |d� W d  ƒ dS 1 sw   Y  dS )z>Raise ValueError on unsupported language (with language check)ÚxxúLorem ipsumT©r   r   r   N)ÚpytestÚraisesÚ
ValueErrorr   )r   r   Úcheckr   r   r   Útest_unsupported_language_check9   s   "ÿr%   c                  C   s>   d} t  t¡� t| d� W d  ƒ dS 1 sw   Y  dS )z$Raise AssertionError on empty stringÚ ©r   N)r!   r"   ÚAssertionErrorr   r'   r   r   r   Útest_empty_stringC   s   "ÿr)   c                 C   sP   d}t  t¡� | d }t|d�}| |¡ W d  ƒ dS 1 s!w   Y  dS )zBRaises AssertionError on no content to send to API (no text_parts)zn                                                                                                          ..,
zno_content.txtr'   N)r!   r"   r(   r   r   )r   r   r   r   r   r   r   Útest_no_text_partsJ   s   
"ýr*   c                  C   sD   t dd�} t t¡� |  d¡ W d  ƒ dS 1 sw   Y  dS )z=Raise TypeError if fp is not a file-like object (no .write())Útestr'   é   N)r   r!   r"   Ú	TypeErrorÚwrite_to_fp©r   r   r   r   Útest_bad_fp_typeV   s   
"ÿr0   c                 C   s2   | d }t dd�}| |¡ | ¡ jdksJ ‚dS )zSave .mp3 file successfullyúsave.mp3r+   r'   iÐ  N)r   r   r   r   )r   r   r   r   r   r   Ú	test_save_   s   

r2   c                  C   s6   t dddd�} |  ¡ d }d|v sJ ‚d|v sJ ‚dS )zget request bodies listr+   ÚcomÚen)r   Útldr   r   z%5C%22en%5C%22N)r   Ú
get_bodies)r   Úbodyr   r   r   Útest_get_bodiesk   s   r8   c                  C   s.   t dƒ} d| jksJ ‚t ƒ }|jdu sJ ‚dS )zQTest gTTsError internal exception handling
    Set exception message successfullyr+   N)r   Úmsg)Úerror1Úerror2r   r   r   Útest_msgu   s   r<   c                  C   sÜ   t dd�} t| d�}|jdksJ ‚t ƒ }t ddd�}t||d�}|jd	ks'J ‚t d
dd�}t ddd�}t||d�}|jdks@J ‚t ƒ }t ddd�}	t||	d�}
|
jdksVJ ‚t ƒ }t ddd�}t||d�}|jdkslJ ‚dS )z+Infer message successfully based on contextÚinvalid)r5   r/   z\Failed to connect. Probable cause: Host 'https://translate.google.invalid/' is not reachablei“  Úaaa)Ústatus_codeÚreason)r   ÚresponsezI403 (aaa) from TTS API. Probable cause: Bad token or upstream API changesr   F)r   r   éÈ   Úbbbz^200 (bbb) from TTS API. Probable cause: No audio stream in response. Unsupported language 'xx'iô  ÚccczL500 (ccc) from TTS API. Probable cause: Upstream API error. Try again later.éd   Údddz/100 (ddd) from TTS API. Probable cause: UnknownN)r   r   r9   )ÚttsTLDÚerrorTLDÚtts403Úresponse403Úerror403Útts200Úresponse404Úerror200Útts500Úresponse500Úerror500Útts100Úresponse100Úerror100r   r   r   Útest_infer_msg   s6   

ÿÿÿÿrU   c                 C   s^   d}	 d}d}t  t¡� | d }t|||d�}| |¡ W d  ƒ dS 1 s(w   Y  dS )zTest Web Requestsr   r   Fzxx.txtr    N)r!   r"   r   r   r   )r   r   r   r$   r   r   r   r   r   Útest_WebRequest°   s   "ürV   c                 C   s„   t dd�}|jd u sJ ‚d}t d|d�}|j|ksJ ‚t ddd�}| d }t t¡� | |¡ W d   ƒ d S 1 s;w   Y  d S )Nr+   r'   g333333ó?)r   Útimeoutg�íµ ÷Æ°>r1   )r   rW   r!   r"   r   r   )r   r   rW   r   r   r   r   Útest_timeoutÁ   s   
"ÿrX   Ú__main__z-x)&Úosr!   Úunittest.mockr   Úgtts.ttsr   r   Ú
gtts.langsr   Ú	gtts.langr   ÚenvironÚgetÚenvÚlangsÚupdateÚsplitÚ	env_langsÚmarkÚnetÚparametrizeÚkeysÚlistÚvaluesr   r%   r)   r*   r0   r2   r8   r<   rU   rV   rX   Ú__name__r	   Ú__file__r   r   r   r   Ú<module>   sN   
	


	
1

ÿ