
    <e                         d dl mZ d dlmZmZ d dlZ ej        d           d dlmZ  ej                    5   ej	        de
            ej        d          Zddd           n# 1 swxY w Y    ej        d          Z ej        d	          Zd dlZd dlZd dlZd dlZ	 d d
lmZ n%# e$ r ej        dk    rej        Znej        ZY nw xY wd Z G d dej                  Zd Zedk    r ej                     dS dS )    )support)import_helperwarnings_helperNaudio)findfileignoreossaudiodevaudioopsunau)AFMT_S16_NElittlec                    t          | d          5 }t                               |          }|                                }|                                }|j        }|                    d           |                                }d d d            n# 1 swxY w Y   |t          j        k    rt          d          t          
                    |d          }||d|fS )Nrbr   z)Expect .au file with 8-bit mu-law samples      )openr   getframerategetnchannels	_encodingseekreadAUDIO_FILE_ENCODING_MULAW_8RuntimeErrorr
   ulaw2lin)pathfpaurate	nchannelsencodingdatas          ,/usr/lib/python3.11/test/test_ossaudiodev.pyread_sound_filer#      s    	dD		 RZZ^^  OO%%	<



wwyy               5444FGGG D!$$D$I&&s   A3BBBc                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
OSSAudioDevTestsc                    	 t                               d          }nb# t          $ rU}|j        d         t          j        t          j        t          j        t          j        fv rt          j
        |           d }~ww xY w|                                 |                                 |                                 |                                 |                                 |                     |j                   |                     |j        d           |                     |j        dd|j        z             dD ]C}	 t+          ||d           |                     d|z             -# t.          t0          f$ r Y @w xY wt3          t5          |                    |dz  z  |z  |z  }|                    t8          ||           |                     t=          |d	z
            d
k     |           t?          j                     }	|!                    |           |"                                 t?          j                     }
|
|	z
  }t=          ||z
            |z  dz  }|                     |dk    d|d|d           d S )Nwr   z/dev/dspzbad dsp.mode: %r)closednamemode*   zdsp.%s not read-only   gGz@g{Gz?d   g      $@zelapsed time (z) > 10% off of expected time ())#r	   r   OSErrorargserrnoEACCESENOENTENODEVEBUSYunittestSkipTestbufsize	obufcountobuffreegetptrfilenoassertFalser(   assertEqualr)   r*   setattrfail	TypeErrorAttributeErrorfloatlensetparametersr   
assertTrueabstime	monotonicwriteclose)selfr!   r   ssizer   dspmsgattrexpected_timet1t2elapsed_timepercent_diffs                r"   play_sound_filez OSSAudioDevTests.play_sound_file0   sx   	""3''CC 	 	 	x{u|U\$|U[: : :',,,		 	



 	$$$:...3(:SX(EFFF / 	9 	9D9T2&&& 		0478888 ~.    c$ii((E!G4y@4G 	+y$777MD011D8-HHH^		$		^BwL=899MISP,,%}}}6	7 	7 	7 	7 	7s'    
A<AA77A<E++E?>E?c                    t           j        ddf}t          ddf}||fD ]U}|\  }}}|                    |          |k    r4|                    |          |k    r|                    |          |k    r nVt          d          |                    |||d          }|                     ||||fd|d|           |                    |||d	          }|                     ||||fd|d|           d S )
N   i@  r   D  zRunable to set audio sampling parameters: you must have really weird audio hardwareFrE   z: returned T)	r	   AFMT_U8r   setfmtchannelsspeedr   rE   r>   )	rL   rN   config1config2configfmtr\   r   results	            r"   set_parameterszOSSAudioDevTests.set_parameters_   sS    &405)( 	L 	LF$*!S(D

33&&X&&(22		$4''  K L L L
 ""3$>>#x!6!6;A6666J	L 	L 	L ""3$==#x!6!6;A6666J	L 	L 	L 	L 	L    c                 <   t           }d}d}|d|f|d|f||dffD ]}|\  }}}|                    |||d          }|                     ||d           	 |                    |||d          }|                     d	           f# t          j        $ r
}Y d }~zd }~ww xY wd S )
NrY   r   i,  iFz(unexpectedly got requested configurationTzexpected OSSAudioError)r   rE   assertNotEqualr@   r	   OSSAudioError)rL   rN   ra   r   r\   r`   rb   errs           r"   set_bad_parametersz#OSSAudioDevTests.set_bad_parameters}   s     S$'RXs+ 	4 	4F %+!S(D&&sHdEBBFGI I I4**3$EE 		23333 ,   	4 	4s   B  BBc                 R    t          t          d                    } | j        |  d S )Nzaudiotest.au)r#   r   rV   )rL   
sound_infos     r"   test_playbackzOSSAudioDevTests.test_playback   s-    $Xn%=%=>>
j))))rd   c                 (   t                               d          }	 |                     |           |                                 |                     |j                   d S # |                                 |                     |j                   w xY wNr'   )r	   r   rc   rK   rF   r(   rL   rN   s     r"   test_set_parametersz$OSSAudioDevTests.test_set_parameters   s    s##	($$$ IIKKKOOCJ''''' IIKKKOOCJ''''s   A! !0Bc                     t                                           5 }|                     |                                d           d d d            d S # 1 swxY w Y   d S )Nr   )r	   	openmixerassertGreaterEqualr<   )rL   mixers     r"   test_mixer_methodsz#OSSAudioDevTests.test_mixer_methods   s     ""$$ 	7##ELLNNA666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   )AAAc                     t                               d          5 }	 d d d            n# 1 swxY w Y   |                     |j                   d S ro   )r	   r   rF   r(   rp   s     r"   	test_withzOSSAudioDevTests.test_with   s    c"" 	c	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
#####s   )--c                 B   t                               d          }|                                 |                     t          |j                   |                     t          |j        d           |                     t          |j        d           |                     t          |j        d           |                     t          |j	                   |                     t          |j
                   |                     t          |j
                   |                     t          |j                   |                     t          |j                   t                                           }|                                 |                     t          |j                   d S )Nr'   rX      x)r	   r   rK   assertRaises
ValueErrorr<   r   rJ   writeallr8   r9   r:   r;   rs   )rL   rN   ru   s      r"   test_on_closedzOSSAudioDevTests.test_on_closed   s<   s##		*cj111*ch222*ci666*clD999*ck222*cm444*cm444*cl333*cj111%%''*el33333rd   N)__name__
__module____qualname__rV   rc   rj   rm   rq   rv   rx   r~    rd   r"   r%   r%   .   s        -7 -7 -7^L L L<4 4 42* * *
( 
( 
(7 7 7$ $ $
4 4 4 4 4rd   r%   c                  B   	 t                               d          } nn# t           j        t          f$ rU}|j        d         t
          j        t
          j        t
          j        t
          j	        fv rt          j        |           d }~ww xY w|                                  d S )Nr'   r   )r	   r   errorr/   r0   r1   r2   r3   r4   r5   r6   r7   rK   )rN   rO   s     r"   setUpModuler      s    s##w'   8A;5< <6 6 6#C(((	
 IIKKKKKs    BABB__main__)testr   test.supportr   r   warningsrequiresr   catch_warningssimplefilterDeprecationWarningimport_moduler	   import_deprecatedr
   r   r1   sysrH   r6   r   ImportError	byteorderAFMT_S16_LEAFMT_S16_BEr#   TestCaser%   r   r   mainr   rd   r"   <module>r      s         7 7 7 7 7 7 7 7       ! ! ! ! ! !X = =H($6777---m<<K= = = = = = = = = = = = = = = ,/
+I
6
6))'22  



  .''''''' . . .
}  !-!-	.' ' ' R4 R4 R4 R4 R4x( R4 R4 R4h   zHMOOOOO s#   "A&&A*-A*"B) )C
C