[DSOUND] fix tests for win9x and old DirectX

Robert Reif reif at earthlink.net
Tue Feb 22 18:36:00 CST 2005


Fix tests for win9x and old versions of DirectX.
-------------- next part --------------
Index: dlls/dsound/tests/capture.c
===================================================================
RCS file: /home/wine/wine/dlls/dsound/tests/capture.c,v
retrieving revision 1.17
diff -p -u -r1.17 capture.c
--- dlls/dsound/tests/capture.c	18 Feb 2005 12:52:14 -0000	1.17
+++ dlls/dsound/tests/capture.c	23 Feb 2005 00:32:02 -0000
@@ -320,7 +320,7 @@ static BOOL WINAPI dscenum_callback(LPGU
         if (rc==DSERR_NODRIVER)
             trace("  No Driver\n");
         else if (rc==E_FAIL)
-            trace("  E_FAIL\n");
+            trace("  No Device\n");
         else if (rc==DSERR_ALLOCATED)
             trace("  Already In Use\n");
 	goto EXIT;
Index: dlls/dsound/tests/ds3d.c
===================================================================
RCS file: /home/wine/wine/dlls/dsound/tests/ds3d.c,v
retrieving revision 1.20
diff -p -u -r1.20 ds3d.c
--- dlls/dsound/tests/ds3d.c	16 Feb 2005 16:09:02 -0000	1.20
+++ dlls/dsound/tests/ds3d.c	23 Feb 2005 00:32:03 -0000
@@ -882,7 +882,7 @@ static HRESULT test_for_driver(LPGUID lp
 
     /* Create the DirectSound object */
     rc=DirectSoundCreate(lpGuid,&dso,NULL);
-    ok(rc==DS_OK||rc==DSERR_NODRIVER||rc==DSERR_ALLOCATED,
+    ok(rc==DS_OK||rc==DSERR_NODRIVER||rc==DSERR_ALLOCATED||rc==E_FAIL,
        "DirectSoundCreate() failed: %s\n",DXGetErrorString8(rc));
     if (rc!=DS_OK)
         return rc;
@@ -1165,6 +1165,9 @@ static BOOL WINAPI dsenum_callback(LPGUI
         return 1;
     } else if (rc == DSERR_ALLOCATED) {
         trace("  Already In Use\n");
+        return 1;
+    } else if (rc == E_FAIL) {
+        trace("  No Device\n");
         return 1;
     }
 
Index: dlls/dsound/tests/ds3d8.c
===================================================================
RCS file: /home/wine/wine/dlls/dsound/tests/ds3d8.c,v
retrieving revision 1.15
diff -p -u -r1.15 ds3d8.c
--- dlls/dsound/tests/ds3d8.c	16 Feb 2005 16:09:02 -0000	1.15
+++ dlls/dsound/tests/ds3d8.c	23 Feb 2005 00:32:04 -0000
@@ -796,7 +796,7 @@ static HRESULT test_for_driver8(LPGUID l
 
     /* Create the DirectSound object */
     rc=pDirectSoundCreate8(lpGuid,&dso,NULL);
-    ok(rc==DS_OK||rc==DSERR_NODRIVER||rc==DSERR_ALLOCATED,
+    ok(rc==DS_OK||rc==DSERR_NODRIVER||rc==DSERR_ALLOCATED||rc==E_FAIL,
        "DirectSoundCreate8() failed: %s\n",DXGetErrorString8(rc));
     if (rc!=DS_OK)
         return rc;
@@ -1080,6 +1080,9 @@ static BOOL WINAPI dsenum_callback(LPGUI
         return 1;
     } else if (rc == DSERR_ALLOCATED) {
         trace("  Already In Use\n");
+        return 1;
+    } else if (rc == E_FAIL) {
+        trace("  No Device\n");
         return 1;
     }
 
Index: dlls/dsound/tests/dsound.c
===================================================================
RCS file: /home/wine/wine/dlls/dsound/tests/dsound.c,v
retrieving revision 1.47
diff -p -u -r1.47 dsound.c
--- dlls/dsound/tests/dsound.c	18 Feb 2005 12:51:43 -0000	1.47
+++ dlls/dsound/tests/dsound.c	23 Feb 2005 00:32:04 -0000
@@ -793,6 +793,8 @@ static BOOL WINAPI dsenum_callback(LPGUI
         trace("  No Driver\n");
     else if (rc == DSERR_ALLOCATED)
         trace("  Already In Use\n");
+    else if (rc == E_FAIL)
+        trace("  No Device\n");
     else {
         test_block_align(lpGuid);
         test_primary(lpGuid);
Index: dlls/dsound/tests/dsound8.c
===================================================================
RCS file: /home/wine/wine/dlls/dsound/tests/dsound8.c,v
retrieving revision 1.16
diff -p -u -r1.16 dsound8.c
--- dlls/dsound/tests/dsound8.c	16 Feb 2005 16:09:02 -0000	1.16
+++ dlls/dsound/tests/dsound8.c	23 Feb 2005 00:32:05 -0000
@@ -767,6 +767,8 @@ static BOOL WINAPI dsenum_callback(LPGUI
         trace("  No Driver\n");
     else if (rc == DSERR_ALLOCATED)
         trace("  Already In Use\n");
+    else if (rc == E_FAIL)
+        trace("  No Device\n");
     else {
         test_primary8(lpGuid);
         test_primary_secondary8(lpGuid);
Index: dlls/dsound/tests/propset.c
===================================================================
RCS file: /home/wine/wine/dlls/dsound/tests/propset.c,v
retrieving revision 1.14
diff -p -u -r1.14 propset.c
--- dlls/dsound/tests/propset.c	10 Jan 2005 12:25:56 -0000	1.14
+++ dlls/dsound/tests/propset.c	23 Feb 2005 00:32:05 -0000
@@ -51,6 +51,16 @@ DEFINE_GUID(DSPROPSETID_ZOOMFX_BufferPro
 
 typedef HRESULT  (CALLBACK * MYPROC)(REFCLSID, REFIID, LPVOID *);
 
+static HRESULT (WINAPI *pDirectSoundCreate8)(LPCGUID,LPDIRECTSOUND8*,
+    LPUNKNOWN)=NULL;
+static HRESULT (WINAPI *pDirectSoundCaptureCreate)(LPCGUID,
+    LPDIRECTSOUNDCAPTURE*,LPUNKNOWN)=NULL;
+static HRESULT (WINAPI *pDirectSoundCaptureCreate8)(LPCGUID,
+    LPDIRECTSOUNDCAPTURE8*,LPUNKNOWN)=NULL;
+static HRESULT (WINAPI *pDirectSoundFullDuplexCreate)(LPCGUID,LPCGUID,
+    LPCDSCBUFFERDESC,LPCDSBUFFERDESC,HWND,DWORD,LPDIRECTSOUNDFULLDUPLEX*,
+    LPDIRECTSOUNDCAPTUREBUFFER8*,LPDIRECTSOUNDBUFFER8*,LPUNKNOWN)=NULL;
+
 BOOL CALLBACK callback(PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_DATA data,
                        LPVOID context)
 {
@@ -117,59 +127,67 @@ static void propset_private_tests()
        "returned E_NOINTERFACE, returned: %s\n",DXGetErrorString8(rc));
 
     /* and the direct sound 8 version */
-    rc = (fProc)(&CLSID_DirectSound8, &IID_IClassFactory, (void **)(&pcf));
-    ok(pcf!=0, "DllGetClassObject(CLSID_DirectSound8, IID_IClassFactory) "
-       "failed: %s\n",DXGetErrorString8(rc));
-    if (pcf==0)
-        goto error;
-
-    /* direct sound 8 doesn't have an IKsPropertySet */
-    rc = pcf->lpVtbl->CreateInstance(pcf, NULL, &IID_IKsPropertySet,
-                                     (void **)(&pps));
-    ok(rc==E_NOINTERFACE, "CreateInstance(IID_IKsPropertySet) should have "
-       "returned E_NOINTERFACE, returned: %s\n",DXGetErrorString8(rc));
+    if (pDirectSoundCreate8) {
+        rc = (fProc)(&CLSID_DirectSound8, &IID_IClassFactory, (void **)(&pcf));
+        ok(pcf!=0, "DllGetClassObject(CLSID_DirectSound8, IID_IClassFactory) "
+           "failed: %s\n",DXGetErrorString8(rc));
+        if (pcf==0)
+            goto error;
+
+        /* direct sound 8 doesn't have an IKsPropertySet */
+        rc = pcf->lpVtbl->CreateInstance(pcf, NULL, &IID_IKsPropertySet,
+                                         (void **)(&pps));
+        ok(rc==E_NOINTERFACE, "CreateInstance(IID_IKsPropertySet) should have "
+           "returned E_NOINTERFACE, returned: %s\n",DXGetErrorString8(rc));
+    }
 
     /* try direct sound capture next */
-    rc = (fProc)(&CLSID_DirectSoundCapture, &IID_IClassFactory,
-                 (void **)(&pcf));
-    ok(pcf!=0, "DllGetClassObject(CLSID_DirectSoundCapture, IID_IClassFactory) "
-       "failed: %s\n",DXGetErrorString8(rc));
-    if (pcf==0)
-        goto error;
-
-    /* direct sound capture doesn't have an IKsPropertySet */
-    rc = pcf->lpVtbl->CreateInstance(pcf, NULL, &IID_IKsPropertySet,
-                                     (void **)(&pps));
-    ok(rc==E_NOINTERFACE, "CreateInstance(IID_IKsPropertySet) should have "
-       "returned E_NOINTERFACE,returned: %s\n",DXGetErrorString8(rc));
+    if (pDirectSoundCaptureCreate) {
+        rc = (fProc)(&CLSID_DirectSoundCapture, &IID_IClassFactory,
+                     (void **)(&pcf));
+        ok(pcf!=0, "DllGetClassObject(CLSID_DirectSoundCapture, IID_IClassFactory) "
+           "failed: %s\n",DXGetErrorString8(rc));
+        if (pcf==0)
+            goto error;
+
+        /* direct sound capture doesn't have an IKsPropertySet */
+        rc = pcf->lpVtbl->CreateInstance(pcf, NULL, &IID_IKsPropertySet,
+                                         (void **)(&pps));
+        ok(rc==E_NOINTERFACE, "CreateInstance(IID_IKsPropertySet) should have "
+           "returned E_NOINTERFACE,returned: %s\n",DXGetErrorString8(rc));
+    }
 
     /* and the direct sound capture 8 version */
-    rc = (fProc)(&CLSID_DirectSoundCapture8, &IID_IClassFactory,
-                 (void **)(&pcf));
-    ok(pcf!=0, "DllGetClassObject(CLSID_DirectSoundCapture8, "
-       "IID_IClassFactory) failed: %s\n",DXGetErrorString8(rc));
-    if (pcf==0)
-        goto error;
-
-    /* direct sound capture 8 doesn't have an IKsPropertySet */
-    rc = pcf->lpVtbl->CreateInstance(pcf, NULL, &IID_IKsPropertySet,
-                                     (void **)(&pps));
-    ok(rc==E_NOINTERFACE, "CreateInstance(IID_IKsPropertySet) should have "
-       "returned E_NOINTERFACE, returned: %s\n",DXGetErrorString8(rc));
+    if (pDirectSoundCaptureCreate8) {
+        rc = (fProc)(&CLSID_DirectSoundCapture8, &IID_IClassFactory,
+                     (void **)(&pcf));
+        ok(pcf!=0, "DllGetClassObject(CLSID_DirectSoundCapture8, "
+           "IID_IClassFactory) failed: %s\n",DXGetErrorString8(rc));
+        if (pcf==0)
+            goto error;
+
+        /* direct sound capture 8 doesn't have an IKsPropertySet */
+        rc = pcf->lpVtbl->CreateInstance(pcf, NULL, &IID_IKsPropertySet,
+                                         (void **)(&pps));
+        ok(rc==E_NOINTERFACE, "CreateInstance(IID_IKsPropertySet) should have "
+           "returned E_NOINTERFACE, returned: %s\n",DXGetErrorString8(rc));
+    }
 
     /* try direct sound full duplex next */
-    rc = (fProc)(&CLSID_DirectSoundFullDuplex, &IID_IClassFactory,
-                 (void **)(&pcf));
-    ok(pcf!=0, "DllGetClassObject(CLSID_DirectSoundFullDuplex, "
-       "IID_IClassFactory) failed: %s\n",DXGetErrorString8(rc));
-    if (pcf==0)
-        goto error;
-
-    /* direct sound full duplex doesn't have an IKsPropertySet */
-    rc = pcf->lpVtbl->CreateInstance(pcf, NULL, &IID_IKsPropertySet,
-                                     (void **)(&pps));
-    ok(rc==E_NOINTERFACE, "CreateInstance(IID_IKsPropertySet) should have "
-       "returned NOINTERFACE, returned: %s\n",DXGetErrorString8(rc));
+    if (pDirectSoundFullDuplexCreate) {
+        rc = (fProc)(&CLSID_DirectSoundFullDuplex, &IID_IClassFactory,
+                     (void **)(&pcf));
+        ok(pcf!=0, "DllGetClassObject(CLSID_DirectSoundFullDuplex, "
+           "IID_IClassFactory) failed: %s\n",DXGetErrorString8(rc));
+        if (pcf==0)
+            goto error;
+
+        /* direct sound full duplex doesn't have an IKsPropertySet */
+        rc = pcf->lpVtbl->CreateInstance(pcf, NULL, &IID_IKsPropertySet,
+                                         (void **)(&pps));
+        ok(rc==E_NOINTERFACE, "CreateInstance(IID_IKsPropertySet) should have "
+           "returned NOINTERFACE, returned: %s\n",DXGetErrorString8(rc));
+    }
 
     /* try direct sound private last */
     rc = (fProc)(&CLSID_DirectSoundPrivate, &IID_IClassFactory,
@@ -190,11 +208,14 @@ static void propset_private_tests()
     rc = pps->lpVtbl->QuerySupport(pps, &DSPROPSETID_DirectSoundDevice,
                                    DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION,
                                    &support);
-    ok(rc==DS_OK, "QuerySupport(DSPROPSETID_DirectSoundDevice, "
+    ok(rc==DS_OK||rc==E_INVALIDARG, "QuerySupport(DSPROPSETID_DirectSoundDevice, "
        "DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION) failed: %s\n",
        DXGetErrorString8(rc));
-    if (rc!=DS_OK)
+    if (rc!=DS_OK) {
+        if (rc==E_INVALIDARG)
+            trace("  Not Supported\n");
         goto error;
+    }
 
     ok(support & KSPROPERTY_SUPPORT_GET,
        "Couldn't get DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION: "
@@ -263,13 +284,15 @@ static BOOL WINAPI dsenum_callback(LPGUI
     trace("*** Testing %s - %s ***\n",lpcstrDescription,lpcstrModule);
 
     rc=DirectSoundCreate(lpGuid,&dso,NULL);
-    ok(rc==DS_OK||rc==DSERR_NODRIVER||rc==DSERR_ALLOCATED,
+    ok(rc==DS_OK||rc==DSERR_NODRIVER||rc==DSERR_ALLOCATED||rc==E_FAIL,
        "DirectSoundCreate() failed: %s\n",DXGetErrorString8(rc));
     if (rc!=DS_OK) {
         if (rc==DSERR_NODRIVER)
             trace("  No Driver\n");
         else if (rc == DSERR_ALLOCATED)
             trace("  Already In Use\n");
+        else if (rc == E_FAIL)
+            trace("  No Device\n");
         goto EXIT;
     }
 
@@ -403,7 +426,20 @@ static void propset_buffer_tests()
 
 START_TEST(propset)
 {
+    HMODULE hDsound;
+
     CoInitialize(NULL);
+
+    hDsound = LoadLibraryA("dsound.dll");
+    if (!hDsound) {
+        trace("dsound.dll not found\n");
+        return;
+    }
+                                                                                
+    pDirectSoundCreate8 = (void*)GetProcAddress(hDsound, "DirectSoundCreate8");
+    pDirectSoundCaptureCreate=(void*)GetProcAddress(hDsound,"DirectSoundCaptureCreate");
+    pDirectSoundCaptureCreate8=(void*)GetProcAddress(hDsound,"DirectSoundCaptureCreate8");
+    pDirectSoundFullDuplexCreate=(void*)GetProcAddress(hDsound,"DirectSoundFullDuplexCreate");
 
     propset_private_tests();
     propset_buffer_tests();


More information about the wine-patches mailing list