dsound COM and NULL GUID tests
Robert Reif
reif at earthlink.net
Fri Jul 9 19:48:11 CDT 2004
Create IDirectSound and IDirectSound8 objects using the CoCreateInstance
COM function to test the Class Factory interfaces.
Create IDirectSound and IDirectSound8 objects using CreateDirectSound and
CreateDirectSound8 using a NULL device GUID.
-------------- next part --------------
Index: dlls/dsound/tests/Makefile.in
===================================================================
RCS file: /home/wine/wine/dlls/dsound/tests/Makefile.in,v
retrieving revision 1.7
diff -u -r1.7 Makefile.in
--- dlls/dsound/tests/Makefile.in 17 Jun 2004 23:03:11 -0000 1.7
+++ dlls/dsound/tests/Makefile.in 10 Jul 2004 00:39:50 -0000
@@ -3,7 +3,7 @@
SRCDIR = @srcdir@
VPATH = @srcdir@
TESTDLL = dsound.dll
-IMPORTS = dsound user32 kernel32
+IMPORTS = dsound user32 kernel32 ole32
EXTRALIBS = -ldxguid -luuid -ldxerr9
CTESTS = \
Index: dlls/dsound/tests/dsound.c
===================================================================
RCS file: /home/wine/wine/dlls/dsound/tests/dsound.c,v
retrieving revision 1.22
diff -u -r1.22 dsound.c
--- dlls/dsound/tests/dsound.c 4 Jul 2004 00:13:44 -0000 1.22
+++ dlls/dsound/tests/dsound.c 10 Jul 2004 00:39:51 -0000
@@ -40,6 +40,203 @@
#include "dsound_test.h"
+static void dsound_dsound_tests()
+{
+ HRESULT rc;
+ LPDIRECTSOUND dso=NULL;
+ DSCAPS dscaps;
+ int ref;
+ IUnknown * unknown;
+ IDirectSound * ds;
+ IDirectSound8 * ds8;
+
+ rc=CoCreateInstance(&CLSID_DirectSound, NULL, CLSCTX_INPROC_SERVER, &IID_IDirectSound, (void**)&dso);
+ ok(rc==S_OK,"CoCreateInstance failed: %s\n",DXGetErrorString9(rc));
+ if (dso) {
+ /* Try to Query for objects */
+ rc=IDirectSound_QueryInterface(dso,&IID_IUnknown,(LPVOID*)&unknown);
+ ok(rc==DS_OK,"IDirectSound_QueryInterface(IID_IUnknown) failed: %s\n",DXGetErrorString9(rc));
+ if (rc==DS_OK)
+ IDirectSound_Release(unknown);
+
+ rc=IDirectSound_QueryInterface(dso,&IID_IDirectSound,(LPVOID*)&ds);
+ ok(rc==DS_OK,"IDirectSound_QueryInterface(IID_IDirectSound) failed: %s\n",DXGetErrorString9(rc));
+ if (rc==DS_OK)
+ IDirectSound_Release(ds);
+
+ rc=IDirectSound_QueryInterface(dso,&IID_IDirectSound8,(LPVOID*)&ds8);
+ ok(rc==E_NOINTERFACE,"IDirectSound_QueryInterface(IID_IDirectSound8) should have failed: %s\n",DXGetErrorString9(rc));
+ if (rc==DS_OK)
+ IDirectSound8_Release(ds8);
+
+ /* DSOUND: Error: Invalid caps buffer */
+ rc=IDirectSound_GetCaps(dso,0);
+ ok(rc==DSERR_INVALIDPARAM,"GetCaps should have failed: %s\n",DXGetErrorString9(rc));
+
+ ZeroMemory(&dscaps, sizeof(dscaps));
+
+ /* DSOUND: Error: Invalid caps buffer */
+ rc=IDirectSound_GetCaps(dso,&dscaps);
+ ok(rc==DSERR_INVALIDPARAM,"GetCaps should have failed: %s\n",DXGetErrorString9(rc));
+
+ dscaps.dwSize=sizeof(dscaps);
+
+ /* DSOUND: Running on a certified driver */
+ rc=IDirectSound_GetCaps(dso,&dscaps);
+ ok(rc==DS_OK,"GetCaps failed: %s\n",DXGetErrorString9(rc));
+ if (rc==DS_OK) {
+ trace(" DirectSound Caps: flags=0x%08lx secondary min=%ld max=%ld\n",
+ dscaps.dwFlags,dscaps.dwMinSecondarySampleRate,
+ dscaps.dwMaxSecondarySampleRate);
+ }
+
+ ref=IDirectSound_Release(dso);
+ ok(ref==0,"IDirectSound_Release has %d references, should have 0\n",ref);
+ }
+
+ rc=DirectSoundCreate(NULL,&dso,NULL);
+ ok(rc==S_OK,"DirectSoundCreate failed: %s\n",DXGetErrorString9(rc));
+ if (dso) {
+ /* Try to Query for objects */
+ rc=IDirectSound_QueryInterface(dso,&IID_IUnknown,(LPVOID*)&unknown);
+ ok(rc==DS_OK,"IDirectSound_QueryInterface(IID_IUnknown) failed: %s\n",DXGetErrorString9(rc));
+ if (rc==DS_OK)
+ IDirectSound_Release(unknown);
+
+ rc=IDirectSound_QueryInterface(dso,&IID_IDirectSound,(LPVOID*)&ds);
+ ok(rc==DS_OK,"IDirectSound_QueryInterface(IID_IDirectSound) failed: %s\n",DXGetErrorString9(rc));
+ if (rc==DS_OK)
+ IDirectSound_Release(ds);
+
+ rc=IDirectSound_QueryInterface(dso,&IID_IDirectSound8,(LPVOID*)&ds8);
+ ok(rc==E_NOINTERFACE,"IDirectSound_QueryInterface(IID_IDirectSound8) should have failed: %s\n",DXGetErrorString9(rc));
+ if (rc==DS_OK)
+ IDirectSound8_Release(ds8);
+
+ /* DSOUND: Error: Invalid caps buffer */
+ rc=IDirectSound_GetCaps(dso,0);
+ ok(rc==DSERR_INVALIDPARAM,"GetCaps should have failed: %s\n",DXGetErrorString9(rc));
+
+ ZeroMemory(&dscaps, sizeof(dscaps));
+
+ /* DSOUND: Error: Invalid caps buffer */
+ rc=IDirectSound_GetCaps(dso,&dscaps);
+ ok(rc==DSERR_INVALIDPARAM,"GetCaps should have failed: %s\n",DXGetErrorString9(rc));
+
+ dscaps.dwSize=sizeof(dscaps);
+
+ /* DSOUND: Running on a certified driver */
+ rc=IDirectSound_GetCaps(dso,&dscaps);
+ ok(rc==DS_OK,"GetCaps failed: %s\n",DXGetErrorString9(rc));
+ if (rc==DS_OK) {
+ trace(" DirectSound Caps: flags=0x%08lx secondary min=%ld max=%ld\n",
+ dscaps.dwFlags,dscaps.dwMinSecondarySampleRate,
+ dscaps.dwMaxSecondarySampleRate);
+ }
+
+ ref=IDirectSound_Release(dso);
+ ok(ref==0,"IDirectSound_Release has %d references, should have 0\n",ref);
+ }
+}
+
+static void dsound_dsound8_tests()
+{
+ HRESULT rc;
+ LPDIRECTSOUND8 dso=NULL;
+ DSCAPS dscaps;
+ int ref;
+ IUnknown * unknown;
+ IDirectSound * ds;
+ IDirectSound8 * ds8;
+
+ rc=CoCreateInstance(&CLSID_DirectSound8, NULL, CLSCTX_INPROC_SERVER, &IID_IDirectSound8, (void**)&dso);
+ ok(rc==S_OK,"CoCreateInstance failed: %s\n",DXGetErrorString9(rc));
+ if (dso) {
+ /* Try to Query for objects */
+ rc=IDirectSound8_QueryInterface(dso,&IID_IUnknown,(LPVOID*)&unknown);
+ ok(rc==DS_OK,"IDirectSound8_QueryInterface(IID_IUnknown) failed: %s\n",DXGetErrorString9(rc));
+ if (rc==DS_OK)
+ IDirectSound8_Release(unknown);
+
+ rc=IDirectSound8_QueryInterface(dso,&IID_IDirectSound,(LPVOID*)&ds);
+ ok(rc==DS_OK,"IDirectSound8_QueryInterface(IID_IDirectSound) failed: %s\n",DXGetErrorString9(rc));
+ if (rc==DS_OK)
+ IDirectSound_Release(ds);
+
+ rc=IDirectSound8_QueryInterface(dso,&IID_IDirectSound8,(LPVOID*)&ds8);
+ ok(rc==DS_OK,"IDirectSound8_QueryInterface(IID_IDirectSound8) should have failed: %s\n",DXGetErrorString9(rc));
+ if (rc==DS_OK)
+ IDirectSound8_Release(ds8);
+
+ /* DSOUND: Error: Invalid caps buffer */
+ rc=IDirectSound8_GetCaps(dso,0);
+ ok(rc==DSERR_INVALIDPARAM,"GetCaps should have failed: %s\n",DXGetErrorString9(rc));
+
+ ZeroMemory(&dscaps, sizeof(dscaps));
+
+ /* DSOUND: Error: Invalid caps buffer */
+ rc=IDirectSound8_GetCaps(dso,&dscaps);
+ ok(rc==DSERR_INVALIDPARAM,"GetCaps should have failed: %s\n",DXGetErrorString9(rc));
+
+ dscaps.dwSize=sizeof(dscaps);
+
+ /* DSOUND: Running on a certified driver */
+ rc=IDirectSound8_GetCaps(dso,&dscaps);
+ ok(rc==DS_OK,"GetCaps failed: %s\n",DXGetErrorString9(rc));
+ if (rc==DS_OK) {
+ trace(" DirectSound Caps: flags=0x%08lx secondary min=%ld max=%ld\n",
+ dscaps.dwFlags,dscaps.dwMinSecondarySampleRate,
+ dscaps.dwMaxSecondarySampleRate);
+ }
+
+ ref=IDirectSound8_Release(dso);
+ ok(ref==0,"IDirectSound8_Release has %d references, should have 0\n",ref);
+ }
+
+ rc=DirectSoundCreate8(NULL,&dso,NULL);
+ ok(rc==S_OK,"DirectSoundCreate8 failed: %s\n",DXGetErrorString9(rc));
+ if (dso) {
+ /* Try to Query for objects */
+ rc=IDirectSound8_QueryInterface(dso,&IID_IUnknown,(LPVOID*)&unknown);
+ ok(rc==DS_OK,"IDirectSound8_QueryInterface(IID_IUnknown) failed: %s\n",DXGetErrorString9(rc));
+ if (rc==DS_OK)
+ IDirectSound8_Release(unknown);
+
+ rc=IDirectSound8_QueryInterface(dso,&IID_IDirectSound,(LPVOID*)&ds);
+ ok(rc==DS_OK,"IDirectSound8_QueryInterface(IID_IDirectSound) failed: %s\n",DXGetErrorString9(rc));
+ if (rc==DS_OK)
+ IDirectSound_Release(ds);
+
+ rc=IDirectSound8_QueryInterface(dso,&IID_IDirectSound8,(LPVOID*)&ds8);
+ ok(rc==DS_OK,"IDirectSound8_QueryInterface(IID_IDirectSound8) should have failed: %s\n",DXGetErrorString9(rc));
+ if (rc==DS_OK)
+ IDirectSound8_Release(ds8);
+
+ /* DSOUND: Error: Invalid caps buffer */
+ rc=IDirectSound8_GetCaps(dso,0);
+ ok(rc==DSERR_INVALIDPARAM,"GetCaps should have failed: %s\n",DXGetErrorString9(rc));
+
+ ZeroMemory(&dscaps, sizeof(dscaps));
+
+ /* DSOUND: Error: Invalid caps buffer */
+ rc=IDirectSound8_GetCaps(dso,&dscaps);
+ ok(rc==DSERR_INVALIDPARAM,"GetCaps should have failed: %s\n",DXGetErrorString9(rc));
+
+ dscaps.dwSize=sizeof(dscaps);
+
+ /* DSOUND: Running on a certified driver */
+ rc=IDirectSound8_GetCaps(dso,&dscaps);
+ ok(rc==DS_OK,"GetCaps failed: %s\n",DXGetErrorString9(rc));
+ if (rc==DS_OK) {
+ trace(" DirectSound Caps: flags=0x%08lx secondary min=%ld max=%ld\n",
+ dscaps.dwFlags,dscaps.dwMinSecondarySampleRate,
+ dscaps.dwMaxSecondarySampleRate);
+ }
+
+ ref=IDirectSound8_Release(dso);
+ ok(ref==0,"IDirectSound_Release has %d references, should have 0\n",ref);
+ }
+}
static HRESULT test_dsound(LPGUID lpGuid)
{
@@ -417,5 +614,9 @@
START_TEST(dsound)
{
+ CoInitialize(NULL);
+
+ dsound_dsound_tests();
+ dsound_dsound8_tests();
dsound_tests();
}
More information about the wine-patches
mailing list