dsound/tests: Add GetObjectInPath tests.

This commit is contained in:
Mark Harmstone 2015-03-03 07:46:15 +00:00 committed by Alexandre Julliard
parent 37dd441587
commit b472e5574c
1 changed files with 39 additions and 3 deletions

View File

@ -38,6 +38,8 @@
#include "ksmedia.h"
#include "initguid.h"
#include "mediaobj.h"
#include "wingdi.h"
#include "mmdeviceapi.h"
#include "audioclient.h"
@ -1256,6 +1258,8 @@ static void test_effects(void)
if (rc==DS_OK && secondary8) {
LPVOID ptr1,ptr2;
DWORD bytes1,bytes2;
IUnknown* obj = NULL;
HRESULT rc2;
/* Call SetFX with dwEffectsCount > 0 and pDSFXDesc == NULL */
rc=IDirectSoundBuffer8_SetFX(secondary8,1,NULL,NULL);
@ -1307,14 +1311,46 @@ static void test_effects(void)
}
/* Call SetFX with standard echo */
rc=IDirectSoundBuffer8_SetFX(secondary8,1,&effects[0],resultcodes);
ok(rc==DS_OK||rc==REGDB_E_CLASSNOTREG||rc==DSERR_CONTROLUNAVAIL,
rc2=IDirectSoundBuffer8_SetFX(secondary8,1,&effects[0],resultcodes);
ok(rc2==DS_OK||rc2==REGDB_E_CLASSNOTREG||rc2==DSERR_CONTROLUNAVAIL,
"IDirectSoundBuffer8_SetFX(GUID_DSFX_STANDARD_ECHO) failed: %08x\n",rc);
if (rc!=DSERR_CONTROLUNAVAIL) {
if (rc2!=DSERR_CONTROLUNAVAIL) {
ok(resultcodes[0]==DSFXR_UNKNOWN||resultcodes[0]==DSFXR_LOCHARDWARE||resultcodes[0]==DSFXR_LOCSOFTWARE,
"resultcode == %08x, expected DSFXR_UNKNOWN, DSFXR_LOCHARDWARE, or DSFXR_LOCSOFTWARE\n",resultcodes[0]);
}
/* Call GetObjectInPath for out-of-bounds DMO */
rc=IDirectSoundBuffer8_GetObjectInPath(secondary8,&GUID_All_Objects,2,&IID_IMediaObject,(void**)&obj);
ok(rc==DSERR_OBJECTNOTFOUND||rc==DSERR_CONTROLUNAVAIL,"IDirectSoundBuffer8_GetObjectInPath() "
"should have returned DSERR_OBJECTNOTFOUND, returned: %08x\n",rc);
/* Call GetObjectInPath with NULL ppObject */
rc=IDirectSoundBuffer8_GetObjectInPath(secondary8,&GUID_All_Objects,0,&IID_IMediaObject,NULL);
ok(rc==E_INVALIDARG||rc==DSERR_CONTROLUNAVAIL,"IDirectSoundBuffer8_GetObjectInPath() "
"should have returned E_INVALIDARG, returned: %08x\n",rc);
/* Call GetObjectInPath for unsupported interface */
rc=IDirectSoundBuffer8_GetObjectInPath(secondary8,&GUID_All_Objects,0,&GUID_NULL,(void**)&obj);
ok(rc==E_NOINTERFACE||rc==DSERR_CONTROLUNAVAIL,"IDirectSoundBuffer8_GetObjectInPath() "
"should have returned E_NOINTERFACE, returned: %08x\n",rc);
/* Call GetObjectInPath for unloaded DMO */
rc=IDirectSoundBuffer8_GetObjectInPath(secondary8,&GUID_NULL,0,&IID_IMediaObject,(void**)&obj);
ok(rc==DSERR_OBJECTNOTFOUND||rc==DSERR_CONTROLUNAVAIL,"IDirectSoundBuffer8_GetObjectInPath() "
"should have returned DSERR_OBJECTNOTFOUND, returned: %08x\n",rc);
/* Call GetObjectInPath for first DMO */
obj=NULL;
rc=IDirectSoundBuffer8_GetObjectInPath(secondary8,&GUID_All_Objects,0,&IID_IMediaObject,(void**)&obj);
if (rc2==DS_OK) {
ok(rc==DS_OK||rc==DSERR_CONTROLUNAVAIL,"IDirectSoundBuffer8_GetObjectInPath() "
"should have returned DS_OK, returned: %08x\n",rc);
if (obj) IUnknown_Release(obj);
} else {
ok(rc==DSERR_OBJECTNOTFOUND||rc==DSERR_CONTROLUNAVAIL,"IDirectSoundBuffer8_GetObjectInPath() "
"should have returned DSERR_OBJECTNOTFOUND, returned: %08x\n",rc);
}
/* Call SetFX with one real filter and one fake one */
rc=IDirectSoundBuffer8_SetFX(secondary8,2,effects,resultcodes);
ok(rc==REGDB_E_CLASSNOTREG||rc==DSERR_CONTROLUNAVAIL,