mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 16:36:33 +00:00
[SHLWAPI_WINETEST] Sync with Wine 3.0. CORE-14225
This commit is contained in:
parent
d3f4d62dde
commit
a0b6db8b7f
6 changed files with 42 additions and 329 deletions
|
@ -19,13 +19,12 @@
|
||||||
|
|
||||||
#include "precomp.h"
|
#include "precomp.h"
|
||||||
|
|
||||||
#define expect(expected, got) ok( (expected) == (got), "Expected %d, got %d\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))
|
#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 *pAssocQueryStringA)(ASSOCF,ASSOCSTR,LPCSTR,LPCSTR,LPSTR,LPDWORD) = NULL;
|
||||||
static HRESULT (WINAPI *pAssocQueryStringW)(ASSOCF,ASSOCSTR,LPCWSTR,LPCWSTR,LPWSTR,LPDWORD) = NULL;
|
static HRESULT (WINAPI *pAssocQueryStringW)(ASSOCF,ASSOCSTR,LPCWSTR,LPCWSTR,LPWSTR,LPDWORD) = NULL;
|
||||||
static HRESULT (WINAPI *pAssocCreate)(CLSID, REFIID, void **) = 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? */
|
/* Every version of Windows with IE should have this association? */
|
||||||
static const WCHAR dotHtml[] = { '.','h','t','m','l',0 };
|
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/getperceivedtype.htm */
|
|
||||||
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)
|
START_TEST(assoc)
|
||||||
{
|
{
|
||||||
HMODULE hshlwapi;
|
HMODULE hshlwapi;
|
||||||
|
@ -587,11 +309,9 @@ START_TEST(assoc)
|
||||||
pAssocQueryStringA = (void*)GetProcAddress(hshlwapi, "AssocQueryStringA");
|
pAssocQueryStringA = (void*)GetProcAddress(hshlwapi, "AssocQueryStringA");
|
||||||
pAssocQueryStringW = (void*)GetProcAddress(hshlwapi, "AssocQueryStringW");
|
pAssocQueryStringW = (void*)GetProcAddress(hshlwapi, "AssocQueryStringW");
|
||||||
pAssocCreate = (void*)GetProcAddress(hshlwapi, "AssocCreate");
|
pAssocCreate = (void*)GetProcAddress(hshlwapi, "AssocCreate");
|
||||||
pAssocGetPerceivedType = (void*)GetProcAddress(hshlwapi, "AssocGetPerceivedType");
|
|
||||||
|
|
||||||
test_getstring_bad();
|
test_getstring_bad();
|
||||||
test_getstring_basic();
|
test_getstring_basic();
|
||||||
test_getstring_no_extra();
|
test_getstring_no_extra();
|
||||||
test_assoc_create();
|
test_assoc_create();
|
||||||
test_assoc_perceived();
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -212,7 +212,7 @@ static IStreamVtbl iclvt =
|
||||||
static HMODULE SHLWAPI_hshlwapi = 0;
|
static HMODULE SHLWAPI_hshlwapi = 0;
|
||||||
|
|
||||||
static VOID (WINAPI *pSHLWAPI_19)(LPSHLWAPI_CLIST);
|
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 BOOL (WINAPI *pSHLWAPI_21)(LPSHLWAPI_CLIST*,ULONG);
|
||||||
static LPSHLWAPI_CLIST (WINAPI *pSHLWAPI_22)(LPSHLWAPI_CLIST,ULONG);
|
static LPSHLWAPI_CLIST (WINAPI *pSHLWAPI_22)(LPSHLWAPI_CLIST,ULONG);
|
||||||
static HRESULT (WINAPI *pSHLWAPI_17)(IStream*, SHLWAPI_CLIST*);
|
static HRESULT (WINAPI *pSHLWAPI_17)(IStream*, SHLWAPI_CLIST*);
|
||||||
|
@ -286,7 +286,6 @@ static void test_CList(void)
|
||||||
struct dummystream streamobj;
|
struct dummystream streamobj;
|
||||||
LPSHLWAPI_CLIST list = NULL;
|
LPSHLWAPI_CLIST list = NULL;
|
||||||
LPCSHLWAPI_CLIST item = SHLWAPI_CLIST_items;
|
LPCSHLWAPI_CLIST item = SHLWAPI_CLIST_items;
|
||||||
BOOL bRet;
|
|
||||||
HRESULT hRet;
|
HRESULT hRet;
|
||||||
LPSHLWAPI_CLIST inserted;
|
LPSHLWAPI_CLIST inserted;
|
||||||
BYTE buff[64];
|
BYTE buff[64];
|
||||||
|
@ -307,10 +306,10 @@ static void test_CList(void)
|
||||||
buff[sizeof(SHLWAPI_CLIST)+i] = i*2;
|
buff[sizeof(SHLWAPI_CLIST)+i] = i*2;
|
||||||
|
|
||||||
/* Add it */
|
/* Add it */
|
||||||
bRet = pSHLWAPI_20(&list, inserted);
|
hRet = pSHLWAPI_20(&list, inserted);
|
||||||
ok(bRet == TRUE, "failed list add\n");
|
ok(hRet > S_OK, "failed list add\n");
|
||||||
|
|
||||||
if (bRet == TRUE)
|
if (hRet > S_OK)
|
||||||
{
|
{
|
||||||
ok(list && list->ulSize, "item not added\n");
|
ok(list && list->ulSize, "item not added\n");
|
||||||
|
|
||||||
|
@ -385,8 +384,11 @@ static void test_CList(void)
|
||||||
inserted = (LPSHLWAPI_CLIST)buff;
|
inserted = (LPSHLWAPI_CLIST)buff;
|
||||||
inserted->ulSize = sizeof(SHLWAPI_CLIST) -1;
|
inserted->ulSize = sizeof(SHLWAPI_CLIST) -1;
|
||||||
inserted->ulId = 33;
|
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);
|
inserted = pSHLWAPI_22(list, 33);
|
||||||
ok(inserted == NULL, "inserted bad element size\n");
|
ok(inserted == NULL, "inserted bad element size\n");
|
||||||
|
@ -394,8 +396,9 @@ static void test_CList(void)
|
||||||
inserted = (LPSHLWAPI_CLIST)buff;
|
inserted = (LPSHLWAPI_CLIST)buff;
|
||||||
inserted->ulSize = 44;
|
inserted->ulSize = 44;
|
||||||
inserted->ulId = ~0U;
|
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;
|
item = SHLWAPI_CLIST_items;
|
||||||
|
|
||||||
|
|
|
@ -654,8 +654,10 @@ static void test_SHCreateStreamOnFileEx_CopyTo(void)
|
||||||
static const WCHAR prefix[] = { 'T', 'S', 'T', 0 };
|
static const WCHAR prefix[] = { 'T', 'S', 'T', 0 };
|
||||||
|
|
||||||
GetTempPathW(MAX_PATH, tmpPath);
|
GetTempPathW(MAX_PATH, tmpPath);
|
||||||
GetTempFileNameW(tmpPath, prefix, 0, srcFileName);
|
ret = GetTempFileNameW(tmpPath, prefix, 0, srcFileName);
|
||||||
GetTempFileNameW(tmpPath, prefix, 0, dstFileName);
|
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);
|
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);
|
ok(SUCCEEDED(ret), "SHCreateStreamOnFileEx failed with ret=0x%08x\n", ret);
|
||||||
|
|
|
@ -556,6 +556,7 @@ static void test_alloc_shared_remote(DWORD procid, HANDLE hmem)
|
||||||
SetLastError(0xdeadbeef);
|
SetLastError(0xdeadbeef);
|
||||||
hmem2 = pSHMapHandle(NULL, procid, GetCurrentProcessId(), 0, 0);
|
hmem2 = pSHMapHandle(NULL, procid, GetCurrentProcessId(), 0, 0);
|
||||||
ok(hmem2 == NULL, "expected NULL, got new handle\n");
|
ok(hmem2 == NULL, "expected NULL, got new handle\n");
|
||||||
|
todo_wine
|
||||||
ok(GetLastError() == 0xdeadbeef, "last error should not have changed, got %u\n", GetLastError());
|
ok(GetLastError() == 0xdeadbeef, "last error should not have changed, got %u\n", GetLastError());
|
||||||
|
|
||||||
hmem2 = pSHMapHandle(hmem, procid, GetCurrentProcessId(), 0, 0);
|
hmem2 = pSHMapHandle(hmem, procid, GetCurrentProcessId(), 0, 0);
|
||||||
|
|
|
@ -1421,6 +1421,11 @@ static void test_PathGetDriveNumber(void)
|
||||||
static const CHAR test2A[] = "file:////b:\\test.file";
|
static const CHAR test2A[] = "file:////b:\\test.file";
|
||||||
static const CHAR test3A[] = "file:///c:\\test.file";
|
static const CHAR test3A[] = "file:///c:\\test.file";
|
||||||
static const CHAR test4A[] = "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;
|
int ret;
|
||||||
|
|
||||||
SetLastError(0xdeadbeef);
|
SetLastError(0xdeadbeef);
|
||||||
|
@ -1430,12 +1435,19 @@ static void test_PathGetDriveNumber(void)
|
||||||
|
|
||||||
ret = PathGetDriveNumberA(test1A);
|
ret = PathGetDriveNumberA(test1A);
|
||||||
ok(ret == 0, "got %d\n", ret);
|
ok(ret == 0, "got %d\n", ret);
|
||||||
|
ret = PathGetDriveNumberW(test1W);
|
||||||
|
ok(ret == 0, "got %d\n", ret);
|
||||||
ret = PathGetDriveNumberA(test2A);
|
ret = PathGetDriveNumberA(test2A);
|
||||||
ok(ret == -1, "got %d\n", ret);
|
ok(ret == -1, "got %d\n", ret);
|
||||||
ret = PathGetDriveNumberA(test3A);
|
ret = PathGetDriveNumberA(test3A);
|
||||||
ok(ret == -1, "got %d\n", ret);
|
ok(ret == -1, "got %d\n", ret);
|
||||||
ret = PathGetDriveNumberA(test4A);
|
ret = PathGetDriveNumberA(test4A);
|
||||||
ok(ret == -1, "got %d\n", ret);
|
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)
|
static void test_PathUnExpandEnvStrings(void)
|
||||||
|
|
|
@ -197,15 +197,7 @@ static const TEST_URL_CANONICALIZE TEST_CANONICALIZE[] = {
|
||||||
{"///A/../B", URL_WININET_COMPATIBILITY, S_OK, "///B", FALSE},
|
{"///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", 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", 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*/,
|
{"/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: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"},
|
{"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;
|
DWORD flags;
|
||||||
HRESULT expectret;
|
HRESULT expectret;
|
||||||
const char *expecturl;
|
const char *expecturl;
|
||||||
BOOL todo;
|
|
||||||
} TEST_URL_COMBINE;
|
} TEST_URL_COMBINE;
|
||||||
|
|
||||||
static const TEST_URL_COMBINE TEST_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/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", "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/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", "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.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"},
|
{"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;
|
HRESULT hr;
|
||||||
CHAR szReturnUrl[INTERNET_MAX_URL_LENGTH];
|
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;
|
dwSize = 0;
|
||||||
hr = pUrlCombineA(szUrl1, szUrl2, NULL, &dwSize, dwFlags);
|
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(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--;
|
dwSize--;
|
||||||
hr = pUrlCombineA(szUrl1, szUrl2, szReturnUrl, &dwSize, dwFlags);
|
hr = pUrlCombineA(szUrl1, szUrl2, szReturnUrl, &dwSize, dwFlags);
|
||||||
ok(hr == E_POINTER, "UrlCombineA returned 0x%08x, expected 0x%08x\n", hr, E_POINTER);
|
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);
|
hr = pUrlCombineA(szUrl1, szUrl2, szReturnUrl, &dwSize, dwFlags);
|
||||||
ok(hr == dwExpectReturn, "UrlCombineA returned 0x%08x, expected 0x%08x\n", hr, dwExpectReturn);
|
ok(hr == dwExpectReturn, "UrlCombineA returned 0x%08x, expected 0x%08x\n", hr, dwExpectReturn);
|
||||||
|
ok(dwSize == dwExpectLen, "Got length %d, expected %d\n", dwSize, dwExpectLen);
|
||||||
if (todo)
|
if(SUCCEEDED(hr)) {
|
||||||
{
|
ok(strcmp(szReturnUrl,szExpectUrl)==0, "Expected %s, but got %s\n", szExpectUrl, szReturnUrl);
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pUrlCombineW) {
|
if (pUrlCombineW) {
|
||||||
dwSize = 0;
|
dwSize = 0;
|
||||||
hr = pUrlCombineW(wszUrl1, wszUrl2, NULL, &dwSize, dwFlags);
|
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(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--;
|
dwSize--;
|
||||||
hr = pUrlCombineW(wszUrl1, wszUrl2, wszReturnUrl, &dwSize, dwFlags);
|
hr = pUrlCombineW(wszUrl1, wszUrl2, wszReturnUrl, &dwSize, dwFlags);
|
||||||
ok(hr == E_POINTER, "UrlCombineW returned 0x%08x, expected 0x%08x\n", hr, E_POINTER);
|
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);
|
hr = pUrlCombineW(wszUrl1, wszUrl2, wszReturnUrl, &dwSize, dwFlags);
|
||||||
ok(hr == dwExpectReturn, "UrlCombineW returned 0x%08x, expected 0x%08x\n", hr, dwExpectReturn);
|
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)) {
|
if(SUCCEEDED(hr)) {
|
||||||
wszConvertedUrl = GetWideString(szReturnUrl);
|
wszConvertedUrl = GetWideString(szReturnUrl);
|
||||||
ok(lstrcmpW(wszReturnUrl, wszConvertedUrl)==0, "Strings didn't match between ascii and unicode UrlCombine!\n");
|
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;
|
unsigned int i;
|
||||||
for(i=0; i<sizeof(TEST_COMBINE)/sizeof(TEST_COMBINE[0]); 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_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},
|
{"ab-://www.winehq.org/",S_OK,3,URL_SCHEME_UNKNOWN},
|
||||||
{" http://www.winehq.org/",URL_E_INVALID_SYNTAX},
|
{" http://www.winehq.org/",URL_E_INVALID_SYNTAX},
|
||||||
{"HTTP://www.winehq.org/",S_OK,4,URL_SCHEME_HTTP},
|
{"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)
|
static void test_ParseURL(void)
|
||||||
|
|
Loading…
Reference in a new issue