Jacek Caban : wininet: Added more tests.

Alexandre Julliard julliard at winehq.org
Mon Apr 4 10:10:51 CDT 2011


Module: wine
Branch: master
Commit: 7611d1073233d2e529d5558ce7b2dc2877bd82ec
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=7611d1073233d2e529d5558ce7b2dc2877bd82ec

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Sat Apr  2 15:20:53 2011 +0200

wininet: Added more tests.

---

 dlls/wininet/tests/http.c |   42 +++++++++++++++++++++++++++++++-----------
 1 files changed, 31 insertions(+), 11 deletions(-)

diff --git a/dlls/wininet/tests/http.c b/dlls/wininet/tests/http.c
index 477ae56..c8ac617 100644
--- a/dlls/wininet/tests/http.c
+++ b/dlls/wininet/tests/http.c
@@ -107,6 +107,7 @@ static HANDLE hCompleteEvent;
 #define TESTF_REDIRECT      0x01
 #define TESTF_COMPRESSED    0x02
 #define TESTF_ALLOW_COOKIE  0x04
+#define TESTF_CHUNKED       0x08
 
 typedef struct {
     const char *url;
@@ -121,6 +122,14 @@ typedef struct {
 
 static const test_data_t test_data[] = {
     {
+        "http://test.winehq.org/tests/data.php",
+        "http://test.winehq.org/tests/data.php",
+        "test.winehq.org",
+        "/tests/data.php",
+        "",
+        TESTF_CHUNKED
+    },
+    {
         "http://test.winehq.org/tests/redirect",
         "http://test.winehq.org/tests/hello.html",
         "test.winehq.org",
@@ -303,7 +312,7 @@ static VOID WINAPI callback(
 static void InternetReadFile_test(int flags, const test_data_t *test)
 {
     char *post_data = NULL;
-    BOOL res;
+    BOOL res, on_async = TRUE;
     CHAR buffer[4000];
     DWORD length, post_len = 0;
     DWORD out;
@@ -521,9 +530,6 @@ static void InternetReadFile_test(int flags, const test_data_t *test)
         if (flags & INTERNET_FLAG_ASYNC)
             SET_EXPECT(INTERNET_STATUS_REQUEST_COMPLETE);
         res = InternetQueryDataAvailable(hor,&length,0x0,0x0);
-        ok(!(!res && length != 0),"InternetQueryDataAvailable failed with non-zero length\n");
-        ok(res || ((flags & INTERNET_FLAG_ASYNC) && GetLastError() == ERROR_IO_PENDING),
-           "InternetQueryDataAvailable failed, error %d\n", GetLastError());
         if (flags & INTERNET_FLAG_ASYNC)
         {
             if (res)
@@ -532,11 +538,22 @@ static void InternetReadFile_test(int flags, const test_data_t *test)
             }
             else if (GetLastError() == ERROR_IO_PENDING)
             {
+                trace("PENDING\n");
+                /* on some tests, InternetQueryDataAvailable returns non-zero length and ERROR_IO_PENDING */
+                if(!(test->flags & TESTF_CHUNKED))
+                    ok(!length, "InternetQueryDataAvailable returned ERROR_IO_PENDING and %u length\n", length);
                 WaitForSingleObject(hCompleteEvent, INFINITE);
                 CHECK_NOTIFIED(INTERNET_STATUS_REQUEST_COMPLETE);
                 continue;
+            }else {
+                ok(0, "InternetQueryDataAvailable failed: %u\n", GetLastError());
             }
+        }else {
+            ok(res, "InternetQueryDataAvailable failed: %u\n", GetLastError());
         }
+        trace("LENGTH %d\n", length);
+        if(test->flags & TESTF_CHUNKED)
+            ok(length <= 8192, "length = %d, expected <= 8192\n", length);
         if (length)
         {
             char *buffer;
@@ -551,9 +568,11 @@ static void InternetReadFile_test(int flags, const test_data_t *test)
             if(test->content)
                 ok(!strcmp(buffer, test->content), "buffer = '%s', expected '%s'\n", buffer, test->content);
             HeapFree(GetProcessHeap(),0,buffer);
-        }
-        if (length == 0)
+        }else {
+            ok(!on_async, "Returned zero size in response to request complete\n");
             break;
+        }
+        on_async = FALSE;
     }
     if(test->flags & TESTF_REDIRECT) {
         CHECK_NOTIFIED2(INTERNET_STATUS_CLOSING_CONNECTION, 2);
@@ -1851,7 +1870,7 @@ static void test_basic_request(int port, const char *verb, const char *url)
     r = InternetReadFile(hr, buffer, sizeof buffer, &count);
     ok(r, "InternetReadFile failed %u\n", GetLastError());
     ok(count == sizeof page1 - 1, "count was wrong\n");
-    ok(!memcmp(buffer, page1, sizeof page1), "http data wrong\n");
+    ok(!memcmp(buffer, page1, sizeof page1), "http data wrong, got: %s\n", buffer);
 
     InternetCloseHandle(hr);
     InternetCloseHandle(hc);
@@ -3387,12 +3406,13 @@ START_TEST(http)
     pInternetSetStatusCallbackA = (void*)GetProcAddress(hdll, "InternetSetStatusCallbackA");
 
     init_status_tests();
-    test_InternetCloseHandle();
+    if(0)test_InternetCloseHandle();
     InternetReadFile_test(INTERNET_FLAG_ASYNC, &test_data[0]);
-    InternetReadFile_test(0, &test_data[0]);
-    first_connection_to_test_url = TRUE;
     InternetReadFile_test(INTERNET_FLAG_ASYNC, &test_data[1]);
     InternetReadFile_test(0, &test_data[1]);
+    first_connection_to_test_url = TRUE;
+    InternetReadFile_test(INTERNET_FLAG_ASYNC, &test_data[2]);
+    InternetReadFile_test(0, &test_data[2]);
     InternetReadFileExA_test(INTERNET_FLAG_ASYNC);
     test_open_url_async();
     test_async_HttpSendRequestEx();
@@ -3406,5 +3426,5 @@ START_TEST(http)
     test_bogus_accept_types_array();
     InternetReadFile_chunked_test();
     HttpSendRequestEx_test();
-    InternetReadFile_test(INTERNET_FLAG_ASYNC, &test_data[2]);
+    InternetReadFile_test(INTERNET_FLAG_ASYNC, &test_data[3]);
 }




More information about the wine-cvs mailing list