From 3cab60997f6fcaac92f3d5c67f323d73d7307e70 Mon Sep 17 00:00:00 2001 From: Robert Reif Date: Wed, 23 Feb 2005 12:43:38 +0000 Subject: [PATCH] Fix tests for win9x and old versions of DirectX. --- dlls/dsound/tests/capture.c | 2 +- dlls/dsound/tests/ds3d.c | 5 +- dlls/dsound/tests/ds3d8.c | 5 +- dlls/dsound/tests/dsound.c | 2 + dlls/dsound/tests/dsound8.c | 2 + dlls/dsound/tests/propset.c | 128 +++++++++++++++++++++++------------- 6 files changed, 95 insertions(+), 49 deletions(-) diff --git a/dlls/dsound/tests/capture.c b/dlls/dsound/tests/capture.c index 05269d10a37..8630b338de6 100644 --- a/dlls/dsound/tests/capture.c +++ b/dlls/dsound/tests/capture.c @@ -320,7 +320,7 @@ static BOOL WINAPI dscenum_callback(LPGUID lpGuid, LPCSTR lpcstrDescription, 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; diff --git a/dlls/dsound/tests/ds3d.c b/dlls/dsound/tests/ds3d.c index 5fc6bc67088..4d75d9eefb2 100644 --- a/dlls/dsound/tests/ds3d.c +++ b/dlls/dsound/tests/ds3d.c @@ -882,7 +882,7 @@ static HRESULT test_for_driver(LPGUID lpGuid) /* 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; @@ -1166,6 +1166,9 @@ static BOOL WINAPI dsenum_callback(LPGUID lpGuid, LPCSTR lpcstrDescription, } else if (rc == DSERR_ALLOCATED) { trace(" Already In Use\n"); return 1; + } else if (rc == E_FAIL) { + trace(" No Device\n"); + return 1; } trace(" Testing the primary buffer\n"); diff --git a/dlls/dsound/tests/ds3d8.c b/dlls/dsound/tests/ds3d8.c index 3ff51041208..823c2f2ce43 100644 --- a/dlls/dsound/tests/ds3d8.c +++ b/dlls/dsound/tests/ds3d8.c @@ -796,7 +796,7 @@ static HRESULT test_for_driver8(LPGUID lpGuid) /* 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; @@ -1081,6 +1081,9 @@ static BOOL WINAPI dsenum_callback(LPGUID lpGuid, LPCSTR lpcstrDescription, } else if (rc == DSERR_ALLOCATED) { trace(" Already In Use\n"); return 1; + } else if (rc == E_FAIL) { + trace(" No Device\n"); + return 1; } trace(" Testing the primary buffer\n"); diff --git a/dlls/dsound/tests/dsound.c b/dlls/dsound/tests/dsound.c index 05077820a79..be5afc904f7 100644 --- a/dlls/dsound/tests/dsound.c +++ b/dlls/dsound/tests/dsound.c @@ -793,6 +793,8 @@ static BOOL WINAPI dsenum_callback(LPGUID lpGuid, LPCSTR lpcstrDescription, 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); diff --git a/dlls/dsound/tests/dsound8.c b/dlls/dsound/tests/dsound8.c index 0f733aad4ed..05842eb82c7 100644 --- a/dlls/dsound/tests/dsound8.c +++ b/dlls/dsound/tests/dsound8.c @@ -767,6 +767,8 @@ static BOOL WINAPI dsenum_callback(LPGUID lpGuid, LPCSTR lpcstrDescription, 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); diff --git a/dlls/dsound/tests/propset.c b/dlls/dsound/tests/propset.c index 55f4f545214..e7c7d865cc3 100644 --- a/dlls/dsound/tests/propset.c +++ b/dlls/dsound/tests/propset.c @@ -51,6 +51,16 @@ DEFINE_GUID(DSPROPSETID_ZOOMFX_BufferProperties, \ 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; + 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)); + /* 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; + 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)); + /* 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; + 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)); + /* 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; + 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)); + /* 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(LPGUID lpGuid, LPCSTR lpcstrDescription, 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,8 +426,21 @@ 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();