[PATCH] wininet/tests: Initial tests for InternetCanonicalizeUrlA

Detlef Riekenberg wine.dev at web.de
Wed Oct 10 16:16:51 CDT 2007


---
 dlls/wininet/tests/internet.c |   69 ++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 67 insertions(+), 2 deletions(-)

diff --git a/dlls/wininet/tests/internet.c b/dlls/wininet/tests/internet.c
index aa96391..8d88914 100644
--- a/dlls/wininet/tests/internet.c
+++ b/dlls/wininet/tests/internet.c
@@ -27,7 +27,69 @@ #include "winerror.h"
 
 #include "wine/test.h"
 
-static void InternetQueryOptionA_test(void)
+/* ############################### */
+
+static void test_InternetCanonicalizeUrlA()
+{
+    CHAR    buffer[256];
+    LPCSTR  url;
+    DWORD   urllen;
+    DWORD   dwSize;
+    DWORD   res;
+
+    /* Acrobat Updater 5 calls this for Adobe Reader 8.1 */
+    url = "http://swupmf.adobe.com/manifest/50/win/AdobeUpdater.upd";
+    urllen = lstrlenA(url);
+
+    memset(buffer, '#', sizeof(buffer)-1);
+    buffer[sizeof(buffer)-1] = '\0';
+    dwSize = 1; /* Acrobat Updater use this size */
+    SetLastError(0xdeadbeef);
+    res = InternetCanonicalizeUrlA(url, buffer, &dwSize, 0);
+    todo_wine
+    ok( !res && (GetLastError() == ERROR_INSUFFICIENT_BUFFER) && (dwSize == (urllen+1)),
+        "got %u and %u with size %u for '%s' (%d)\n", 
+        res, GetLastError(), dwSize, buffer, lstrlenA(buffer));
+
+
+    /* buffer has no space for the terminating '\0' */
+    memset(buffer, '#', sizeof(buffer)-1);
+    buffer[sizeof(buffer)-1] = '\0';
+    dwSize = urllen;
+    SetLastError(0xdeadbeef);
+    res = InternetCanonicalizeUrlA(url, buffer, &dwSize, 0);
+    /* dwSize is nr. of needed bytes with the terminating '\0' */
+    todo_wine
+    ok( !res && (GetLastError() == ERROR_INSUFFICIENT_BUFFER) && (dwSize == (urllen+1)),
+        "got %u and %u with size %u for '%s' (%d)\n", 
+        res, GetLastError(), dwSize, buffer, lstrlenA(buffer));
+
+    /* buffer has the required size */
+    memset(buffer, '#', sizeof(buffer)-1);
+    buffer[sizeof(buffer)-1] = '\0';
+    dwSize = urllen+1;
+    SetLastError(0xdeadbeef);
+    res = InternetCanonicalizeUrlA(url, buffer, &dwSize, 0);
+    /* dwSize is nr. of copied bytes without the terminating '\0' */
+    ok( res && (dwSize == urllen) && (lstrcmpA(url, buffer) == 0),
+        "got %u and %u with size %u for '%s' (%d)\n", 
+        res, GetLastError(), dwSize, buffer, lstrlenA(buffer));
+
+    /* buffer is larger as the required size */
+    memset(buffer, '#', sizeof(buffer)-1);
+    buffer[sizeof(buffer)-1] = '\0';
+    dwSize = urllen+2;
+    SetLastError(0xdeadbeef);
+    res = InternetCanonicalizeUrlA(url, buffer, &dwSize, 0);
+    /* dwSize is nr. of copied bytes without the terminating '\0' */
+    ok( res && (dwSize == urllen) && (lstrcmpA(url, buffer) == 0),
+        "got %u and %u with size %u for '%s' (%d)\n", 
+        res, GetLastError(), dwSize, buffer, lstrlenA(buffer));
+}
+
+/* ############################### */
+
+static void test_InternetQueryOptionA(void)
 {
   HINTERNET hinet,hurl;
   DWORD len;
@@ -221,9 +283,12 @@ static void test_null(void)
 
 }
 
+/* ############################### */
+
 START_TEST(internet)
 {
-  InternetQueryOptionA_test();
+  test_InternetCanonicalizeUrlA();
+  test_InternetQueryOptionA();
   test_get_cookie();
   test_null();
 }
-- 
1.4.1


--=-6wFu3YcsAhdvQyhexz0V--




More information about the wine-patches mailing list