
    daf                     .   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        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 d Z G d dej4                        Zd Zedk(  r ej<                          yy# 1 sw Y   wxY w# e$ r+ ej,                  dk(  rej.                  Znej0                  ZY nw xY w)    )support)import_helperwarnings_helperNaudio)findfileignoreossaudiodevaudioopsunau)AFMT_S16_NElittlec                 |   t        | d      5 }t        j                  |      }|j                         }|j                         }|j                  }|j                  d       |j                         }d d d        t        j                  k7  rt        d      t        j                  d      }|dfS # 1 sw Y   CxY w)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          0/root/Python-3.12.4/Lib/test/test_ossaudiodev.pyread_sound_filer#      s    	dD	 RZZ^ OO%	<<

wwy 5444FGG D!$D$I&& s   A#B22B;c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
OSSAudioDevTestsc                    	 t         j                  d      }|j                          |j                          |j                          |j                          |j                          | j!                  |j"                         | j%                  |j&                  d       | j%                  |j(                  dd|j(                  z         dD ]$  }	 t+        ||d       | j-                  d|z         & t3        t5        |            |dz  z  |z  |z  }|j7                  t8        ||       | j;                  t=        |d	z
        d
k  |       t?        j@                         }	|jC                  |       |jE                          t?        j@                         }
|
|	z
  }t=        ||z
        |z  dz  }| j;                  |dk  d|d|d       y # t        $ rh}|j                  d   t        j
                  t        j                  t        j                  t        j                  fv rt        j                  |       d }~ww xY w# t.        t0        f$ r Y w xY w)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   s   	""3'C 	



 	$:.3(:SXX(EF / 	9D9T2& 		0478	9 c$i(E!G4y@4G 	+y$7MD01D8-H^^		$		^^BwL=89MISP,%}6	7Q  	xx{u||U\\$||U[[: :'',,		, ~. s*   G H<	H9A#H44H9<IIc                    t         j                  ddf}t        ddf}||fD ]H  }|\  }}}|j                  |      |k(  s|j	                  |      |k(  s3|j                  |      |k(  sH n t        d      |j                  |||d      }| j                  ||||fd|d|       |j                  |||d	      }| j                  ||||fd|d|       y )
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_   s    &&405)( 	LF$*!S(D

33&X&(2		$4'	L   K L L
 ""3$>#x!6;A6J	L ""3$=#x!6;A6J	L    c                 $   t         }d}d}|d|f|d|f||dffD ]U  }|\  }}}|j                  |||d      }| j                  ||d       	 |j                  |||d      }| j                  d	       W y # t        j
                  $ r
}Y d }~qd }~ww xY w)
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+ 	4F %+!S(D&&sHdEBFGI4**3$E 		23	4 ,, s   
A22B
Bc                 J    t        t        d            } | j                  |  y )Nzaudiotest.au)r#   r   rV   )rL   
sound_infos     r"   test_playbackzOSSAudioDevTests.test_playback   s!    $Xn%=>
j)rd   c                    t         j                  d      }	 | j                  |       |j                          | j	                  |j
                         y # |j                          | j	                  |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#	($ IIKOOCJJ' IIKOOCJJ's   A -Bc                     t         j                         5 }| j                  |j                         d       d d d        y # 1 sw Y   y xY w)Nr   )r	   	openmixerassertGreaterEqualr<   )rL   mixers     r"   test_mixer_methodsz#OSSAudioDevTests.test_mixer_methods   s=     ""$ 	7##ELLNA6	7 	7 	7s	   !?Ac                     t         j                  d      5 }	 d d d        | j                  j                         y # 1 sw Y   %xY wro   )r	   r   rF   r(   rp   s     r"   	test_withzOSSAudioDevTests.test_with   s:    c" 	c	

#	 	s	   <Ac                    t         j                  d      }|j                          | j                  t        |j
                         | j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                         | j                  t        |j                         | j                  t        |j                         | j                  t        |j                         | j                  t        |j                         t         j                         }|j                          | j                  t        |j
                         y )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#		*cjj1*chh2*cii6*cllD9*ckk2*cmm4*cmm4*cll3*cjj1%%'*ell3rd   N)__name__
__module____qualname__rV   rc   rj   rm   rq   rv   rx   r~    rd   r"   r%   r%   .   s,    -7^L<42*
(7$
4rd   r%   c                  X   	 t         j                  d      } | j                          y # t         j                  t        f$ rh}|j                  d   t
        j                  t
        j                  t
        j                  t
        j                  fv rt        j                  |       d }~ww xY w)Nr'   r   )r	   r   errorr/   r0   r1   r2   r3   r4   r5   r6   r7   rK   )rN   rO   s     r"   setUpModuler      s    s# IIK w' 88A;5<< <<6 6##C((	s   ( 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      !X =H($67----m<K= ,/
+
+I
6)))'2  
  .'' R4x(( R4h zHMMO I= =  .
}} !--!--	.s   &CC$ C!$-DD