SHLWAPI: Test cases for URL_UNESCAPE and small fix
Uwe Bonnes
bon at elektron.ikp.physik.tu-darmstadt.de
Sun May 22 12:00:44 CDT 2005
Changelog:
dlls/shlwapi/url.c, dlls/shlwapi/tests/path.c
Testcases for URL_UNESCAPE and fixes for this case in
UrlCanonicalizeW and UrlUnescapeW
--
Uwe Bonnes bon at elektron.ikp.physik.tu-darmstadt.de
Institut fuer Kernphysik Schlossgartenstrasse 9 64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------
Index: wine/dlls/shlwapi/url.c
===================================================================
RCS file: /home/wine/wine/dlls/shlwapi/url.c,v
retrieving revision 1.51
diff -u -r1.51 url.c
--- wine/dlls/shlwapi/url.c 18 Apr 2005 15:36:20 -0000 1.51
+++ wine/dlls/shlwapi/url.c 22 May 2005 11:07:05 -0000
@@ -459,7 +459,7 @@
lpszUrlCpy[--nLen]=0;
if(dwFlags & URL_UNESCAPE)
- UrlUnescapeW(lpszUrlCpy, NULL, NULL, URL_UNESCAPE_INPLACE);
+ UrlUnescapeW(lpszUrlCpy, NULL, &nLen, URL_UNESCAPE_INPLACE);
if((EscapeFlags = dwFlags & (URL_ESCAPE_UNSAFE |
URL_ESCAPE_SPACES_ONLY |
@@ -1160,7 +1160,7 @@
TRACE("(%s, %p, %p, 0x%08lx)\n", debugstr_w(pszUrl), pszUnescaped,
pcchUnescaped, dwFlags);
- if(!pszUrl || !pszUnescaped || !pcchUnescaped)
+ if(!pszUrl || (!pszUnescaped && !(dwFlags & URL_UNESCAPE_INPLACE))|| !pcchUnescaped)
return E_INVALIDARG;
if(dwFlags & URL_UNESCAPE_INPLACE)
Index: wine/dlls/shlwapi/tests/path.c
===================================================================
RCS file: /home/wine/wine/dlls/shlwapi/tests/path.c,v
retrieving revision 1.20
diff -u -r1.20 path.c
--- wine/dlls/shlwapi/tests/path.c 18 May 2005 15:33:20 -0000 1.20
+++ wine/dlls/shlwapi/tests/path.c 22 May 2005 11:07:06 -0000
@@ -61,6 +61,9 @@
{"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/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 {
@@ -185,6 +188,7 @@
{"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\\foo bar", "file:///c:/foo/foo%20bar", S_OK},
#if 0
/* The following test fails on native shlwapi as distributed with Win95/98.
* Wine matches the behaviour of later versions.
@@ -219,6 +223,7 @@
{"file:c|/foo/bar", "c:\\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/foo%20bar", "c:\\foo\\foo%20bar", S_OK},*/
{"c:\\foo\\bar", NULL, E_INVALIDARG},
{"foo/bar", NULL, E_INVALIDARG},
@@ -387,10 +392,12 @@
DWORD dwSize;
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(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;
+ 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);
wszConvertedUrl = GetWideString(szReturnUrl);
ok(strcmpW(wszReturnUrl, wszConvertedUrl)==0, "Strings didn't match between ascii and unicode UrlCanonicalize!\n");
More information about the wine-patches
mailing list