a „oe¡2ã@s8ddlZddlZddlZddlZddlZddlZddlZddlmmZ ddl Z ddl m Z m Z dZe d¡Zdd„Zdd„ZGd d „d ejƒZGd d „d ejƒZGd d„dejƒZGdd„dejƒZGdd„dejƒZGdd„dejƒZGdd„dejƒZGdd„dejƒZGdd„dejƒZedkr4e ¡dS)éN)Ú TestSkippedÚfind_test_fixtureéú<4sl4s4slhhllhh4slc CsŠt d|¡\ }}}}}}}}} } } }} |dkr6tdƒ‚|dksN|dksN|dkrVtdƒ‚t ¡} || _|| _|| _| | _| | _ | | _ | | fS)NróRIFFzinvalid wav headeréófmt ódatazcannot understand wav header) ÚstructÚunpackÚ ValueErrorÚ pywintypesÚ WAVEFORMATEXÚ wFormatTagÚ nChannelsÚnSamplesPerSecÚnAvgBytesPerSecÚ nBlockAlignÚwBitsPerSample)ÚdataZriffZriffsizeZwaveZfmtZfmtsizeÚformatZ nchannelsZsamplespersecondZdatarateZ blockalignZ bitspersampleZ datalengthÚwfx©rúEC:\Program Files\Certbot\pkgs\win32comext\directsound\test\ds_test.pyÚwav_header_unpacks6 òrcCs4t ddd|ddd|j|j|j|j|j|jd|¡S)Nrré$sWAVErrr )r Úpackrrrrrr)rZdatasizerrrÚwav_header_pack9s òrc@seZdZdd„Zdd„ZdS)ÚWAVEFORMATTestcCs t ¡}| t|ƒtjk¡dS)zWAVEFORMATEX typeN)r rÚ assertTrueÚtypeZWAVEFORMATEXType©ÚselfÚwrrrÚ test_1_TypeMszWAVEFORMATTest.test_1_TypecCs’t ¡}tj|_d|_d|_d|_d|_d|_|  |jdk¡|  |jdk¡|  |jdk¡|  |jdk¡|  |jdk¡|  |jdk¡dS)zWAVEFORMATEX attribute accessééD¬é±érrN) r rÚWAVE_FORMAT_PCMrrrrrrrr!rrrÚ test_2_AttrRszWAVEFORMATTest.test_2_AttrN©Ú__name__Ú __module__Ú __qualname__r$r*rrrrrLsrc@seZdZdd„Zdd„ZdS)Ú DSCAPSTestcCs t ¡}| t|ƒtjk¡dS)z DSCAPS typeN)ÚdsÚDSCAPSrr Z DSCAPSType©r"Úcrrrr$fszDSCAPSTest.test_1_TypecCsÚt ¡}d|_d|_d|_d|_d|_d|_d|_d|_ d |_ d |_ d |_ d |_ d |_d|_d|_d|_d|_d|_d|_d|_d|_| |jdk¡| |jdk¡| |jdk¡| |jdk¡| |jdk¡| |jdk¡| |jdk¡| |j dk¡| |j d k¡| |j d k¡| |j d k¡| |j d k¡| |jd k¡| |jdk¡| |jdk¡| |jdk¡| |jdk¡| |jdk¡| |jdk¡| |jdk¡| |jdk¡dS)zDSCAPS attribute accessrr%ér(ééééé é é é é ééréééééN)r0r1ÚdwFlagsZdwMinSecondarySampleRateZdwMaxSecondarySampleRateZdwPrimaryBuffersZdwMaxHwMixingAllBuffersZdwMaxHwMixingStaticBuffersZdwMaxHwMixingStreamingBuffersZdwFreeHwMixingAllBuffersZdwFreeHwMixingStaticBuffersZdwFreeHwMixingStreamingBuffersZdwMaxHw3DAllBuffersZdwMaxHw3DStaticBuffersZdwMaxHw3DStreamingBuffersZdwFreeHw3DAllBuffersZdwFreeHw3DStaticBuffersZdwFreeHw3DStreamingBuffersZdwTotalHwMemBytesZdwFreeHwMemBytesZdwMaxContigFreeHwMemBytesZdwUnlockTransferRateHwBuffersZdwPlayCpuOverheadSwBuffersrr2rrrr*ksVzDSCAPSTest.test_2_AttrNr+rrrrr/esr/c@seZdZdd„Zdd„ZdS)Ú DSBCAPSTestcCs t ¡}| t|ƒtjk¡dS)z DSBCAPS typeN)r0ÚDSBCAPSrr Z DSBCAPSTyper2rrrr$œszDSBCAPSTest.test_1_TypecCsdt ¡}d|_d|_d|_d|_| |jdk¡| |jdk¡| |jdk¡| |jdk¡dS)zDSBCAPS attribute accessrr%r4r(N)r0rGrEÚ dwBufferBytesZdwUnlockTransferRateZdwPlayCpuOverheadrr2rrrr*¡szDSBCAPSTest.test_2_AttrNr+rrrrrF›srFc@seZdZdd„Zdd„ZdS)Ú DSCCAPSTestcCs t ¡}| t|ƒtjk¡dS)z DSCCAPS typeN)r0ÚDSCCAPSrr Z DSCCAPSTyper2rrrr$°szDSCCAPSTest.test_1_TypecCsNt ¡}d|_d|_d|_| |jdk¡| |jdk¡| |jdk¡dS)zDSCCAPS attribute accessrr%r(N)r0rJrEZ dwFormatsZ dwChannelsrr2rrrr*µszDSCCAPSTest.test_2_AttrNr+rrrrrI¯srIc@seZdZdd„Zdd„ZdS)Ú DSCBCAPSTestcCs t ¡}| t|ƒtjk¡dS)z DSCBCAPS typeN)r0ÚDSCBCAPSrr Z DSCBCAPSTyper2rrrr$ÂszDSCBCAPSTest.test_1_TypecCs8t ¡}d|_d|_| |jdk¡| |jdk¡dS)zDSCBCAPS attribute accessrr%N)r0rLrErHrr2rrrr*Çs zDSCBCAPSTest.test_2_AttrNr+rrrrrKÁsrKc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚDSBUFFERDESCTestcCs t ¡}| t|ƒtjk¡dS)zDSBUFFERDESC typeN)r0Ú DSBUFFERDESCrr ZDSBUFFERDESCTyper2rrrr$ÒszDSBUFFERDESCTest.test_1_TypecCsàt ¡}d|_d|_t ¡|_tj|j_d|j_ d|j_ d|j_ d|j_ d|j_ | |jdk¡| |jdk¡| |jjdk¡| |jj dk¡| |jj dk¡| |jj dk¡| |jj dk¡| |jj dk¡dS)zDSBUFFERDESC attribute accessrr%r&r'r(rN)r0rNrErHr rÚ lpwfxFormatr)rrrrrrrr2rrrr*×s$  zDSBUFFERDESCTest.test_2_AttrcCs d|_dS©Nr@©rOr2rrrÚinvalid_formatíszDSBUFFERDESCTest.invalid_formatcCst ¡}| t|j|¡dS)z+DSBUFFERDESC invalid lpwfxFormat assignmentN)r0rNÚ assertRaisesr rRr2rrrÚtest_3_invalid_formatðsz&DSBUFFERDESCTest.test_3_invalid_formatN©r,r-r.r$r*rRrTrrrrrMÑsrMc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚDSCBUFFERDESCTestcCs t ¡}| t|ƒtjk¡dS)zDSCBUFFERDESC typeN)r0Ú DSCBUFFERDESCrr ZDSCBUFFERDESCTyper2rrrr$÷szDSCBUFFERDESCTest.test_1_TypecCsàt ¡}d|_d|_t ¡|_tj|j_d|j_ d|j_ d|j_ d|j_ d|j_ | |jdk¡| |jdk¡| |jjdk¡| |jj dk¡| |jj dk¡| |jj dk¡| |jj dk¡| |jj dk¡dS)zDSCBUFFERDESC attribute accessrr%r&r'r(rN)r0rWrErHr rrOr)rrrrrrrr2rrrr*üs$  zDSCBUFFERDESCTest.test_2_AttrcCs d|_dSrPrQr2rrrrRsz DSCBUFFERDESCTest.invalid_formatcCst ¡}| t|j|¡dS)z,DSCBUFFERDESC invalid lpwfxFormat assignmentN)r0rWrSr rRr2rrrrTsz'DSCBUFFERDESCTest.test_3_invalid_formatNrUrrrrrVösrVc@s$eZdZdd„Zdd„Zdd„ZdS)ÚDirectSoundTestcCs0t ¡}| t|ƒ¡| t|dƒdk¡dS)z#DirectSoundEnumerate() sanity testsrr4N)r0ZDirectSoundEnumeraterÚlen©r"ZdevicesrrrÚ testEnumerateszDirectSoundTest.testEnumeratec CsRzt dd¡}Wn<tjyL}z"|jtjkr0‚t|ƒ‚WYd}~n d}~00dS©zDirectSoundCreate()N)r0ÚDirectSoundCreateÚ pythoncomÚ com_errorÚhresultÚDSERR_NODRIVERr©r"ÚdÚexcrrrÚ testCreate&s  zDirectSoundTest.testCreatec CsLtj tj tjd¡d¡}td|ƒ}t|dƒ}| t ¡}t |ƒ\}}zt   dd¡}Wn<t jy–}z"|jt jkrz‚t|ƒ‚WYd}~n d}~00| dt j¡t  ¡} t jt jB| _|| _|| _| | d¡} t dddd¡} |  t j¡} |  t j | f¡|  !d| |¡¡|  "d¡t #| d¡Wdƒn1s>0YdS)z.Mesdames et Messieurs, la cour de Devin Dazzlerz"../../win32comext/directsound/testz 01-Intro.wavÚrbNéÿÿÿÿ)$ÚosÚpathÚjoinÚdirnameÚsysÚargvrÚopenÚreadÚWAV_HEADER_SIZErr0r]r^r_r`rarZSetCooperativeLevelZDSSCL_PRIORITYrNZDSBCAPS_STICKYFOCUSZDSBCAPS_CTRLPOSITIONNOTIFYrErHrOZCreateSoundBufferÚ win32eventÚ CreateEventÚQueryInterfaceÚIID_IDirectSoundNotifyÚSetNotificationPositionsÚDSBPN_OFFSETSTOPÚUpdateZPlayÚWaitForSingleObject) r"ZextraÚfnameÚfZhdrrÚsizercrdÚsdescÚbufferÚeventÚnotifyrrrÚtestPlay/s2ÿ       zDirectSoundTest.testPlayN)r,r-r.r[rer€rrrrrXs  rXc@s$eZdZdd„Zdd„Zdd„ZdS)ÚDirectSoundCaptureTestcCs0t ¡}| t|ƒ¡| t|dƒdk¡dS)z*DirectSoundCaptureEnumerate() sanity testsrr4N)r0ZDirectSoundCaptureEnumeraterrYrZrrrr[Ysz$DirectSoundCaptureTest.testEnumeratec CsRzt dd¡}Wn<tjyL}z"|jtjkr0‚t|ƒ‚WYd}~n d}~00dSr\)r0ÚDirectSoundCaptureCreater^r_r`rarrbrrrrebs  z!DirectSoundCaptureTest.testCreatec Cs<zt dd¡}Wn<tjyL}z"|jtjkr0‚t|ƒ‚WYd}~n d}~00t ¡}d|_t   ¡|_ t j |j _ d|j _d|j _d|j _d|j _d|j _| |¡}t dddd¡}| tj¡}| tj|f¡| d¡t |d¡| ¡| dd¡}tj  t! "¡d ¡}t#|d ƒ} |  $t%|j dƒ¡|  $|¡|  &¡dS) Ni br%r&r'r(rrrgztest_directsound_record.wavÚwb)'r0r‚r^r_r`rarrWrHr rrOr)rrrrrrZCreateCaptureBufferrqrrrsrtrurvZStartrxÚCloserwrhrirjÚwin32apiZ GetTempPathrnÚwriterÚclose) r"rcrdr|r}r~rrryrzrrrÚ testRecordks8          z!DirectSoundCaptureTest.testRecordN)r,r-r.r[rerˆrrrrrWs  rÚ__main__)rhr rlZunittestr^r r…Z win32com.directsound.directsoundZ directsoundr0rqZpywin32_testutilrrZWAV_FORMAT_PCMÚcalcsizerprrZTestCaserr/rFrIrKrMrVrXrr,ÚmainrrrrÚs0 $6%%<: