Test cases for URL_UNESCAPE and small fix.
This commit is contained in:
parent
a561275579
commit
3655187fd0
|
@ -61,6 +61,9 @@ const TEST_URL_CANONICALIZE TEST_CANONICALIZE[] = {
|
||||||
{"http://www.winehq.org/tests/..#example", 0, S_OK, "http://www.winehq.org/#example"},
|
{"http://www.winehq.org/tests/..#example", 0, S_OK, "http://www.winehq.org/#example"},
|
||||||
{"http://www.winehq.org/tests/../#example", 0, S_OK, "http://www.winehq.org/#example"},
|
{"http://www.winehq.org/tests/../#example", 0, S_OK, "http://www.winehq.org/#example"},
|
||||||
{"http://www.winehq.org/tests/../#example", URL_DONT_SIMPLIFY, S_OK, "http://www.winehq.org/tests/../#example"},
|
{"http://www.winehq.org/tests/../#example", URL_DONT_SIMPLIFY, S_OK, "http://www.winehq.org/tests/../#example"},
|
||||||
|
{"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"},
|
||||||
|
{"http://www.winehq.org/tests/foo%20bar", URL_UNESCAPE , S_OK, "http://www.winehq.org/tests/foo bar"},
|
||||||
|
{"file:///c:/tests/foo%20bar", URL_UNESCAPE , S_OK, "file:///c:/tests/foo bar"},
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct _TEST_URL_ESCAPE {
|
typedef struct _TEST_URL_ESCAPE {
|
||||||
|
@ -185,6 +188,7 @@ struct {
|
||||||
{"c:\\foo\\bar", "file:///c:/foo/bar", S_OK},
|
{"c:\\foo\\bar", "file:///c:/foo/bar", S_OK},
|
||||||
{"c:foo\\bar", "file:///c:foo/bar", S_OK},
|
{"c:foo\\bar", "file:///c:foo/bar", S_OK},
|
||||||
{"c:\\foo/b a%r", "file:///c:/foo/b%20a%25r", S_OK},
|
{"c:\\foo/b a%r", "file:///c:/foo/b%20a%25r", S_OK},
|
||||||
|
{"c:\\foo\\foo bar", "file:///c:/foo/foo%20bar", S_OK},
|
||||||
#if 0
|
#if 0
|
||||||
/* The following test fails on native shlwapi as distributed with Win95/98.
|
/* The following test fails on native shlwapi as distributed with Win95/98.
|
||||||
* Wine matches the behaviour of later versions.
|
* Wine matches the behaviour of later versions.
|
||||||
|
@ -219,6 +223,7 @@ struct {
|
||||||
{"file:c|/foo/bar", "c:\\foo\\bar", S_OK},
|
{"file:c|/foo/bar", "c:\\foo\\bar", S_OK},
|
||||||
{"file:cx|/foo/bar", "cx|\\foo\\bar", S_OK},
|
{"file:cx|/foo/bar", "cx|\\foo\\bar", S_OK},
|
||||||
{"file:////c:/foo/bar", "c:\\foo\\bar", S_OK},
|
{"file:////c:/foo/bar", "c:\\foo\\bar", S_OK},
|
||||||
|
/* {"file:////c:/foo/foo%20bar", "c:\\foo\\foo%20bar", S_OK},*/
|
||||||
|
|
||||||
{"c:\\foo\\bar", NULL, E_INVALIDARG},
|
{"c:\\foo\\bar", NULL, E_INVALIDARG},
|
||||||
{"foo/bar", NULL, E_INVALIDARG},
|
{"foo/bar", NULL, E_INVALIDARG},
|
||||||
|
@ -387,10 +392,12 @@ static void test_url_canonicalize(const char *szUrl, DWORD dwFlags, HRESULT dwEx
|
||||||
DWORD dwSize;
|
DWORD dwSize;
|
||||||
|
|
||||||
dwSize = INTERNET_MAX_URL_LENGTH;
|
dwSize = INTERNET_MAX_URL_LENGTH;
|
||||||
|
ok(UrlCanonicalizeA(szUrl, NULL, &dwSize, dwFlags) != dwExpectReturn, "Unexpected return for NULL buffer\n");
|
||||||
ok(UrlCanonicalizeA(szUrl, szReturnUrl, &dwSize, dwFlags) == dwExpectReturn, "UrlCanonicalizeA didn't return 0x%08lx\n", dwExpectReturn);
|
ok(UrlCanonicalizeA(szUrl, szReturnUrl, &dwSize, dwFlags) == dwExpectReturn, "UrlCanonicalizeA didn't return 0x%08lx\n", dwExpectReturn);
|
||||||
ok(strcmp(szReturnUrl,szExpectUrl)==0, "Expected %s, but got %s\n", szExpectUrl, szReturnUrl);
|
ok(strcmp(szReturnUrl,szExpectUrl)==0, "UrlCanonicalizeA dwFlags 0x%08lx Expected %s, but got %s\n", dwFlags, szExpectUrl, szReturnUrl);
|
||||||
|
|
||||||
dwSize = INTERNET_MAX_URL_LENGTH;
|
dwSize = INTERNET_MAX_URL_LENGTH;
|
||||||
|
ok(UrlCanonicalizeW(wszUrl, NULL, &dwSize, dwFlags) != dwExpectReturn, "Unexpected return for NULL buffer\n");
|
||||||
ok(UrlCanonicalizeW(wszUrl, wszReturnUrl, &dwSize, dwFlags) == dwExpectReturn, "UrlCanonicalizeW didn't return 0x%08lx\n", dwExpectReturn);
|
ok(UrlCanonicalizeW(wszUrl, wszReturnUrl, &dwSize, dwFlags) == dwExpectReturn, "UrlCanonicalizeW didn't return 0x%08lx\n", dwExpectReturn);
|
||||||
wszConvertedUrl = GetWideString(szReturnUrl);
|
wszConvertedUrl = GetWideString(szReturnUrl);
|
||||||
ok(strcmpW(wszReturnUrl, wszConvertedUrl)==0, "Strings didn't match between ascii and unicode UrlCanonicalize!\n");
|
ok(strcmpW(wszReturnUrl, wszConvertedUrl)==0, "Strings didn't match between ascii and unicode UrlCanonicalize!\n");
|
||||||
|
|
|
@ -459,7 +459,7 @@ HRESULT WINAPI UrlCanonicalizeW(LPCWSTR pszUrl, LPWSTR pszCanonicalized,
|
||||||
lpszUrlCpy[--nLen]=0;
|
lpszUrlCpy[--nLen]=0;
|
||||||
|
|
||||||
if(dwFlags & URL_UNESCAPE)
|
if(dwFlags & URL_UNESCAPE)
|
||||||
UrlUnescapeW(lpszUrlCpy, NULL, NULL, URL_UNESCAPE_INPLACE);
|
UrlUnescapeW(lpszUrlCpy, NULL, &nLen, URL_UNESCAPE_INPLACE);
|
||||||
|
|
||||||
if((EscapeFlags = dwFlags & (URL_ESCAPE_UNSAFE |
|
if((EscapeFlags = dwFlags & (URL_ESCAPE_UNSAFE |
|
||||||
URL_ESCAPE_SPACES_ONLY |
|
URL_ESCAPE_SPACES_ONLY |
|
||||||
|
@ -1160,7 +1160,7 @@ HRESULT WINAPI UrlUnescapeW(
|
||||||
TRACE("(%s, %p, %p, 0x%08lx)\n", debugstr_w(pszUrl), pszUnescaped,
|
TRACE("(%s, %p, %p, 0x%08lx)\n", debugstr_w(pszUrl), pszUnescaped,
|
||||||
pcchUnescaped, dwFlags);
|
pcchUnescaped, dwFlags);
|
||||||
|
|
||||||
if(!pszUrl || !pszUnescaped || !pcchUnescaped)
|
if(!pszUrl || (!pszUnescaped && !(dwFlags & URL_UNESCAPE_INPLACE))|| !pcchUnescaped)
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
|
|
||||||
if(dwFlags & URL_UNESCAPE_INPLACE)
|
if(dwFlags & URL_UNESCAPE_INPLACE)
|
||||||
|
|
Loading…
Reference in New Issue