B
    u9aE                 @   s   d dl Z d dlZd dlZd dlmZ ed edZdd Zeej	Z
eejZeejZG dd dejZG d	d
 d
ejZG dd dejZedkre  dS )    N)supportZaudiowinsoundc                s   t   fdd}|S )Nc           
      s`   y | |}W n6 t k
rD } ztjr4t jd| W d d }~X Y nX tjrXt jd |S d S )Nzfailed:Zreturned)RuntimeErrorr   verboseprint__name__)argskwargsrete)func #/usr/lib/python3.7/test_winsound.pywrapper   s     zsound_func.<locals>.wrapper)	functoolswraps)r   r   r   )r   r   
sound_func   s    r   c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
BeepTestc             C   s6   |  ttj |  ttjdd |  ttjdd d S )N$   K   i   )assertRaises	TypeErrorr   Beep
ValueError)selfr   r   r   test_errors'   s    zBeepTest.test_errorsc             C   s   t dd t dd d S )N%   r   i  )	safe_Beep)r   r   r   r   test_extremes,   s    
zBeepTest.test_extremesc             C   s$   xt dddD ]}t|d qW d S )Nd   i  r   )ranger   )r   ir   r   r   test_increasingfrequency0   s    z!BeepTest.test_increasingfrequencyc             C   s   t ddd d S )Nr   i  )ZdurationZ	frequency)r   )r   r   r   r   test_keyword_args4   s    zBeepTest.test_keyword_argsN)r   
__module____qualname__r   r   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S )MessageBeepTestc             C   s   t d d S )Ng      ?)timesleep)r   r   r   r   tearDown:   s    zMessageBeepTest.tearDownc             C   s,   |  ttjd |  ttjdd t  d S )Nbad*   )r   r   r   MessageBeepsafe_MessageBeep)r   r   r   r   test_default=   s    zMessageBeepTest.test_defaultc             C   s   t tj d S )N)r-   r   MB_OK)r   r   r   r   test_okB   s    zMessageBeepTest.test_okc             C   s   t tj d S )N)r-   r   ZMB_ICONASTERISK)r   r   r   r   test_asteriskE   s    zMessageBeepTest.test_asteriskc             C   s   t tj d S )N)r-   r   ZMB_ICONEXCLAMATION)r   r   r   r   test_exclamationH   s    z MessageBeepTest.test_exclamationc             C   s   t tj d S )N)r-   r   ZMB_ICONHAND)r   r   r   r   	test_handK   s    zMessageBeepTest.test_handc             C   s   t tj d S )N)r-   r   ZMB_ICONQUESTION)r   r   r   r   test_questionN   s    zMessageBeepTest.test_questionc             C   s   t tjd d S )N)type)r-   r   r/   )r   r   r   r   r#   Q   s    z!MessageBeepTest.test_keyword_argsN)r   r$   r%   r)   r.   r0   r1   r2   r3   r4   r#   r   r   r   r   r&   8   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S )PlaySoundTestc             C   s   |  ttj |  ttjdd |  ttjdtjtjB  |  ttjdd |  ttjdtj |  ttjdd |  ttjdd d S )Nr*   Znones   badr      zbad )r   r   r   	PlaySoundr   	SND_ASYNC
SND_MEMORYr   )r   r   r   r   r   W   s    zPlaySoundTest.test_errorsc             C   s   t tjdd d S )N
SystemExit)flagsZsound)safe_PlaySoundr   	SND_ALIAS)r   r   r   r   r#   f   s    zPlaySoundTest.test_keyword_argsc          	   C   sL   t tjdddd}| }W d Q R X t|tj t|}t|tj d S )Nzpluck-pcm8.wav	audiodata)subdirrb)openr   findfilereadr=   r   r:   	bytearray)r   fZ
audio_datar   r   r   test_snd_memoryi   s    zPlaySoundTest.test_snd_memoryc             C   s$   t jddd}t|tjtjB  d S )Nzpluck-pcm8.wavr?   )r@   )r   rC   r=   r   ZSND_FILENAMESND_NODEFAULT)r   fnr   r   r   test_snd_filenameq   s    zPlaySoundTest.test_snd_filenamec          
   C   sD   dddddg}x0|D ](}| j |d t|tj W d Q R X qW d S )NZSystemAsteriskZSystemExclamationr;   Z
SystemHandSystemQuestion)alias)ZsubTestr=   r   r>   )r   aliasesrL   r   r   r   test_aliasesu   s    
zPlaySoundTest.test_aliasesc             C   s   t dtj d S )Nz
!"$%&/(#+*)r=   r   r>   )r   r   r   r   test_alias_fallback   s    z!PlaySoundTest.test_alias_fallbackc             C   s   t dtjtjB  d S )Nz
!"$%&/(#+*)r=   r   r>   rH   )r   r   r   r   test_alias_nofallback   s    z#PlaySoundTest.test_alias_nofallbackc             C   sF   t dtjtjB tjB  td t dtjtjB  td tj	 d S )NrK   g      ?)
r=   r   r>   r9   ZSND_LOOPr'   r(   Z
SND_NOSTOPr8   Z	SND_PURGE)r   r   r   r   test_stopasync   s    
zPlaySoundTest.test_stopasyncN)r   r$   r%   r   r#   rG   rJ   rN   rO   rP   rQ   r   r   r   r   r6   U   s   r6   __main__)r   r'   ZunittestZtestr   Zrequiresimport_moduler   r   r   r   r,   r-   r8   r=   ZTestCaser   r&   r6   r   mainr   r   r   r   <module>   s   




>