From f98b4507bafa4f96d92ec6fed3a0abcf16f41c31 Mon Sep 17 00:00:00 2001 From: Detlef Riekenberg Date: Wed, 10 Oct 2007 23:16:51 +0200 Subject: [PATCH] wininet/tests: Initial tests for InternetCanonicalizeUrlA. --- dlls/wininet/tests/internet.c | 69 ++++++++++++++++++++++++++++++++++- 1 file changed, 67 insertions(+), 2 deletions(-) diff --git a/dlls/wininet/tests/internet.c b/dlls/wininet/tests/internet.c index aa96391f7c0..2869cd15fa1 100644 --- a/dlls/wininet/tests/internet.c +++ b/dlls/wininet/tests/internet.c @@ -27,7 +27,69 @@ #include "wine/test.h" -static void InternetQueryOptionA_test(void) +/* ############################### */ + +static void test_InternetCanonicalizeUrlA(void) +{ + 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(); }