a
    Tg                     @   sr  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rpe Zee
  n8edkre Zn(ed	kre
 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rne$d&e%g dS )'    N)Mock)gTTS	gTTSError)_main_langs)_extra_langsZ
TEST_LANGSallmainextrac                 C   s   i | ]}|r||qS  r
   ).0lr
   r
   Q/var/www/html/texto_audio/venv/lib/python3.9/site-packages/gtts/tests/test_tts.py
<dictcomp>$       r   ,lang)idsc                 C   sL   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   sH   d} d}d}t t t|| |d W d   n1 s:0    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   n1 s.0    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   sN   d}t t, | d }t|d}|| W d   n1 s@0    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   sB   t dd} tt | d W d   n1 s40    Y  dS )z=Raise TypeError if fp is not a file-like object (no .write())testr'      N)r   r!   r"   	TypeErrorZwrite_to_fpr   r
   r
   r   test_bad_fp_typeV   s    
r/   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    

r1   c                  C   s6   t dddd} |  d }d|v s&J d|v s2J dS )zget request bodies listr+   comen)r   tldr   r   z%5C%22en%5C%22N)r   Z
get_bodies)r   bodyr
   r
   r   test_get_bodiesk   s    r6   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)Zerror1Zerror2r
   r
   r   test_msgu   s    r8   c                  C   s   t dd} t| d}|jdks"J t  }t ddd}t||d}|jd	ksNJ t d
dd}t ddd}t||d}|jdksJ t  }t ddd}	t||	d}
|
jdksJ t  }t ddd}t||d}|jdksJ dS )z+Infer message successfully based on contextinvalid)r4   r.   z\Failed to connect. Probable cause: Host 'https://translate.google.invalid/' is not reachablei  Z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   Zdddz/100 (ddd) from TTS API. Probable cause: UnknownN)r   r   r7   )ZttsTLDZerrorTLDZtts403Zresponse403Zerror403Ztts200Zresponse404Zerror200Ztts500Zresponse500Zerror500Ztts100Zresponse100Zerror100r
   r
   r   test_infer_msg   s>    

rA   c                 C   sZ   d}d}d}t t0 | d }t|||d}|| W d   n1 sL0    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    rB   c                 C   s   t dd}|jd u sJ d}t d|d}|j|ks6J t ddd}| d }tt || W d    n1 st0    Y  d S )Nr+   r'   g333333?)r   timeoutgư>r0   )r   rC   r!   r"   r   r   )r   r   rC   r   r
   r
   r   test_timeout   s    
rD   __main__z-x)&osr!   Zunittest.mockr   Zgtts.ttsr   r   Z
gtts.langsr   Z	gtts.langr   environgetenvZlangsupdatesplitZ	env_langsmarknetZparametrizekeyslistvaluesr   r%   r)   r*   r/   r1   r6   r8   rA   rB   rD   __name__r   __file__r
   r
   r
   r   <module>   sH   
	


	
1


