o
    vZh                     @   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re$d&e%g dS 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
   B/var/www/auris/lib/python3.10/site-packages/gtts/tests/test_tts.py
<dictcomp>$   s    r   ,lang)Z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    	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   

r/   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   Z
get_bodies)r   bodyr
   r
   r   test_get_bodiesk   s   r4   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   r6   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)r2   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   r5   )ZttsTLDZerrorTLDZtts403Zresponse403Zerror403Ztts200Zresponse404Zerror200Ztts500Zresponse500Zerror500Ztts100Zresponse100Zerror100r
   r
   r   test_infer_msg   s6   

r?   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   "r@   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ư>r.   )r   rA   r   r    r   r   )r   r   rA   r   r
   r
   r   test_timeout   s   
"rB   __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-   r/   r4   r6   r?   r@   rB   __name__r   __file__r
   r
   r
   r   <module>   sN   
	


	
1

