Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- dlls/shlwapi/tests/url.c | 485 ++++++++++++++------------------------- 1 file changed, 176 insertions(+), 309 deletions(-)
diff --git a/dlls/shlwapi/tests/url.c b/dlls/shlwapi/tests/url.c index 0cc14dc65bf..ea58163ce2e 100644 --- a/dlls/shlwapi/tests/url.c +++ b/dlls/shlwapi/tests/url.c @@ -29,30 +29,6 @@ #include "wininet.h" #include "intshcut.h"
-/* ################ */ -static HMODULE hShlwapi; -static HRESULT (WINAPI *pUrlUnescapeA)(LPSTR,LPSTR,LPDWORD,DWORD); -static HRESULT (WINAPI *pUrlUnescapeW)(LPWSTR,LPWSTR,LPDWORD,DWORD); -static BOOL (WINAPI *pUrlIsA)(LPCSTR,URLIS); -static BOOL (WINAPI *pUrlIsW)(LPCWSTR,URLIS); -static HRESULT (WINAPI *pUrlHashA)(LPCSTR,LPBYTE,DWORD); -static HRESULT (WINAPI *pUrlHashW)(LPCWSTR,LPBYTE,DWORD); -static HRESULT (WINAPI *pUrlGetPartA)(LPCSTR,LPSTR,LPDWORD,DWORD,DWORD); -static HRESULT (WINAPI *pUrlGetPartW)(LPCWSTR,LPWSTR,LPDWORD,DWORD,DWORD); -static HRESULT (WINAPI *pUrlEscapeA)(LPCSTR,LPSTR,LPDWORD,DWORD); -static HRESULT (WINAPI *pUrlEscapeW)(LPCWSTR,LPWSTR,LPDWORD,DWORD); -static HRESULT (WINAPI *pUrlCreateFromPathA)(LPCSTR,LPSTR,LPDWORD,DWORD); -static HRESULT (WINAPI *pUrlCreateFromPathW)(LPCWSTR,LPWSTR,LPDWORD,DWORD); -static HRESULT (WINAPI *pUrlCombineA)(LPCSTR,LPCSTR,LPSTR,LPDWORD,DWORD); -static HRESULT (WINAPI *pUrlCombineW)(LPCWSTR,LPCWSTR,LPWSTR,LPDWORD,DWORD); -static HRESULT (WINAPI *pUrlCanonicalizeA)(LPCSTR, LPSTR, LPDWORD, DWORD); -static HRESULT (WINAPI *pUrlCanonicalizeW)(LPCWSTR, LPWSTR, LPDWORD, DWORD); -static HRESULT (WINAPI *pUrlApplySchemeA)(LPCSTR,LPSTR,LPDWORD,DWORD); -static HRESULT (WINAPI *pUrlApplySchemeW)(LPCWSTR,LPWSTR,LPDWORD,DWORD); -static HRESULT (WINAPI *pParseURLA)(LPCSTR,PARSEDURLA*); -static HRESULT (WINAPI *pParseURLW)(LPCWSTR,PARSEDURLW*); -static HRESULT (WINAPI *pHashData)(LPBYTE, DWORD, LPBYTE, DWORD); - static const char* TEST_URL_1 = "http://www.winehq.org/tests?date=10/10/1923"; static const char* TEST_URL_2 = "http://localhost:8080/tests%2e.html?date=Mon%2010/10/1923"; static const char* TEST_URL_3 = "http://foo:bar@localhost:21/internal.php?query=x&return=y"; @@ -539,15 +515,10 @@ static void test_UrlApplyScheme(void) DWORD len; DWORD i;
- if (!pUrlApplySchemeA) { - win_skip("UrlApplySchemeA not found\n"); - return; - } - for (i = 0; i < ARRAY_SIZE(TEST_APPLY); i++) { len = TEST_APPLY_MAX_LENGTH; lstrcpyA(newurl, untouchedA); - res = pUrlApplySchemeA(TEST_APPLY[i].url, newurl, &len, TEST_APPLY[i].flags); + res = UrlApplySchemeA(TEST_APPLY[i].url, newurl, &len, TEST_APPLY[i].flags); ok( res == TEST_APPLY[i].res, "#%dA: got HRESULT 0x%x (expected 0x%x)\n", i, res, TEST_APPLY[i].res);
@@ -563,7 +534,7 @@ static void test_UrlApplyScheme(void) MultiByteToWideChar(CP_ACP, 0, newurl, -1, newurlW, len); MultiByteToWideChar(CP_ACP, 0, TEST_APPLY[i].url, -1, urlW, len);
- res = pUrlApplySchemeW(urlW, newurlW, &len, TEST_APPLY[i].flags); + res = UrlApplySchemeW(urlW, newurlW, &len, TEST_APPLY[i].flags); WideCharToMultiByte(CP_ACP, 0, newurlW, -1, newurl, TEST_APPLY_MAX_LENGTH, NULL, NULL); ok( res == TEST_APPLY[i].res, "#%dW: got HRESULT 0x%x (expected 0x%x)\n", i, res, TEST_APPLY[i].res); @@ -579,7 +550,7 @@ static void test_UrlApplyScheme(void) /* buffer too small */ lstrcpyA(newurl, untouchedA); len = lstrlenA(TEST_APPLY[0].newurl); - res = pUrlApplySchemeA(TEST_APPLY[0].url, newurl, &len, TEST_APPLY[0].flags); + res = UrlApplySchemeA(TEST_APPLY[0].url, newurl, &len, TEST_APPLY[0].flags); ok(res == E_POINTER, "got HRESULT 0x%x (expected E_POINTER)\n", res); /* The returned length include the space for the terminating 0 */ i = lstrlenA(TEST_APPLY[0].newurl)+1; @@ -589,18 +560,18 @@ static void test_UrlApplyScheme(void) /* NULL as parameter. The length and the buffer are not modified */ lstrcpyA(newurl, untouchedA); len = TEST_APPLY_MAX_LENGTH; - res = pUrlApplySchemeA(NULL, newurl, &len, TEST_APPLY[0].flags); + res = UrlApplySchemeA(NULL, newurl, &len, TEST_APPLY[0].flags); ok(res == E_INVALIDARG, "got HRESULT 0x%x (expected E_INVALIDARG)\n", res); ok(len == TEST_APPLY_MAX_LENGTH, "got len %d\n", len); ok(!lstrcmpA(newurl, untouchedA), "got '%s' (expected '%s')\n", newurl, untouchedA);
len = TEST_APPLY_MAX_LENGTH; - res = pUrlApplySchemeA(TEST_APPLY[0].url, NULL, &len, TEST_APPLY[0].flags); + res = UrlApplySchemeA(TEST_APPLY[0].url, NULL, &len, TEST_APPLY[0].flags); ok(res == E_INVALIDARG, "got HRESULT 0x%x (expected E_INVALIDARG)\n", res); ok(len == TEST_APPLY_MAX_LENGTH, "got len %d\n", len);
lstrcpyA(newurl, untouchedA); - res = pUrlApplySchemeA(TEST_APPLY[0].url, newurl, NULL, TEST_APPLY[0].flags); + res = UrlApplySchemeA(TEST_APPLY[0].url, newurl, NULL, TEST_APPLY[0].flags); ok(res == E_INVALIDARG, "got HRESULT 0x%x (expected E_INVALIDARG)\n", res); ok(!lstrcmpA(newurl, untouchedA), "got '%s' (expected '%s')\n", newurl, untouchedA);
@@ -616,25 +587,18 @@ static void hash_url(const char* szUrl)
DWORD cbSize = sizeof(DWORD); DWORD dwHash1, dwHash2; - res = pUrlHashA(szTestUrl, (LPBYTE)&dwHash1, cbSize); + res = UrlHashA(szTestUrl, (LPBYTE)&dwHash1, cbSize); ok(res == S_OK, "UrlHashA returned 0x%x (expected S_OK) for %s\n", res, szUrl); - if (pUrlHashW) { - res = pUrlHashW(wszTestUrl, (LPBYTE)&dwHash2, cbSize); - ok(res == S_OK, "UrlHashW returned 0x%x (expected S_OK) for %s\n", res, szUrl); - ok(dwHash1 == dwHash2, - "Hashes didn't match (A: 0x%x, W: 0x%x) for %s\n", dwHash1, dwHash2, szUrl); - } - FreeWideString(wszTestUrl);
+ res = UrlHashW(wszTestUrl, (LPBYTE)&dwHash2, cbSize); + ok(res == S_OK, "UrlHashW returned 0x%x (expected S_OK) for %s\n", res, szUrl); + ok(dwHash1 == dwHash2, + "Hashes didn't match (A: 0x%x, W: 0x%x) for %s\n", dwHash1, dwHash2, szUrl); + FreeWideString(wszTestUrl); }
static void test_UrlHash(void) { - if (!pUrlHashA) { - win_skip("UrlHashA not found\n"); - return; - } - hash_url(TEST_URL_1); hash_url(TEST_URL_2); hash_url(TEST_URL_3); @@ -652,31 +616,30 @@ static void test_url_part(const char* szUrl, DWORD dwPart, DWORD dwFlags, const DWORD dwSize;
dwSize = 1; - res = pUrlGetPartA(szUrl, szPart, &dwSize, dwPart, dwFlags); + res = UrlGetPartA(szUrl, szPart, &dwSize, dwPart, dwFlags); ok(res == E_POINTER, "UrlGetPart for "%s" gave: 0x%08x\n", szUrl, res); ok(dwSize == strlen(szExpected)+1 || (*szExpected == '?' && dwSize == strlen(szExpected)), "UrlGetPart for "%s" gave size: %u\n", szUrl, dwSize);
dwSize = INTERNET_MAX_URL_LENGTH; - res = pUrlGetPartA(szUrl, szPart, &dwSize, dwPart, dwFlags); + res = UrlGetPartA(szUrl, szPart, &dwSize, dwPart, dwFlags); ok(res == S_OK, "UrlGetPartA for "%s" part 0x%08x returned 0x%x and "%s"\n", szUrl, dwPart, res, szPart); - if (pUrlGetPartW) { - dwSize = INTERNET_MAX_URL_LENGTH; - res = pUrlGetPartW(wszUrl, wszPart, &dwSize, dwPart, dwFlags); - ok(res == S_OK, - "UrlGetPartW for "%s" part 0x%08x returned 0x%x\n", - szUrl, dwPart, res);
- wszConvertedPart = GetWideString(szPart); + dwSize = INTERNET_MAX_URL_LENGTH; + res = UrlGetPartW(wszUrl, wszPart, &dwSize, dwPart, dwFlags); + ok(res == S_OK, + "UrlGetPartW for "%s" part 0x%08x returned 0x%x\n", + szUrl, dwPart, res);
- ok(lstrcmpW(wszPart,wszConvertedPart)==0, - "Strings didn't match between ansi and unicode UrlGetPart!\n"); + wszConvertedPart = GetWideString(szPart);
- FreeWideString(wszConvertedPart); - } + ok(lstrcmpW(wszPart,wszConvertedPart)==0, + "Strings didn't match between ansi and unicode UrlGetPart!\n"); + + FreeWideString(wszConvertedPart); FreeWideString(wszUrl);
/* Note that v6.0 and later don't return '?' with the query */ @@ -698,57 +661,47 @@ static void test_UrlGetPart(void) const char* short_url = "ascheme:";
CHAR szPart[INTERNET_MAX_URL_LENGTH]; + WCHAR bufW[5]; DWORD dwSize; HRESULT res;
- if (!pUrlGetPartA) { - win_skip("UrlGetPartA not found\n"); - return; - } - - res = pUrlGetPartA(NULL, NULL, NULL, URL_PART_SCHEME, 0); + res = UrlGetPartA(NULL, NULL, NULL, URL_PART_SCHEME, 0); ok(res == E_INVALIDARG, "null params gave: 0x%08x\n", res);
- res = pUrlGetPartA(NULL, szPart, &dwSize, URL_PART_SCHEME, 0); + res = UrlGetPartA(NULL, szPart, &dwSize, URL_PART_SCHEME, 0); ok(res == E_INVALIDARG, "null URL gave: 0x%08x\n", res);
- res = pUrlGetPartA(res_url, NULL, &dwSize, URL_PART_SCHEME, 0); + res = UrlGetPartA(res_url, NULL, &dwSize, URL_PART_SCHEME, 0); ok(res == E_INVALIDARG, "null szPart gave: 0x%08x\n", res);
- res = pUrlGetPartA(res_url, szPart, NULL, URL_PART_SCHEME, 0); + res = UrlGetPartA(res_url, szPart, NULL, URL_PART_SCHEME, 0); ok(res == E_INVALIDARG, "null URL gave: 0x%08x\n", res);
dwSize = 0; szPart[0]='x'; szPart[1]=0; - res = pUrlGetPartA("hi", szPart, &dwSize, URL_PART_SCHEME, 0); + res = UrlGetPartA("hi", szPart, &dwSize, URL_PART_SCHEME, 0); ok(res == E_INVALIDARG, "UrlGetPartA(*pcchOut = 0) returned %08X\n", res); ok(szPart[0] == 'x' && szPart[1] == 0, "UrlGetPartA(*pcchOut = 0) modified szPart: "%s"\n", szPart); ok(dwSize == 0, "dwSize = %d\n", dwSize);
dwSize = sizeof szPart; szPart[0]='x'; szPart[1]=0; - res = pUrlGetPartA("hi", szPart, &dwSize, URL_PART_SCHEME, 0); + res = UrlGetPartA("hi", szPart, &dwSize, URL_PART_SCHEME, 0); ok (res==S_FALSE, "UrlGetPartA("hi") returned %08X\n", res); ok(szPart[0]==0, "UrlGetPartA("hi") return "%s" instead of ""\n", szPart); ok(dwSize == 0, "dwSize = %d\n", dwSize);
- if(pUrlGetPartW) - { - const WCHAR hiW[] = {'h','i',0}; - WCHAR bufW[5]; - - /* UrlGetPartW returns S_OK instead of S_FALSE */ - dwSize = sizeof szPart; - bufW[0]='x'; bufW[1]=0; - res = pUrlGetPartW(hiW, bufW, &dwSize, URL_PART_SCHEME, 0); - todo_wine ok(res==S_OK, "UrlGetPartW("hi") returned %08X\n", res); - ok(bufW[0] == 0, "UrlGetPartW("hi") return "%c"\n", bufW[0]); - ok(dwSize == 0, "dwSize = %d\n", dwSize); - } + /* UrlGetPartW returns S_OK instead of S_FALSE */ + dwSize = sizeof szPart; + bufW[0]='x'; bufW[1]=0; + res = UrlGetPartW(L"hi", bufW, &dwSize, URL_PART_SCHEME, 0); + todo_wine ok(res==S_OK, "UrlGetPartW("hi") returned %08X\n", res); + ok(bufW[0] == 0, "UrlGetPartW("hi") return "%c"\n", bufW[0]); + ok(dwSize == 0, "dwSize = %d\n", dwSize);
dwSize = sizeof szPart; szPart[0]='x'; szPart[1]=0; - res = pUrlGetPartA("hi", szPart, &dwSize, URL_PART_QUERY, 0); + res = UrlGetPartA("hi", szPart, &dwSize, URL_PART_QUERY, 0); ok (res==S_FALSE, "UrlGetPartA("hi") returned %08X\n", res); ok(szPart[0]==0, "UrlGetPartA("hi") return "%s" instead of ""\n", szPart); ok(dwSize == 0, "dwSize = %d\n", dwSize); @@ -774,7 +727,7 @@ static void test_UrlGetPart(void) test_url_part(short_url, URL_PART_SCHEME, 0, "ascheme");
dwSize = sizeof(szPart); - res = pUrlGetPartA(about_url, szPart, &dwSize, URL_PART_HOSTNAME, 0); + res = UrlGetPartA(about_url, szPart, &dwSize, URL_PART_HOSTNAME, 0); ok(res==E_FAIL, "returned %08x\n", res);
test_url_part(res_url, URL_PART_SCHEME, 0, "res"); @@ -782,52 +735,52 @@ static void test_UrlGetPart(void)
dwSize = sizeof szPart; szPart[0]='x'; szPart[1]=0; - res = pUrlGetPartA(res_url, szPart, &dwSize, URL_PART_QUERY, 0); + res = UrlGetPartA(res_url, szPart, &dwSize, URL_PART_QUERY, 0); ok(res==S_FALSE, "UrlGetPartA returned %08X\n", res); ok(szPart[0]==0, "UrlGetPartA gave "%s" instead of ""\n", szPart); ok(dwSize == 0, "dwSize = %d\n", dwSize);
dwSize = sizeof(szPart); - res = pUrlGetPartA("file://c:\index.htm", szPart, &dwSize, URL_PART_HOSTNAME, 0); + res = UrlGetPartA("file://c:\index.htm", szPart, &dwSize, URL_PART_HOSTNAME, 0); ok(res==S_FALSE, "returned %08x\n", res); ok(dwSize == 0, "dwSize = %d\n", dwSize);
dwSize = sizeof(szPart); szPart[0] = 'x'; szPart[1] = '\0'; - res = pUrlGetPartA("file:some text", szPart, &dwSize, URL_PART_HOSTNAME, 0); + res = UrlGetPartA("file:some text", szPart, &dwSize, URL_PART_HOSTNAME, 0); ok(res==S_FALSE, "returned %08x\n", res); ok(szPart[0] == '\0', "szPart[0] = %c\n", szPart[0]); ok(dwSize == 0, "dwSize = %d\n", dwSize);
dwSize = sizeof(szPart); szPart[0] = 'x'; szPart[1] = '\0'; - res = pUrlGetPartA("index.htm", szPart, &dwSize, URL_PART_HOSTNAME, 0); + res = UrlGetPartA("index.htm", szPart, &dwSize, URL_PART_HOSTNAME, 0); ok(res==E_FAIL, "returned %08x\n", res);
dwSize = sizeof(szPart); szPart[0] = 'x'; szPart[1] = '\0'; - res = pUrlGetPartA(excid_url, szPart, &dwSize, URL_PART_HOSTNAME, 0); + res = UrlGetPartA(excid_url, szPart, &dwSize, URL_PART_HOSTNAME, 0); ok(res==E_FAIL, "returned %08x\n", res); ok(szPart[0] == 'x', "szPart[0] = %c\n", szPart[0]); ok(dwSize == sizeof(szPart), "dwSize = %d\n", dwSize);
dwSize = sizeof(szPart); szPart[0] = 'x'; szPart[1] = '\0'; - res = pUrlGetPartA(excid_url, szPart, &dwSize, URL_PART_QUERY, 0); + res = UrlGetPartA(excid_url, szPart, &dwSize, URL_PART_QUERY, 0); ok(res==S_FALSE, "returned %08x\n", res); ok(szPart[0] == 0, "szPart[0] = %c\n", szPart[0]); ok(dwSize == 0, "dwSize = %d\n", dwSize);
dwSize = sizeof(szPart); szPart[0] = 'x'; szPart[1] = '\0'; - res = pUrlGetPartA(foo_url, szPart, &dwSize, URL_PART_HOSTNAME, 0); + res = UrlGetPartA(foo_url, szPart, &dwSize, URL_PART_HOSTNAME, 0); ok(res==E_FAIL, "returned %08x\n", res); ok(szPart[0] == 'x', "szPart[0] = %c\n", szPart[0]); ok(dwSize == sizeof(szPart), "dwSize = %d\n", dwSize);
dwSize = sizeof(szPart); szPart[0] = 'x'; szPart[1] = '\0'; - res = pUrlGetPartA(foo_url, szPart, &dwSize, URL_PART_QUERY, 0); + res = UrlGetPartA(foo_url, szPart, &dwSize, URL_PART_QUERY, 0); ok(res==S_FALSE, "returned %08x\n", res); ok(szPart[0] == 0, "szPart[0] = %c\n", szPart[0]); ok(dwSize == 0, "dwSize = %d\n", dwSize); @@ -846,28 +799,26 @@ static void test_url_canonicalize(int index, const char *szUrl, DWORD dwFlags, H DWORD dwSize;
dwSize = INTERNET_MAX_URL_LENGTH; - ret = pUrlCanonicalizeA(szUrl, NULL, &dwSize, dwFlags); + ret = UrlCanonicalizeA(szUrl, NULL, &dwSize, dwFlags); ok(ret != dwExpectReturn, "got 0s%x: Unexpected return for NULL buffer, index %d\n", ret, index); - ret = pUrlCanonicalizeA(szUrl, szReturnUrl, &dwSize, dwFlags); + ret = UrlCanonicalizeA(szUrl, szReturnUrl, &dwSize, dwFlags); ok(ret == dwExpectReturn || ret == dwExpectReturnAlt, "UrlCanonicalizeA failed: expected=0x%08x or 0x%08x, got=0x%08x, index %d\n", dwExpectReturn, dwExpectReturnAlt, ret, index); todo_wine_if (todo) ok(strcmp(szReturnUrl,szExpectUrl)==0, "UrlCanonicalizeA dwFlags 0x%08x url '%s' Expected "%s", but got "%s", index %d\n", dwFlags, szUrl, szExpectUrl, szReturnUrl, index);
- if (pUrlCanonicalizeW) { - dwSize = INTERNET_MAX_URL_LENGTH; - ret = pUrlCanonicalizeW(wszUrl, NULL, &dwSize, dwFlags); - ok(ret != dwExpectReturn, "got 0x%x: Unexpected return for NULL buffer, index %d\n", ret, index); - ret = pUrlCanonicalizeW(wszUrl, wszReturnUrl, &dwSize, dwFlags); - ok(ret == dwExpectReturn, "UrlCanonicalizeW failed: expected 0x%08x, got 0x%x, index %d\n", - dwExpectReturn, ret, index); + dwSize = INTERNET_MAX_URL_LENGTH; + ret = UrlCanonicalizeW(wszUrl, NULL, &dwSize, dwFlags); + ok(ret != dwExpectReturn, "got 0x%x: Unexpected return for NULL buffer, index %d\n", ret, index); + ret = UrlCanonicalizeW(wszUrl, wszReturnUrl, &dwSize, dwFlags); + ok(ret == dwExpectReturn, "UrlCanonicalizeW failed: expected 0x%08x, got 0x%x, index %d\n", + dwExpectReturn, ret, index);
- wszConvertedUrl = GetWideString(szReturnUrl); - ok(lstrcmpW(wszReturnUrl, wszConvertedUrl)==0, - "Strings didn't match between ansi and unicode UrlCanonicalize, index %d!\n", index); - FreeWideString(wszConvertedUrl); - } + wszConvertedUrl = GetWideString(szReturnUrl); + ok(lstrcmpW(wszReturnUrl, wszConvertedUrl)==0, + "Strings didn't match between ansi and unicode UrlCanonicalize, index %d!\n", index); + FreeWideString(wszConvertedUrl);
FreeWideString(wszUrl); FreeWideString(wszExpectUrl); @@ -881,40 +832,35 @@ static void test_UrlEscapeA(void) unsigned int i; char empty_string[] = "";
- if (!pUrlEscapeA) { - win_skip("UrlEscapeA not found\n"); - return; - } - - ret = pUrlEscapeA("/woningplan/woonkamer basis.swf", NULL, &size, URL_ESCAPE_SPACES_ONLY); + ret = UrlEscapeA("/woningplan/woonkamer basis.swf", NULL, &size, URL_ESCAPE_SPACES_ONLY); ok(ret == E_INVALIDARG, "got %x, expected %x\n", ret, E_INVALIDARG); ok(size == 0, "got %d, expected %d\n", size, 0);
size = 0; - ret = pUrlEscapeA("/woningplan/woonkamer basis.swf", empty_string, &size, URL_ESCAPE_SPACES_ONLY); + ret = UrlEscapeA("/woningplan/woonkamer basis.swf", empty_string, &size, URL_ESCAPE_SPACES_ONLY); ok(ret == E_INVALIDARG, "got %x, expected %x\n", ret, E_INVALIDARG); ok(size == 0, "got %d, expected %d\n", size, 0);
size = 1; - ret = pUrlEscapeA("/woningplan/woonkamer basis.swf", NULL, &size, URL_ESCAPE_SPACES_ONLY); + ret = UrlEscapeA("/woningplan/woonkamer basis.swf", NULL, &size, URL_ESCAPE_SPACES_ONLY); ok(ret == E_INVALIDARG, "got %x, expected %x\n", ret, E_INVALIDARG); ok(size == 1, "got %d, expected %d\n", size, 1);
size = 1; - ret = pUrlEscapeA("/woningplan/woonkamer basis.swf", empty_string, NULL, URL_ESCAPE_SPACES_ONLY); + ret = UrlEscapeA("/woningplan/woonkamer basis.swf", empty_string, NULL, URL_ESCAPE_SPACES_ONLY); ok(ret == E_INVALIDARG, "got %x, expected %x\n", ret, E_INVALIDARG); ok(size == 1, "got %d, expected %d\n", size, 1);
size = 1; empty_string[0] = 127; - ret = pUrlEscapeA("/woningplan/woonkamer basis.swf", empty_string, &size, URL_ESCAPE_SPACES_ONLY); + ret = UrlEscapeA("/woningplan/woonkamer basis.swf", empty_string, &size, URL_ESCAPE_SPACES_ONLY); ok(ret == E_POINTER, "got %x, expected %x\n", ret, E_POINTER); ok(size == 34, "got %d, expected %d\n", size, 34); ok(empty_string[0] == 127, "String has changed, empty_string[0] = %d\n", empty_string[0]);
size = 1; empty_string[0] = 127; - ret = pUrlEscapeA("/woningplan/woonkamer basis.swf", empty_string, &size, URL_ESCAPE_AS_UTF8); + ret = UrlEscapeA("/woningplan/woonkamer basis.swf", empty_string, &size, URL_ESCAPE_AS_UTF8); ok(ret == E_NOTIMPL || broken(ret == E_POINTER), /* < Win7/Win2k8 */ "got %x, expected %x\n", ret, E_NOTIMPL); ok(size == 1 || broken(size == 34), /* < Win7/Win2k8 */ @@ -925,7 +871,7 @@ static void test_UrlEscapeA(void) CHAR ret_url[INTERNET_MAX_URL_LENGTH];
size = INTERNET_MAX_URL_LENGTH; - ret = pUrlEscapeA(TEST_ESCAPE[i].url, ret_url, &size, TEST_ESCAPE[i].flags); + ret = UrlEscapeA(TEST_ESCAPE[i].url, ret_url, &size, TEST_ESCAPE[i].flags); ok(ret == TEST_ESCAPE[i].expectret, "UrlEscapeA returned 0x%08x instead of 0x%08x for "%s"\n", ret, TEST_ESCAPE[i].expectret, TEST_ESCAPE[i].url); ok(!strcmp(ret_url, TEST_ESCAPE[i].expecturl), "Expected "%s", but got "%s" for "%s"\n", @@ -947,11 +893,6 @@ static void test_UrlEscapeW(void) WCHAR wc; int i;
- if (!pUrlEscapeW) { - win_skip("UrlEscapeW not found\n"); - return; - } - /* Check error paths */
ret = UrlEscapeW(path_test, NULL, NULL, URL_ESCAPE_SPACES_ONLY); @@ -989,21 +930,21 @@ static void test_UrlEscapeW(void) /* Check actual escaping */
size = ARRAY_SIZE(overwrite); - ret = pUrlEscapeW(overwrite, overwrite, &size, URL_ESCAPE_SPACES_ONLY); + ret = UrlEscapeW(overwrite, overwrite, &size, URL_ESCAPE_SPACES_ONLY); ok(ret == S_OK, "got %x, expected S_OK\n", ret); ok(size == 9, "got %d, expected 9\n", size); ok(!lstrcmpW(overwrite, out), "got %s, expected %s\n", wine_dbgstr_w(overwrite), wine_dbgstr_w(out));
size = 1; wc = 127; - ret = pUrlEscapeW(overwrite, &wc, &size, URL_ESCAPE_SPACES_ONLY); + ret = UrlEscapeW(overwrite, &wc, &size, URL_ESCAPE_SPACES_ONLY); ok(ret == E_POINTER, "got %x, expected %x\n", ret, E_POINTER); ok(size == 10, "got %d, expected 10\n", size); ok(wc == 127, "String has changed, wc = %d\n", wc);
/* non-ASCII range */ size = ARRAY_SIZE(ret_urlW); - ret = pUrlEscapeW(naW, ret_urlW, &size, 0); + ret = UrlEscapeW(naW, ret_urlW, &size, 0); ok(ret == S_OK, "got %x, expected S_OK\n", ret); ok(!lstrcmpW(naescapedW, ret_urlW), "got %s, expected %s\n", wine_dbgstr_w(ret_urlW), wine_dbgstr_w(naescapedW));
@@ -1014,7 +955,7 @@ static void test_UrlEscapeW(void) size = INTERNET_MAX_URL_LENGTH; urlW = GetWideString(TEST_ESCAPE[i].url); expected_urlW = GetWideString(TEST_ESCAPE[i].expecturl); - ret = pUrlEscapeW(urlW, ret_urlW, &size, TEST_ESCAPE[i].flags); + ret = UrlEscapeW(urlW, ret_urlW, &size, TEST_ESCAPE[i].flags); ok(ret == TEST_ESCAPE[i].expectret, "UrlEscapeW returned 0x%08x instead of 0x%08x for %s\n", ret, TEST_ESCAPE[i].expectret, wine_dbgstr_w(urlW)); ok(!lstrcmpW(ret_urlW, expected_urlW), "Expected %s, but got %s for %s flags %08x\n", @@ -1027,7 +968,7 @@ static void test_UrlEscapeW(void) WCHAR ret_url[INTERNET_MAX_URL_LENGTH];
size = INTERNET_MAX_URL_LENGTH; - ret = pUrlEscapeW(TEST_ESCAPEW[i].url, ret_url, &size, TEST_ESCAPEW[i].flags); + ret = UrlEscapeW(TEST_ESCAPEW[i].url, ret_url, &size, TEST_ESCAPEW[i].flags); ok(ret == TEST_ESCAPEW[i].expectret, "UrlEscapeW returned 0x%08x instead of 0x%08x for "%s"\n", ret, TEST_ESCAPEW[i].expectret, wine_dbgstr_w(TEST_ESCAPEW[i].url)); ok(!lstrcmpW(ret_url, TEST_ESCAPEW[i].expecturl) || @@ -1050,27 +991,22 @@ static void test_UrlCanonicalizeA(void) DWORD urllen; HRESULT hr;
- if (!pUrlCanonicalizeA) { - win_skip("UrlCanonicalizeA not found\n"); - return; - } - urllen = lstrlenA(winehqA);
/* Parameter checks */ dwSize = ARRAY_SIZE(szReturnUrl); - hr = pUrlCanonicalizeA(NULL, szReturnUrl, &dwSize, URL_UNESCAPE); + hr = UrlCanonicalizeA(NULL, szReturnUrl, &dwSize, URL_UNESCAPE); ok(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr);
dwSize = ARRAY_SIZE(szReturnUrl); - hr = pUrlCanonicalizeA(winehqA, NULL, &dwSize, URL_UNESCAPE); + hr = UrlCanonicalizeA(winehqA, NULL, &dwSize, URL_UNESCAPE); ok(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr);
- hr = pUrlCanonicalizeA(winehqA, szReturnUrl, NULL, URL_UNESCAPE); + hr = UrlCanonicalizeA(winehqA, szReturnUrl, NULL, URL_UNESCAPE); ok(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr);
dwSize = 0; - hr = pUrlCanonicalizeA(winehqA, szReturnUrl, &dwSize, URL_UNESCAPE); + hr = UrlCanonicalizeA(winehqA, szReturnUrl, &dwSize, URL_UNESCAPE); ok(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr);
/* buffer has no space for the result */ @@ -1078,7 +1014,7 @@ static void test_UrlCanonicalizeA(void) memset(szReturnUrl, '#', urllen+4); szReturnUrl[urllen+4] = '\0'; SetLastError(0xdeadbeef); - hr = pUrlCanonicalizeA(winehqA, szReturnUrl, &dwSize, URL_WININET_COMPATIBILITY | URL_ESCAPE_UNSAFE); + hr = UrlCanonicalizeA(winehqA, szReturnUrl, &dwSize, URL_WININET_COMPATIBILITY | URL_ESCAPE_UNSAFE); ok( (hr == E_POINTER) && (dwSize == (urllen + 1)), "got 0x%x with %u and size %u for '%s' and %u (expected 'E_POINTER' and size %u)\n", hr, GetLastError(), dwSize, szReturnUrl, lstrlenA(szReturnUrl), urllen+1); @@ -1088,7 +1024,7 @@ static void test_UrlCanonicalizeA(void) memset(szReturnUrl, '#', urllen+4); szReturnUrl[urllen+4] = '\0'; SetLastError(0xdeadbeef); - hr = pUrlCanonicalizeA(winehqA, szReturnUrl, &dwSize, URL_WININET_COMPATIBILITY | URL_ESCAPE_UNSAFE); + hr = UrlCanonicalizeA(winehqA, szReturnUrl, &dwSize, URL_WININET_COMPATIBILITY | URL_ESCAPE_UNSAFE); ok( (hr == E_POINTER) && (dwSize == (urllen + 1)), "got 0x%x with %u and size %u for '%s' and %u (expected 'E_POINTER' and size %u)\n", hr, GetLastError(), dwSize, szReturnUrl, lstrlenA(szReturnUrl), urllen+1); @@ -1098,7 +1034,7 @@ static void test_UrlCanonicalizeA(void) memset(szReturnUrl, '#', urllen+4); szReturnUrl[urllen+4] = '\0'; SetLastError(0xdeadbeef); - hr = pUrlCanonicalizeA(winehqA, szReturnUrl, &dwSize, URL_WININET_COMPATIBILITY | URL_ESCAPE_UNSAFE); + hr = UrlCanonicalizeA(winehqA, szReturnUrl, &dwSize, URL_WININET_COMPATIBILITY | URL_ESCAPE_UNSAFE); ok( (hr == S_OK) && (dwSize == urllen), "got 0x%x with %u and size %u for '%s' and %u (expected 'S_OK' and size %u)\n", hr, GetLastError(), dwSize, szReturnUrl, lstrlenA(szReturnUrl), urllen); @@ -1108,7 +1044,7 @@ static void test_UrlCanonicalizeA(void) memset(szReturnUrl, '#', urllen+4); szReturnUrl[urllen+4] = '\0'; SetLastError(0xdeadbeef); - hr = pUrlCanonicalizeA(winehqA, szReturnUrl, &dwSize, URL_WININET_COMPATIBILITY | URL_ESCAPE_UNSAFE); + hr = UrlCanonicalizeA(winehqA, szReturnUrl, &dwSize, URL_WININET_COMPATIBILITY | URL_ESCAPE_UNSAFE); ok( (hr == S_OK) && (dwSize == urllen), "got 0x%x with %u and size %u for '%s' and %u (expected 'S_OK' and size %u)\n", hr, GetLastError(), dwSize, szReturnUrl, lstrlenA(szReturnUrl), urllen); @@ -1118,7 +1054,7 @@ static void test_UrlCanonicalizeA(void) memset(szReturnUrl, '#', urllen+4); szReturnUrl[urllen+4] = '\0'; SetLastError(0xdeadbeef); - hr = pUrlCanonicalizeA(winehqA, szReturnUrl, &dwSize, URL_WININET_COMPATIBILITY | URL_ESCAPE_UNSAFE); + hr = UrlCanonicalizeA(winehqA, szReturnUrl, &dwSize, URL_WININET_COMPATIBILITY | URL_ESCAPE_UNSAFE); ok( (hr == E_INVALIDARG) && (dwSize == 0), "got 0x%x with %u and size %u for '%s' and %u (expected 'E_INVALIDARG' and size %u)\n", hr, GetLastError(), dwSize, szReturnUrl, lstrlenA(szReturnUrl), 0); @@ -1128,7 +1064,7 @@ static void test_UrlCanonicalizeA(void) memset(longurl, 'a', sizeof(longurl)); memcpy(longurl, winehqA, sizeof(winehqA)-1); longurl[sizeof(longurl)-1] = '\0'; - hr = pUrlCanonicalizeA(longurl, szReturnUrl, &dwSize, URL_WININET_COMPATIBILITY | URL_ESCAPE_UNSAFE); + hr = UrlCanonicalizeA(longurl, szReturnUrl, &dwSize, URL_WININET_COMPATIBILITY | URL_ESCAPE_UNSAFE); ok(hr == S_OK, "hr = %x\n", hr);
test_url_canonicalize(-1, "", 0, S_OK, S_FALSE /* Vista/win2k8 */, "", FALSE); @@ -1151,27 +1087,22 @@ static void test_UrlCanonicalizeW(void) HRESULT hr; int i;
- - if (!pUrlCanonicalizeW) { - win_skip("UrlCanonicalizeW not found\n"); - return; - } urllen = lstrlenW(winehqW);
/* Parameter checks */ dwSize = ARRAY_SIZE(szReturnUrl); - hr = pUrlCanonicalizeW(NULL, szReturnUrl, &dwSize, URL_UNESCAPE); + hr = UrlCanonicalizeW(NULL, szReturnUrl, &dwSize, URL_UNESCAPE); ok(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr);
dwSize = ARRAY_SIZE(szReturnUrl); - hr = pUrlCanonicalizeW(winehqW, NULL, &dwSize, URL_UNESCAPE); + hr = UrlCanonicalizeW(winehqW, NULL, &dwSize, URL_UNESCAPE); ok(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr);
- hr = pUrlCanonicalizeW(winehqW, szReturnUrl, NULL, URL_UNESCAPE); + hr = UrlCanonicalizeW(winehqW, szReturnUrl, NULL, URL_UNESCAPE); ok(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr);
dwSize = 0; - hr = pUrlCanonicalizeW(winehqW, szReturnUrl, &dwSize, URL_UNESCAPE); + hr = UrlCanonicalizeW(winehqW, szReturnUrl, &dwSize, URL_UNESCAPE); ok(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr);
/* buffer has no space for the result */ @@ -1179,7 +1110,7 @@ static void test_UrlCanonicalizeW(void) memset(szReturnUrl, '#', (urllen+4) * sizeof(WCHAR)); szReturnUrl[urllen+4] = '\0'; SetLastError(0xdeadbeef); - hr = pUrlCanonicalizeW(winehqW, szReturnUrl, &dwSize, URL_WININET_COMPATIBILITY | URL_ESCAPE_UNSAFE); + hr = UrlCanonicalizeW(winehqW, szReturnUrl, &dwSize, URL_WININET_COMPATIBILITY | URL_ESCAPE_UNSAFE); ok( (hr == E_POINTER) && (dwSize == (urllen + 1)), "got 0x%x with %u and size %u for %u (expected 'E_POINTER' and size %u)\n", hr, GetLastError(), dwSize, lstrlenW(szReturnUrl), urllen+1); @@ -1190,7 +1121,7 @@ static void test_UrlCanonicalizeW(void) memset(szReturnUrl, '#', (urllen+4) * sizeof(WCHAR)); szReturnUrl[urllen+4] = '\0'; SetLastError(0xdeadbeef); - hr = pUrlCanonicalizeW(winehqW, szReturnUrl, &dwSize, URL_WININET_COMPATIBILITY | URL_ESCAPE_UNSAFE); + hr = UrlCanonicalizeW(winehqW, szReturnUrl, &dwSize, URL_WININET_COMPATIBILITY | URL_ESCAPE_UNSAFE); ok( (hr == E_POINTER) && (dwSize == (urllen + 1)), "got 0x%x with %u and size %u for %u (expected 'E_POINTER' and size %u)\n", hr, GetLastError(), dwSize, lstrlenW(szReturnUrl), urllen+1); @@ -1200,7 +1131,7 @@ static void test_UrlCanonicalizeW(void) memset(szReturnUrl, '#', (urllen+4) * sizeof(WCHAR)); szReturnUrl[urllen+4] = '\0'; SetLastError(0xdeadbeef); - hr = pUrlCanonicalizeW(winehqW, szReturnUrl, &dwSize, URL_WININET_COMPATIBILITY | URL_ESCAPE_UNSAFE); + hr = UrlCanonicalizeW(winehqW, szReturnUrl, &dwSize, URL_WININET_COMPATIBILITY | URL_ESCAPE_UNSAFE); ok( (hr == S_OK) && (dwSize == urllen), "got 0x%x with %u and size %u for %u (expected 'S_OK' and size %u)\n", hr, GetLastError(), dwSize, lstrlenW(szReturnUrl), urllen); @@ -1210,7 +1141,7 @@ static void test_UrlCanonicalizeW(void) memset(szReturnUrl, '#', (urllen+4) * sizeof(WCHAR)); szReturnUrl[urllen+4] = '\0'; SetLastError(0xdeadbeef); - hr = pUrlCanonicalizeW(winehqW, szReturnUrl, &dwSize, URL_WININET_COMPATIBILITY | URL_ESCAPE_UNSAFE); + hr = UrlCanonicalizeW(winehqW, szReturnUrl, &dwSize, URL_WININET_COMPATIBILITY | URL_ESCAPE_UNSAFE); ok( (hr == S_OK) && (dwSize == urllen), "got 0x%x with %u and size %u for %u (expected 'S_OK' and size %u)\n", hr, GetLastError(), dwSize, lstrlenW(szReturnUrl), urllen); @@ -1226,7 +1157,7 @@ static void test_UrlCanonicalizeW(void) pos = lstrlenW(szUrl) - 1; szUrl[pos] = i; urllen = INTERNET_MAX_URL_LENGTH; - pUrlCanonicalizeW(szUrl, szReturnUrl, &urllen, 0); + UrlCanonicalizeW(szUrl, szReturnUrl, &urllen, 0); choped = lstrlenW(szReturnUrl) < lstrlenW(szUrl); ok(choped == (i <= 32), "Incorrect char chopping for char %d\n", i); } @@ -1244,54 +1175,47 @@ static void test_url_combine(const char *szUrl1, const char *szUrl2, DWORD dwFla DWORD dwSize; DWORD dwExpectLen = lstrlenA(szExpectUrl);
- if (!pUrlCombineA) { - win_skip("UrlCombineA not found\n"); - return; - } - wszUrl1 = GetWideString(szUrl1); wszUrl2 = GetWideString(szUrl2); wszExpectUrl = GetWideString(szExpectUrl);
- hr = pUrlCombineA(szUrl1, szUrl2, NULL, NULL, dwFlags); + hr = UrlCombineA(szUrl1, szUrl2, NULL, NULL, dwFlags); ok(hr == E_INVALIDARG, "UrlCombineA returned 0x%08x, expected 0x%08x\n", hr, E_INVALIDARG);
dwSize = 0; - hr = pUrlCombineA(szUrl1, szUrl2, NULL, &dwSize, dwFlags); + hr = UrlCombineA(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(dwSize == dwExpectLen+1, "Got length %d, expected %d\n", dwSize, dwExpectLen+1);
dwSize--; - hr = pUrlCombineA(szUrl1, szUrl2, szReturnUrl, &dwSize, dwFlags); + hr = UrlCombineA(szUrl1, szUrl2, szReturnUrl, &dwSize, dwFlags); ok(hr == E_POINTER, "UrlCombineA returned 0x%08x, expected 0x%08x\n", hr, E_POINTER); ok(dwSize == dwExpectLen+1, "Got length %d, expected %d\n", dwSize, dwExpectLen+1);
- hr = pUrlCombineA(szUrl1, szUrl2, szReturnUrl, &dwSize, dwFlags); + hr = UrlCombineA(szUrl1, szUrl2, szReturnUrl, &dwSize, dwFlags); 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(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(dwSize == dwExpectLen+1, "Got length %d, expected %d\n", dwSize, dwExpectLen+1); + dwSize = 0; + hr = UrlCombineW(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(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(dwSize == dwExpectLen+1, "Got length %d, expected %d\n", dwSize, dwExpectLen+1); + dwSize--; + hr = UrlCombineW(wszUrl1, wszUrl2, wszReturnUrl, &dwSize, dwFlags); + ok(hr == E_POINTER, "UrlCombineW returned 0x%08x, expected 0x%08x\n", hr, E_POINTER); + 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(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 ansi and unicode UrlCombine!\n"); - FreeWideString(wszConvertedUrl); - } + hr = UrlCombineW(wszUrl1, wszUrl2, wszReturnUrl, &dwSize, dwFlags); + ok(hr == dwExpectReturn, "UrlCombineW returned 0x%08x, expected 0x%08x\n", hr, dwExpectReturn); + 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 ansi and unicode UrlCombine!\n"); + FreeWideString(wszConvertedUrl); }
FreeWideString(wszUrl1); @@ -1320,32 +1244,25 @@ static void test_UrlCreateFromPath(void) WCHAR ret_urlW[INTERNET_MAX_URL_LENGTH]; WCHAR *pathW, *urlW;
- if (!pUrlCreateFromPathA) { - win_skip("UrlCreateFromPathA not found\n"); - return; - } - for (i = 0; i < ARRAY_SIZE(TEST_URLFROMPATH); i++) { len = INTERNET_MAX_URL_LENGTH; - ret = pUrlCreateFromPathA(TEST_URLFROMPATH[i].path, ret_url, &len, 0); + ret = UrlCreateFromPathA(TEST_URLFROMPATH[i].path, ret_url, &len, 0); ok(ret == TEST_URLFROMPATH[i].ret, "ret %08x from path %s\n", ret, TEST_URLFROMPATH[i].path); ok(!lstrcmpiA(ret_url, TEST_URLFROMPATH[i].url), "url %s from path %s\n", ret_url, TEST_URLFROMPATH[i].path); ok(len == strlen(ret_url), "ret len %d from path %s\n", len, TEST_URLFROMPATH[i].path);
- if (pUrlCreateFromPathW) { - len = INTERNET_MAX_URL_LENGTH; - pathW = GetWideString(TEST_URLFROMPATH[i].path); - urlW = GetWideString(TEST_URLFROMPATH[i].url); - ret = pUrlCreateFromPathW(pathW, ret_urlW, &len, 0); - WideCharToMultiByte(CP_ACP, 0, ret_urlW, -1, ret_url, sizeof(ret_url),0,0); - ok(ret == TEST_URLFROMPATH[i].ret, "ret %08x from path L"%s", expected %08x\n", - ret, TEST_URLFROMPATH[i].path, TEST_URLFROMPATH[i].ret); - ok(!lstrcmpiW(ret_urlW, urlW), "got %s expected %s from path L"%s"\n", - ret_url, TEST_URLFROMPATH[i].url, TEST_URLFROMPATH[i].path); - ok(len == lstrlenW(ret_urlW), "ret len %d from path L"%s"\n", len, TEST_URLFROMPATH[i].path); - FreeWideString(urlW); - FreeWideString(pathW); - } + len = INTERNET_MAX_URL_LENGTH; + pathW = GetWideString(TEST_URLFROMPATH[i].path); + urlW = GetWideString(TEST_URLFROMPATH[i].url); + ret = UrlCreateFromPathW(pathW, ret_urlW, &len, 0); + WideCharToMultiByte(CP_ACP, 0, ret_urlW, -1, ret_url, sizeof(ret_url),0,0); + ok(ret == TEST_URLFROMPATH[i].ret, "ret %08x from path L"%s", expected %08x\n", + ret, TEST_URLFROMPATH[i].path, TEST_URLFROMPATH[i].ret); + ok(!lstrcmpiW(ret_urlW, urlW), "got %s expected %s from path L"%s"\n", + ret_url, TEST_URLFROMPATH[i].url, TEST_URLFROMPATH[i].path); + ok(len == lstrlenW(ret_urlW), "ret len %d from path L"%s"\n", len, TEST_URLFROMPATH[i].path); + FreeWideString(urlW); + FreeWideString(pathW); } }
@@ -1354,9 +1271,9 @@ static void test_UrlCreateFromPath(void) static void test_UrlIs_null(DWORD flag) { BOOL ret; - ret = pUrlIsA(NULL, flag); + ret = UrlIsA(NULL, flag); ok(ret == FALSE, "pUrlIsA(NULL, %d) failed\n", flag); - ret = pUrlIsW(NULL, flag); + ret = UrlIsW(NULL, flag); ok(ret == FALSE, "pUrlIsW(NULL, %d) failed\n", flag); }
@@ -1366,11 +1283,6 @@ static void test_UrlIs(void) size_t i; WCHAR wurl[80];
- if (!pUrlIsA) { - win_skip("UrlIsA not found\n"); - return; - } - test_UrlIs_null(URLIS_APPLIABLE); test_UrlIs_null(URLIS_DIRECTORY); test_UrlIs_null(URLIS_FILEURL); @@ -1382,40 +1294,36 @@ static void test_UrlIs(void) for (i = 0; i < ARRAY_SIZE(TEST_PATH_IS_URL); i++) { MultiByteToWideChar(CP_ACP, 0, TEST_PATH_IS_URL[i].path, -1, wurl, ARRAY_SIZE(wurl));
- ret = pUrlIsA( TEST_PATH_IS_URL[i].path, URLIS_URL ); + ret = UrlIsA( TEST_PATH_IS_URL[i].path, URLIS_URL ); ok( ret == TEST_PATH_IS_URL[i].expect, "returned %d from path %s, expected %d\n", ret, TEST_PATH_IS_URL[i].path, TEST_PATH_IS_URL[i].expect );
- if (pUrlIsW) { - ret = pUrlIsW( wurl, URLIS_URL ); - ok( ret == TEST_PATH_IS_URL[i].expect, - "returned %d from path (UrlIsW) %s, expected %d\n", ret, - TEST_PATH_IS_URL[i].path, TEST_PATH_IS_URL[i].expect ); - } + ret = UrlIsW( wurl, URLIS_URL ); + ok( ret == TEST_PATH_IS_URL[i].expect, + "returned %d from path (UrlIsW) %s, expected %d\n", ret, + TEST_PATH_IS_URL[i].path, TEST_PATH_IS_URL[i].expect ); } for (i = 0; i < ARRAY_SIZE(TEST_URLIS_ATTRIBS); i++) { MultiByteToWideChar(CP_ACP, 0, TEST_URLIS_ATTRIBS[i].url, -1, wurl, ARRAY_SIZE(wurl));
- ret = pUrlIsA( TEST_URLIS_ATTRIBS[i].url, URLIS_OPAQUE); + ret = UrlIsA( TEST_URLIS_ATTRIBS[i].url, URLIS_OPAQUE); ok( ret == TEST_URLIS_ATTRIBS[i].expectOpaque, "returned %d for URLIS_OPAQUE, url "%s", expected %d\n", ret, TEST_URLIS_ATTRIBS[i].url, TEST_URLIS_ATTRIBS[i].expectOpaque ); - ret = pUrlIsA( TEST_URLIS_ATTRIBS[i].url, URLIS_FILEURL); + ret = UrlIsA( TEST_URLIS_ATTRIBS[i].url, URLIS_FILEURL); ok( ret == TEST_URLIS_ATTRIBS[i].expectFile, "returned %d for URLIS_FILEURL, url "%s", expected %d\n", ret, TEST_URLIS_ATTRIBS[i].url, TEST_URLIS_ATTRIBS[i].expectFile );
- if (pUrlIsW) { - ret = pUrlIsW( wurl, URLIS_OPAQUE); - ok( ret == TEST_URLIS_ATTRIBS[i].expectOpaque, - "returned %d for URLIS_OPAQUE (UrlIsW), url "%s", expected %d\n", - ret, TEST_URLIS_ATTRIBS[i].url, TEST_URLIS_ATTRIBS[i].expectOpaque ); - ret = pUrlIsW( wurl, URLIS_FILEURL); - ok( ret == TEST_URLIS_ATTRIBS[i].expectFile, - "returned %d for URLIS_FILEURL (UrlIsW), url "%s", expected %d\n", - ret, TEST_URLIS_ATTRIBS[i].url, TEST_URLIS_ATTRIBS[i].expectFile ); - } + ret = UrlIsW( wurl, URLIS_OPAQUE); + ok( ret == TEST_URLIS_ATTRIBS[i].expectOpaque, + "returned %d for URLIS_OPAQUE (UrlIsW), url "%s", expected %d\n", + ret, TEST_URLIS_ATTRIBS[i].url, TEST_URLIS_ATTRIBS[i].expectOpaque ); + ret = UrlIsW( wurl, URLIS_FILEURL); + ok( ret == TEST_URLIS_ATTRIBS[i].expectFile, + "returned %d for URLIS_FILEURL (UrlIsW), url "%s", expected %d\n", + ret, TEST_URLIS_ATTRIBS[i].url, TEST_URLIS_ATTRIBS[i].expectFile ); } }
@@ -1436,13 +1344,9 @@ static void test_UrlUnescape(void) 'C',':','/','P','r','o','g','r','a','m','%','2','0','F','i','l','e','s',0}; HRESULT res;
- if (!pUrlUnescapeA) { - win_skip("UrlUnescapeA not found\n"); - return; - } for (i = 0; i < ARRAY_SIZE(TEST_URL_UNESCAPE); i++) { dwEscaped=INTERNET_MAX_URL_LENGTH; - res = pUrlUnescapeA(TEST_URL_UNESCAPE[i].url, szReturnUrl, &dwEscaped, 0); + res = UrlUnescapeA(TEST_URL_UNESCAPE[i].url, szReturnUrl, &dwEscaped, 0); ok(res == S_OK, "UrlUnescapeA returned 0x%x (expected S_OK) for "%s"\n", res, TEST_URL_UNESCAPE[i].url); @@ -1450,53 +1354,49 @@ static void test_UrlUnescape(void)
ZeroMemory(szReturnUrl, sizeof(szReturnUrl)); /* if we set the buffer pointer to NULL here, UrlUnescape fails and the string is not converted */ - res = pUrlUnescapeA(TEST_URL_UNESCAPE[i].url, szReturnUrl, NULL, 0); + res = UrlUnescapeA(TEST_URL_UNESCAPE[i].url, szReturnUrl, NULL, 0); ok(res == E_INVALIDARG, "UrlUnescapeA returned 0x%x (expected E_INVALIDARG) for "%s"\n", res, TEST_URL_UNESCAPE[i].url); ok(strcmp(szReturnUrl,"")==0, "Expected empty string\n");
- if (pUrlUnescapeW) { - dwEscaped = INTERNET_MAX_URL_LENGTH; - urlW = GetWideString(TEST_URL_UNESCAPE[i].url); - expected_urlW = GetWideString(TEST_URL_UNESCAPE[i].expect); - res = pUrlUnescapeW(urlW, ret_urlW, &dwEscaped, 0); - ok(res == S_OK, - "UrlUnescapeW returned 0x%x (expected S_OK) for "%s"\n", - res, TEST_URL_UNESCAPE[i].url); + dwEscaped = INTERNET_MAX_URL_LENGTH; + urlW = GetWideString(TEST_URL_UNESCAPE[i].url); + expected_urlW = GetWideString(TEST_URL_UNESCAPE[i].expect); + res = UrlUnescapeW(urlW, ret_urlW, &dwEscaped, 0); + ok(res == S_OK, + "UrlUnescapeW returned 0x%x (expected S_OK) for "%s"\n", + res, TEST_URL_UNESCAPE[i].url);
- WideCharToMultiByte(CP_ACP,0,ret_urlW,-1,szReturnUrl,INTERNET_MAX_URL_LENGTH,0,0); - ok(lstrcmpW(ret_urlW, expected_urlW)==0, - "Expected "%s", but got "%s" from "%s" flags %08lx\n", - TEST_URL_UNESCAPE[i].expect, szReturnUrl, TEST_URL_UNESCAPE[i].url, 0L); - FreeWideString(urlW); - FreeWideString(expected_urlW); - } + WideCharToMultiByte(CP_ACP,0,ret_urlW,-1,szReturnUrl,INTERNET_MAX_URL_LENGTH,0,0); + ok(lstrcmpW(ret_urlW, expected_urlW)==0, + "Expected "%s", but got "%s" from "%s" flags %08lx\n", + TEST_URL_UNESCAPE[i].expect, szReturnUrl, TEST_URL_UNESCAPE[i].url, 0L); + FreeWideString(urlW); + FreeWideString(expected_urlW); }
dwEscaped = sizeof(inplace); - res = pUrlUnescapeA(inplace, NULL, &dwEscaped, URL_UNESCAPE_INPLACE); + res = UrlUnescapeA(inplace, NULL, &dwEscaped, URL_UNESCAPE_INPLACE); ok(res == S_OK, "UrlUnescapeA returned 0x%x (expected S_OK)\n", res); ok(!strcmp(inplace, expected), "got %s expected %s\n", inplace, expected); ok(dwEscaped == 27, "got %d expected 27\n", dwEscaped);
/* if we set the buffer pointer to NULL, the string apparently still gets converted (Google Lively does this) */ - res = pUrlUnescapeA(another_inplace, NULL, NULL, URL_UNESCAPE_INPLACE); + res = UrlUnescapeA(another_inplace, NULL, NULL, URL_UNESCAPE_INPLACE); ok(res == S_OK, "UrlUnescapeA returned 0x%x (expected S_OK)\n", res); ok(!strcmp(another_inplace, expected), "got %s expected %s\n", another_inplace, expected);
- if (pUrlUnescapeW) { - dwEscaped = sizeof(inplaceW); - res = pUrlUnescapeW(inplaceW, NULL, &dwEscaped, URL_UNESCAPE_INPLACE); - ok(res == S_OK, "UrlUnescapeW returned 0x%x (expected S_OK)\n", res); - ok(dwEscaped == 50, "got %d expected 50\n", dwEscaped); + dwEscaped = sizeof(inplaceW); + res = UrlUnescapeW(inplaceW, NULL, &dwEscaped, URL_UNESCAPE_INPLACE); + ok(res == S_OK, "UrlUnescapeW returned 0x%x (expected S_OK)\n", res); + ok(dwEscaped == 50, "got %d expected 50\n", dwEscaped);
- /* if we set the buffer pointer to NULL, the string apparently still gets converted (Google Lively does this) */ - res = pUrlUnescapeW(another_inplaceW, NULL, NULL, URL_UNESCAPE_INPLACE); - ok(res == S_OK, "UrlUnescapeW returned 0x%x (expected S_OK)\n", res); + /* if we set the buffer pointer to NULL, the string apparently still gets converted (Google Lively does this) */ + res = UrlUnescapeW(another_inplaceW, NULL, NULL, URL_UNESCAPE_INPLACE); + ok(res == S_OK, "UrlUnescapeW returned 0x%x (expected S_OK)\n", res);
- ok(lstrlenW(another_inplaceW) == 24, "got %d expected 24\n", lstrlenW(another_inplaceW)); - } + ok(lstrlenW(another_inplaceW) == 24, "got %d expected 24\n", lstrlenW(another_inplaceW)); }
static const struct parse_url_test_t { @@ -1534,7 +1434,7 @@ static void test_ParseURL(void) for (test = parse_url_tests; test < parse_url_tests + ARRAY_SIZE(parse_url_tests); test++) { memset(&parseda, 0xd0, sizeof(parseda)); parseda.cbSize = sizeof(parseda); - hres = pParseURLA(test->url, &parseda); + hres = ParseURLA(test->url, &parseda); ok(hres == test->hres, "ParseURL failed: %08x, expected %08x\n", hres, test->hres); if(hres == S_OK) { ok(parseda.pszProtocol == test->url, "parseda.pszProtocol = %s, expected %s\n", @@ -1557,7 +1457,7 @@ static void test_ParseURL(void)
memset(&parsedw, 0xd0, sizeof(parsedw)); parsedw.cbSize = sizeof(parsedw); - hres = pParseURLW(url, &parsedw); + hres = ParseURLW(url, &parsedw); ok(hres == test->hres, "ParseURL failed: %08x, expected %08x\n", hres, test->hres); if(hres == S_OK) { ok(parsedw.pszProtocol == url, "parsedw.pszProtocol = %s, expected %s\n", @@ -1598,36 +1498,36 @@ static void test_HashData(void) int i;
/* Test hashing with identically sized input/output buffers. */ - res = pHashData(input, 16, output, 16); + res = HashData(input, 16, output, 16); ok(res == S_OK, "Expected HashData to return S_OK, got 0x%08x\n", res); if(res == S_OK) ok(!memcmp(output, expected, sizeof(expected)), "Output buffer did not match expected contents\n");
/* Test hashing with larger output buffer. */ - res = pHashData(input, 16, output, 32); + res = HashData(input, 16, output, 32); ok(res == S_OK, "Expected HashData to return S_OK, got 0x%08x\n", res); if(res == S_OK) ok(!memcmp(output, expected2, sizeof(expected2)), "Output buffer did not match expected contents\n");
/* Test hashing with smaller input buffer. */ - res = pHashData(input, 8, output, 16); + res = HashData(input, 8, output, 16); ok(res == S_OK, "Expected HashData to return S_OK, got 0x%08x\n", res); if(res == S_OK) ok(!memcmp(output, expected3, sizeof(expected3)), "Output buffer did not match expected contents\n");
/* Test passing NULL pointers for input/output parameters. */ - res = pHashData(NULL, 0, NULL, 0); + res = HashData(NULL, 0, NULL, 0); ok(res == E_INVALIDARG || broken(res == S_OK), /* Windows 2000 */ "Expected HashData to return E_INVALIDARG, got 0x%08x\n", res);
- res = pHashData(input, 0, NULL, 0); + res = HashData(input, 0, NULL, 0); ok(res == E_INVALIDARG || broken(res == S_OK), /* Windows 2000 */ "Expected HashData to return E_INVALIDARG, got 0x%08x\n", res);
- res = pHashData(NULL, 0, output, 0); + res = HashData(NULL, 0, output, 0); ok(res == E_INVALIDARG || broken(res == S_OK), /* Windows 2000 */ "Expected HashData to return E_INVALIDARG, got 0x%08x\n", res);
@@ -1638,7 +1538,7 @@ static void test_HashData(void) for (i = 0; i < ARRAY_SIZE(output); i++) output[i] = 0xFF;
- res = pHashData(input, 0, output, 0); + res = HashData(input, 0, output, 0); ok(res == S_OK, "Expected HashData to return S_OK, got 0x%08x\n", res);
/* The buffers should be unchanged. */ @@ -1655,12 +1555,12 @@ static void test_HashData(void) }
/* Input/output parameters are not validated. */ - res = pHashData((BYTE *)0xdeadbeef, 0, (BYTE *)0xdeadbeef, 0); + res = HashData((BYTE *)0xdeadbeef, 0, (BYTE *)0xdeadbeef, 0); ok(res == S_OK, "Expected HashData to return S_OK, got 0x%08x\n", res);
if (0) { - res = pHashData((BYTE *)0xdeadbeef, 1, (BYTE *)0xdeadbeef, 1); + res = HashData((BYTE *)0xdeadbeef, 1, (BYTE *)0xdeadbeef, 1); trace("HashData returned 0x%08x\n", res); } } @@ -1669,39 +1569,6 @@ static void test_HashData(void)
START_TEST(url) { - char *pFunc; - - hShlwapi = GetModuleHandleA("shlwapi.dll"); - - /* SHCreateStreamOnFileEx was introduced in shlwapi v6.0 */ - pFunc = (void*)GetProcAddress(hShlwapi, "SHCreateStreamOnFileEx"); - if(!pFunc){ - win_skip("Too old shlwapi version\n"); - return; - } - - pUrlUnescapeA = (void *) GetProcAddress(hShlwapi, "UrlUnescapeA"); - pUrlUnescapeW = (void *) GetProcAddress(hShlwapi, "UrlUnescapeW"); - pUrlIsA = (void *) GetProcAddress(hShlwapi, "UrlIsA"); - pUrlIsW = (void *) GetProcAddress(hShlwapi, "UrlIsW"); - pUrlHashA = (void *) GetProcAddress(hShlwapi, "UrlHashA"); - pUrlHashW = (void *) GetProcAddress(hShlwapi, "UrlHashW"); - pUrlGetPartA = (void *) GetProcAddress(hShlwapi, "UrlGetPartA"); - pUrlGetPartW = (void *) GetProcAddress(hShlwapi, "UrlGetPartW"); - pUrlEscapeA = (void *) GetProcAddress(hShlwapi, "UrlEscapeA"); - pUrlEscapeW = (void *) GetProcAddress(hShlwapi, "UrlEscapeW"); - pUrlCreateFromPathA = (void *) GetProcAddress(hShlwapi, "UrlCreateFromPathA"); - pUrlCreateFromPathW = (void *) GetProcAddress(hShlwapi, "UrlCreateFromPathW"); - pUrlCombineA = (void *) GetProcAddress(hShlwapi, "UrlCombineA"); - pUrlCombineW = (void *) GetProcAddress(hShlwapi, "UrlCombineW"); - pUrlCanonicalizeA = (void *) GetProcAddress(hShlwapi, "UrlCanonicalizeA"); - pUrlCanonicalizeW = (void *) GetProcAddress(hShlwapi, "UrlCanonicalizeW"); - pUrlApplySchemeA = (void *) GetProcAddress(hShlwapi, "UrlApplySchemeA"); - pUrlApplySchemeW = (void *) GetProcAddress(hShlwapi, "UrlApplySchemeW"); - pParseURLA = (void*)GetProcAddress(hShlwapi, (LPCSTR)1); - pParseURLW = (void*)GetProcAddress(hShlwapi, (LPCSTR)2); - pHashData = (void*)GetProcAddress(hShlwapi, "HashData"); - test_UrlApplyScheme(); test_UrlHash(); test_UrlGetPart();
Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- dlls/shlwapi/tests/url.c | 235 +++++++++++++++++++-------------------- 1 file changed, 115 insertions(+), 120 deletions(-)
diff --git a/dlls/shlwapi/tests/url.c b/dlls/shlwapi/tests/url.c index ea58163ce2e..e0130468c74 100644 --- a/dlls/shlwapi/tests/url.c +++ b/dlls/shlwapi/tests/url.c @@ -85,118 +85,118 @@ static const TEST_URL_APPLY TEST_APPLY[] = { typedef struct _TEST_URL_CANONICALIZE { const char *url; DWORD flags; - HRESULT expectret; const char *expecturl; BOOL todo; } TEST_URL_CANONICALIZE;
static const TEST_URL_CANONICALIZE TEST_CANONICALIZE[] = { - {"http://www.winehq.org/tests/../tests/../..", 0, S_OK, "http://www.winehq.org/", TRUE}, - {"http://www.winehq.org/..", 0, S_OK, "http://www.winehq.org/..", FALSE}, - {"http://www.winehq.org/tests/tests2/../../tests", 0, S_OK, "http://www.winehq.org/tests", FALSE}, - {"http://www.winehq.org/tests/../tests", 0, S_OK, "http://www.winehq.org/tests", FALSE}, - {"http://www.winehq.org/tests%5Cn", URL_WININET_COMPATIBILITY|URL_ESCAPE_SPACES_ONLY|URL_ESCAPE_UNSAFE, S_OK, "http://www.winehq.org/tests", FALSE}, - {"http://www.winehq.org/tests%5Cr", URL_WININET_COMPATIBILITY|URL_ESCAPE_SPACES_ONLY|URL_ESCAPE_UNSAFE, S_OK, "http://www.winehq.org/tests", FALSE}, - {"http://www.winehq.org/tests%5Cr", 0, S_OK, "http://www.winehq.org/tests", FALSE}, - {"http://www.winehq.org/tests%5Cr", URL_DONT_SIMPLIFY, S_OK, "http://www.winehq.org/tests", FALSE}, - {"http://www.winehq.org/tests/../tests/", 0, S_OK, "http://www.winehq.org/tests/", FALSE}, - {"http://www.winehq.org/tests/../tests/..", 0, S_OK, "http://www.winehq.org/", FALSE}, - {"http://www.winehq.org/tests/../tests/../", 0, S_OK, "http://www.winehq.org/", FALSE}, - {"http://www.winehq.org/tests/..", 0, S_OK, "http://www.winehq.org/", FALSE}, - {"http://www.winehq.org/tests/../", 0, S_OK, "http://www.winehq.org/", FALSE}, - {"http://www.winehq.org/tests/..?query=x&return=y", 0, S_OK, "http://www.winehq.org/?query=x&return=y", FALSE}, - {"http://www.winehq.org/tests/../?query=x&return=y", 0, S_OK, "http://www.winehq.org/?query=x&return=y", FALSE}, - {"\tht\ttp\t://www\t.w\tineh\t\tq.or\tg\t/\ttests/..\t?\tquer\ty=x\t\t&re\tturn=y\t\t", 0, S_OK, "http://www.winehq.org/?query=x&return=y", FALSE}, - {"http://www.winehq.org/tests/..#example", 0, S_OK, "http://www.winehq.org/#example", FALSE}, - {"http://www.winehq.org/tests/../#example", 0, S_OK, "http://www.winehq.org/#example", FALSE}, - {"http://www.winehq.org/tests%5C%5C../#example", 0, S_OK, "http://www.winehq.org/#example", FALSE}, - {"http://www.winehq.org/tests/..%5C%5C#example", 0, S_OK, "http://www.winehq.org/#example", FALSE}, - {"http://www.winehq.org%5C%5Ctests/../#example", 0, S_OK, "http://www.winehq.org/#example", FALSE}, - {"http://www.winehq.org/tests/../#example", URL_DONT_SIMPLIFY, S_OK, "http://www.winehq.org/tests/../#example", FALSE}, - {"http://www.winehq.org/tests/foo bar", URL_ESCAPE_SPACES_ONLY| URL_DONT_ESCAPE_EXTRA_INFO , S_OK, "http://www.winehq.org/tests/foo%20bar", FALSE}, - {"http://www.winehq.org/tests/foo%20bar", URL_UNESCAPE , S_OK, "http://www.winehq.org/tests/foo bar", FALSE}, - {"http://www.winehq.org", 0, S_OK, "http://www.winehq.org/", FALSE}, - {"http:///www.winehq.org", 0, S_OK, "http:///www.winehq.org", FALSE}, - {"http:////www.winehq.org", 0, S_OK, "http:////www.winehq.org", FALSE}, - {"file:///c:/tests/foo%20bar", URL_UNESCAPE , S_OK, "file:///c:/tests/foo bar", FALSE}, - {"file:///c:/tests\foo%20bar", URL_UNESCAPE , S_OK, "file:///c:/tests/foo bar", FALSE}, - {"file:///c:/tests/foo%20bar", 0, S_OK, "file:///c:/tests/foo%20bar", FALSE}, - {"file:///c:/tests/foo%20bar", URL_FILE_USE_PATHURL, S_OK, "file://c:\tests\foo bar", FALSE}, - {"file://localhost/c:/tests/../tests/foo%20bar", URL_FILE_USE_PATHURL, S_OK, "file://c:\tests\foo bar", FALSE}, - {"file://localhost\c:/tests/../tests/foo%20bar", URL_FILE_USE_PATHURL, S_OK, "file://c:\tests\foo bar", FALSE}, - {"file://localhost\\c:/tests/../tests/foo%20bar", URL_FILE_USE_PATHURL, S_OK, "file://c:\tests\foo bar", FALSE}, - {"file://localhost\c:\tests/../tests/foo%20bar", URL_FILE_USE_PATHURL, S_OK, "file://c:\tests\foo bar", FALSE}, - {"file://c:/tests/../tests/foo%20bar", URL_FILE_USE_PATHURL, S_OK, "file://c:\tests\foo bar", FALSE}, - {"file://c:/tests\../tests/foo%20bar", URL_FILE_USE_PATHURL, S_OK, "file://c:\tests\foo bar", FALSE}, - {"file://c:/tests/foo%20bar", URL_FILE_USE_PATHURL, S_OK, "file://c:\tests\foo bar", FALSE}, - {"file:///c://tests/foo%20bar", URL_FILE_USE_PATHURL, S_OK, "file://c:\\tests\foo bar", FALSE}, - {"file:///c:\tests\foo bar", 0, S_OK, "file:///c:/tests/foo bar", FALSE}, - {"file:///c:\tests\foo bar", URL_DONT_SIMPLIFY, S_OK, "file:///c:/tests/foo bar", FALSE}, - {"file:///c:\tests\foobar", 0, S_OK, "file:///c:/tests/foobar", FALSE}, - {"file:///c:\tests\foobar", URL_WININET_COMPATIBILITY, S_OK, "file://c:\tests\foobar", FALSE}, - {"file://home/user/file", 0, S_OK, "file://home/user/file", FALSE}, - {"file:///home/user/file", 0, S_OK, "file:///home/user/file", FALSE}, - {"file:////home/user/file", 0, S_OK, "file://home/user/file", FALSE}, - {"file://home/user/file", URL_WININET_COMPATIBILITY, S_OK, "file://\\home\user\file", FALSE}, - {"file:///home/user/file", URL_WININET_COMPATIBILITY, S_OK, "file://\home\user\file", FALSE}, - {"file:////home/user/file", URL_WININET_COMPATIBILITY, S_OK, "file://\\home\user\file", FALSE}, - {"file://///home/user/file", URL_WININET_COMPATIBILITY, S_OK, "file://\\home\user\file", FALSE}, - {"file://C:/user/file", 0, S_OK, "file:///C:/user/file", FALSE}, - {"file://C:/user/file/../asdf", 0, S_OK, "file:///C:/user/asdf", FALSE}, - {"file:///C:/user/file", 0, S_OK, "file:///C:/user/file", FALSE}, - {"file:////C:/user/file", 0, S_OK, "file:///C:/user/file", FALSE}, - {"file://C:/user/file", URL_WININET_COMPATIBILITY, S_OK, "file://C:\user\file", FALSE}, - {"file:///C:/user/file", URL_WININET_COMPATIBILITY, S_OK, "file://C:\user\file", FALSE}, - {"file:////C:/user/file", URL_WININET_COMPATIBILITY, S_OK, "file://C:\user\file", FALSE}, - {"http:///www.winehq.org", 0, S_OK, "http:///www.winehq.org", FALSE}, - {"http:///www.winehq.org", URL_WININET_COMPATIBILITY, S_OK, "http:///www.winehq.org", FALSE}, - {"http://www.winehq.org/site/about", URL_FILE_USE_PATHURL, S_OK, "http://www.winehq.org/site/about", FALSE}, - {"file_://www.winehq.org/site/about", URL_FILE_USE_PATHURL, S_OK, "file_://www.winehq.org/site/about", FALSE}, - {"c:\dir\file", 0, S_OK, "file:///c:/dir/file", FALSE}, - {"file:///c:\dir\file", 0, S_OK, "file:///c:/dir/file", FALSE}, - {"c:dir\file", 0, S_OK, "file:///c:dir/file", FALSE}, - {"c:\tests\foo bar", URL_FILE_USE_PATHURL, S_OK, "file://c:\tests\foo bar", FALSE}, - {"c:\tests\foo bar", 0, S_OK, "file:///c:/tests/foo%20bar", FALSE}, - {"c\t:\t\te\tsts\fo\to \tbar\t", 0, S_OK, "file:///c:/tests/foo%20bar", FALSE}, - {"res://file", 0, S_OK, "res://file/", FALSE}, - {"res://file", URL_FILE_USE_PATHURL, S_OK, "res://file/", FALSE}, - {"res:///c:/tests/foo%20bar", URL_UNESCAPE , S_OK, "res:///c:/tests/foo bar", FALSE}, - {"res:///c:/tests\foo%20bar", URL_UNESCAPE , S_OK, "res:///c:/tests\foo bar", FALSE}, - {"res:///c:/tests/foo%20bar", 0, S_OK, "res:///c:/tests/foo%20bar", FALSE}, - {"res:///c:/tests/foo%20bar", URL_FILE_USE_PATHURL, S_OK, "res:///c:/tests/foo%20bar", FALSE}, - {"res://c:/tests/../tests/foo%20bar", URL_FILE_USE_PATHURL, S_OK, "res://c:/tests/foo%20bar", FALSE}, - {"res://c:/tests\../tests/foo%20bar", URL_FILE_USE_PATHURL, S_OK, "res://c:/tests/foo%20bar", FALSE}, - {"res://c:/tests/foo%20bar", URL_FILE_USE_PATHURL, S_OK, "res://c:/tests/foo%20bar", FALSE}, - {"res:///c://tests/foo%20bar", URL_FILE_USE_PATHURL, S_OK, "res:///c://tests/foo%20bar", FALSE}, - {"res:///c:\tests\foo bar", 0, S_OK, "res:///c:\tests\foo bar", FALSE}, - {"res:///c:\tests\foo bar", URL_DONT_SIMPLIFY, S_OK, "res:///c:\tests\foo bar", FALSE}, - {"res://c:\tests\foo bar/res", URL_FILE_USE_PATHURL, S_OK, "res://c:\tests\foo bar/res", FALSE}, - {"res://c:\tests/res\foo%20bar/strange\sth", 0, S_OK, "res://c:\tests/res\foo%20bar/strange\sth", FALSE}, - {"res://c:\tests/res\foo%20bar/strange\sth", URL_FILE_USE_PATHURL, S_OK, "res://c:\tests/res\foo%20bar/strange\sth", FALSE}, - {"res://c:\tests/res\foo%20bar/strange\sth", URL_UNESCAPE, S_OK, "res://c:\tests/res\foo bar/strange\sth", FALSE}, - {"/A/../B/./C/../../test_remove_dot_segments", 0, S_OK, "/test_remove_dot_segments", FALSE}, - {"/A/../B/./C/../../test_remove_dot_segments", URL_FILE_USE_PATHURL, S_OK, "/test_remove_dot_segments", FALSE}, - {"/A/../B/./C/../../test_remove_dot_segments", URL_WININET_COMPATIBILITY, S_OK, "/test_remove_dot_segments", FALSE}, - {"/A/B\C/D\E", 0, S_OK, "/A/B\C/D\E", FALSE}, - {"/A/B\C/D\E", URL_FILE_USE_PATHURL, S_OK, "/A/B\C/D\E", FALSE}, - {"/A/B\C/D\E", URL_WININET_COMPATIBILITY, S_OK, "/A/B\C/D\E", FALSE}, - {"///A/../B", 0, S_OK, "///B", FALSE}, - {"///A/../B", URL_FILE_USE_PATHURL, 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/../B", 0, S_OK, "B", 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%22%7D, - {"http://localhost/te%20st.html", URL_FILE_USE_PATHURL, S_OK, "http://localhost/te%20st.html%22%7D, - {"http://www.winehq.org/%E6%A1%9C.html", URL_FILE_USE_PATHURL, S_OK, "http://www.winehq.org/%E6%A1%9C.html%22%7D, - {"mk:@MSITStore:C:\Program Files/AutoCAD 2008\Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm", 0, S_OK, "mk:@MSITStore:C:\Program Files/AutoCAD 2008\Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm"}, - {"ftp:@MSITStore:C:\Program Files/AutoCAD 2008\Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm", 0, S_OK, "ftp:@MSITStore:C:\Program Files/AutoCAD 2008\Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm"}, - {"file:@MSITStore:C:\Program Files/AutoCAD 2008\Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm", 0, S_OK, "file:@MSITStore:C:/Program Files/AutoCAD 2008/Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm"}, - {"http:@MSITStore:C:\Program Files/AutoCAD 2008\Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm", 0, S_OK, "http:@MSITStore:C:/Program Files/AutoCAD 2008/Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm"}, - {"http:@MSITStore:C:\Program Files/AutoCAD 2008\Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm", URL_FILE_USE_PATHURL, S_OK, "http:@MSITStore:C:/Program Files/AutoCAD 2008/Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm"}, - {"mk:@MSITStore:C:\Program Files/AutoCAD 2008\Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm", URL_FILE_USE_PATHURL, S_OK, "mk:@MSITStore:C:\Program Files/AutoCAD 2008\Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm"}, + {"", 0, ""}, + {"http://www.winehq.org/tests/../tests/../..", 0, "http://www.winehq.org/", TRUE}, + {"http://www.winehq.org/..", 0, "http://www.winehq.org/..", FALSE}, + {"http://www.winehq.org/tests/tests2/../../tests", 0, "http://www.winehq.org/tests", FALSE}, + {"http://www.winehq.org/tests/../tests", 0, "http://www.winehq.org/tests", FALSE}, + {"http://www.winehq.org/tests%5Cn", URL_WININET_COMPATIBILITY|URL_ESCAPE_SPACES_ONLY|URL_ESCAPE_UNSAFE, "http://www.winehq.org/tests", FALSE}, + {"http://www.winehq.org/tests%5Cr", URL_WININET_COMPATIBILITY|URL_ESCAPE_SPACES_ONLY|URL_ESCAPE_UNSAFE, "http://www.winehq.org/tests", FALSE}, + {"http://www.winehq.org/tests%5Cr", 0, "http://www.winehq.org/tests", FALSE}, + {"http://www.winehq.org/tests%5Cr", URL_DONT_SIMPLIFY, "http://www.winehq.org/tests", FALSE}, + {"http://www.winehq.org/tests/../tests/", 0, "http://www.winehq.org/tests/", FALSE}, + {"http://www.winehq.org/tests/../tests/..", 0, "http://www.winehq.org/", FALSE}, + {"http://www.winehq.org/tests/../tests/../", 0, "http://www.winehq.org/", FALSE}, + {"http://www.winehq.org/tests/..", 0, "http://www.winehq.org/", FALSE}, + {"http://www.winehq.org/tests/../", 0, "http://www.winehq.org/", FALSE}, + {"http://www.winehq.org/tests/..?query=x&return=y", 0, "http://www.winehq.org/?query=x&return=y", FALSE}, + {"http://www.winehq.org/tests/../?query=x&return=y", 0, "http://www.winehq.org/?query=x&return=y", FALSE}, + {"\tht\ttp\t://www\t.w\tineh\t\tq.or\tg\t/\ttests/..\t?\tquer\ty=x\t\t&re\tturn=y\t\t", 0, "http://www.winehq.org/?query=x&return=y", FALSE}, + {"http://www.winehq.org/tests/..#example", 0, "http://www.winehq.org/#example", FALSE}, + {"http://www.winehq.org/tests/../#example", 0, "http://www.winehq.org/#example", FALSE}, + {"http://www.winehq.org/tests%5C%5C../#example", 0, "http://www.winehq.org/#example", FALSE}, + {"http://www.winehq.org/tests/..%5C%5C#example", 0, "http://www.winehq.org/#example", FALSE}, + {"http://www.winehq.org%5C%5Ctests/../#example", 0, "http://www.winehq.org/#example", FALSE}, + {"http://www.winehq.org/tests/../#example", URL_DONT_SIMPLIFY, "http://www.winehq.org/tests/../#example", FALSE}, + {"http://www.winehq.org/tests/foo bar", URL_ESCAPE_SPACES_ONLY | URL_DONT_ESCAPE_EXTRA_INFO, "http://www.winehq.org/tests/foo%20bar", FALSE}, + {"http://www.winehq.org/tests/foo%20bar", URL_UNESCAPE, "http://www.winehq.org/tests/foo bar", FALSE}, + {"http://www.winehq.org", 0, "http://www.winehq.org/", FALSE}, + {"http:///www.winehq.org", 0, "http:///www.winehq.org", FALSE}, + {"http:////www.winehq.org", 0, "http:////www.winehq.org", FALSE}, + {"file:///c:/tests/foo%20bar", URL_UNESCAPE, "file:///c:/tests/foo bar", FALSE}, + {"file:///c:/tests\foo%20bar", URL_UNESCAPE, "file:///c:/tests/foo bar", FALSE}, + {"file:///c:/tests/foo%20bar", 0, "file:///c:/tests/foo%20bar", FALSE}, + {"file:///c:/tests/foo%20bar", URL_FILE_USE_PATHURL, "file://c:\tests\foo bar", FALSE}, + {"file://localhost/c:/tests/../tests/foo%20bar", URL_FILE_USE_PATHURL, "file://c:\tests\foo bar", FALSE}, + {"file://localhost\c:/tests/../tests/foo%20bar", URL_FILE_USE_PATHURL, "file://c:\tests\foo bar", FALSE}, + {"file://localhost\\c:/tests/../tests/foo%20bar", URL_FILE_USE_PATHURL, "file://c:\tests\foo bar", FALSE}, + {"file://localhost\c:\tests/../tests/foo%20bar", URL_FILE_USE_PATHURL, "file://c:\tests\foo bar", FALSE}, + {"file://c:/tests/../tests/foo%20bar", URL_FILE_USE_PATHURL, "file://c:\tests\foo bar", FALSE}, + {"file://c:/tests\../tests/foo%20bar", URL_FILE_USE_PATHURL, "file://c:\tests\foo bar", FALSE}, + {"file://c:/tests/foo%20bar", URL_FILE_USE_PATHURL, "file://c:\tests\foo bar", FALSE}, + {"file:///c://tests/foo%20bar", URL_FILE_USE_PATHURL, "file://c:\\tests\foo bar", FALSE}, + {"file:///c:\tests\foo bar", 0, "file:///c:/tests/foo bar", FALSE}, + {"file:///c:\tests\foo bar", URL_DONT_SIMPLIFY, "file:///c:/tests/foo bar", FALSE}, + {"file:///c:\tests\foobar", 0, "file:///c:/tests/foobar", FALSE}, + {"file:///c:\tests\foobar", URL_WININET_COMPATIBILITY, "file://c:\tests\foobar", FALSE}, + {"file://home/user/file", 0, "file://home/user/file", FALSE}, + {"file:///home/user/file", 0, "file:///home/user/file", FALSE}, + {"file:////home/user/file", 0, "file://home/user/file", FALSE}, + {"file://home/user/file", URL_WININET_COMPATIBILITY, "file://\\home\user\file", FALSE}, + {"file:///home/user/file", URL_WININET_COMPATIBILITY, "file://\home\user\file", FALSE}, + {"file:////home/user/file", URL_WININET_COMPATIBILITY, "file://\\home\user\file", FALSE}, + {"file://///home/user/file", URL_WININET_COMPATIBILITY, "file://\\home\user\file", FALSE}, + {"file://C:/user/file", 0, "file:///C:/user/file", FALSE}, + {"file://C:/user/file/../asdf", 0, "file:///C:/user/asdf", FALSE}, + {"file:///C:/user/file", 0, "file:///C:/user/file", FALSE}, + {"file:////C:/user/file", 0, "file:///C:/user/file", FALSE}, + {"file://C:/user/file", URL_WININET_COMPATIBILITY, "file://C:\user\file", FALSE}, + {"file:///C:/user/file", URL_WININET_COMPATIBILITY, "file://C:\user\file", FALSE}, + {"file:////C:/user/file", URL_WININET_COMPATIBILITY, "file://C:\user\file", FALSE}, + {"http:///www.winehq.org", 0, "http:///www.winehq.org", FALSE}, + {"http:///www.winehq.org", URL_WININET_COMPATIBILITY, "http:///www.winehq.org", FALSE}, + {"http://www.winehq.org/site/about", URL_FILE_USE_PATHURL, "http://www.winehq.org/site/about", FALSE}, + {"file_://www.winehq.org/site/about", URL_FILE_USE_PATHURL, "file_://www.winehq.org/site/about", FALSE}, + {"c:\dir\file", 0, "file:///c:/dir/file", FALSE}, + {"file:///c:\dir\file", 0, "file:///c:/dir/file", FALSE}, + {"c:dir\file", 0, "file:///c:dir/file", FALSE}, + {"c:\tests\foo bar", URL_FILE_USE_PATHURL, "file://c:\tests\foo bar", FALSE}, + {"c:\tests\foo bar", 0, "file:///c:/tests/foo%20bar", FALSE}, + {"c\t:\t\te\tsts\fo\to \tbar\t", 0, "file:///c:/tests/foo%20bar", FALSE}, + {"res://file", 0, "res://file/", FALSE}, + {"res://file", URL_FILE_USE_PATHURL, "res://file/", FALSE}, + {"res:///c:/tests/foo%20bar", URL_UNESCAPE, "res:///c:/tests/foo bar", FALSE}, + {"res:///c:/tests\foo%20bar", URL_UNESCAPE, "res:///c:/tests\foo bar", FALSE}, + {"res:///c:/tests/foo%20bar", 0, "res:///c:/tests/foo%20bar", FALSE}, + {"res:///c:/tests/foo%20bar", URL_FILE_USE_PATHURL, "res:///c:/tests/foo%20bar", FALSE}, + {"res://c:/tests/../tests/foo%20bar", URL_FILE_USE_PATHURL, "res://c:/tests/foo%20bar", FALSE}, + {"res://c:/tests\../tests/foo%20bar", URL_FILE_USE_PATHURL, "res://c:/tests/foo%20bar", FALSE}, + {"res://c:/tests/foo%20bar", URL_FILE_USE_PATHURL, "res://c:/tests/foo%20bar", FALSE}, + {"res:///c://tests/foo%20bar", URL_FILE_USE_PATHURL, "res:///c://tests/foo%20bar", FALSE}, + {"res:///c:\tests\foo bar", 0, "res:///c:\tests\foo bar", FALSE}, + {"res:///c:\tests\foo bar", URL_DONT_SIMPLIFY, "res:///c:\tests\foo bar", FALSE}, + {"res://c:\tests\foo bar/res", URL_FILE_USE_PATHURL, "res://c:\tests\foo bar/res", FALSE}, + {"res://c:\tests/res\foo%20bar/strange\sth", 0, "res://c:\tests/res\foo%20bar/strange\sth", FALSE}, + {"res://c:\tests/res\foo%20bar/strange\sth", URL_FILE_USE_PATHURL, "res://c:\tests/res\foo%20bar/strange\sth", FALSE}, + {"res://c:\tests/res\foo%20bar/strange\sth", URL_UNESCAPE, "res://c:\tests/res\foo bar/strange\sth", FALSE}, + {"/A/../B/./C/../../test_remove_dot_segments", 0, "/test_remove_dot_segments", FALSE}, + {"/A/../B/./C/../../test_remove_dot_segments", URL_FILE_USE_PATHURL, "/test_remove_dot_segments", FALSE}, + {"/A/../B/./C/../../test_remove_dot_segments", URL_WININET_COMPATIBILITY, "/test_remove_dot_segments", FALSE}, + {"/A/B\C/D\E", 0, "/A/B\C/D\E", FALSE}, + {"/A/B\C/D\E", URL_FILE_USE_PATHURL, "/A/B\C/D\E", FALSE}, + {"/A/B\C/D\E", URL_WININET_COMPATIBILITY, "/A/B\C/D\E", FALSE}, + {"///A/../B", 0, "///B", FALSE}, + {"///A/../B", URL_FILE_USE_PATHURL, "///B", FALSE}, + {"///A/../B", URL_WININET_COMPATIBILITY, "///B", FALSE}, + {"A", 0, "A", FALSE}, + {"../A", 0, "../A", FALSE}, + {"A/../B", 0, "B", TRUE}, + {"/uri-res/N2R?urn:sha1:B3K", URL_DONT_ESCAPE_EXTRA_INFO | URL_WININET_COMPATIBILITY /*0x82000000*/, "/uri-res/N2R?urn:sha1:B3K", FALSE} /*LimeWire online installer calls this*/, + {"http:www.winehq.org/dir/../index.html", 0, "http:www.winehq.org/index.html"}, + {"http://localhost/test.html", URL_FILE_USE_PATHURL, "http://localhost/test.html%22%7D, + {"http://localhost/te%20st.html", URL_FILE_USE_PATHURL, "http://localhost/te%20st.html%22%7D, + {"http://www.winehq.org/%E6%A1%9C.html", URL_FILE_USE_PATHURL, "http://www.winehq.org/%E6%A1%9C.html%22%7D, + {"mk:@MSITStore:C:\Program Files/AutoCAD 2008\Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm", 0, "mk:@MSITStore:C:\Program Files/AutoCAD 2008\Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm"}, + {"ftp:@MSITStore:C:\Program Files/AutoCAD 2008\Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm", 0, "ftp:@MSITStore:C:\Program Files/AutoCAD 2008\Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm"}, + {"file:@MSITStore:C:\Program Files/AutoCAD 2008\Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm", 0, "file:@MSITStore:C:/Program Files/AutoCAD 2008/Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm"}, + {"http:@MSITStore:C:\Program Files/AutoCAD 2008\Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm", 0, "http:@MSITStore:C:/Program Files/AutoCAD 2008/Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm"}, + {"http:@MSITStore:C:\Program Files/AutoCAD 2008\Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm", URL_FILE_USE_PATHURL, "http:@MSITStore:C:/Program Files/AutoCAD 2008/Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm"}, + {"mk:@MSITStore:C:\Program Files/AutoCAD 2008\Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm", URL_FILE_USE_PATHURL, "mk:@MSITStore:C:\Program Files/AutoCAD 2008\Help/acad_acg.chm::/WSfacf1429558a55de1a7524c1004e616f8b-322b.htm"}, };
/* ################ */ @@ -787,7 +787,7 @@ static void test_UrlGetPart(void) }
/* ########################### */ -static void test_url_canonicalize(int index, const char *szUrl, DWORD dwFlags, HRESULT dwExpectReturn, HRESULT dwExpectReturnAlt, const char *szExpectUrl, BOOL todo) +static void check_url_canonicalize(int index, const char *szUrl, DWORD dwFlags, const char *szExpectUrl, BOOL todo) { CHAR szReturnUrl[INTERNET_MAX_URL_LENGTH]; WCHAR wszReturnUrl[INTERNET_MAX_URL_LENGTH]; @@ -800,20 +800,18 @@ static void test_url_canonicalize(int index, const char *szUrl, DWORD dwFlags, H
dwSize = INTERNET_MAX_URL_LENGTH; ret = UrlCanonicalizeA(szUrl, NULL, &dwSize, dwFlags); - ok(ret != dwExpectReturn, "got 0s%x: Unexpected return for NULL buffer, index %d\n", ret, index); + ok(ret == E_INVALIDARG, "Got unexpected hr %#x for index %d.\n", ret, index); ret = UrlCanonicalizeA(szUrl, szReturnUrl, &dwSize, dwFlags); - ok(ret == dwExpectReturn || ret == dwExpectReturnAlt, - "UrlCanonicalizeA failed: expected=0x%08x or 0x%08x, got=0x%08x, index %d\n", - dwExpectReturn, dwExpectReturnAlt, ret, index); + ok(ret == S_OK || (!szUrl[0] && ret == S_FALSE) /* Vista+ */, + "Got unexpected hr %#x for index %d.\n", ret, index); todo_wine_if (todo) ok(strcmp(szReturnUrl,szExpectUrl)==0, "UrlCanonicalizeA dwFlags 0x%08x url '%s' Expected "%s", but got "%s", index %d\n", dwFlags, szUrl, szExpectUrl, szReturnUrl, index);
dwSize = INTERNET_MAX_URL_LENGTH; ret = UrlCanonicalizeW(wszUrl, NULL, &dwSize, dwFlags); - ok(ret != dwExpectReturn, "got 0x%x: Unexpected return for NULL buffer, index %d\n", ret, index); + ok(ret == E_INVALIDARG, "Got unexpected hr %#x for index %d.\n", ret, index); ret = UrlCanonicalizeW(wszUrl, wszReturnUrl, &dwSize, dwFlags); - ok(ret == dwExpectReturn, "UrlCanonicalizeW failed: expected 0x%08x, got 0x%x, index %d\n", - dwExpectReturn, ret, index); + ok(ret == S_OK, "Got unexpected hr %#x for index %d.\n", ret, index);
wszConvertedUrl = GetWideString(szReturnUrl); ok(lstrcmpW(wszReturnUrl, wszConvertedUrl)==0, @@ -1067,13 +1065,10 @@ static void test_UrlCanonicalizeA(void) hr = UrlCanonicalizeA(longurl, szReturnUrl, &dwSize, URL_WININET_COMPATIBILITY | URL_ESCAPE_UNSAFE); ok(hr == S_OK, "hr = %x\n", hr);
- test_url_canonicalize(-1, "", 0, S_OK, S_FALSE /* Vista/win2k8 */, "", FALSE); - /* test url-modification */ for (i = 0; i < ARRAY_SIZE(TEST_CANONICALIZE); i++) { - test_url_canonicalize(i, TEST_CANONICALIZE[i].url, TEST_CANONICALIZE[i].flags, - TEST_CANONICALIZE[i].expectret, TEST_CANONICALIZE[i].expectret, TEST_CANONICALIZE[i].expecturl, - TEST_CANONICALIZE[i].todo); + check_url_canonicalize(i, TEST_CANONICALIZE[i].url, TEST_CANONICALIZE[i].flags, + TEST_CANONICALIZE[i].expecturl, TEST_CANONICALIZE[i].todo); } }
Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- dlls/shlwapi/tests/url.c | 139 +++++++++++++++++++-------------------- 1 file changed, 67 insertions(+), 72 deletions(-)
diff --git a/dlls/shlwapi/tests/url.c b/dlls/shlwapi/tests/url.c index e0130468c74..ee8d61b7460 100644 --- a/dlls/shlwapi/tests/url.c +++ b/dlls/shlwapi/tests/url.c @@ -337,70 +337,69 @@ typedef struct _TEST_URL_COMBINE { const char *url1; const char *url2; DWORD flags; - HRESULT expectret; const char *expecturl; } TEST_URL_COMBINE;
static const TEST_URL_COMBINE TEST_COMBINE[] = { - {"http://www.winehq.org/tests", "tests1", 0, S_OK, "http://www.winehq.org/tests1%22%7D, - {"http://www.%77inehq.org/tests", "tests1", 0, S_OK, "http://www.%77inehq.org/tests1%22%7D, - /*FIXME {"http://www.winehq.org/tests", "../tests2", 0, S_OK, "http://www.winehq.org/tests2%22%7D,*/ - {"http://www.winehq.org/tests/", "../tests3", 0, S_OK, "http://www.winehq.org/tests3%22%7D, - {"http://www.winehq.org/tests/test1", "test2", 0, S_OK, "http://www.winehq.org/tests/test2%22%7D, - {"http://www.winehq.org/tests/../tests", "tests4", 0, S_OK, "http://www.winehq.org/tests4%22%7D, - {"http://www.winehq.org/tests/../tests/", "tests5", 0, S_OK, "http://www.winehq.org/tests/tests5%22%7D, - {"http://www.winehq.org/tests/../tests/", "/tests6/..", 0, S_OK, "http://www.winehq.org/%22%7D, - {"http://www.winehq.org/tests/../tests/..", "tests7/..", 0, S_OK, "http://www.winehq.org/%22%7D, - {"http://www.winehq.org/tests/?query=x&return=y", "tests8", 0, S_OK, "http://www.winehq.org/tests/tests8%22%7D, - {"http://www.winehq.org/tests/#example", "tests9", 0, S_OK, "http://www.winehq.org/tests/tests9%22%7D, - {"http://www.winehq.org/tests/../tests/", "/tests10/..", URL_DONT_SIMPLIFY, S_OK, "http://www.winehq.org/tests10/..%22%7D, - {"http://www.winehq.org/tests/../", "tests11", URL_DONT_SIMPLIFY, S_OK, "http://www.winehq.org/tests/../tests11%22%7D, - {"http://www.winehq.org/test12", "#", 0, S_OK, "http://www.winehq.org/test12#%22%7D, - {"http://www.winehq.org/test13#aaa", "#bbb", 0, S_OK, "http://www.winehq.org/test13#bbb%22%7D, - {"http://www.winehq.org/test14#aaa/bbb#ccc", "#", 0, S_OK, "http://www.winehq.org/test14#%22%7D, - {"http://www.winehq.org/tests/?query=x/y/z", "tests15", 0, S_OK, "http://www.winehq.org/tests/tests15%22%7D, - {"http://www.winehq.org/tests/?query=x/y/z#example", "tests16", 0, S_OK, "http://www.winehq.org/tests/tests16%22%7D, - {"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"}, - {"file:///C:\dir\file.htm#hash\hash", "test.htm", 0, S_OK, "file:///C:/dir/test.htm"}, - {"file:///C:\dir\file.hTmL#hash\hash", "test.hTmL", 0, S_OK, "file:///C:/dir/test.hTmL"}, - {"file:///C:\dir.html\file.txt#hash\hash", "test.txt", 0, S_OK, "file:///C:/dir.html/file.txt#hash/test.txt"}, - {"C:\winehq\winehq.txt", "C:\Test\test.txt", 0, S_OK, "file:///C:/Test/test.txt"}, - {"http://www.winehq.org/test/", "test%20file.txt", 0, S_OK, "http://www.winehq.org/test/test%20file.txt%22%7D, - {"http://www.winehq.org/test/", "test%20file.txt", URL_FILE_USE_PATHURL, S_OK, "http://www.winehq.org/test/test%20file.txt%22%7D, - {"http://www.winehq.org%2ftest/", "test%20file.txt", URL_FILE_USE_PATHURL, S_OK, "http://www.winehq.org%2ftest/test%20file.txt%22%7D, - {"xxx:@MSITStore:file.chm/file.html", "dir/file", 0, S_OK, "xxx:dir/file"}, - {"mk:@MSITStore:file.chm::/file.html", "/dir/file", 0, S_OK, "mk:@MSITStore:file.chm::/dir/file"}, - {"mk:@MSITStore:file.chm::/file.html", "mk:@MSITStore:file.chm::/dir/file", 0, S_OK, "mk:@MSITStore:file.chm::/dir/file"}, - {"foo:today", "foo:calendar", 0, S_OK, "foo:calendar"}, - {"foo:today", "bar:calendar", 0, S_OK, "bar:calendar"}, - {"foo:/today", "foo:calendar", 0, S_OK, "foo:/calendar"}, - {"Foo:/today/", "fOo:calendar", 0, S_OK, "foo:/today/calendar"}, - {"mk:@MSITStore:dir/test.chm::dir/index.html", "image.jpg", 0, S_OK, "mk:@MSITStore:dir/test.chm::dir/image.jpg"}, - {"mk:@MSITStore:dir/test.chm::dir/dir2/index.html", "../image.jpg", 0, S_OK, "mk:@MSITStore:dir/test.chm::dir/image.jpg"}, + {"http://www.winehq.org/tests", "tests1", 0, "http://www.winehq.org/tests1%22%7D, + {"http://www.%77inehq.org/tests", "tests1", 0, "http://www.%77inehq.org/tests1%22%7D, + /*FIXME {"http://www.winehq.org/tests", "../tests2", 0, "http://www.winehq.org/tests2%22%7D,*/ + {"http://www.winehq.org/tests/", "../tests3", 0, "http://www.winehq.org/tests3%22%7D, + {"http://www.winehq.org/tests/test1", "test2", 0, "http://www.winehq.org/tests/test2%22%7D, + {"http://www.winehq.org/tests/../tests", "tests4", 0, "http://www.winehq.org/tests4%22%7D, + {"http://www.winehq.org/tests/../tests/", "tests5", 0, "http://www.winehq.org/tests/tests5%22%7D, + {"http://www.winehq.org/tests/../tests/", "/tests6/..", 0, "http://www.winehq.org/%22%7D, + {"http://www.winehq.org/tests/../tests/..", "tests7/..", 0, "http://www.winehq.org/%22%7D, + {"http://www.winehq.org/tests/?query=x&return=y", "tests8", 0, "http://www.winehq.org/tests/tests8%22%7D, + {"http://www.winehq.org/tests/#example", "tests9", 0, "http://www.winehq.org/tests/tests9%22%7D, + {"http://www.winehq.org/tests/../tests/", "/tests10/..", URL_DONT_SIMPLIFY, "http://www.winehq.org/tests10/..%22%7D, + {"http://www.winehq.org/tests/../", "tests11", URL_DONT_SIMPLIFY, "http://www.winehq.org/tests/../tests11%22%7D, + {"http://www.winehq.org/test12", "#", 0, "http://www.winehq.org/test12#%22%7D, + {"http://www.winehq.org/test13#aaa", "#bbb", 0, "http://www.winehq.org/test13#bbb%22%7D, + {"http://www.winehq.org/test14#aaa/bbb#ccc", "#", 0, "http://www.winehq.org/test14#%22%7D, + {"http://www.winehq.org/tests/?query=x/y/z", "tests15", 0, "http://www.winehq.org/tests/tests15%22%7D, + {"http://www.winehq.org/tests/?query=x/y/z#example", "tests16", 0, "http://www.winehq.org/tests/tests16%22%7D, + {"file:///C:\dir\file.txt", "test.txt", 0, "file:///C:/dir/test.txt"}, + {"file:///C:\dir\file.txt#hash\hash", "test.txt", 0, "file:///C:/dir/file.txt#hash/test.txt"}, + {"file:///C:\dir\file.html#hash\hash", "test.html", 0, "file:///C:/dir/test.html"}, + {"file:///C:\dir\file.htm#hash\hash", "test.htm", 0, "file:///C:/dir/test.htm"}, + {"file:///C:\dir\file.hTmL#hash\hash", "test.hTmL", 0, "file:///C:/dir/test.hTmL"}, + {"file:///C:\dir.html\file.txt#hash\hash", "test.txt", 0, "file:///C:/dir.html/file.txt#hash/test.txt"}, + {"C:\winehq\winehq.txt", "C:\Test\test.txt", 0, "file:///C:/Test/test.txt"}, + {"http://www.winehq.org/test/", "test%20file.txt", 0, "http://www.winehq.org/test/test%20file.txt%22%7D, + {"http://www.winehq.org/test/", "test%20file.txt", URL_FILE_USE_PATHURL, "http://www.winehq.org/test/test%20file.txt%22%7D, + {"http://www.winehq.org%2ftest/", "test%20file.txt", URL_FILE_USE_PATHURL, "http://www.winehq.org%2ftest/test%20file.txt%22%7D, + {"xxx:@MSITStore:file.chm/file.html", "dir/file", 0, "xxx:dir/file"}, + {"mk:@MSITStore:file.chm::/file.html", "/dir/file", 0, "mk:@MSITStore:file.chm::/dir/file"}, + {"mk:@MSITStore:file.chm::/file.html", "mk:@MSITStore:file.chm::/dir/file", 0, "mk:@MSITStore:file.chm::/dir/file"}, + {"foo:today", "foo:calendar", 0, "foo:calendar"}, + {"foo:today", "bar:calendar", 0, "bar:calendar"}, + {"foo:/today", "foo:calendar", 0, "foo:/calendar"}, + {"Foo:/today/", "fOo:calendar", 0, "foo:/today/calendar"}, + {"mk:@MSITStore:dir/test.chm::dir/index.html", "image.jpg", 0, "mk:@MSITStore:dir/test.chm::dir/image.jpg"}, + {"mk:@MSITStore:dir/test.chm::dir/dir2/index.html", "../image.jpg", 0, "mk:@MSITStore:dir/test.chm::dir/image.jpg"}, /* UrlCombine case 2 tests. Schemes do not match */ - {"outbind://xxxxxxxxx","http://wine1/dir%22,0, S_OK,"http://wine1/dir%22%7D, - {"xxxx://xxxxxxxxx","http://wine2/dir%22,0, S_OK,"http://wine2/dir%22%7D, - {"ftp://xxxxxxxxx/","http://wine3/dir%22,0, S_OK,"http://wine3/dir%22%7D, - {"outbind://xxxxxxxxx","http://wine4/dir%22,URL_PLUGGABLE_PROTOCOL, S_OK,"http://wine4/dir%22%7D, - {"xxx://xxxxxxxxx","http://wine5/dir%22,URL_PLUGGABLE_PROTOCOL, S_OK,"http://wine5/dir%22%7D, - {"ftp://xxxxxxxxx/","http://wine6/dir%22,URL_PLUGGABLE_PROTOCOL, S_OK,"http://wine6/dir%22%7D, - {"http://xxxxxxxxx%22,%22outbind://wine7/dir%22,0, S_OK,"outbind://wine7/dir"}, - {"xxx://xxxxxxxxx","ftp://wine8/dir",0, S_OK,"ftp://wine8/dir"}, - {"ftp://xxxxxxxxx/","xxx://wine9/dir",0, S_OK,"xxx://wine9/dir"}, - {"http://xxxxxxxxx%22,%22outbind://wine10/dir%22,URL_PLUGGABLE_PROTOCOL, S_OK,"outbind://wine10/dir"}, - {"xxx://xxxxxxxxx","ftp://wine11/dir",URL_PLUGGABLE_PROTOCOL, S_OK,"ftp://wine11/dir"}, - {"ftp://xxxxxxxxx/","xxx://wine12/dir",URL_PLUGGABLE_PROTOCOL, S_OK,"xxx://wine12/dir"}, - {"http://xxxxxxxxx%22,%22outbind:wine13/dir%22,0, S_OK,"outbind:wine13/dir"}, - {"xxx://xxxxxxxxx","ftp:wine14/dir",0, S_OK,"ftp:wine14/dir"}, - {"ftp://xxxxxxxxx/","xxx:wine15/dir",0, S_OK,"xxx:wine15/dir"}, - {"outbind://xxxxxxxxx/","http:wine16/dir",0, S_OK,"http:wine16/dir"}, - {"http://xxxxxxxxx%22,%22outbind:wine17/dir%22,URL_PLUGGABLE_PROTOCOL, S_OK,"outbind:wine17/dir"}, - {"xxx://xxxxxxxxx","ftp:wine18/dir",URL_PLUGGABLE_PROTOCOL, S_OK,"ftp:wine18/dir"}, - {"ftp://xxxxxxxxx/","xXx:wine19/dir",URL_PLUGGABLE_PROTOCOL, S_OK,"xxx:wine19/dir"}, - {"outbind://xxxxxxxxx/","http:wine20/dir",URL_PLUGGABLE_PROTOCOL, S_OK,"http:wine20/dir"}, - {"file:///c:/dir/file.txt","index.html?test=c:/abc",URL_ESCAPE_SPACES_ONLY|URL_DONT_ESCAPE_EXTRA_INFO,S_OK,"file:///c:/dir/index.html?test=c:/abc"} + {"outbind://xxxxxxxxx", "http://wine1/dir", 0, "http://wine1/dir%22%7D, + {"xxxx://xxxxxxxxx", "http://wine2/dir", 0, "http://wine2/dir%22%7D, + {"ftp://xxxxxxxxx/", "http://wine3/dir", 0, "http://wine3/dir%22%7D, + {"outbind://xxxxxxxxx", "http://wine4/dir", URL_PLUGGABLE_PROTOCOL, "http://wine4/dir%22%7D, + {"xxx://xxxxxxxxx", "http://wine5/dir", URL_PLUGGABLE_PROTOCOL, "http://wine5/dir%22%7D, + {"ftp://xxxxxxxxx/", "http://wine6/dir", URL_PLUGGABLE_PROTOCOL, "http://wine6/dir%22%7D, + {"http://xxxxxxxxx", "outbind://wine7/dir", 0, "outbind://wine7/dir"}, + {"xxx://xxxxxxxxx", "ftp://wine8/dir", 0, "ftp://wine8/dir"}, + {"ftp://xxxxxxxxx/", "xxx://wine9/dir", 0, "xxx://wine9/dir"}, + {"http://xxxxxxxxx", "outbind://wine10/dir", URL_PLUGGABLE_PROTOCOL, "outbind://wine10/dir"}, + {"xxx://xxxxxxxxx", "ftp://wine11/dir", URL_PLUGGABLE_PROTOCOL, "ftp://wine11/dir"}, + {"ftp://xxxxxxxxx/", "xxx://wine12/dir", URL_PLUGGABLE_PROTOCOL, "xxx://wine12/dir"}, + {"http://xxxxxxxxx", "outbind:wine13/dir", 0, "outbind:wine13/dir"}, + {"xxx://xxxxxxxxx", "ftp:wine14/dir", 0, "ftp:wine14/dir"}, + {"ftp://xxxxxxxxx/", "xxx:wine15/dir", 0, "xxx:wine15/dir"}, + {"outbind://xxxxxxxxx/", "http:wine16/dir", 0, "http:wine16/dir"}, + {"http://xxxxxxxxx", "outbind:wine17/dir", URL_PLUGGABLE_PROTOCOL, "outbind:wine17/dir"}, + {"xxx://xxxxxxxxx", "ftp:wine18/dir", URL_PLUGGABLE_PROTOCOL, "ftp:wine18/dir"}, + {"ftp://xxxxxxxxx/", "xXx:wine19/dir", URL_PLUGGABLE_PROTOCOL, "xxx:wine19/dir"}, + {"outbind://xxxxxxxxx/", "http:wine20/dir", URL_PLUGGABLE_PROTOCOL, "http:wine20/dir"}, + {"file:///c:/dir/file.txt", "index.html?test=c:/abc", URL_ESCAPE_SPACES_ONLY|URL_DONT_ESCAPE_EXTRA_INFO, "file:///c:/dir/index.html?test=c:/abc"} };
/* ################ */ @@ -1160,7 +1159,7 @@ static void test_UrlCanonicalizeW(void)
/* ########################### */
-static void test_url_combine(const char *szUrl1, const char *szUrl2, DWORD dwFlags, HRESULT dwExpectReturn, const char *szExpectUrl) +static void check_url_combine(const char *szUrl1, const char *szUrl2, DWORD dwFlags, const char *szExpectUrl) { HRESULT hr; CHAR szReturnUrl[INTERNET_MAX_URL_LENGTH]; @@ -1188,11 +1187,9 @@ static void test_url_combine(const char *szUrl1, const char *szUrl2, DWORD dwFla ok(dwSize == dwExpectLen+1, "Got length %d, expected %d\n", dwSize, dwExpectLen+1);
hr = UrlCombineA(szUrl1, szUrl2, szReturnUrl, &dwSize, dwFlags); - ok(hr == dwExpectReturn, "UrlCombineA returned 0x%08x, expected 0x%08x\n", hr, dwExpectReturn); + ok(hr == S_OK, "Got unexpected hr %#x.\n", hr); 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(!strcmp(szReturnUrl, szExpectUrl), "Expected %s, got %s.\n", szExpectUrl, szReturnUrl);
dwSize = 0; hr = UrlCombineW(wszUrl1, wszUrl2, NULL, &dwSize, dwFlags); @@ -1205,13 +1202,12 @@ static void test_url_combine(const char *szUrl1, const char *szUrl2, DWORD dwFla ok(dwSize == dwExpectLen+1, "Got length %d, expected %d\n", dwSize, dwExpectLen+1);
hr = UrlCombineW(wszUrl1, wszUrl2, wszReturnUrl, &dwSize, dwFlags); - ok(hr == dwExpectReturn, "UrlCombineW returned 0x%08x, expected 0x%08x\n", hr, dwExpectReturn); + ok(hr == S_OK, "Got unexpected hr %#x.\n", hr); 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 ansi and unicode UrlCombine!\n"); - FreeWideString(wszConvertedUrl); - } + wszConvertedUrl = GetWideString(szReturnUrl); + ok(!wcscmp(wszReturnUrl, wszConvertedUrl), "Expected %s, got %s.\n", + debugstr_w(wszConvertedUrl), debugstr_w(wszReturnUrl)); + FreeWideString(wszConvertedUrl);
FreeWideString(wszUrl1); FreeWideString(wszUrl2); @@ -1224,8 +1220,7 @@ static void test_UrlCombine(void) { unsigned int i; for (i = 0; i < ARRAY_SIZE(TEST_COMBINE); i++) { - test_url_combine(TEST_COMBINE[i].url1, TEST_COMBINE[i].url2, TEST_COMBINE[i].flags, - TEST_COMBINE[i].expectret, TEST_COMBINE[i].expecturl); + check_url_combine(TEST_COMBINE[i].url1, TEST_COMBINE[i].url2, TEST_COMBINE[i].flags, TEST_COMBINE[i].expecturl); } }
Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- dlls/shlwapi/tests/url.c | 152 +++++++++++++++++++-------------------- 1 file changed, 74 insertions(+), 78 deletions(-)
diff --git a/dlls/shlwapi/tests/url.c b/dlls/shlwapi/tests/url.c index ee8d61b7460..8a645287b02 100644 --- a/dlls/shlwapi/tests/url.c +++ b/dlls/shlwapi/tests/url.c @@ -204,92 +204,90 @@ static const TEST_URL_CANONICALIZE TEST_CANONICALIZE[] = { typedef struct _TEST_URL_ESCAPE { const char *url; DWORD flags; - DWORD expectescaped; - HRESULT expectret; const char *expecturl; } TEST_URL_ESCAPE;
static const TEST_URL_ESCAPE TEST_ESCAPE[] = { - {"http://www.winehq.org/tests0", 0, 0, S_OK, "http://www.winehq.org/tests0%22%7D, - {"http://www.winehq.org/tests1%5Cn", 0, 0, S_OK, "http://www.winehq.org/tests1%0A%22%7D, - {"http://www.winehq.org/tests2%5Cr", 0, 0, S_OK, "http://www.winehq.org/tests2%0D%22%7D, - {"http://www.winehq.org/tests3%5Cr", URL_ESCAPE_SPACES_ONLY|URL_ESCAPE_UNSAFE, 0, S_OK, "http://www.winehq.org/tests3%5Cr%22%7D, - {"http://www.winehq.org/tests4%5Cr", URL_ESCAPE_SPACES_ONLY, 0, S_OK, "http://www.winehq.org/tests4%5Cr%22%7D, - {"http://www.winehq.org/tests5%5Cr", URL_WININET_COMPATIBILITY|URL_ESCAPE_SPACES_ONLY, 0, S_OK, "http://www.winehq.org/tests5%5Cr%22%7D, - {"/direct/swhelp/series6/6.2i_latestservicepack.dat\r", URL_ESCAPE_SPACES_ONLY, 0, S_OK, "/direct/swhelp/series6/6.2i_latestservicepack.dat\r"}, + {"http://www.winehq.org/tests0", 0, "http://www.winehq.org/tests0%22%7D, + {"http://www.winehq.org/tests1%5Cn", 0, "http://www.winehq.org/tests1%0A%22%7D, + {"http://www.winehq.org/tests2%5Cr", 0, "http://www.winehq.org/tests2%0D%22%7D, + {"http://www.winehq.org/tests3%5Cr", URL_ESCAPE_SPACES_ONLY|URL_ESCAPE_UNSAFE, "http://www.winehq.org/tests3%5Cr%22%7D, + {"http://www.winehq.org/tests4%5Cr", URL_ESCAPE_SPACES_ONLY, "http://www.winehq.org/tests4%5Cr%22%7D, + {"http://www.winehq.org/tests5%5Cr", URL_WININET_COMPATIBILITY|URL_ESCAPE_SPACES_ONLY, "http://www.winehq.org/tests5%5Cr%22%7D, + {"/direct/swhelp/series6/6.2i_latestservicepack.dat\r", URL_ESCAPE_SPACES_ONLY, "/direct/swhelp/series6/6.2i_latestservicepack.dat\r"},
- {"file://////foo/bar\baz", 0, 0, S_OK, "file://foo/bar/baz"}, - {"file://///foo/bar\baz", 0, 0, S_OK, "file://foo/bar/baz"}, - {"file:////foo/bar\baz", 0, 0, S_OK, "file://foo/bar/baz"}, - {"file:///localhost/foo/bar\baz", 0, 0, S_OK, "file:///localhost/foo/bar/baz"}, - {"file:///foo/bar\baz", 0, 0, S_OK, "file:///foo/bar/baz"}, - {"file://loCalHost/foo/bar\baz", 0, 0, S_OK, "file:///foo/bar/baz"}, - {"file://foo/bar\baz", 0, 0, S_OK, "file://foo/bar/baz"}, - {"file:/localhost/foo/bar\baz", 0, 0, S_OK, "file:///localhost/foo/bar/baz"}, - {"file:/foo/bar\baz", 0, 0, S_OK, "file:///foo/bar/baz"}, - {"file:foo/bar\baz", 0, 0, S_OK, "file:foo/bar/baz"}, - {"file:\foo/bar\baz", 0, 0, S_OK, "file:///foo/bar/baz"}, - {"file:\\foo/bar\baz", 0, 0, S_OK, "file://foo/bar/baz"}, - {"file:\\\foo/bar\baz", 0, 0, S_OK, "file:///foo/bar/baz"}, - {"file:\\localhost\foo/bar\baz", 0, 0, S_OK, "file:///foo/bar/baz"}, - {"file:///f oo/b?a r\baz", 0, 0, S_OK, "file:///f%20oo/b?a r\baz"}, - {"file:///foo/b#a r\baz", 0, 0, S_OK, "file:///foo/b%23a%20r/baz"}, - {"file:///f o^&`{}|]["<>\%o/b#a r\baz", 0, 0, S_OK, "file:///f%20o%5E%26%60%7B%7D%7C%5D%5B%22%3C%3E/%o/b%23a%20r/baz"}, - {"file:///f o%o/b?a r\b%az", URL_ESCAPE_PERCENT, 0, S_OK, "file:///f%20o%25o/b?a r\b%az"}, - {"file:/foo/bar\baz", URL_ESCAPE_SEGMENT_ONLY, 0, S_OK, "file:%2Ffoo%2Fbar%5Cbaz"}, + {"file://////foo/bar\baz", 0, "file://foo/bar/baz"}, + {"file://///foo/bar\baz", 0, "file://foo/bar/baz"}, + {"file:////foo/bar\baz", 0, "file://foo/bar/baz"}, + {"file:///localhost/foo/bar\baz", 0, "file:///localhost/foo/bar/baz"}, + {"file:///foo/bar\baz", 0, "file:///foo/bar/baz"}, + {"file://loCalHost/foo/bar\baz", 0, "file:///foo/bar/baz"}, + {"file://foo/bar\baz", 0, "file://foo/bar/baz"}, + {"file:/localhost/foo/bar\baz", 0, "file:///localhost/foo/bar/baz"}, + {"file:/foo/bar\baz", 0, "file:///foo/bar/baz"}, + {"file:foo/bar\baz", 0, "file:foo/bar/baz"}, + {"file:\foo/bar\baz", 0, "file:///foo/bar/baz"}, + {"file:\\foo/bar\baz", 0, "file://foo/bar/baz"}, + {"file:\\\foo/bar\baz", 0, "file:///foo/bar/baz"}, + {"file:\\localhost\foo/bar\baz", 0, "file:///foo/bar/baz"}, + {"file:///f oo/b?a r\baz", 0, "file:///f%20oo/b?a r\baz"}, + {"file:///foo/b#a r\baz", 0, "file:///foo/b%23a%20r/baz"}, + {"file:///f o^&`{}|]["<>\%o/b#a r\baz", 0, "file:///f%20o%5E%26%60%7B%7D%7C%5D%5B%22%3C%3E/%o/b%23a%20r/baz"}, + {"file:///f o%o/b?a r\b%az", URL_ESCAPE_PERCENT, "file:///f%20o%25o/b?a r\b%az"}, + {"file:/foo/bar\baz", URL_ESCAPE_SEGMENT_ONLY, "file:%2Ffoo%2Fbar%5Cbaz"},
- {"foo/b%ar\ba?z\", URL_ESCAPE_SEGMENT_ONLY, 0, S_OK, "foo%2Fb%ar%5Cba%3Fz%5C"}, - {"foo/b%ar\ba?z\", URL_ESCAPE_PERCENT | URL_ESCAPE_SEGMENT_ONLY, 0, S_OK, "foo%2Fb%25ar%5Cba%3Fz%5C"}, - {"foo/bar\ba?z\", 0, 0, S_OK, "foo/bar%5Cba?z\"}, - {"/foo/bar\ba?z\", 0, 0, S_OK, "/foo/bar%5Cba?z\"}, - {"/foo/bar\ba#z\", 0, 0, S_OK, "/foo/bar%5Cba#z\"}, - {"/foo/%5C", 0, 0, S_OK, "/foo/%5C"}, - {"/foo/%5C", URL_ESCAPE_PERCENT, 0, S_OK, "/foo/%255C"}, + {"foo/b%ar\ba?z\", URL_ESCAPE_SEGMENT_ONLY, "foo%2Fb%ar%5Cba%3Fz%5C"}, + {"foo/b%ar\ba?z\", URL_ESCAPE_PERCENT | URL_ESCAPE_SEGMENT_ONLY, "foo%2Fb%25ar%5Cba%3Fz%5C"}, + {"foo/bar\ba?z\", 0, "foo/bar%5Cba?z\"}, + {"/foo/bar\ba?z\", 0, "/foo/bar%5Cba?z\"}, + {"/foo/bar\ba#z\", 0, "/foo/bar%5Cba#z\"}, + {"/foo/%5C", 0, "/foo/%5C"}, + {"/foo/%5C", URL_ESCAPE_PERCENT, "/foo/%255C"},
- {"http://////foo/bar%5C%5Cbaz", 0, 0, S_OK, "http://////foo/bar/baz%22%7D, - {"http://///foo/bar%5C%5Cbaz", 0, 0, S_OK, "http://///foo/bar/baz%22%7D, - {"http:////foo/bar%5C%5Cbaz", 0, 0, S_OK, "http:////foo/bar/baz%22%7D, - {"http:///foo/bar%5C%5Cbaz", 0, 0, S_OK, "http:///foo/bar/baz%22%7D, - {"http://localhost/foo/bar%5C%5Cbaz", 0, 0, S_OK, "http://localhost/foo/bar/baz%22%7D, - {"http://foo/bar%5C%5Cbaz", 0, 0, S_OK, "http://foo/bar/baz%22%7D, - {"http:/foo/bar\baz", 0, 0, S_OK, "http:/foo/bar/baz"}, - {"http:foo/bar\ba?z\", 0, 0, S_OK, "http:foo%2Fbar%2Fba?z\"}, - {"http:foo/bar\ba#z\", 0, 0, S_OK, "http:foo%2Fbar%2Fba#z\"}, - {"http:\foo/bar\baz", 0, 0, S_OK, "http:/foo/bar/baz"}, - {"http:\\foo/bar\baz", 0, 0, S_OK, "http://foo/bar/baz%22%7D, - {"http:\\\foo/bar\baz", 0, 0, S_OK, "http:///foo/bar/baz%22%7D, - {"http:\\\\foo/bar\baz", 0, 0, S_OK, "http:////foo/bar/baz%22%7D, - {"http:/fo ?o/b ar\baz", 0, 0, S_OK, "http:/fo%20?o/b ar\baz"}, - {"http:fo ?o/b ar\baz", 0, 0, S_OK, "http:fo%20?o/b ar\baz"}, - {"http:/foo/bar\baz", URL_ESCAPE_SEGMENT_ONLY, 0, S_OK, "http:%2Ffoo%2Fbar%5Cbaz"}, + {"http://////foo/bar%5C%5Cbaz", 0, "http://////foo/bar/baz%22%7D, + {"http://///foo/bar%5C%5Cbaz", 0, "http://///foo/bar/baz%22%7D, + {"http:////foo/bar%5C%5Cbaz", 0, "http:////foo/bar/baz%22%7D, + {"http:///foo/bar%5C%5Cbaz", 0, "http:///foo/bar/baz%22%7D, + {"http://localhost/foo/bar%5C%5Cbaz", 0, "http://localhost/foo/bar/baz%22%7D, + {"http://foo/bar%5C%5Cbaz", 0, "http://foo/bar/baz%22%7D, + {"http:/foo/bar\baz", 0, "http:/foo/bar/baz"}, + {"http:foo/bar\ba?z\", 0, "http:foo%2Fbar%2Fba?z\"}, + {"http:foo/bar\ba#z\", 0, "http:foo%2Fbar%2Fba#z\"}, + {"http:\foo/bar\baz", 0, "http:/foo/bar/baz"}, + {"http:\\foo/bar\baz", 0, "http://foo/bar/baz%22%7D, + {"http:\\\foo/bar\baz", 0, "http:///foo/bar/baz%22%7D, + {"http:\\\\foo/bar\baz", 0, "http:////foo/bar/baz%22%7D, + {"http:/fo ?o/b ar\baz", 0, "http:/fo%20?o/b ar\baz"}, + {"http:fo ?o/b ar\baz", 0, "http:fo%20?o/b ar\baz"}, + {"http:/foo/bar\baz", URL_ESCAPE_SEGMENT_ONLY, "http:%2Ffoo%2Fbar%5Cbaz"},
- {"https://foo/bar%5C%5Cbaz", 0, 0, S_OK, "https://foo/bar/baz%22%7D, - {"https:/foo/bar\baz", 0, 0, S_OK, "https:/foo/bar/baz"}, - {"https:\foo/bar\baz", 0, 0, S_OK, "https:/foo/bar/baz"}, + {"https://foo/bar%5C%5Cbaz", 0, "https://foo/bar/baz%22%7D, + {"https:/foo/bar\baz", 0, "https:/foo/bar/baz"}, + {"https:\foo/bar\baz", 0, "https:/foo/bar/baz"},
- {"foo:////foo/bar\baz", 0, 0, S_OK, "foo:////foo/bar%5Cbaz"}, - {"foo:///foo/bar\baz", 0, 0, S_OK, "foo:///foo/bar%5Cbaz"}, - {"foo://localhost/foo/bar\baz", 0, 0, S_OK, "foo://localhost/foo/bar%5Cbaz"}, - {"foo://foo/bar\baz", 0, 0, S_OK, "foo://foo/bar%5Cbaz"}, - {"foo:/foo/bar\baz", 0, 0, S_OK, "foo:/foo/bar%5Cbaz"}, - {"foo:foo/bar\baz", 0, 0, S_OK, "foo:foo%2Fbar%5Cbaz"}, - {"foo:\foo/bar\baz", 0, 0, S_OK, "foo:%5Cfoo%2Fbar%5Cbaz"}, - {"foo:/foo/bar\ba?\z", 0, 0, S_OK, "foo:/foo/bar%5Cba?\z"}, - {"foo:/foo/bar\ba#\z", 0, 0, S_OK, "foo:/foo/bar%5Cba#\z"}, + {"foo:////foo/bar\baz", 0, "foo:////foo/bar%5Cbaz"}, + {"foo:///foo/bar\baz", 0, "foo:///foo/bar%5Cbaz"}, + {"foo://localhost/foo/bar\baz", 0, "foo://localhost/foo/bar%5Cbaz"}, + {"foo://foo/bar\baz", 0, "foo://foo/bar%5Cbaz"}, + {"foo:/foo/bar\baz", 0, "foo:/foo/bar%5Cbaz"}, + {"foo:foo/bar\baz", 0, "foo:foo%2Fbar%5Cbaz"}, + {"foo:\foo/bar\baz", 0, "foo:%5Cfoo%2Fbar%5Cbaz"}, + {"foo:/foo/bar\ba?\z", 0, "foo:/foo/bar%5Cba?\z"}, + {"foo:/foo/bar\ba#\z", 0, "foo:/foo/bar%5Cba#\z"},
- {"mailto:/fo/o@b\%a?\r.b#\az", 0, 0, S_OK, "mailto:%2Ffo%2Fo@b%5C%a%3F%5Cr.b%23%5Caz"}, - {"mailto:fo/o@b\%a?\r.b#\az", 0, 0, S_OK, "mailto:fo%2Fo@b%5C%a%3F%5Cr.b%23%5Caz"}, - {"mailto:fo/o@b\%a?\r.b#\az", URL_ESCAPE_PERCENT, 0, S_OK, "mailto:fo%2Fo@b%5C%25a%3F%5Cr.b%23%5Caz"}, + {"mailto:/fo/o@b\%a?\r.b#\az", 0, "mailto:%2Ffo%2Fo@b%5C%a%3F%5Cr.b%23%5Caz"}, + {"mailto:fo/o@b\%a?\r.b#\az", 0, "mailto:fo%2Fo@b%5C%a%3F%5Cr.b%23%5Caz"}, + {"mailto:fo/o@b\%a?\r.b#\az", URL_ESCAPE_PERCENT, "mailto:fo%2Fo@b%5C%25a%3F%5Cr.b%23%5Caz"},
- {"ftp:fo/o@bar.baz/foo/bar", 0, 0, S_OK, "ftp:fo%2Fo@bar.baz%2Ffoo%2Fbar"}, - {"ftp:/fo/o@bar.baz/foo/bar", 0, 0, S_OK, "ftp:/fo/o@bar.baz/foo/bar"}, - {"ftp://fo/o@bar.baz/fo?o\bar", 0, 0, S_OK, "ftp://fo/o@bar.baz/fo?o\bar"}, - {"ftp://fo/o@bar.baz/fo#o\bar", 0, 0, S_OK, "ftp://fo/o@bar.baz/fo#o\bar"}, - {"ftp://localhost/o@bar.baz/fo#o\bar", 0, 0, S_OK, "ftp://localhost/o@bar.baz/fo#o\bar"}, - {"ftp:///fo/o@bar.baz/foo/bar", 0, 0, S_OK, "ftp:///fo/o@bar.baz/foo/bar"}, - {"ftp:////fo/o@bar.baz/foo/bar", 0, 0, S_OK, "ftp:////fo/o@bar.baz/foo/bar"}, + {"ftp:fo/o@bar.baz/foo/bar", 0, "ftp:fo%2Fo@bar.baz%2Ffoo%2Fbar"}, + {"ftp:/fo/o@bar.baz/foo/bar", 0, "ftp:/fo/o@bar.baz/foo/bar"}, + {"ftp://fo/o@bar.baz/fo?o\bar", 0, "ftp://fo/o@bar.baz/fo?o\bar"}, + {"ftp://fo/o@bar.baz/fo#o\bar", 0, "ftp://fo/o@bar.baz/fo#o\bar"}, + {"ftp://localhost/o@bar.baz/fo#o\bar", 0, "ftp://localhost/o@bar.baz/fo#o\bar"}, + {"ftp:///fo/o@bar.baz/foo/bar", 0, "ftp:///fo/o@bar.baz/foo/bar"}, + {"ftp:////fo/o@bar.baz/foo/bar", 0, "ftp:////fo/o@bar.baz/foo/bar"},
- {"ftp\x1f\1end/", 0, 0, S_OK, "ftp%1F%01end/"} + {"ftp\x1f\1end/", 0, "ftp%1F%01end/"} };
typedef struct _TEST_URL_ESCAPEW { @@ -869,8 +867,7 @@ static void test_UrlEscapeA(void)
size = INTERNET_MAX_URL_LENGTH; ret = UrlEscapeA(TEST_ESCAPE[i].url, ret_url, &size, TEST_ESCAPE[i].flags); - ok(ret == TEST_ESCAPE[i].expectret, "UrlEscapeA returned 0x%08x instead of 0x%08x for "%s"\n", - ret, TEST_ESCAPE[i].expectret, TEST_ESCAPE[i].url); + ok(ret == S_OK, "Got unexpected hr %#x for %s.\n", ret, debugstr_a(TEST_ESCAPE[i].url)); ok(!strcmp(ret_url, TEST_ESCAPE[i].expecturl), "Expected "%s", but got "%s" for "%s"\n", TEST_ESCAPE[i].expecturl, ret_url, TEST_ESCAPE[i].url); } @@ -953,8 +950,7 @@ static void test_UrlEscapeW(void) urlW = GetWideString(TEST_ESCAPE[i].url); expected_urlW = GetWideString(TEST_ESCAPE[i].expecturl); ret = UrlEscapeW(urlW, ret_urlW, &size, TEST_ESCAPE[i].flags); - ok(ret == TEST_ESCAPE[i].expectret, "UrlEscapeW returned 0x%08x instead of 0x%08x for %s\n", - ret, TEST_ESCAPE[i].expectret, wine_dbgstr_w(urlW)); + ok(ret == S_OK, "Got unexpected hr %#x for %s.\n", ret, debugstr_w(urlW)); ok(!lstrcmpW(ret_urlW, expected_urlW), "Expected %s, but got %s for %s flags %08x\n", wine_dbgstr_w(expected_urlW), wine_dbgstr_w(ret_urlW), wine_dbgstr_w(urlW), TEST_ESCAPE[i].flags); FreeWideString(urlW);
Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- dlls/shlwapi/tests/url.c | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-)
diff --git a/dlls/shlwapi/tests/url.c b/dlls/shlwapi/tests/url.c index 8a645287b02..703bdcd0a55 100644 --- a/dlls/shlwapi/tests/url.c +++ b/dlls/shlwapi/tests/url.c @@ -293,39 +293,38 @@ static const TEST_URL_ESCAPE TEST_ESCAPE[] = { typedef struct _TEST_URL_ESCAPEW { const WCHAR url[INTERNET_MAX_URL_LENGTH]; DWORD flags; - HRESULT expectret; const WCHAR expecturl[INTERNET_MAX_URL_LENGTH]; const WCHAR win7url[INTERNET_MAX_URL_LENGTH]; /* <= Win7 */ const WCHAR vistaurl[INTERNET_MAX_URL_LENGTH]; /* <= Vista/2k8 */ } TEST_URL_ESCAPEW;
static const TEST_URL_ESCAPEW TEST_ESCAPEW[] = { - {{' ','<','>','"',0}, URL_ESCAPE_AS_UTF8, S_OK, {'%','2','0','%','3','C','%','3','E','%','2','2',0}}, - {{'{','}','|','\',0}, URL_ESCAPE_AS_UTF8, S_OK, {'%','7','B','%','7','D','%','7','C','%','5','C',0}}, - {{'^',']','[','`',0}, URL_ESCAPE_AS_UTF8, S_OK, {'%','5','E','%','5','D','%','5','B','%','6','0',0}}, - {{'&','/','?','#',0}, URL_ESCAPE_AS_UTF8, S_OK, {'%','2','6','/','?','#',0}}, - {{'M','a','s','s',0}, URL_ESCAPE_AS_UTF8, S_OK, {'M','a','s','s',0}}, + {{' ','<','>','"',0}, URL_ESCAPE_AS_UTF8, {'%','2','0','%','3','C','%','3','E','%','2','2',0}}, + {{'{','}','|','\',0}, URL_ESCAPE_AS_UTF8, {'%','7','B','%','7','D','%','7','C','%','5','C',0}}, + {{'^',']','[','`',0}, URL_ESCAPE_AS_UTF8, {'%','5','E','%','5','D','%','5','B','%','6','0',0}}, + {{'&','/','?','#',0}, URL_ESCAPE_AS_UTF8, {'%','2','6','/','?','#',0}}, + {{'M','a','s','s',0}, URL_ESCAPE_AS_UTF8, {'M','a','s','s',0}},
/* broken < Win8/10 */
- {{'M','a',0xdf,0}, URL_ESCAPE_AS_UTF8, S_OK, {'M','a','%','C','3','%','9','F',0}, + {{'M','a',0xdf,0}, URL_ESCAPE_AS_UTF8, {'M','a','%','C','3','%','9','F',0}, {'M','a','%','D','F',0}}, /* 0x2070E */ - {{0xd841,0xdf0e,0}, URL_ESCAPE_AS_UTF8, S_OK, {'%','F','0','%','A','0','%','9','C','%','8','E',0}, + {{0xd841,0xdf0e,0}, URL_ESCAPE_AS_UTF8, {'%','F','0','%','A','0','%','9','C','%','8','E',0}, {'%','E','F','%','B','F','%','B','D','%','E','F','%','B','F','%','B','D',0}, {0xd841,0xdf0e,0}}, /* 0x27A3E */ - {{0xd85e,0xde3e,0}, URL_ESCAPE_AS_UTF8, S_OK, {'%','F','0','%','A','7','%','A','8','%','B','E',0}, + {{0xd85e,0xde3e,0}, URL_ESCAPE_AS_UTF8, {'%','F','0','%','A','7','%','A','8','%','B','E',0}, {'%','E','F','%','B','F','%','B','D','%','E','F','%','B','F','%','B','D',0}, {0xd85e,0xde3e,0}},
- {{0xd85e,0}, URL_ESCAPE_AS_UTF8, S_OK, {'%','E','F','%','B','F','%','B','D',0}, + {{0xd85e,0}, URL_ESCAPE_AS_UTF8, {'%','E','F','%','B','F','%','B','D',0}, {0xd85e,0}}, - {{0xd85e,0x41}, URL_ESCAPE_AS_UTF8, S_OK, {'%','E','F','%','B','F','%','B','D','A',0}, + {{0xd85e,0x41}, URL_ESCAPE_AS_UTF8, {'%','E','F','%','B','F','%','B','D','A',0}, {0xd85e,'A',0}}, - {{0xdc00,0}, URL_ESCAPE_AS_UTF8, S_OK, {'%','E','F','%','B','F','%','B','D',0}, + {{0xdc00,0}, URL_ESCAPE_AS_UTF8, {'%','E','F','%','B','F','%','B','D',0}, {0xdc00,0}}, - {{0xffff,0}, URL_ESCAPE_AS_UTF8, S_OK, {'%','E','F','%','B','F','%','B','F',0}, + {{0xffff,0}, URL_ESCAPE_AS_UTF8, {'%','E','F','%','B','F','%','B','F',0}, {0xffff,0}}, };
@@ -962,8 +961,7 @@ static void test_UrlEscapeW(void)
size = INTERNET_MAX_URL_LENGTH; ret = UrlEscapeW(TEST_ESCAPEW[i].url, ret_url, &size, TEST_ESCAPEW[i].flags); - ok(ret == TEST_ESCAPEW[i].expectret, "UrlEscapeW returned 0x%08x instead of 0x%08x for "%s"\n", - ret, TEST_ESCAPEW[i].expectret, wine_dbgstr_w(TEST_ESCAPEW[i].url)); + ok(ret == S_OK, "Got unexpected hr %#x for %s.\n", ret, debugstr_w(TEST_ESCAPEW[i].url)); ok(!lstrcmpW(ret_url, TEST_ESCAPEW[i].expecturl) || broken(!lstrcmpW(ret_url, TEST_ESCAPEW[i].vistaurl)) || broken(!lstrcmpW(ret_url, TEST_ESCAPEW[i].win7url)),