[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