
    %
i44                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmc mZ	 d dl
Z
d dlmZmZ dZ ej        d          Zd Zd Z G d dej                  Z G d	 d
ej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Zedk    r ej                     dS dS )    N)TestSkippedfind_test_fixture   <4sl4s4slhhllhh4slc                 "   t          j        d|           \  }}}}}}}}}	}
}} }|dk    s
J d            |dk    r|dk    r| dk    s
J d            t          j                    }||_        ||_        ||_        |	|_        |
|_        ||_	        ||fS )Nr      RIFFzinvalid wav header      fmt    datazcannot understand wav header)
structunpack
pywintypesWAVEFORMATEX
wFormatTag	nChannelsnSamplesPerSecnAvgBytesPerSecnBlockAlignwBitsPerSample)datariffriffsizewavefmtfmtsizeformat	nchannelssamplesperseconddatarate
blockalignbitspersample
datalengthwfxs                 C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\win32comext/directsound/test/ds_test.pywav_header_unpackr%      s     	*D11 7???0??? b==SG^^& 1@? 
!
#
#CCNCM)C"C CO&C
?    c                     t          j        ddd|z   ddd| j        | j        | j        | j        | j        | j        d|          S )Nr   r   $   s   WAVEr
   r	   r   )r   packr   r   r   r   r   r   )r#   datasizes     r$   wav_header_packr+   9   sS    ;
X
  r&   c                       e Zd Zd Zd ZdS )WAVEFORMATTestc                     t          j                    }|                     t          |t           j                             dS )zWAVEFORMATEX typeN)r   r   
assertTrue
isinstanceWAVEFORMATEXTypeselfws     r$   test_1_TypezWAVEFORMATTest.test_1_TypeM   s5    #%%
1j&ABBCCCCCr&   c                    t          j                    }t           j        |_        d|_        d|_        d|_        d|_        d|_        | 	                    |j        dk               | 	                    |j        dk               | 	                    |j        dk               | 	                    |j        dk               | 	                    |j        dk               | 	                    |j        dk               dS )zWAVEFORMATEX attribute access   D      r	   r   N)
r   r   WAVE_FORMAT_PCMr   r   r   r   r   r   r/   r2   s     r$   test_2_AttrzWAVEFORMATTest.test_2_AttrR   s     #%%!1 ")***q()))(E1222)V3444*+++(B./////r&   N__name__
__module____qualname__r5   r<    r&   r$   r-   r-   L   s5        D D D
0 0 0 0 0r&   r-   c                       e Zd Zd Zd ZdS )
DSCAPSTestc                     t          j                    }|                     t          |t           j                             dS )zDSCAPS typeN)dsDSCAPSr/   r0   
DSCAPSTyper3   cs     r$   r5   zDSCAPSTest.test_1_Typef   s1    IKK
1bm4455555r&   c                 >   t          j                    }d|_        d|_        d|_        d|_        d|_        d|_        d|_        d|_	        d	|_
        d
|_        d|_        d|_        d|_        d|_        d|_        d|_        d|_        d|_        d|_        d|_        d|_        |                     |j        dk               |                     |j        dk               |                     |j        dk               |                     |j        dk               |                     |j        dk               |                     |j        dk               |                     |j        dk               |                     |j	        dk               |                     |j
        d	k               |                     |j        d
k               |                     |j        dk               |                     |j        dk               |                     |j        dk               |                     |j        dk               |                     |j        dk               |                     |j        dk               |                     |j        dk               |                     |j        dk               |                     |j        dk               |                     |j        dk               |                     |j        dk               dS )zDSCAPS attribute accessr   r7      r:               	   
                  r	                  N)rE   rF   dwFlagsdwMinSecondarySampleRatedwMaxSecondarySampleRatedwPrimaryBuffersdwMaxHwMixingAllBuffersdwMaxHwMixingStaticBuffersdwMaxHwMixingStreamingBuffersdwFreeHwMixingAllBuffersdwFreeHwMixingStaticBuffersdwFreeHwMixingStreamingBuffersdwMaxHw3DAllBuffersdwMaxHw3DStaticBuffersdwMaxHw3DStreamingBuffersdwFreeHw3DAllBuffersdwFreeHw3DStaticBuffersdwFreeHw3DStreamingBuffersdwTotalHwMemBytesdwFreeHwMemBytesdwMaxContigFreeHwMemBytesdwUnlockTransferRateHwBuffersdwPlayCpuOverheadSwBuffersr/   rH   s     r$   r<   zDSCAPSTest.test_2_Attrk   s   IKK	%&"%&"$%!'($*+'%&"()%+-( "#% &(#!#$&!')$ &(#*,'')$	Q'''2a78882a7888*a/0001Q677749:::71<===2a78885:;;;8B>???-34440B67773r9:::."45551R78884:;;;+r1222*b01113r9:::72=>>>4:;;;;;r&   Nr=   rA   r&   r$   rC   rC   e   s2        6 6 6
-< -< -< -< -<r&   rC   c                       e Zd Zd Zd ZdS )DSBCAPSTestc                     t          j                    }|                     t          |t           j                             dS )zDSBCAPS typeN)rE   DSBCAPSr/   r0   DSBCAPSTyperH   s     r$   r5   zDSBCAPSTest.test_1_Type   1    JLL
1bn5566666r&   c                 T   t          j                    }d|_        d|_        d|_        d|_        |                     |j        dk               |                     |j        dk               |                     |j        dk               |                     |j        dk               dS )zDSBCAPS attribute accessr   r7   rK   r:   N)rE   rt   r\   dwBufferBytesdwUnlockTransferRatedwPlayCpuOverheadr/   rH   s     r$   r<   zDSBCAPSTest.test_2_Attr   s    JLL	!"	Q'''1,---.!3444+q011111r&   Nr=   rA   r&   r$   rr   rr      s2        7 7 7
2 2 2 2 2r&   rr   c                       e Zd Zd Zd ZdS )DSCCAPSTestc                     t          j                    }|                     t          |t           j                             dS )zDSCCAPS typeN)rE   DSCCAPSr/   r0   DSCCAPSTyperH   s     r$   r5   zDSCCAPSTest.test_1_Type   rv   r&   c                 
   t          j                    }d|_        d|_        d|_        |                     |j        dk               |                     |j        dk               |                     |j        dk               dS )zDSCCAPS attribute accessr   r7   r:   N)rE   r~   r\   	dwFormats
dwChannelsr/   rH   s     r$   r<   zDSCCAPSTest.test_2_Attr   sr    JLL		Q'''q())))*****r&   Nr=   rA   r&   r$   r|   r|      s2        7 7 7
	+ 	+ 	+ 	+ 	+r&   r|   c                       e Zd Zd Zd ZdS )DSCBCAPSTestc                     t          j                    }|                     t          |t           j                             dS )zDSCBCAPS typeN)rE   DSCBCAPSr/   r0   DSCBCAPSTyperH   s     r$   r5   zDSCBCAPSTest.test_1_Type   s1    KMM
1bo6677777r&   c                     t          j                    }d|_        d|_        |                     |j        dk               |                     |j        dk               dS )zDSCBCAPS attribute accessr   r7   N)rE   r   r\   rx   r/   rH   s     r$   r<   zDSCBCAPSTest.test_2_Attr   sR    KMM		Q'''1,-----r&   Nr=   rA   r&   r$   r   r      s2        8 8 8
. . . . .r&   r   c                   &    e Zd Zd Zd Zd Zd ZdS )DSBUFFERDESCTestc                     t          j                    }|                     t          |t           j                             dS )zDSBUFFERDESC typeN)rE   DSBUFFERDESCr/   r0   DSBUFFERDESCTyperH   s     r$   r5   zDSBUFFERDESCTest.test_1_Type   s4    O
1b&9::;;;;;r&   c                 8   t          j                    }d|_        d|_        t	          j                    |_        t          j        |j        _        d|j        _	        d|j        _
        d|j        _        d|j        _        d|j        _        |                     |j        dk               |                     |j        dk               |                     |j        j        dk               |                     |j        j	        dk               |                     |j        j
        dk               |                     |j        j        dk               |                     |j        j        dk               |                     |j        j        dk               dS )zDSBUFFERDESC attribute accessr   r7   r8   r9   r:   r	   N)rE   r   r\   rx   r   r   lpwfxFormatr;   r   r   r   r   r   r   r/   rH   s     r$   r<   zDSBUFFERDESCTest.test_2_Attr   sK   O	"/11#-#= "#',$(.%$%!')$	Q'''1,---0A5666/145554=>>>5?@@@1Q67774:;;;;;r&   c                     d|_         d S NrW   r   rH   s     r$   invalid_formatzDSBUFFERDESCTest.invalid_format       r&   c                 n    t          j                    }|                     t          | j        |           dS )z+DSBUFFERDESC invalid lpwfxFormat assignmentN)rE   r   assertRaises
ValueErrorr   rH   s     r$   test_3_invalid_formatz&DSBUFFERDESCTest.test_3_invalid_format   s0    O*d&91=====r&   Nr>   r?   r@   r5   r<   r   r   rA   r&   r$   r   r      sP        < < <
< < <,  > > > > >r&   r   c                   &    e Zd Zd Zd Zd Zd ZdS )DSCBUFFERDESCTestc                     t          j                    }|                     t          |t           j                             dS )zDSCBUFFERDESC typeN)rE   DSCBUFFERDESCr/   r0   DSCBUFFERDESCTyperH   s     r$   r5   zDSCBUFFERDESCTest.test_1_Type   s5    
1b&:;;<<<<<r&   c                 8   t          j                    }d|_        d|_        t	          j                    |_        t          j        |j        _        d|j        _	        d|j        _
        d|j        _        d|j        _        d|j        _        |                     |j        dk               |                     |j        dk               |                     |j        j        dk               |                     |j        j	        dk               |                     |j        j
        dk               |                     |j        j        dk               |                     |j        j        dk               |                     |j        j        dk               dS )zDSCBUFFERDESC attribute accessr   r7   r8   r9   r:   r	   N)rE   r   r\   rx   r   r   r   r;   r   r   r   r   r   r   r/   rH   s     r$   r<   zDSCBUFFERDESCTest.test_2_Attr   sL   	"/11#-#= "#',$(.%$%!')$	Q'''1,---0A5666/145554=>>>5?@@@1Q67774:;;;;;r&   c                     d|_         d S r   r   rH   s     r$   r   z DSCBUFFERDESCTest.invalid_format  r   r&   c                 n    t          j                    }|                     t          | j        |           dS )z,DSCBUFFERDESC invalid lpwfxFormat assignmentN)rE   r   r   r   r   rH   s     r$   r   z'DSCBUFFERDESCTest.test_3_invalid_format  s1    *d&91=====r&   Nr   rA   r&   r$   r   r      sP        = = =
< < <,  > > > > >r&   r   c                        e Zd Zd Zd Zd ZdS )DirectSoundTestc                     t          j                    }|                     t          |                     |                     t          |d                   dk               dS )z#DirectSoundEnumerate() sanity testsr   rK   N)rE   DirectSoundEnumerater/   lenr3   devicess     r$   testEnumeratezDirectSoundTest.testEnumerate  sQ     )++G%%%GAJ1,-----r&   c                     	 t          j        dd          }dS # t          j        $ r*}|j        t           j        k    r t          |          d}~ww xY w)zDirectSoundCreate()N)rE   DirectSoundCreate	pythoncom	com_errorhresultDSERR_NODRIVERr   r3   dexcs      r$   
testCreatezDirectSoundTest.testCreate&  s`    	#$T400AAA" 	# 	# 	#{b///c"""	#    A%AAc                 N   t           j                            t           j                            t          j        d                   d          }t          d|          }t          |d          5 }|                    t                    }t          |          \  }}	 t          j        dd          }n<# t          j        $ r*}|j        t          j        k    r t#          |          d}~ww xY w|                    dt          j                   t          j                    }	t          j        t          j        z  |	_        ||	_        ||	_        |                    |	d          }
t7          j        dddd          }|
                    t          j                  }|                    t          j         |f           |
!                    d|                    |                     |
"                    d           t7          j#        |d           ddd           dS # 1 swxY w Y   dS )z.Mesdames et Messieurs, la cour de Devin Dazzler   z"../../win32comext/directsound/testz01-Intro.wavrbN)$ospathjoindirnamesysargvr   openreadWAV_HEADER_SIZEr%   rE   r   r   r   r   r   r   SetCooperativeLevelDSSCL_PRIORITYr   DSBCAPS_STICKYFOCUSDSBCAPS_CTRLPOSITIONNOTIFYr\   rx   r   CreateSoundBuffer
win32eventCreateEventQueryInterfaceIID_IDirectSoundNotifySetNotificationPositionsDSBPN_OFFSETSTOPUpdatePlayWaitForSingleObject)r3   extrafnamefhdrr#   sizer   r   sdescbuffereventnotifys                r$   testPlayzDirectSoundTest.testPlay/  s    GOOCHQK((*N
 
 ".%88% 	6!&&))C)#..IC'(t44& ' ' ';""333!#&&&' !!$(9:::O%%E2R5RREM"&E #E((55F*4At<<E**2+DEEF++R-@%,HIIIMM!QVVD\\***KKNNN*5"5559	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s7   .-HB21H2C+%C&&C++D"HH!HN)r>   r?   r@   r   r   r   rA   r&   r$   r   r     sA        . . .# # #%6 %6 %6 %6 %6r&   r   c                        e Zd Zd Zd Zd ZdS )DirectSoundCaptureTestc                     t          j                    }|                     t          |                     |                     t          |d                   dk               dS )z*DirectSoundCaptureEnumerate() sanity testsr   rK   N)rE   DirectSoundCaptureEnumerater/   r   r   s     r$   r   z$DirectSoundCaptureTest.testEnumerateY  sQ     022G%%%GAJ1,-----r&   c                     	 t          j        dd          }dS # t          j        $ r*}|j        t           j        k    r t          |          d}~ww xY w)zDirectSoundCaptureCreate()N)rE   DirectSoundCaptureCreater   r   r   r   r   r   s      r$   r   z!DirectSoundCaptureTest.testCreateb  s`    	#+D$77AAA" 	# 	# 	#{b///c"""	#r   c                 X   	 t          j        d d           }n<# t          j        $ r*}|j        t           j        k    r t          |          d }~ww xY wt          j                    }d|_        t          j
                    |_        t          j        |j        _        d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        |                    |          }t)          j        d ddd           }|                    t           j                  }|                    t           j        |f           |                    d           t)          j        |d           |                                 |                    dd          }t<          j                             tC          j"                    d	          }tG          |d
          }	|	$                    tK          |j        d                     |	$                    |           |	&                                 d S )Ni b r7   r8   r9   r:   r	   r   r   ztest_directsound_record.wavwb)'rE   r   r   r   r   r   r   r   rx   r   r   r   r;   r   r   r   r   r   r   CreateCaptureBufferr   r   r   r   r   r   Startr   Closer   r   r   r   win32apiGetTempPathr   writer+   close)
r3   r   r   r   r   r   r   r   r   r   s
             r$   
testRecordz!DirectSoundCaptureTest.testRecordk  s   	#+D$77AA" 	# 	# 	#{b///c"""	#
  ""$&355'1'A$&'#+0(,2)()%+-(&&u--&tQ488&&r'@AA'')<e(DEEEQ&ub111}}Q''X1335RSS	 16::;;;							s    A%AAN)r>   r?   r@   r   r   r   rA   r&   r$   r   r   W  sA        . . .# # ## # # # #r&   r   __main__)r   r   r   unittestr   r   r    win32com.directsound.directsounddirectsoundrE   r   pywin32_testutilr   r   WAV_FORMAT_PCMcalcsizer   r%   r+   TestCaser-   rC   rr   r|   r   r   r   r   r   r>   mainrA   r&   r$   <module>r      s   				  



           - - - - - - - - -     ; ; ; ; ; ; ; ; !&/"677! ! !H  &0 0 0 0 0X& 0 0 023< 3< 3< 3< 3<" 3< 3< 3<l2 2 2 2 2(# 2 2 2(+ + + + +(# + + +$. . . . .8$ . . . "> "> "> "> ">x( "> "> ">J"> "> "> "> ">) "> "> ">J96 96 96 96 96h' 96 96 96x7 7 7 7 7X. 7 7 7t zHMOOOOO r&   