Fix the winmm/wave tests (take 2)
Francois Gouget
fgouget at codeweavers.com
Wed Dec 11 21:26:13 CST 2002
This time with the wavemap.c that solves the waveOutOpen problem
reported by Alexandre.
* dlls/winmm/wavemap/wavemap.c,
dlls/winmm/tests/wave.c
Francois Gouget <fgouget at codeweavers.com>
Fix error reporting in wavemap.c:wodOpen()
This solves the waveOutOpen problem so that we can remove the todo_wine
Win9x does not support WAVE_FORMAT_DIRECT
Don't check the format if the waveOutOpen command failed
Use trace, not winetest_trace!
--
Francois Gouget
fgouget at codeweavers.com
-------------- next part --------------
Index: dlls/winmm/wavemap/wavemap.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/wavemap/wavemap.c,v
retrieving revision 1.24
diff -u -r1.24 wavemap.c
--- dlls/winmm/wavemap/wavemap.c 31 Oct 2002 00:54:27 -0000 1.24
+++ dlls/winmm/wavemap/wavemap.c 12 Dec 2002 03:13:02 -0000
@@ -217,7 +229,8 @@
}
HeapFree(GetProcessHeap(), 0, wom);
- return MMSYSERR_ALLOCATED;
+ return WAVERR_BADFORMAT;
+
found:
if (dwFlags & WAVE_FORMAT_QUERY) {
*lpdwUser = 0L;
Index: dlls/winmm/tests/wave.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/tests/wave.c,v
retrieving revision 1.2
diff -u -r1.2 wave.c
--- dlls/winmm/tests/wave.c 10 Dec 2002 19:10:46 -0000 1.2
+++ dlls/winmm/tests/wave.c 12 Dec 2002 03:05:28 -0000
@@ -51,10 +51,9 @@
HWAVEOUT wout;
MMRESULT rc;
UINT ndev,d,f;
- int success;
ndev=waveOutGetNumDevs();
- winetest_trace("found %d WaveOut devices\n",ndev);
+ trace("found %d WaveOut devices\n",ndev);
todo_wine {
rc=waveOutGetDevCapsA(ndev+1,&caps,sizeof(caps));
@@ -75,16 +74,16 @@
for (d=0;d<ndev;d++) {
rc=waveOutGetDevCapsA(d,&caps,sizeof(caps));
- success=(rc==MMSYSERR_NOERROR || rc==MMSYSERR_BADDEVICEID);
- ok(success,"failed to get capabilities of device %d: rc=%d",d,rc);
- if (!success)
+ ok(rc==MMSYSERR_NOERROR || rc==MMSYSERR_BADDEVICEID,
+ "failed to get capabilities of device %d: rc=%d",d,rc);
+ if (rc==MMSYSERR_BADDEVICEID)
continue;
- winetest_trace(" %d: \"%s\" %d.%d (%d:%d): channels=%d formats=%04lx support=%04lx\n",
- d,caps.szPname,caps.vDriverVersion >> 8,
- caps.vDriverVersion & 0xff,
- caps.wMid,caps.wPid,
- caps.wChannels,caps.dwFormats,caps.dwSupport);
+ trace(" %d: \"%s\" %d.%d (%d:%d): channels=%d formats=%04lx support=%04lx\n",
+ d,caps.szPname,caps.vDriverVersion >> 8,
+ caps.vDriverVersion & 0xff,
+ caps.wMid,caps.wPid,
+ caps.wChannels,caps.dwFormats,caps.dwSupport);
for (f=0;f<TEST_FORMATS;f++) {
if (!(caps.dwFormats & win_formats[f][0]))
@@ -99,9 +98,9 @@
format.cbSize=0;
rc=waveOutOpen(&wout,d,&format,0,0,CALLBACK_NULL);
- success=(rc==MMSYSERR_NOERROR || rc==MMSYSERR_BADDEVICEID);
- ok(success, "failed to open device %d: rc=%d",d,rc);
- if (success) {
+ ok(rc==MMSYSERR_NOERROR || rc==MMSYSERR_BADDEVICEID,
+ "failed to open device %d: rc=%d",d,rc);
+ if (rc==MMSYSERR_NOERROR) {
ok(format.nChannels==win_formats[f][3] &&
format.wBitsPerSample==win_formats[f][2] &&
format.nSamplesPerSec==win_formats[f][1],
@@ -109,15 +108,16 @@
format.nSamplesPerSec, format.wBitsPerSample,
format.nChannels, win_formats[f][1], win_formats[f][2],
win_formats[f][3]);
- }
- if (rc==MMSYSERR_NOERROR)
waveOutClose(wout);
+ }
- /* Try again with WAVE_FORMAT_DIRECT */
+ /* Try again with WAVE_FORMAT_DIRECT
+ * Note: Win9x doesn't know WAVE_FORMAT_DIRECT
+ */
rc=waveOutOpen(&wout,d,&format,0,0,CALLBACK_NULL|WAVE_FORMAT_DIRECT);
- success=(rc==MMSYSERR_NOERROR || rc==MMSYSERR_BADDEVICEID);
- ok(success, "failed to open device %d: rc=%d",d,rc);
- if (success) {
+ ok(rc==MMSYSERR_NOERROR || rc==MMSYSERR_BADDEVICEID || rc==MMSYSERR_INVALFLAG,
+ "failed to open device %d: rc=%d",d,rc);
+ if (rc==MMSYSERR_NOERROR) {
ok(format.nChannels==win_formats[f][3] &&
format.wBitsPerSample==win_formats[f][2] &&
format.nSamplesPerSec==win_formats[f][1],
@@ -125,14 +125,12 @@
format.nSamplesPerSec, format.wBitsPerSample,
format.nChannels, win_formats[f][1], win_formats[f][2],
win_formats[f][3]);
- }
- if (rc==MMSYSERR_NOERROR)
waveOutClose(wout);
+ }
}
- /* Check an invalid format to test error handling */
- todo_wine {
- winetest_trace("Testing invalid 2MHz format\n");
+ /* Try an invalid format to test error handling */
+ trace("Testing invalid 2MHz format\n");
format.wFormatTag=WAVE_FORMAT_PCM;
format.nChannels=2;
format.wBitsPerSample=16;
@@ -141,17 +139,16 @@
format.nAvgBytesPerSec=format.nSamplesPerSec*format.nBlockAlign;
format.cbSize=0;
rc=waveOutOpen(&wout,d,&format,0,0,CALLBACK_NULL);
- success=(rc==WAVERR_BADFORMAT);
- ok(success, "opening the device at 2MHz should fail %d: rc=%d",d,rc);
+ ok(rc==WAVERR_BADFORMAT,
+ "opening the device at 2MHz should fail %d: rc=%d",d,rc);
if (rc==MMSYSERR_NOERROR) {
- winetest_trace(" got %ldx%2dx%d for %dx%2dx%d\n",
- format.nSamplesPerSec, format.wBitsPerSample,
- format.nChannels,
- win_formats[f][1], win_formats[f][2],
- win_formats[f][3]);
+ trace(" got %ldx%2dx%d for %dx%2dx%d\n",
+ format.nSamplesPerSec, format.wBitsPerSample,
+ format.nChannels,
+ win_formats[f][1], win_formats[f][2],
+ win_formats[f][3]);
waveOutClose(wout);
}
- }
format.wFormatTag=WAVE_FORMAT_PCM;
format.nChannels=2;
@@ -161,14 +158,14 @@
format.nAvgBytesPerSec=format.nSamplesPerSec*format.nBlockAlign;
format.cbSize=0;
rc=waveOutOpen(&wout,d,&format,0,0,CALLBACK_NULL|WAVE_FORMAT_DIRECT);
- success=(rc==WAVERR_BADFORMAT);
- ok(success, "opening the device at 2MHz should fail %d: rc=%d",d,rc);
+ ok(rc==WAVERR_BADFORMAT || rc==MMSYSERR_INVALFLAG,
+ "opening the device at 2MHz should fail %d: rc=%d",d,rc);
if (rc==MMSYSERR_NOERROR) {
- winetest_trace(" got %ldx%2dx%d for %dx%2dx%d\n",
- format.nSamplesPerSec, format.wBitsPerSample,
- format.nChannels,
- win_formats[f][1], win_formats[f][2],
- win_formats[f][3]);
+ trace(" got %ldx%2dx%d for %dx%2dx%d\n",
+ format.nSamplesPerSec, format.wBitsPerSample,
+ format.nChannels,
+ win_formats[f][1], win_formats[f][2],
+ win_formats[f][3]);
waveOutClose(wout);
}
}
More information about the wine-patches
mailing list