mirror of
https://github.com/reactos/reactos.git
synced 2025-07-11 05:24:11 +00:00

Implementing missing features... JIRA issue: CORE-19278 - Move function definition from stubs.cpp to utils.cpp. - Implement SHIsBadInterfacePtr function in utils.cpp. - Add prototype to <undocshell.h>.
53 lines
1.6 KiB
C++
53 lines
1.6 KiB
C++
/*
|
|
* PROJECT: ReactOS API tests
|
|
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
|
|
* PURPOSE: Test for SHIsBadInterfacePtr
|
|
* COPYRIGHT: Copyright 2025 Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
|
|
*/
|
|
|
|
#include "shelltest.h"
|
|
#include <undocshell.h>
|
|
|
|
typedef BOOL (WINAPI *FN_SHIsBadInterfacePtr)(LPCVOID, UINT_PTR);
|
|
|
|
static HRESULT STDMETHODCALLTYPE dummy_QueryInterface(REFIID riid, LPVOID *ppvObj) { return S_OK; }
|
|
static ULONG STDMETHODCALLTYPE dummy_AddRef() { return S_OK; }
|
|
static ULONG STDMETHODCALLTYPE dummy_Release() { return S_OK; }
|
|
|
|
START_TEST(SHIsBadInterfacePtr)
|
|
{
|
|
struct CUnknownVtbl
|
|
{
|
|
HRESULT (STDMETHODCALLTYPE *QueryInterface)(REFIID riid, LPVOID *ppvObj);
|
|
ULONG (STDMETHODCALLTYPE *AddRef)();
|
|
ULONG (STDMETHODCALLTYPE *Release)();
|
|
};
|
|
struct CUnknown { CUnknownVtbl *lpVtbl; };
|
|
|
|
BOOL ret;
|
|
FN_SHIsBadInterfacePtr SHIsBadInterfacePtr =
|
|
(FN_SHIsBadInterfacePtr)GetProcAddress(GetModuleHandleW(L"shell32"), MAKEINTRESOURCEA(84));
|
|
|
|
if (!SHIsBadInterfacePtr)
|
|
{
|
|
skip("There is no SHIsBadInterfacePtr\n");
|
|
return;
|
|
}
|
|
|
|
ret = SHIsBadInterfacePtr(NULL, 1);
|
|
ok_int(ret, TRUE);
|
|
|
|
CUnknown unk1 = { NULL };
|
|
ret = SHIsBadInterfacePtr(&unk1, 1);
|
|
ok_int(ret, TRUE);
|
|
|
|
CUnknownVtbl vtbl1 = { dummy_QueryInterface, dummy_AddRef, NULL };
|
|
CUnknown unk2 = { &vtbl1 };
|
|
ret = SHIsBadInterfacePtr(&unk2, 1);
|
|
ok_int(ret, TRUE);
|
|
|
|
CUnknownVtbl vtbl2 = { dummy_QueryInterface, dummy_AddRef, dummy_Release };
|
|
CUnknown unk3 = { &vtbl2 };
|
|
ret = SHIsBadInterfacePtr(&unk3, 1);
|
|
ok_int(ret, FALSE);
|
|
}
|