Fix the winmm/wave tests

Francois Gouget fgouget at free.fr
Fri Nov 29 23:14:40 CST 2002


Changelog:

 * dlls/winmm/tests/wave.c

   Error handling in waveOutOpen works now (patch has been in CVs for a
couple of weeks) -> removing the todo_wine
   Win9x does not support WAVE_FORMAT_DIRECT
   Don't check the format if the waveOutOpen command failed


Index: dlls/winmm/tests/wave.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/tests/wave.c,v
retrieving revision 1.1
diff -u -r1.1 wave.c
--- dlls/winmm/tests/wave.c	4 Nov 2002 23:47:49 -0000	1.1
+++ dlls/winmm/tests/wave.c	30 Nov 2002 04:46:14 -0000
@@ -101,7 +101,7 @@
             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) {
+            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 +109,17 @@
                    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);
+            success=(rc==MMSYSERR_NOERROR || rc==MMSYSERR_BADDEVICEID ||
+                     rc==MMSYSERR_INVALFLAG);
             ok(success, "failed to open device %d: rc=%d",d,rc);
-            if (success) {
+            if (rc==MMSYSERR_NOERROR) {
                 ok(format.nChannels==win_formats[f][3] &&
                    format.wBitsPerSample==win_formats[f][2] &&
                    format.nSamplesPerSec==win_formats[f][1],
@@ -125,13 +127,11 @@
                    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 {
+        /* Try an invalid format to test error handling */
         winetest_trace("Testing invalid 2MHz format\n");
         format.wFormatTag=WAVE_FORMAT_PCM;
         format.nChannels=2;
@@ -151,7 +151,6 @@
                            win_formats[f][3]);
             waveOutClose(wout);
         }
-        }

         format.wFormatTag=WAVE_FORMAT_PCM;
         format.nChannels=2;
@@ -161,7 +160,7 @@
         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);
+        success=(rc==WAVERR_BADFORMAT || rc==MMSYSERR_INVALFLAG);
         ok(success, "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",


-- 
Francois Gouget         fgouget at free.fr        http://fgouget.free.fr/
                  Dieu dit: "M-x Lumière". Et la lumière fut.




More information about the wine-patches mailing list