Alexandre Julliard : wininet/tests: Add support for optional notifications. Fix the test to pass again on Windows and Wine.
Alexandre Julliard
julliard at winehq.org
Tue Aug 26 07:07:25 CDT 2008
Module: wine
Branch: master
Commit: 1f563440aae3ee595b622ef319d7b16580f81bcd
URL: http://source.winehq.org/git/wine.git/?a=commit;h=1f563440aae3ee595b622ef319d7b16580f81bcd
Author: Alexandre Julliard <julliard at winehq.org>
Date: Tue Aug 26 11:27:26 2008 +0200
wininet/tests: Add support for optional notifications. Fix the test to pass again on Windows and Wine.
---
dlls/wininet/tests/http.c | 61 +++++++++++++++++++++++++++-----------------
1 files changed, 37 insertions(+), 24 deletions(-)
diff --git a/dlls/wininet/tests/http.c b/dlls/wininet/tests/http.c
index 0c4483b..7cd4abe 100644
--- a/dlls/wininet/tests/http.c
+++ b/dlls/wininet/tests/http.c
@@ -43,6 +43,12 @@ static BOOL first_connection_to_test_url = TRUE;
#define SET_EXPECT(status) \
SET_EXPECT2(status, 1)
+#define SET_OPTIONAL2(status, num) \
+ optional[status] = num
+
+#define SET_OPTIONAL(status) \
+ SET_OPTIONAL2(status, 1)
+
/* SET_WINE_ALLOW's should be used with an appropriate
* todo_wine CHECK_NOTIFIED at a later point in the code */
#define SET_WINE_ALLOW2(status, num) \
@@ -53,7 +59,7 @@ static BOOL first_connection_to_test_url = TRUE;
#define CHECK_EXPECT(status) \
do { \
- if (!expect[status] && wine_allow[status]) \
+ if (!expect[status] && !optional[status] && wine_allow[status]) \
{ \
todo_wine ok(expect[status], "unexpected status %d (%s)\n", status, \
status < MAX_INTERNET_STATUS && status_string[status][0] != 0 ? \
@@ -62,10 +68,11 @@ static BOOL first_connection_to_test_url = TRUE;
} \
else \
{ \
- ok(expect[status], "unexpected status %d (%s)\n", status, \
+ ok(expect[status] || optional[status], "unexpected status %d (%s)\n", status, \
status < MAX_INTERNET_STATUS && status_string[status][0] != 0 ? \
status_string[status] : "unknown"); \
- expect[status]--; \
+ if (expect[status]) expect[status]--; \
+ else optional[status]--; \
} \
notified[status]++; \
}while(0)
@@ -73,7 +80,7 @@ static BOOL first_connection_to_test_url = TRUE;
/* CLEAR_NOTIFIED used in cases when notification behavior
* differs between Windows versions */
#define CLEAR_NOTIFIED(status) \
- expect[status] = wine_allow[status] = notified[status] = 0;
+ expect[status] = optional[status] = wine_allow[status] = notified[status] = 0;
#define CHECK_NOTIFIED2(status, num) \
do { \
@@ -91,8 +98,8 @@ static BOOL first_connection_to_test_url = TRUE;
#define MAX_INTERNET_STATUS (INTERNET_STATUS_COOKIE_HISTORY+1)
#define MAX_STATUS_NAME 50
-static int expect[MAX_INTERNET_STATUS], wine_allow[MAX_INTERNET_STATUS],
- notified[MAX_INTERNET_STATUS];
+static int expect[MAX_INTERNET_STATUS], optional[MAX_INTERNET_STATUS],
+ wine_allow[MAX_INTERNET_STATUS], notified[MAX_INTERNET_STATUS];
static CHAR status_string[MAX_INTERNET_STATUS][MAX_STATUS_NAME];
static HANDLE hCompleteEvent;
@@ -301,11 +308,13 @@ static void InternetReadFile_test(int flags)
{
SET_EXPECT(INTERNET_STATUS_RESOLVING_NAME);
SET_EXPECT(INTERNET_STATUS_NAME_RESOLVED);
+ SET_WINE_ALLOW(INTERNET_STATUS_RESOLVING_NAME);
+ SET_WINE_ALLOW(INTERNET_STATUS_NAME_RESOLVED);
}
else
{
- SET_WINE_ALLOW(INTERNET_STATUS_RESOLVING_NAME);
- SET_WINE_ALLOW(INTERNET_STATUS_NAME_RESOLVED);
+ SET_WINE_ALLOW2(INTERNET_STATUS_RESOLVING_NAME,2);
+ SET_WINE_ALLOW2(INTERNET_STATUS_NAME_RESOLVED,2);
}
SET_WINE_ALLOW(INTERNET_STATUS_CONNECTING_TO_SERVER);
SET_EXPECT(INTERNET_STATUS_CONNECTING_TO_SERVER);
@@ -315,7 +324,11 @@ static void InternetReadFile_test(int flags)
SET_EXPECT2(INTERNET_STATUS_REQUEST_SENT, 2);
SET_EXPECT2(INTERNET_STATUS_RECEIVING_RESPONSE, 2);
SET_EXPECT2(INTERNET_STATUS_RESPONSE_RECEIVED, 2);
+ SET_OPTIONAL(INTERNET_STATUS_CLOSING_CONNECTION);
+ SET_OPTIONAL(INTERNET_STATUS_CONNECTION_CLOSED);
SET_EXPECT(INTERNET_STATUS_REDIRECT);
+ SET_OPTIONAL(INTERNET_STATUS_CONNECTING_TO_SERVER);
+ SET_OPTIONAL(INTERNET_STATUS_CONNECTED_TO_SERVER);
if (flags & INTERNET_FLAG_ASYNC)
SET_EXPECT(INTERNET_STATUS_REQUEST_COMPLETE);
else
@@ -335,12 +348,12 @@ static void InternetReadFile_test(int flags)
if (flags & INTERNET_FLAG_ASYNC)
WaitForSingleObject(hCompleteEvent, INFINITE);
- if (first_connection_to_test_url)
+ todo_wine if (first_connection_to_test_url)
{
CHECK_NOTIFIED(INTERNET_STATUS_RESOLVING_NAME);
CHECK_NOTIFIED(INTERNET_STATUS_NAME_RESOLVED);
}
- else todo_wine
+ else
{
CHECK_NOT_NOTIFIED(INTERNET_STATUS_RESOLVING_NAME);
CHECK_NOT_NOTIFIED(INTERNET_STATUS_NAME_RESOLVED);
@@ -464,7 +477,7 @@ abort:
Sleep(100);
}
CHECK_NOTIFIED2(INTERNET_STATUS_HANDLE_CLOSING, (hor != 0x0) + (hic != 0x0));
- if (hor != 0x0) todo_wine
+ if (hor != 0x0 && (flags & INTERNET_FLAG_ASYNC)) todo_wine
{
CHECK_NOT_NOTIFIED(INTERNET_STATUS_CLOSING_CONNECTION);
CHECK_NOT_NOTIFIED(INTERNET_STATUS_CONNECTION_CLOSED);
@@ -537,11 +550,13 @@ static void InternetReadFileExA_test(int flags)
{
SET_EXPECT(INTERNET_STATUS_RESOLVING_NAME);
SET_EXPECT(INTERNET_STATUS_NAME_RESOLVED);
+ SET_WINE_ALLOW(INTERNET_STATUS_RESOLVING_NAME);
+ SET_WINE_ALLOW(INTERNET_STATUS_NAME_RESOLVED);
}
else
{
- SET_WINE_ALLOW(INTERNET_STATUS_RESOLVING_NAME);
- SET_WINE_ALLOW(INTERNET_STATUS_NAME_RESOLVED);
+ SET_WINE_ALLOW2(INTERNET_STATUS_RESOLVING_NAME,2);
+ SET_WINE_ALLOW2(INTERNET_STATUS_NAME_RESOLVED,2);
}
SET_WINE_ALLOW(INTERNET_STATUS_CONNECTING_TO_SERVER);
SET_EXPECT(INTERNET_STATUS_CONNECTING_TO_SERVER);
@@ -551,6 +566,8 @@ static void InternetReadFileExA_test(int flags)
SET_EXPECT2(INTERNET_STATUS_REQUEST_SENT, 2);
SET_EXPECT2(INTERNET_STATUS_RECEIVING_RESPONSE, 2);
SET_EXPECT2(INTERNET_STATUS_RESPONSE_RECEIVED, 2);
+ SET_OPTIONAL(INTERNET_STATUS_CLOSING_CONNECTION);
+ SET_OPTIONAL(INTERNET_STATUS_CONNECTION_CLOSED);
SET_EXPECT(INTERNET_STATUS_REDIRECT);
if (flags & INTERNET_FLAG_ASYNC)
SET_EXPECT(INTERNET_STATUS_REQUEST_COMPLETE);
@@ -618,8 +635,11 @@ static void InternetReadFileExA_test(int flags)
inetbuffers.dwOffsetLow = 5678;
SET_WINE_ALLOW(INTERNET_STATUS_RECEIVING_RESPONSE);
SET_WINE_ALLOW(INTERNET_STATUS_RESPONSE_RECEIVED);
+ SET_WINE_ALLOW(INTERNET_STATUS_CLOSING_CONNECTION);
+ SET_WINE_ALLOW(INTERNET_STATUS_CONNECTION_CLOSED);
rc = InternetReadFileEx(hor, &inetbuffers, 0, 0xdeadcafe);
ok(rc, "InternetReadFileEx failed with error %u\n", GetLastError());
+ trace("read %i bytes\n", inetbuffers.dwBufferLength);
todo_wine
{
CHECK_NOT_NOTIFIED(INTERNET_STATUS_RECEIVING_RESPONSE);
@@ -697,7 +717,7 @@ static void InternetReadFileExA_test(int flags)
length += inetbuffers.dwBufferLength;
}
- ok(length > 0, "failed to read any of the document\n");
+ todo_wine ok(length > 0, "failed to read any of the document\n");
trace("Finished. Read %d bytes\n", length);
/* WinXP does not send, but Win98 does */
@@ -725,16 +745,8 @@ abort:
Sleep(100);
CHECK_NOTIFIED2(INTERNET_STATUS_HANDLE_CLOSING, (hor != 0x0) + (hic != 0x0));
}
- if (hor != 0x0) todo_wine
- {
- CHECK_NOT_NOTIFIED(INTERNET_STATUS_CLOSING_CONNECTION);
- CHECK_NOT_NOTIFIED(INTERNET_STATUS_CONNECTION_CLOSED);
- }
- else
- {
- CHECK_NOT_NOTIFIED(INTERNET_STATUS_CLOSING_CONNECTION);
- CHECK_NOT_NOTIFIED(INTERNET_STATUS_CONNECTION_CLOSED);
- }
+ CHECK_NOT_NOTIFIED(INTERNET_STATUS_CLOSING_CONNECTION);
+ CHECK_NOT_NOTIFIED(INTERNET_STATUS_CONNECTION_CLOSED);
CloseHandle(hCompleteEvent);
first_connection_to_test_url = FALSE;
}
@@ -2095,6 +2107,7 @@ static void test_open_url_async(void)
static void init_status_tests(void)
{
memset(expect, 0, sizeof(expect));
+ memset(optional, 0, sizeof(optional));
memset(wine_allow, 0, sizeof(wine_allow));
memset(notified, 0, sizeof(notified));
memset(status_string, 0, sizeof(status_string));
More information about the wine-cvs
mailing list