https://git.reactos.org/?p=reactos.git;a=commitdiff;h=a0b6db8b7f5c557ff6a53…
commit a0b6db8b7f5c557ff6a535dac7a6f760236eccd4
Author: Amine Khaldi <amine.khaldi(a)reactos.org>
AuthorDate: Sat Jan 20 13:27:32 2018 +0100
Commit: Amine Khaldi <amine.khaldi(a)reactos.org>
CommitDate: Sat Jan 20 13:27:32 2018 +0100
[SHLWAPI_WINETEST] Sync with Wine 3.0. CORE-14225
---
modules/rostests/winetests/shlwapi/assoc.c | 284 +--------------------------
modules/rostests/winetests/shlwapi/clist.c | 21 +-
modules/rostests/winetests/shlwapi/istream.c | 6 +-
modules/rostests/winetests/shlwapi/ordinal.c | 1 +
modules/rostests/winetests/shlwapi/path.c | 12 ++
modules/rostests/winetests/shlwapi/url.c | 47 ++---
6 files changed, 42 insertions(+), 329 deletions(-)
diff --git a/modules/rostests/winetests/shlwapi/assoc.c
b/modules/rostests/winetests/shlwapi/assoc.c
index 8915b3a7aa..90e44fb84b 100644
--- a/modules/rostests/winetests/shlwapi/assoc.c
+++ b/modules/rostests/winetests/shlwapi/assoc.c
@@ -19,13 +19,12 @@
#include "precomp.h"
-#define expect(expected, got) ok( (expected) == (got), "Expected %d, got %d\n",
(expected), (got))
-#define expect_hr(expected, got) ok( (expected) == (got), "Expected %08x, got
%08x\n", (expected), (got))
+#define expect(expected, got) ok ( expected == got, "Expected %d, got %d\n",
expected, got)
+#define expect_hr(expected, got) ok ( expected == got, "Expected %08x, got
%08x\n", expected, got)
static HRESULT (WINAPI *pAssocQueryStringA)(ASSOCF,ASSOCSTR,LPCSTR,LPCSTR,LPSTR,LPDWORD)
= NULL;
static HRESULT (WINAPI
*pAssocQueryStringW)(ASSOCF,ASSOCSTR,LPCWSTR,LPCWSTR,LPWSTR,LPDWORD) = NULL;
static HRESULT (WINAPI *pAssocCreate)(CLSID, REFIID, void **) = NULL;
-static HRESULT (WINAPI *pAssocGetPerceivedType)(LPCWSTR, PERCEIVED *, INT *, LPWSTR *) =
NULL;
/* Every version of Windows with IE should have this association? */
static const WCHAR dotHtml[] = {
'.','h','t','m','l',0 };
@@ -303,283 +302,6 @@ static void test_assoc_create(void)
}
}
-/* Based on
http://www.geoffchappell.com/studies/windows/shell/shlwapi/api/assocapi/get…
*/
-struct assoc_test_struct
-{
- PCSTR extension;
- PERCEIVED perceived;
- INT flags;
- PCSTR type;
- DWORD minversion;
- HRESULT hr;
-};
-
-#define HARDCODED_NATIVE_WMSDK (PERCEIVEDFLAG_HARDCODED |
PERCEIVEDFLAG_NATIVESUPPORT | PERCEIVEDFLAG_WMSDK)
-#define HARDCODED_NATIVE_GDIPLUS (PERCEIVEDFLAG_HARDCODED |
PERCEIVEDFLAG_NATIVESUPPORT | PERCEIVEDFLAG_GDIPLUS)
-#define HARDCODED_NATIVE_ZIPFLDR (PERCEIVEDFLAG_HARDCODED |
PERCEIVEDFLAG_NATIVESUPPORT | PERCEIVEDFLAG_ZIPFOLDER)
-#define SOFTCODED_NATIVESUPPORT (PERCEIVEDFLAG_SOFTCODED |
PERCEIVEDFLAG_NATIVESUPPORT)
-
-static const struct assoc_test_struct assoc_perceived_types[] =
-{
- /* builtins */
- { ".aif", PERCEIVED_TYPE_AUDIO, HARDCODED_NATIVE_WMSDK,
"audio" },
- { ".aifc", PERCEIVED_TYPE_AUDIO, HARDCODED_NATIVE_WMSDK,
"audio" },
- { ".aiff", PERCEIVED_TYPE_AUDIO, HARDCODED_NATIVE_WMSDK,
"audio" },
- { ".asf", PERCEIVED_TYPE_VIDEO, HARDCODED_NATIVE_WMSDK,
"video" },
- { ".asx", PERCEIVED_TYPE_VIDEO, HARDCODED_NATIVE_WMSDK,
"video" },
- { ".au", PERCEIVED_TYPE_AUDIO, HARDCODED_NATIVE_WMSDK,
"audio" },
- { ".avi", PERCEIVED_TYPE_VIDEO, HARDCODED_NATIVE_WMSDK,
"video" },
- { ".bas", PERCEIVED_TYPE_APPLICATION, PERCEIVEDFLAG_HARDCODED,
"application" },
- { ".bat", PERCEIVED_TYPE_APPLICATION, PERCEIVEDFLAG_HARDCODED,
"application" },
- { ".bmp", PERCEIVED_TYPE_IMAGE, HARDCODED_NATIVE_GDIPLUS,
"image" },
- { ".cmd", PERCEIVED_TYPE_APPLICATION, PERCEIVEDFLAG_HARDCODED,
"application" },
- { ".com", PERCEIVED_TYPE_APPLICATION, PERCEIVEDFLAG_HARDCODED,
"application" },
- { ".cpl", PERCEIVED_TYPE_SYSTEM, PERCEIVEDFLAG_HARDCODED,
"system", 0x600 },
- { ".dib", PERCEIVED_TYPE_IMAGE, HARDCODED_NATIVE_GDIPLUS,
"image" },
- { ".dvr-ms", PERCEIVED_TYPE_VIDEO, HARDCODED_NATIVE_WMSDK,
"video" },
- { ".emf", PERCEIVED_TYPE_IMAGE, HARDCODED_NATIVE_GDIPLUS,
"image" },
- { ".exe", PERCEIVED_TYPE_APPLICATION, PERCEIVEDFLAG_HARDCODED,
"application" },
- { ".gif", PERCEIVED_TYPE_IMAGE, HARDCODED_NATIVE_GDIPLUS,
"image" },
- { ".hta", PERCEIVED_TYPE_APPLICATION, PERCEIVEDFLAG_HARDCODED,
"application" },
- /* htm & html are PERCEIVED_TYPE_TEXT, PERCEIVEDFLAG_NATIVESUPPORT |
PERCEIVEDFLAG_SOFTCODED in w2k3 */
- { ".htm", PERCEIVED_TYPE_DOCUMENT, PERCEIVEDFLAG_HARDCODED,
"document", 0x600 },
- { ".html", PERCEIVED_TYPE_DOCUMENT, PERCEIVEDFLAG_HARDCODED,
"document", 0x600 },
- { ".ico", PERCEIVED_TYPE_IMAGE, HARDCODED_NATIVE_GDIPLUS,
"image" },
- { ".IVF", PERCEIVED_TYPE_VIDEO, HARDCODED_NATIVE_WMSDK,
"video" },
- { ".jfif", PERCEIVED_TYPE_IMAGE, HARDCODED_NATIVE_GDIPLUS,
"image" },
- { ".jpe", PERCEIVED_TYPE_IMAGE, HARDCODED_NATIVE_GDIPLUS,
"image" },
- { ".jpeg", PERCEIVED_TYPE_IMAGE, HARDCODED_NATIVE_GDIPLUS,
"image" },
- { ".jpg", PERCEIVED_TYPE_IMAGE, HARDCODED_NATIVE_GDIPLUS,
"image" },
- { ".lnk", PERCEIVED_TYPE_UNSPECIFIED, PERCEIVEDFLAG_HARDCODED,
NULL, 0x600, E_FAIL },
- { ".m1v", PERCEIVED_TYPE_VIDEO, HARDCODED_NATIVE_WMSDK,
"video" },
- { ".m3u", PERCEIVED_TYPE_AUDIO, HARDCODED_NATIVE_WMSDK,
"audio" },
- { ".mht", PERCEIVED_TYPE_DOCUMENT, PERCEIVEDFLAG_HARDCODED,
"document", 0x600 },
- { ".mid", PERCEIVED_TYPE_AUDIO, HARDCODED_NATIVE_WMSDK,
"audio" },
- { ".midi", PERCEIVED_TYPE_AUDIO, HARDCODED_NATIVE_WMSDK,
"audio" },
- { ".msi", PERCEIVED_TYPE_APPLICATION, PERCEIVEDFLAG_HARDCODED,
"application" },
- /* below win8 this is defined to be video */
- { ".mp2", PERCEIVED_TYPE_AUDIO, HARDCODED_NATIVE_WMSDK,
"audio", 0x602 },
- { ".mp2v", PERCEIVED_TYPE_VIDEO, HARDCODED_NATIVE_WMSDK,
"video" },
- { ".mp3", PERCEIVED_TYPE_AUDIO, HARDCODED_NATIVE_WMSDK,
"audio" },
- { ".mpa", PERCEIVED_TYPE_VIDEO, HARDCODED_NATIVE_WMSDK,
"video" },
- { ".mpe", PERCEIVED_TYPE_VIDEO, HARDCODED_NATIVE_WMSDK,
"video" },
- { ".mpeg", PERCEIVED_TYPE_VIDEO, HARDCODED_NATIVE_WMSDK,
"video" },
- { ".mpg", PERCEIVED_TYPE_VIDEO, HARDCODED_NATIVE_WMSDK,
"video" },
- { ".mpv2", PERCEIVED_TYPE_VIDEO, HARDCODED_NATIVE_WMSDK,
"video" },
- { ".pif", PERCEIVED_TYPE_APPLICATION, PERCEIVEDFLAG_HARDCODED,
"application" },
- { ".png", PERCEIVED_TYPE_IMAGE, HARDCODED_NATIVE_GDIPLUS,
"image" },
- { ".reg", PERCEIVED_TYPE_APPLICATION, PERCEIVEDFLAG_HARDCODED,
"application" },
- { ".rle", PERCEIVED_TYPE_IMAGE, HARDCODED_NATIVE_GDIPLUS,
"image" },
- { ".rmi", PERCEIVED_TYPE_AUDIO, HARDCODED_NATIVE_WMSDK,
"audio" },
- { ".scr", PERCEIVED_TYPE_APPLICATION, PERCEIVEDFLAG_HARDCODED,
"application" },
- { ".search-ms", PERCEIVED_TYPE_UNSPECIFIED, PERCEIVEDFLAG_HARDCODED,
NULL, 0x600, E_FAIL },
- { ".snd", PERCEIVED_TYPE_AUDIO, HARDCODED_NATIVE_WMSDK,
"audio" },
- { ".tif", PERCEIVED_TYPE_IMAGE, HARDCODED_NATIVE_GDIPLUS,
"image" },
- { ".tiff", PERCEIVED_TYPE_IMAGE, HARDCODED_NATIVE_GDIPLUS,
"image" },
- { ".vb", PERCEIVED_TYPE_APPLICATION, PERCEIVEDFLAG_HARDCODED,
"application" },
- { ".wav", PERCEIVED_TYPE_AUDIO, HARDCODED_NATIVE_WMSDK,
"audio" },
- { ".wax", PERCEIVED_TYPE_AUDIO, HARDCODED_NATIVE_WMSDK,
"audio" },
- { ".wm", PERCEIVED_TYPE_VIDEO, HARDCODED_NATIVE_WMSDK,
"video" },
- { ".wma", PERCEIVED_TYPE_AUDIO, HARDCODED_NATIVE_WMSDK,
"audio" },
- { ".wmf", PERCEIVED_TYPE_IMAGE, HARDCODED_NATIVE_GDIPLUS,
"image" },
- { ".wmv", PERCEIVED_TYPE_VIDEO, HARDCODED_NATIVE_WMSDK,
"video" },
- { ".wmx", PERCEIVED_TYPE_VIDEO, HARDCODED_NATIVE_WMSDK,
"video" },
- { ".wvx", PERCEIVED_TYPE_VIDEO, HARDCODED_NATIVE_WMSDK,
"video" },
- { ".zip", PERCEIVED_TYPE_COMPRESSED, HARDCODED_NATIVE_ZIPFLDR,
"compressed" },
- /* found in the registry under HKEY_CLASSES_ROOT on a new Win7 VM */
- { ".386", PERCEIVED_TYPE_SYSTEM, PERCEIVEDFLAG_SOFTCODED,
"system" },
- { ".3g2", PERCEIVED_TYPE_VIDEO, PERCEIVEDFLAG_SOFTCODED,
"video", 0x601 },
- { ".3gp", PERCEIVED_TYPE_VIDEO, PERCEIVEDFLAG_SOFTCODED,
"video", 0x601 },
- { ".3gp2", PERCEIVED_TYPE_VIDEO, PERCEIVEDFLAG_SOFTCODED,
"video", 0x601 },
- { ".3gpp", PERCEIVED_TYPE_VIDEO, PERCEIVEDFLAG_SOFTCODED,
"video", 0x601 },
- { ".AAC", PERCEIVED_TYPE_AUDIO, PERCEIVEDFLAG_SOFTCODED,
"audio", 0x601 },
- { ".ADT", PERCEIVED_TYPE_AUDIO, PERCEIVEDFLAG_SOFTCODED,
"audio", 0x601 },
- { ".ADTS", PERCEIVED_TYPE_AUDIO, PERCEIVEDFLAG_SOFTCODED,
"audio", 0x601 },
- { ".asm", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".asmx", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".aspx", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".c", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".cab", PERCEIVED_TYPE_COMPRESSED, PERCEIVEDFLAG_SOFTCODED,
"compressed", 0x600 },
- { ".chk", PERCEIVED_TYPE_SYSTEM, PERCEIVEDFLAG_SOFTCODED,
"system" },
- { ".cpp", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".css", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".cxx", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".def", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".diz", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".docx", PERCEIVED_TYPE_DOCUMENT, PERCEIVEDFLAG_SOFTCODED,
"document", 0x601 },
- { ".drv", PERCEIVED_TYPE_SYSTEM, PERCEIVEDFLAG_SOFTCODED,
"system", 0x600 },
- { ".gz", PERCEIVED_TYPE_COMPRESSED, PERCEIVEDFLAG_SOFTCODED,
"compressed" },
- { ".h", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".hpp", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".hxx", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".inc", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".ini", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text", 0x600 },
- { ".java", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".local", PERCEIVED_TYPE_SYSTEM, PERCEIVEDFLAG_SOFTCODED,
"system" },
- { ".M2T", PERCEIVED_TYPE_VIDEO, PERCEIVEDFLAG_SOFTCODED,
"video", 0x601 },
- { ".M2TS", PERCEIVED_TYPE_VIDEO, PERCEIVEDFLAG_SOFTCODED,
"video", 0x601 },
- { ".M2V", PERCEIVED_TYPE_VIDEO, PERCEIVEDFLAG_SOFTCODED,
"video", 0x601 },
- { ".m4a", PERCEIVED_TYPE_AUDIO, PERCEIVEDFLAG_SOFTCODED,
"audio", 0x601 },
- { ".m4b", PERCEIVED_TYPE_AUDIO, PERCEIVEDFLAG_SOFTCODED,
"audio", 0x601 },
- { ".m4p", PERCEIVED_TYPE_AUDIO, PERCEIVEDFLAG_SOFTCODED,
"audio", 0x601 },
- { ".m4v", PERCEIVED_TYPE_VIDEO, PERCEIVEDFLAG_SOFTCODED,
"video", 0x601 },
- { ".manifest", PERCEIVED_TYPE_SYSTEM, PERCEIVEDFLAG_SOFTCODED,
"system" },
- { ".MOD", PERCEIVED_TYPE_VIDEO, PERCEIVEDFLAG_SOFTCODED,
"video", 0x601 },
- { ".mov", PERCEIVED_TYPE_VIDEO, PERCEIVEDFLAG_SOFTCODED,
"video", 0x601 },
- { ".mp4", PERCEIVED_TYPE_VIDEO, PERCEIVEDFLAG_SOFTCODED,
"video", 0x601 },
- { ".mp4v", PERCEIVED_TYPE_VIDEO, PERCEIVEDFLAG_SOFTCODED,
"video", 0x601 },
- { ".MTS", PERCEIVED_TYPE_VIDEO, PERCEIVEDFLAG_SOFTCODED,
"video", 0x601 },
- { ".nvr", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".ocx", PERCEIVED_TYPE_SYSTEM, PERCEIVEDFLAG_SOFTCODED,
"system" },
- { ".odt", PERCEIVED_TYPE_DOCUMENT, PERCEIVEDFLAG_SOFTCODED,
"document", 0x601 },
- { ".php3", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".pl", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".plg", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".ps1xml", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"Text" },
- { ".rtf", PERCEIVED_TYPE_DOCUMENT, PERCEIVEDFLAG_SOFTCODED,
"document", 0x600 },
- { ".sed", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".shtml", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".sql", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".sys", PERCEIVED_TYPE_SYSTEM, PERCEIVEDFLAG_SOFTCODED,
"system", 0x600 },
- { ".tar", PERCEIVED_TYPE_COMPRESSED, PERCEIVEDFLAG_SOFTCODED,
"compressed" },
- { ".text", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".tgz", PERCEIVED_TYPE_COMPRESSED, PERCEIVEDFLAG_SOFTCODED,
"compressed" },
- { ".TS", PERCEIVED_TYPE_VIDEO, PERCEIVEDFLAG_SOFTCODED,
"video", 0x601 },
- { ".tsv", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".TTS", PERCEIVED_TYPE_VIDEO, PERCEIVEDFLAG_SOFTCODED,
"video", 0x601 },
- { ".txt", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".vob", PERCEIVED_TYPE_VIDEO, PERCEIVEDFLAG_SOFTCODED,
"video", 0x601 },
- { ".vxd", PERCEIVED_TYPE_SYSTEM, PERCEIVEDFLAG_SOFTCODED,
"system" },
- { ".wdp", PERCEIVED_TYPE_IMAGE, PERCEIVEDFLAG_SOFTCODED,
"image" },
- { ".wmz", PERCEIVED_TYPE_COMPRESSED, PERCEIVEDFLAG_SOFTCODED,
"compressed" },
- { ".wpl", PERCEIVED_TYPE_AUDIO, PERCEIVEDFLAG_SOFTCODED,
"audio", 0x601 },
- { ".wsz", PERCEIVED_TYPE_COMPRESSED, PERCEIVEDFLAG_SOFTCODED,
"compressed" },
- { ".x", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text" },
- { ".xml", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text", 0x601 },
- { ".xsl", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text", 0x601 },
- { ".z", PERCEIVED_TYPE_COMPRESSED, PERCEIVEDFLAG_SOFTCODED,
"compressed" },
- /* found in the registry under HKEY_CLASSES_ROOT\PerceivedType */
- { ".doc", PERCEIVED_TYPE_DOCUMENT, PERCEIVEDFLAG_SOFTCODED,
"document", 0x600 },
- { ".dot", PERCEIVED_TYPE_DOCUMENT, PERCEIVEDFLAG_SOFTCODED,
"document", 0x600 },
- { ".mhtml", PERCEIVED_TYPE_DOCUMENT, PERCEIVEDFLAG_SOFTCODED,
"document", 0x600 },
- { ".pot", PERCEIVED_TYPE_DOCUMENT, PERCEIVEDFLAG_SOFTCODED,
"document", 0x600 },
- { ".ppt", PERCEIVED_TYPE_DOCUMENT, PERCEIVEDFLAG_SOFTCODED,
"document", 0x600 },
- { ".rtf", PERCEIVED_TYPE_DOCUMENT, PERCEIVEDFLAG_SOFTCODED,
"document", 0x600 },
- { ".wri", PERCEIVED_TYPE_DOCUMENT, PERCEIVEDFLAG_SOFTCODED,
"document", 0x600 },
- { ".xls", PERCEIVED_TYPE_DOCUMENT, PERCEIVEDFLAG_SOFTCODED,
"document", 0x600 },
- { ".xlt", PERCEIVED_TYPE_DOCUMENT, PERCEIVEDFLAG_SOFTCODED,
"document", 0x600 },
-
-};
-
-static void test_assoc_one(const struct assoc_test_struct* test)
-{
- LPWSTR extension, type_expected, type_returned;
- PERCEIVED perceived;
- HRESULT hr;
- INT flags;
-
- /* if SHStrDupA receives a nullptr as input, it will null the output */
- SHStrDupA(test->extension, &extension);
- SHStrDupA(test->type, &type_expected);
-
- perceived = 0xdeadbeef;
- flags = 0xdeadbeef;
-
- hr = pAssocGetPerceivedType(extension, &perceived, &flags, NULL);
- expect_hr(type_expected ? S_OK : test->hr, hr);
- ok(perceived == test->perceived, "%s: got perceived 0x%x, expected
0x%x\n",
- test->extension, perceived, test->perceived);
- ok(flags == test->flags, "%s: got flags 0x%x, expected 0x%x\n",
- test->extension, flags, test->flags);
-
- type_returned = (void *)0xdeadbeef;
- perceived = 0xdeadbeef;
- flags = 0xdeadbeef;
-
- hr = pAssocGetPerceivedType(extension, &perceived, &flags,
&type_returned);
- expect_hr(type_expected ? S_OK : test->hr, hr);
- ok(perceived == test->perceived, "%s: got perceived 0x%x, expected
0x%x\n",
- test->extension, perceived, test->perceived);
- ok(flags == test->flags, "%s: got flags 0x%x, expected 0x%x\n",
- test->extension, flags, test->flags);
-
- if (!type_expected)
- {
- ok(type_returned == (void *)0xdeadbeef || broken(type_returned == NULL) /* Win 8
*/,
- "%s: got type %p, expected 0xdeadbeef\n", test->extension,
type_returned);
- }
- else if (type_returned == (void *)0xdeadbeef)
- {
- ok(type_returned != (void *)0xdeadbeef, "%s: got type %p, expected
'%s'\n",
- test->extension, type_returned, test->type);
- }
- else
- {
- ok(StrCmpIW(type_expected, type_returned) == 0, "%s: got type %s, expected
'%s'\n",
- test->extension, wine_dbgstr_w(type_returned), test->type);
- }
-
- CoTaskMemFree(type_returned);
- CoTaskMemFree(extension);
- CoTaskMemFree(type_expected);
-}
-
-static void test_assoc_perceived(void)
-{
- static const struct assoc_test_struct should_not_exist =
- { ".should_not_exist", PERCEIVED_TYPE_UNSPECIFIED,
PERCEIVEDFLAG_UNDEFINED, NULL, 0, 0x80070002 };
- static const struct assoc_test_struct htm[] =
- {
- { ".htm", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text", 0x600 },
- { ".html", PERCEIVED_TYPE_TEXT, SOFTCODED_NATIVESUPPORT,
"text", 0x600 },
- };
- static const struct assoc_test_struct mp2 =
- { ".mp2", PERCEIVED_TYPE_VIDEO, HARDCODED_NATIVE_WMSDK,
"video" };
-
- OSVERSIONINFOEXW osvi;
- DWORD version;
- size_t i;
-
- if (!pAssocGetPerceivedType)
- {
- win_skip("AssocGetPerceivedType() is missing\n");
- return;
- }
-
- memset(&osvi, 0, sizeof(osvi));
- osvi.dwOSVersionInfoSize = sizeof(osvi);
- GetVersionExW((LPOSVERSIONINFOW)&osvi);
- version = (osvi.dwMajorVersion << 8) | osvi.dwMinorVersion;
-
- /* invalid entry results in HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) */
- test_assoc_one(&should_not_exist);
-
- for (i = 0; i < sizeof(assoc_perceived_types) / sizeof(assoc_perceived_types[0]);
++i)
- {
- if (assoc_perceived_types[i].minversion &&
assoc_perceived_types[i].minversion > version)
- continue;
- if (!(assoc_perceived_types[i].flags & PERCEIVEDFLAG_HARDCODED))
- todo_wine test_assoc_one(&assoc_perceived_types[i]);
- else
- test_assoc_one(&assoc_perceived_types[i]);
- }
-
- /* below Vista */
- if (version < 0x600)
- {
- todo_wine
- test_assoc_one(&htm[0]);
- todo_wine
- test_assoc_one(&htm[1]);
- }
-
- /* below Win8 */
- if (version < 0x602)
- {
- test_assoc_one(&mp2);
- }
-}
-
START_TEST(assoc)
{
HMODULE hshlwapi;
@@ -587,11 +309,9 @@ START_TEST(assoc)
pAssocQueryStringA = (void*)GetProcAddress(hshlwapi, "AssocQueryStringA");
pAssocQueryStringW = (void*)GetProcAddress(hshlwapi, "AssocQueryStringW");
pAssocCreate = (void*)GetProcAddress(hshlwapi, "AssocCreate");
- pAssocGetPerceivedType = (void*)GetProcAddress(hshlwapi,
"AssocGetPerceivedType");
test_getstring_bad();
test_getstring_basic();
test_getstring_no_extra();
test_assoc_create();
- test_assoc_perceived();
}
diff --git a/modules/rostests/winetests/shlwapi/clist.c
b/modules/rostests/winetests/shlwapi/clist.c
index c621ffc912..8aee3956b4 100755
--- a/modules/rostests/winetests/shlwapi/clist.c
+++ b/modules/rostests/winetests/shlwapi/clist.c
@@ -212,7 +212,7 @@ static IStreamVtbl iclvt =
static HMODULE SHLWAPI_hshlwapi = 0;
static VOID (WINAPI *pSHLWAPI_19)(LPSHLWAPI_CLIST);
-static BOOL (WINAPI *pSHLWAPI_20)(LPSHLWAPI_CLIST*,LPCSHLWAPI_CLIST);
+static HRESULT (WINAPI *pSHLWAPI_20)(LPSHLWAPI_CLIST*,LPCSHLWAPI_CLIST);
static BOOL (WINAPI *pSHLWAPI_21)(LPSHLWAPI_CLIST*,ULONG);
static LPSHLWAPI_CLIST (WINAPI *pSHLWAPI_22)(LPSHLWAPI_CLIST,ULONG);
static HRESULT (WINAPI *pSHLWAPI_17)(IStream*, SHLWAPI_CLIST*);
@@ -286,7 +286,6 @@ static void test_CList(void)
struct dummystream streamobj;
LPSHLWAPI_CLIST list = NULL;
LPCSHLWAPI_CLIST item = SHLWAPI_CLIST_items;
- BOOL bRet;
HRESULT hRet;
LPSHLWAPI_CLIST inserted;
BYTE buff[64];
@@ -307,10 +306,10 @@ static void test_CList(void)
buff[sizeof(SHLWAPI_CLIST)+i] = i*2;
/* Add it */
- bRet = pSHLWAPI_20(&list, inserted);
- ok(bRet == TRUE, "failed list add\n");
+ hRet = pSHLWAPI_20(&list, inserted);
+ ok(hRet > S_OK, "failed list add\n");
- if (bRet == TRUE)
+ if (hRet > S_OK)
{
ok(list && list->ulSize, "item not added\n");
@@ -385,8 +384,11 @@ static void test_CList(void)
inserted = (LPSHLWAPI_CLIST)buff;
inserted->ulSize = sizeof(SHLWAPI_CLIST) -1;
inserted->ulId = 33;
- bRet = pSHLWAPI_20(&list, inserted);
- ok(bRet == FALSE, "Expected failure\n");
+
+ /* The call succeeds but the item is not inserted, except on some early
+ * versions which return failure. Wine behaves like later versions.
+ */
+ pSHLWAPI_20(&list, inserted);
inserted = pSHLWAPI_22(list, 33);
ok(inserted == NULL, "inserted bad element size\n");
@@ -394,8 +396,9 @@ static void test_CList(void)
inserted = (LPSHLWAPI_CLIST)buff;
inserted->ulSize = 44;
inserted->ulId = ~0U;
- bRet = pSHLWAPI_20(&list, inserted);
- ok(bRet == FALSE, "Expected failure\n");
+
+ /* See comment above, some early versions fail this call */
+ pSHLWAPI_20(&list, inserted);
item = SHLWAPI_CLIST_items;
diff --git a/modules/rostests/winetests/shlwapi/istream.c
b/modules/rostests/winetests/shlwapi/istream.c
index 134a74c32e..ce7c7c57db 100644
--- a/modules/rostests/winetests/shlwapi/istream.c
+++ b/modules/rostests/winetests/shlwapi/istream.c
@@ -654,8 +654,10 @@ static void test_SHCreateStreamOnFileEx_CopyTo(void)
static const WCHAR prefix[] = { 'T', 'S', 'T', 0 };
GetTempPathW(MAX_PATH, tmpPath);
- GetTempFileNameW(tmpPath, prefix, 0, srcFileName);
- GetTempFileNameW(tmpPath, prefix, 0, dstFileName);
+ ret = GetTempFileNameW(tmpPath, prefix, 0, srcFileName);
+ ok(ret != 0, "GetTempFileName failed, got error %d\n", GetLastError());
+ ret = GetTempFileNameW(tmpPath, prefix, 0, dstFileName);
+ ok(ret != 0, "GetTempFileName failed, got error %d\n", GetLastError());
ret = SHCreateStreamOnFileEx(srcFileName, STGM_CREATE | STGM_READWRITE |
STGM_DELETEONRELEASE, FILE_ATTRIBUTE_TEMPORARY, FALSE, NULL, &src);
ok(SUCCEEDED(ret), "SHCreateStreamOnFileEx failed with ret=0x%08x\n",
ret);
diff --git a/modules/rostests/winetests/shlwapi/ordinal.c
b/modules/rostests/winetests/shlwapi/ordinal.c
index 3cc8856e77..5cb9ce05fe 100755
--- a/modules/rostests/winetests/shlwapi/ordinal.c
+++ b/modules/rostests/winetests/shlwapi/ordinal.c
@@ -556,6 +556,7 @@ static void test_alloc_shared_remote(DWORD procid, HANDLE hmem)
SetLastError(0xdeadbeef);
hmem2 = pSHMapHandle(NULL, procid, GetCurrentProcessId(), 0, 0);
ok(hmem2 == NULL, "expected NULL, got new handle\n");
+todo_wine
ok(GetLastError() == 0xdeadbeef, "last error should not have changed, got
%u\n", GetLastError());
hmem2 = pSHMapHandle(hmem, procid, GetCurrentProcessId(), 0, 0);
diff --git a/modules/rostests/winetests/shlwapi/path.c
b/modules/rostests/winetests/shlwapi/path.c
index d025dbf6a2..6edafc6f9f 100755
--- a/modules/rostests/winetests/shlwapi/path.c
+++ b/modules/rostests/winetests/shlwapi/path.c
@@ -1421,6 +1421,11 @@ static void test_PathGetDriveNumber(void)
static const CHAR test2A[] = "file:////b:\\test.file";
static const CHAR test3A[] = "file:///c:\\test.file";
static const CHAR test4A[] = "file:\\\\c:\\test.file";
+ static const CHAR test5A[] = "\\\\?\\C:\\dir\\file.txt";
+ static const WCHAR test1W[] =
+ {'a',':','\\',0};
+ static const WCHAR test5W[] =
+
{'\\','\\','?','\\','C',':','\\','d','i','r','\\','f','i','l','e',0};
int ret;
SetLastError(0xdeadbeef);
@@ -1430,12 +1435,19 @@ static void test_PathGetDriveNumber(void)
ret = PathGetDriveNumberA(test1A);
ok(ret == 0, "got %d\n", ret);
+ ret = PathGetDriveNumberW(test1W);
+ ok(ret == 0, "got %d\n", ret);
ret = PathGetDriveNumberA(test2A);
ok(ret == -1, "got %d\n", ret);
ret = PathGetDriveNumberA(test3A);
ok(ret == -1, "got %d\n", ret);
ret = PathGetDriveNumberA(test4A);
ok(ret == -1, "got %d\n", ret);
+
+ ret = PathGetDriveNumberA(test5A);
+ ok(ret == -1, "got %d\n", ret);
+ ret = PathGetDriveNumberW(test5W);
+ ok(ret == 2 || broken(ret == -1) /* winxp */, "got = %d\n", ret);
}
static void test_PathUnExpandEnvStrings(void)
diff --git a/modules/rostests/winetests/shlwapi/url.c
b/modules/rostests/winetests/shlwapi/url.c
index 1e7679f339..44d70ff410 100644
--- a/modules/rostests/winetests/shlwapi/url.c
+++ b/modules/rostests/winetests/shlwapi/url.c
@@ -197,15 +197,7 @@ static const TEST_URL_CANONICALIZE TEST_CANONICALIZE[] = {
{"///A/../B", URL_WININET_COMPATIBILITY, S_OK, "///B", FALSE},
{"A", 0, S_OK, "A", FALSE},
{"../A", 0, S_OK, "../A", FALSE},
- {".\\A", 0, S_OK, ".\\A", FALSE},
- {"A\\.\\B", 0, S_OK, "A\\.\\B", FALSE},
{"A/../B", 0, S_OK, "B", TRUE},
- {"A/../B/./../C", 0, S_OK, "C", TRUE},
- {"A/../B/./../C", URL_DONT_SIMPLIFY, S_OK, "A/../B/./../C",
FALSE},
- {".", 0, S_OK, "/", TRUE},
- {"./A", 0, S_OK, "A", TRUE},
- {"A/./B", 0, S_OK, "A/B", TRUE},
- {"/:test\\", 0, S_OK, "/:test\\", TRUE},
{"/uri-res/N2R?urn:sha1:B3K", URL_DONT_ESCAPE_EXTRA_INFO |
URL_WININET_COMPATIBILITY /*0x82000000*/, S_OK, "/uri-res/N2R?urn:sha1:B3K",
FALSE} /*LimeWire online installer calls this*/,
{"http:www.winehq.org/dir/../index.html", 0, S_OK,
"http:www.winehq.org/index.html"},
{"http://localhost/test.html", URL_FILE_USE_PATHURL, S_OK,
"http://localhost/test.html"},
@@ -359,7 +351,6 @@ typedef struct _TEST_URL_COMBINE {
DWORD flags;
HRESULT expectret;
const char *expecturl;
- BOOL todo;
} TEST_URL_COMBINE;
static const TEST_URL_COMBINE TEST_COMBINE[] = {
@@ -381,15 +372,6 @@ static const TEST_URL_COMBINE TEST_COMBINE[] = {
{"http://www.winehq.org/test14#aaa/bbb#ccc", "#", 0, S_OK,
"http://www.winehq.org/test14#"},
{"http://www.winehq.org/tests/?query=x/y/z", "tests15", 0, S_OK,
"http://www.winehq.org/tests/tests15"},
{"http://www.winehq.org/tests/?query=x/y/z#example", "tests16",
0, S_OK, "http://www.winehq.org/tests/tests16"},
- {"http://www.winehq.org/tests17", ".", 0, S_OK,
"http://www.winehq.org/"},
- {"http://www.winehq.org/tests18/test", ".", 0, S_OK,
"http://www.winehq.org/tests18/"},
- {"http://www.winehq.org/tests19/test", "./", 0, S_OK,
"http://www.winehq.org/tests19/", FALSE},
- {"http://www.winehq.org/tests20/test", "/", 0, S_OK,
"http://www.winehq.org/", FALSE},
- {"http://www.winehq.org/tests/test", "./test21", 0, S_OK,
"http://www.winehq.org/tests/test21", FALSE},
- {"http://www.winehq.org/tests/test", "./test22/../test", 0, S_OK,
"http://www.winehq.org/tests/test", FALSE},
- {"http://www.winehq.org/tests/",
"http://www.winehq.org:80/tests23", 0, S_OK,
"http://www.winehq.org/tests23", TRUE},
- {"http://www.winehq.org/tests/", "tests24/./test/../test", 0,
S_OK, "http://www.winehq.org/tests/tests24/test", FALSE},
- {"http://www.winehq.org/tests/./tests25", "./", 0, S_OK,
"http://www.winehq.org/tests/", FALSE},
{"file:///C:\\dir\\file.txt", "test.txt", 0, S_OK,
"file:///C:/dir/test.txt"},
{"file:///C:\\dir\\file.txt#hash\\hash", "test.txt", 0, S_OK,
"file:///C:/dir/file.txt#hash/test.txt"},
{"file:///C:\\dir\\file.html#hash\\hash", "test.html", 0, S_OK,
"file:///C:/dir/test.html"},
@@ -1208,7 +1190,7 @@ static void test_UrlCanonicalizeW(void)
/* ########################### */
-static void test_url_combine(const char *szUrl1, const char *szUrl2, DWORD dwFlags,
HRESULT dwExpectReturn, const char *szExpectUrl, BOOL todo)
+static void test_url_combine(const char *szUrl1, const char *szUrl2, DWORD dwFlags,
HRESULT dwExpectReturn, const char *szExpectUrl)
{
HRESULT hr;
CHAR szReturnUrl[INTERNET_MAX_URL_LENGTH];
@@ -1233,42 +1215,34 @@ static void test_url_combine(const char *szUrl1, const char
*szUrl2, DWORD dwFla
dwSize = 0;
hr = pUrlCombineA(szUrl1, szUrl2, NULL, &dwSize, dwFlags);
ok(hr == E_POINTER, "Checking length of string, return was 0x%08x, expected
0x%08x\n", hr, E_POINTER);
- ok(todo || dwSize == dwExpectLen+1, "Got length %d, expected %d\n", dwSize,
dwExpectLen+1);
+ ok(dwSize == dwExpectLen+1, "Got length %d, expected %d\n", dwSize,
dwExpectLen+1);
dwSize--;
hr = pUrlCombineA(szUrl1, szUrl2, szReturnUrl, &dwSize, dwFlags);
ok(hr == E_POINTER, "UrlCombineA returned 0x%08x, expected 0x%08x\n", hr,
E_POINTER);
- ok(todo || dwSize == dwExpectLen+1, "Got length %d, expected %d\n", dwSize,
dwExpectLen+1);
+ ok(dwSize == dwExpectLen+1, "Got length %d, expected %d\n", dwSize,
dwExpectLen+1);
hr = pUrlCombineA(szUrl1, szUrl2, szReturnUrl, &dwSize, dwFlags);
ok(hr == dwExpectReturn, "UrlCombineA returned 0x%08x, expected 0x%08x\n",
hr, dwExpectReturn);
-
- if (todo)
- {
- 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);
- }
- else
- {
- ok(dwSize == dwExpectLen, "Got length %d, expected %d\n", dwSize,
dwExpectLen);
- if (SUCCEEDED(hr))
- ok(strcmp(szReturnUrl, szExpectUrl)==0, "Expected %s, but got
%s\n", szExpectUrl, szReturnUrl);
+ ok(dwSize == dwExpectLen, "Got length %d, expected %d\n", dwSize,
dwExpectLen);
+ if(SUCCEEDED(hr)) {
+ ok(strcmp(szReturnUrl,szExpectUrl)==0, "Expected %s, but got %s\n",
szExpectUrl, szReturnUrl);
}
if (pUrlCombineW) {
dwSize = 0;
hr = pUrlCombineW(wszUrl1, wszUrl2, NULL, &dwSize, dwFlags);
ok(hr == E_POINTER, "Checking length of string, return was 0x%08x, expected
0x%08x\n", hr, E_POINTER);
- ok(todo || dwSize == dwExpectLen+1, "Got length %d, expected %d\n",
dwSize, dwExpectLen+1);
+ ok(dwSize == dwExpectLen+1, "Got length %d, expected %d\n", dwSize,
dwExpectLen+1);
dwSize--;
hr = pUrlCombineW(wszUrl1, wszUrl2, wszReturnUrl, &dwSize, dwFlags);
ok(hr == E_POINTER, "UrlCombineW returned 0x%08x, expected 0x%08x\n",
hr, E_POINTER);
- ok(todo || dwSize == dwExpectLen+1, "Got length %d, expected %d\n",
dwSize, dwExpectLen+1);
+ ok(dwSize == dwExpectLen+1, "Got length %d, expected %d\n", dwSize,
dwExpectLen+1);
hr = pUrlCombineW(wszUrl1, wszUrl2, wszReturnUrl, &dwSize, dwFlags);
ok(hr == dwExpectReturn, "UrlCombineW returned 0x%08x, expected
0x%08x\n", hr, dwExpectReturn);
- ok(todo || dwSize == dwExpectLen, "Got length %d, expected %d\n",
dwSize, dwExpectLen);
+ ok(dwSize == dwExpectLen, "Got length %d, expected %d\n", dwSize,
dwExpectLen);
if(SUCCEEDED(hr)) {
wszConvertedUrl = GetWideString(szReturnUrl);
ok(lstrcmpW(wszReturnUrl, wszConvertedUrl)==0, "Strings didn't match
between ascii and unicode UrlCombine!\n");
@@ -1288,7 +1262,7 @@ static void test_UrlCombine(void)
unsigned int i;
for(i=0; i<sizeof(TEST_COMBINE)/sizeof(TEST_COMBINE[0]); i++) {
test_url_combine(TEST_COMBINE[i].url1, TEST_COMBINE[i].url2,
TEST_COMBINE[i].flags,
- TEST_COMBINE[i].expectret, TEST_COMBINE[i].expecturl,
TEST_COMBINE[i].todo);
+ TEST_COMBINE[i].expectret, TEST_COMBINE[i].expecturl);
}
}
@@ -1502,6 +1476,7 @@ static const struct parse_url_test_t {
{"ab-://www.winehq.org/",S_OK,3,URL_SCHEME_UNKNOWN},
{"
http://www.winehq.org/",URL_E_INVALID_SYNTAX}NTAX},
{"HTTP://www.winehq.org/",S_OK,4,URL_SCHEME_HTTP},
+ {"a+-.://www.winehq.org/",S_OK,4,URL_SCHEME_UNKNOWN},
};
static void test_ParseURL(void)