wine/dlls/winmm/tests wave.c
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Oct 31 04:03:25 CST 2005
ChangeSet ID: 20983
CVSROOT: /opt/cvs-commit
Module name: wine
Changes by: julliard at winehq.org 2005/10/31 04:03:25
Modified files:
dlls/winmm/tests: wave.c
Log message:
Robert Reif <reif at earthlink.net>
Add waveOutPause/waveOutRestart test.
Tighten up play duration test when ending too soon.
Set VirtualFree size to 0.
Patch: http://cvs.winehq.org/patch.py?id=20983
Old revision New revision Changes Path
1.52 1.53 +46 -23 wine/dlls/winmm/tests/wave.c
Index: wine/dlls/winmm/tests/wave.c
diff -u -p wine/dlls/winmm/tests/wave.c:1.52 wine/dlls/winmm/tests/wave.c:1.53
--- wine/dlls/winmm/tests/wave.c 31 Oct 2005 10: 3:25 -0000
+++ /dev/null 31 Oct 2005 10: 3:25 -0000
@@ -485,7 +485,7 @@ static void check_position(int device, H
static void wave_out_test_deviceOut(int device, double duration,
LPWAVEFORMATEX pwfx, DWORD format,
DWORD flags, LPWAVEOUTCAPS pcaps,
- BOOL interactive, BOOL sine)
+ BOOL interactive, BOOL sine, BOOL pause)
{
HWAVEOUT wout;
HANDLE hevent;
@@ -496,6 +496,8 @@ static void wave_out_test_deviceOut(int
WORD wBitsPerSample = pwfx->wBitsPerSample;
DWORD nSamplesPerSec = pwfx->nSamplesPerSec;
BOOL has_volume = pcaps->dwSupport & WAVECAPS_VOLUME;
+ double paused = 0.0;
+ double actual;
hevent=CreateEvent(NULL,FALSE,FALSE,NULL);
ok(hevent!=NULL,"CreateEvent(): error=%ld\n",GetLastError());
@@ -585,15 +587,31 @@ static void wave_out_test_deviceOut(int
rc=waveOutWrite(wout, &frag, sizeof(frag));
ok(rc==MMSYSERR_NOERROR,"waveOutWrite(%s): rc=%s\n",
dev_name(device),wave_out_error(rc));
+
+ if (pause) {
+ paused = duration / 2;
+ Sleep(paused * 1000);
+ rc=waveOutPause(wout);
+ ok(rc==MMSYSERR_NOERROR,"waveOutPause(%s): rc=%s\n",
+ dev_name(device),wave_out_error(rc));
+ trace("pausing for %g seconds\n", paused);
+ Sleep(paused * 1000);
+ rc=waveOutRestart(wout);
+ ok(rc==MMSYSERR_NOERROR,"waveOutRestart(%s): rc=%s\n",
+ dev_name(device),wave_out_error(rc));
+ }
+
WaitForSingleObject(hevent,INFINITE);
- /* Check the sound duration was within 10% of the expected value */
+ /* Check the sound duration was between -2% and +10% of the expected value */
end=GetTickCount();
+ actual = (end - start) / 1000.0;
if (winetest_debug > 1)
- trace("sound duration=%ld\n",end-start);
- ok(fabs(1000*duration-end+start)<=100*duration,
- "The sound played for %ld ms instead of %g ms\n",
- end-start,1000*duration);
+ trace("sound duration=%g ms\n",1000*actual);
+ ok((actual > (0.98 * (duration+paused))) &&
+ (actual < (1.1 * (duration+paused))),
+ "The sound played for %g ms instead of %g ms\n",
+ 1000*actual,1000*(duration+paused));
check_position(device, wout, frag.dwBufferLength, pwfx);
}
@@ -723,7 +741,7 @@ static void wave_out_test_device(int dev
format.nAvgBytesPerSec=format.nSamplesPerSec*format.nBlockAlign;
format.cbSize=0;
wave_out_test_deviceOut(device,5.0,&format,WAVE_FORMAT_2M08,0,&capsA,
- TRUE,TRUE);
+ TRUE,TRUE,FALSE);
} else {
format.wFormatTag=WAVE_FORMAT_PCM;
format.nChannels=1;
@@ -733,7 +751,9 @@ static void wave_out_test_device(int dev
format.nAvgBytesPerSec=format.nSamplesPerSec*format.nBlockAlign;
format.cbSize=0;
wave_out_test_deviceOut(device,1.0,&format,WAVE_FORMAT_2M08,0,&capsA,
- TRUE,FALSE);
+ TRUE,FALSE,FALSE);
+ wave_out_test_deviceOut(device,1.0,&format,WAVE_FORMAT_2M08,0,&capsA,
+ TRUE,FALSE,TRUE);
}
for (f=0;f<NB_WIN_FORMATS;f++) {
@@ -745,15 +765,18 @@ static void wave_out_test_device(int dev
format.nAvgBytesPerSec=format.nSamplesPerSec*format.nBlockAlign;
format.cbSize=0;
wave_out_test_deviceOut(device,1.0,&format,win_formats[f][0],
- 0,&capsA,winetest_interactive,TRUE);
+ 0,&capsA,winetest_interactive,TRUE,FALSE);
+ if (winetest_interactive)
+ wave_out_test_deviceOut(device,1.0,&format,win_formats[f][0],
+ 0,&capsA,winetest_interactive,TRUE,TRUE);
if (device != WAVE_MAPPER)
{
wave_out_test_deviceOut(device,1.0,&format,win_formats[f][0],
WAVE_FORMAT_DIRECT,&capsA,winetest_interactive,
- TRUE);
+ TRUE,FALSE);
wave_out_test_deviceOut(device,1.0,&format,win_formats[f][0],
WAVE_MAPPED,&capsA,winetest_interactive,
- TRUE);
+ TRUE,FALSE);
}
}
@@ -776,18 +799,18 @@ static void wave_out_test_device(int dev
pwfx->nBlockAlign=pwfx->nChannels*pwfx->wBitsPerSample/8;
pwfx->nAvgBytesPerSec=pwfx->nSamplesPerSec*pwfx->nBlockAlign;
wave_out_test_deviceOut(device,1.0,pwfx,WAVE_FORMAT_2M08,0,
- &capsA,winetest_interactive,TRUE);
+ &capsA,winetest_interactive,TRUE,FALSE);
if (device != WAVE_MAPPER)
{
wave_out_test_deviceOut(device,1.0,pwfx,WAVE_FORMAT_2M08,
WAVE_FORMAT_DIRECT,&capsA,
- winetest_interactive,TRUE);
+ winetest_interactive,TRUE,FALSE);
wave_out_test_deviceOut(device,1.0,pwfx,WAVE_FORMAT_2M08,
WAVE_MAPPED,&capsA,winetest_interactive,
- TRUE);
+ TRUE,FALSE);
}
}
- VirtualFree(twoPages, 2 * dwPageSize, MEM_RELEASE);
+ VirtualFree(twoPages, 0, MEM_RELEASE);
}
/* Testing invalid format: 11 bits per sample */
@@ -852,7 +875,7 @@ static void wave_out_test_device(int dev
if (rc==MMSYSERR_NOERROR) {
waveOutClose(wout);
wave_out_test_deviceOut(device,1.0,&format,0,0,
- &capsA,winetest_interactive,TRUE);
+ &capsA,winetest_interactive,TRUE,FALSE);
} else
trace("waveOutOpen(%s): WAVE_FORMAT_MULAW not supported\n",
dev_name(device));
@@ -872,7 +895,7 @@ static void wave_out_test_device(int dev
if (rc==MMSYSERR_NOERROR) {
waveOutClose(wout);
wave_out_test_deviceOut(device,1.0,&format,0,0,
- &capsA,winetest_interactive,TRUE);
+ &capsA,winetest_interactive,TRUE,FALSE);
} else
trace("waveOutOpen(%s): WAVE_FORMAT_ADPCM not supported\n",
dev_name(device));
@@ -897,7 +920,7 @@ static void wave_out_test_device(int dev
if (rc==MMSYSERR_NOERROR) {
waveOutClose(wout);
wave_out_test_deviceOut(device,1.0,&wfex.Format,WAVE_FORMAT_2M16,0,
- &capsA,winetest_interactive,TRUE);
+ &capsA,winetest_interactive,TRUE,FALSE);
} else
trace("waveOutOpen(%s): WAVE_FORMAT_EXTENSIBLE not supported\n",
dev_name(device));
@@ -922,7 +945,7 @@ static void wave_out_test_device(int dev
if (rc==MMSYSERR_NOERROR) {
waveOutClose(wout);
wave_out_test_deviceOut(device,1.0,&wfex.Format,0,0,
- &capsA,winetest_interactive,TRUE);
+ &capsA,winetest_interactive,TRUE,FALSE);
} else
trace("waveOutOpen(%s): 4 channels not supported\n",
dev_name(device));
@@ -947,7 +970,7 @@ static void wave_out_test_device(int dev
if (rc==MMSYSERR_NOERROR) {
waveOutClose(wout);
wave_out_test_deviceOut(device,1.0,&wfex.Format,WAVE_FORMAT_2M16,0,
- &capsA,winetest_interactive,TRUE);
+ &capsA,winetest_interactive,TRUE,FALSE);
} else
trace("waveOutOpen(%s): 6 channels not supported\n",
dev_name(device));
@@ -973,7 +996,7 @@ static void wave_out_test_device(int dev
if (rc==MMSYSERR_NOERROR) {
waveOutClose(wout);
wave_out_test_deviceOut(device,1.0,&wfex.Format,WAVE_FORMAT_2M16,0,
- &capsA,winetest_interactive,TRUE);
+ &capsA,winetest_interactive,TRUE,FALSE);
} else
trace("waveOutOpen(%s): 24 bit samples not supported\n",
dev_name(device));
@@ -999,7 +1022,7 @@ static void wave_out_test_device(int dev
if (rc==MMSYSERR_NOERROR) {
waveOutClose(wout);
wave_out_test_deviceOut(device,1.0,&wfex.Format,WAVE_FORMAT_2M16,0,
- &capsA,winetest_interactive,TRUE);
+ &capsA,winetest_interactive,TRUE,FALSE);
} else
trace("waveOutOpen(%s): 32 bit samples not supported\n",
dev_name(device));
@@ -1024,7 +1047,7 @@ static void wave_out_test_device(int dev
if (rc==MMSYSERR_NOERROR) {
waveOutClose(wout);
wave_out_test_deviceOut(device,1.0,&wfex.Format,WAVE_FORMAT_2M16,0,
- &capsA,winetest_interactive,TRUE);
+ &capsA,winetest_interactive,TRUE,FALSE);
} else
trace("waveOutOpen(%s): 32 bit float samples not supported\n",
dev_name(device));
More information about the wine-cvs
mailing list