mirror of
https://github.com/reactos/reactos.git
synced 2025-01-06 06:20:13 +00:00
[SHLWAPI_WINETEST] Sync with Wine Staging 1.7.47. CORE-9924
svn path=/trunk/; revision=68502
This commit is contained in:
parent
3bed48c060
commit
b652ba2ef1
4 changed files with 108 additions and 10 deletions
|
@ -489,7 +489,8 @@ static void test_SHCreateStreamOnFileEx(DWORD mode, DWORD stgm)
|
||||||
static const CHAR testEx_txt[] = "\\testEx.txt";
|
static const CHAR testEx_txt[] = "\\testEx.txt";
|
||||||
BOOL delret;
|
BOOL delret;
|
||||||
|
|
||||||
trace("SHCreateStreamOnFileEx: testing mode %d, STGM flags %08x\n", mode, stgm);
|
if (winetest_debug > 1)
|
||||||
|
trace("SHCreateStreamOnFileEx: testing mode %d, STGM flags %08x\n", mode, stgm);
|
||||||
|
|
||||||
/* Don't used a fixed path for the testEx.txt file */
|
/* Don't used a fixed path for the testEx.txt file */
|
||||||
GetTempPathA(MAX_PATH, test_fileA);
|
GetTempPathA(MAX_PATH, test_fileA);
|
||||||
|
|
|
@ -75,6 +75,7 @@ static HRESULT (WINAPI *pSKSetValueW)(DWORD, LPCWSTR, LPCWSTR, DWORD, void*, DWO
|
||||||
static HRESULT (WINAPI *pSKDeleteValueW)(DWORD, LPCWSTR, LPCWSTR);
|
static HRESULT (WINAPI *pSKDeleteValueW)(DWORD, LPCWSTR, LPCWSTR);
|
||||||
static HRESULT (WINAPI *pSKAllocValueW)(DWORD, LPCWSTR, LPCWSTR, DWORD*, void**, DWORD*);
|
static HRESULT (WINAPI *pSKAllocValueW)(DWORD, LPCWSTR, LPCWSTR, DWORD*, void**, DWORD*);
|
||||||
static HWND (WINAPI *pSHSetParentHwnd)(HWND, HWND);
|
static HWND (WINAPI *pSHSetParentHwnd)(HWND, HWND);
|
||||||
|
static HRESULT (WINAPI *pIUnknown_GetClassID)(IUnknown*, CLSID*);
|
||||||
|
|
||||||
static HMODULE hmlang;
|
static HMODULE hmlang;
|
||||||
static HRESULT (WINAPI *pLcidToRfc1766A)(LCID, LPSTR, INT);
|
static HRESULT (WINAPI *pLcidToRfc1766A)(LCID, LPSTR, INT);
|
||||||
|
@ -553,10 +554,10 @@ static void test_alloc_shared_remote(DWORD procid, HANDLE hmem)
|
||||||
hmem2 = pSHMapHandle(hmem, procid, GetCurrentProcessId(), 0, 0);
|
hmem2 = pSHMapHandle(hmem, procid, GetCurrentProcessId(), 0, 0);
|
||||||
|
|
||||||
/* It seems like Windows Vista/2008 uses a different internal implementation
|
/* It seems like Windows Vista/2008 uses a different internal implementation
|
||||||
* for shared memory, and calling SHMapHandle fails with ERROR_INVALID_HANDLE. */
|
* for shared memory, and calling SHMapHandle fails. */
|
||||||
ok(hmem2 != NULL || broken(hmem2 == NULL && GetLastError() == ERROR_INVALID_HANDLE),
|
ok(hmem2 != NULL || broken(hmem2 == NULL),
|
||||||
"SHMapHandle failed: %u\n", GetLastError());
|
"SHMapHandle failed: %u\n", GetLastError());
|
||||||
if (hmem2 == NULL && GetLastError() == ERROR_INVALID_HANDLE)
|
if (hmem2 == NULL)
|
||||||
{
|
{
|
||||||
win_skip("Subprocess failed to map shared memory, skipping test\n");
|
win_skip("Subprocess failed to map shared memory, skipping test\n");
|
||||||
return;
|
return;
|
||||||
|
@ -3053,6 +3054,7 @@ static void init_pointers(void)
|
||||||
MAKEFUNC(SHSetWindowBits, 165);
|
MAKEFUNC(SHSetWindowBits, 165);
|
||||||
MAKEFUNC(SHSetParentHwnd, 167);
|
MAKEFUNC(SHSetParentHwnd, 167);
|
||||||
MAKEFUNC(ConnectToConnectionPoint, 168);
|
MAKEFUNC(ConnectToConnectionPoint, 168);
|
||||||
|
MAKEFUNC(IUnknown_GetClassID, 175);
|
||||||
MAKEFUNC(SHSearchMapInt, 198);
|
MAKEFUNC(SHSearchMapInt, 198);
|
||||||
MAKEFUNC(SHCreateWorkerWindowA, 257);
|
MAKEFUNC(SHCreateWorkerWindowA, 257);
|
||||||
MAKEFUNC(GUIDFromStringA, 269);
|
MAKEFUNC(GUIDFromStringA, 269);
|
||||||
|
@ -3158,6 +3160,95 @@ static void test_SHSetParentHwnd(void)
|
||||||
DestroyWindow(hwnd2);
|
DestroyWindow(hwnd2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI testpersist_QI(IPersist *iface, REFIID riid, void **obj)
|
||||||
|
{
|
||||||
|
if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IPersist)) {
|
||||||
|
*obj = iface;
|
||||||
|
IPersist_AddRef(iface);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
*obj = NULL;
|
||||||
|
return E_NOINTERFACE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI testpersist_QI2(IPersist *iface, REFIID riid, void **obj)
|
||||||
|
{
|
||||||
|
if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IPersistFolder)) {
|
||||||
|
*obj = iface;
|
||||||
|
IPersist_AddRef(iface);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
*obj = NULL;
|
||||||
|
return E_NOINTERFACE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI testpersist_AddRef(IPersist *iface)
|
||||||
|
{
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI testpersist_Release(IPersist *iface)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI testpersist_GetClassID(IPersist *iface, CLSID *clsid)
|
||||||
|
{
|
||||||
|
memset(clsid, 0xab, sizeof(*clsid));
|
||||||
|
return 0x8fff2222;
|
||||||
|
}
|
||||||
|
|
||||||
|
static IPersistVtbl testpersistvtbl = {
|
||||||
|
testpersist_QI,
|
||||||
|
testpersist_AddRef,
|
||||||
|
testpersist_Release,
|
||||||
|
testpersist_GetClassID
|
||||||
|
};
|
||||||
|
|
||||||
|
static IPersistVtbl testpersist2vtbl = {
|
||||||
|
testpersist_QI2,
|
||||||
|
testpersist_AddRef,
|
||||||
|
testpersist_Release,
|
||||||
|
testpersist_GetClassID
|
||||||
|
};
|
||||||
|
|
||||||
|
static IPersist testpersist = { &testpersistvtbl };
|
||||||
|
static IPersist testpersist2 = { &testpersist2vtbl };
|
||||||
|
|
||||||
|
static void test_IUnknown_GetClassID(void)
|
||||||
|
{
|
||||||
|
CLSID clsid, clsid2, clsid3;
|
||||||
|
HRESULT hr;
|
||||||
|
|
||||||
|
if (0) /* crashes on native systems */
|
||||||
|
hr = pIUnknown_GetClassID(NULL, NULL);
|
||||||
|
|
||||||
|
memset(&clsid, 0xcc, sizeof(clsid));
|
||||||
|
memset(&clsid3, 0xcc, sizeof(clsid3));
|
||||||
|
hr = pIUnknown_GetClassID(NULL, &clsid);
|
||||||
|
ok(hr == E_FAIL, "got 0x%08x\n", hr);
|
||||||
|
ok(IsEqualCLSID(&clsid, &CLSID_NULL) || broken(IsEqualCLSID(&clsid, &clsid3)) /* win2k, winxp, win2k3 */,
|
||||||
|
"got wrong clsid %s\n", wine_dbgstr_guid(&clsid));
|
||||||
|
|
||||||
|
memset(&clsid, 0xcc, sizeof(clsid));
|
||||||
|
memset(&clsid2, 0xab, sizeof(clsid2));
|
||||||
|
hr = pIUnknown_GetClassID((IUnknown*)&testpersist, &clsid);
|
||||||
|
ok(hr == 0x8fff2222, "got 0x%08x\n", hr);
|
||||||
|
ok(IsEqualCLSID(&clsid, &clsid2) || broken(IsEqualCLSID(&clsid, &clsid3)) /* win2k3 */,
|
||||||
|
"got wrong clsid %s\n", wine_dbgstr_guid(&clsid));
|
||||||
|
|
||||||
|
/* IPersistFolder is also supported */
|
||||||
|
memset(&clsid, 0xcc, sizeof(clsid));
|
||||||
|
memset(&clsid2, 0xab, sizeof(clsid2));
|
||||||
|
memset(&clsid3, 0xcc, sizeof(clsid3));
|
||||||
|
hr = pIUnknown_GetClassID((IUnknown*)&testpersist2, &clsid);
|
||||||
|
ok(hr == 0x8fff2222, "got 0x%08x\n", hr);
|
||||||
|
ok(IsEqualCLSID(&clsid, &clsid2) || broken(IsEqualCLSID(&clsid, &clsid3)) /* win2k3 */,
|
||||||
|
"got wrong clsid %s\n", wine_dbgstr_guid(&clsid));
|
||||||
|
}
|
||||||
|
|
||||||
START_TEST(ordinal)
|
START_TEST(ordinal)
|
||||||
{
|
{
|
||||||
char **argv;
|
char **argv;
|
||||||
|
@ -3212,6 +3303,7 @@ START_TEST(ordinal)
|
||||||
test_SHSetIniString();
|
test_SHSetIniString();
|
||||||
test_SHGetShellKey();
|
test_SHGetShellKey();
|
||||||
test_SHSetParentHwnd();
|
test_SHSetParentHwnd();
|
||||||
|
test_IUnknown_GetClassID();
|
||||||
|
|
||||||
FreeLibrary(hshell32);
|
FreeLibrary(hshell32);
|
||||||
FreeLibrary(hmlang);
|
FreeLibrary(hmlang);
|
||||||
|
|
|
@ -188,13 +188,18 @@ static const struct {
|
||||||
|
|
||||||
/* ################ */
|
/* ################ */
|
||||||
|
|
||||||
static LPWSTR GetWideString(const char* szString)
|
static LPWSTR GetWideString(const char *src)
|
||||||
{
|
{
|
||||||
LPWSTR wszString = HeapAlloc(GetProcessHeap(), 0, (2*INTERNET_MAX_URL_LENGTH) * sizeof(WCHAR));
|
WCHAR *ret;
|
||||||
|
|
||||||
MultiByteToWideChar(CP_ACP, 0, szString, -1, wszString, INTERNET_MAX_URL_LENGTH);
|
|
||||||
|
|
||||||
return wszString;
|
if (!src)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
ret = HeapAlloc(GetProcessHeap(), 0, (2*INTERNET_MAX_URL_LENGTH) * sizeof(WCHAR));
|
||||||
|
|
||||||
|
MultiByteToWideChar(CP_ACP, 0, src, -1, ret, INTERNET_MAX_URL_LENGTH);
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void FreeWideString(LPWSTR wszString)
|
static void FreeWideString(LPWSTR wszString)
|
||||||
|
|
|
@ -1150,7 +1150,7 @@ static void test_url_combine(const char *szUrl1, const char *szUrl2, DWORD dwFla
|
||||||
|
|
||||||
if (todo)
|
if (todo)
|
||||||
{
|
{
|
||||||
todo_wine ok(dwSize == dwExpectLen && (!SUCCEEDED(hr) || strcmp(szReturnUrl, szExpectUrl)==0),
|
todo_wine ok(dwSize == dwExpectLen && (FAILED(hr) || strcmp(szReturnUrl, szExpectUrl)==0),
|
||||||
"Expected %s (len=%d), but got %s (len=%d)\n", szExpectUrl, dwExpectLen, SUCCEEDED(hr) ? szReturnUrl : "(null)", dwSize);
|
"Expected %s (len=%d), but got %s (len=%d)\n", szExpectUrl, dwExpectLen, SUCCEEDED(hr) ? szReturnUrl : "(null)", dwSize);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in a new issue