On Wed, Jun 25, 2008 at 11:00 AM, Alexander Morozov amorozov@etersoft.ru wrote:
Changelog: Add InternetErrorDlg tests
I ran these tests on Win98 and WinXP
From 687f7d365b97d1da95db222e5bd5bbdf5c62c76f Mon Sep 17 00:00:00 2001 From: Alexander Morozov amorozov@builder.office.etersoft.ru Date: Wed, 25 Jun 2008 19:01:42 +0400 Subject: [PATCH] wininet/tests: add InternetErrorDlg tests
dlls/wininet/tests/Makefile.in | 3 +- dlls/wininet/tests/dialogs.c | 194 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 196 insertions(+), 1 deletions(-) create mode 100644 dlls/wininet/tests/dialogs.c
diff --git a/dlls/wininet/tests/Makefile.in b/dlls/wininet/tests/Makefile.in index ba8f662..92d875b 100644 --- a/dlls/wininet/tests/Makefile.in +++ b/dlls/wininet/tests/Makefile.in @@ -3,9 +3,10 @@ TOPOBJDIR = ../../.. SRCDIR = @srcdir@ VPATH = @srcdir@ TESTDLL = wininet.dll -IMPORTS = wininet ws2_32 kernel32 +IMPORTS = wininet ws2_32 kernel32 user32
CTESTS = \
dialogs.c \ ftp.c \ generated.c \ http.c \
diff --git a/dlls/wininet/tests/dialogs.c b/dlls/wininet/tests/dialogs.c new file mode 100644 index 0000000..c2f3878 --- /dev/null +++ b/dlls/wininet/tests/dialogs.c @@ -0,0 +1,194 @@ +/*
- Wininet - dialog tests
- Copyright 2008 Alexander Morozov for Etersoft
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
+#include "windows.h" +#include "wininet.h"
+#include "wine/test.h"
+static LONG end_thread;
+static BOOL CALLBACK enum_wnd_proc(HWND hwnd, LPARAM lparam) +{
- SendMessageA(hwnd, WM_CLOSE, 0, 0);
- InterlockedIncrement(&end_thread);
- return TRUE;
+}
+static DWORD CALLBACK killer_thread(LPVOID param) +{
- /* Without Sleep(50) a window failed to close sometimes */
- Sleep(50);
- while (!end_thread)
EnumThreadWindows((DWORD)param, enum_wnd_proc, 0);
- return 0;
+}
+static void test_InternetErrorDlg(void) +{
- HANDLE hThread;
- HINTERNET hi, hc, hr;
- DWORD ret, id;
- hi = InternetOpenA("winetest", 0, NULL, NULL, 0);
- ok(hi != NULL, "InternetOpen failed\n");
- hc = InternetConnectA(hi, "localhost", INTERNET_DEFAULT_HTTP_PORT,
NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
- ok(hc != NULL, "InternetConnect failed\n");
- hr = HttpOpenRequestA(hc, "GET", "/", NULL, NULL, NULL, 0, 0);
- ok(hr != NULL, "HttpOpenRequest failed\n");
- ret = InternetErrorDlg(NULL, NULL, ERROR_SUCCESS, 0, NULL);
- todo_wine
- ok(ret == ERROR_INVALID_HANDLE, "InternetErrorDlg failed\n");
- ret = InternetErrorDlg(GetDesktopWindow(), hr,
ERROR_SUCCESS, 0, NULL);
- todo_wine
- ok(ret == ERROR_NOT_SUPPORTED, "InternetErrorDlg failed\n");
- ret = InternetErrorDlg(GetDesktopWindow(), hr,
ERROR_FILE_NOT_FOUND, 0, NULL);
- todo_wine
- ok(ret == ERROR_NOT_SUPPORTED, "InternetErrorDlg failed\n");
- end_thread = 0;
- hThread = CreateThread(NULL, 0, killer_thread,
(LPVOID)GetCurrentThreadId(), 0, &id);
- ok(hThread != NULL, "create thread failed\n");
- if (NULL != hThread)
- {
ret = InternetErrorDlg(GetDesktopWindow(), hr,
ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR, 0, NULL);
ok(ret == ERROR_CANCELLED || ret == ERROR_SUCCESS,
"InternetErrorDlg failed\n");
InterlockedIncrement(&end_thread);
ret = WaitForSingleObject(hThread, 3000);
ok(ret == WAIT_OBJECT_0, "thread wait failed\n");
CloseHandle(hThread);
- }
- end_thread = 0;
- hThread = CreateThread(NULL, 0, killer_thread,
(LPVOID)GetCurrentThreadId(), 0, &id);
- ok(hThread != NULL, "create thread failed\n");
- if (NULL != hThread)
- {
ret = InternetErrorDlg(GetDesktopWindow(), hr,
ERROR_INTERNET_POST_IS_NON_SECURE, 0, NULL);
ok(ret == ERROR_CANCELLED || ret == ERROR_SUCCESS,
"InternetErrorDlg failed\n");
InterlockedIncrement(&end_thread);
ret = WaitForSingleObject(hThread, 3000);
ok(ret == WAIT_OBJECT_0, "thread wait failed\n");
CloseHandle(hThread);
- }
- end_thread = 0;
- hThread = CreateThread(NULL, 0, killer_thread,
(LPVOID)GetCurrentThreadId(), 0, &id);
- ok(hThread != NULL, "create thread failed\n");
- if (NULL != hThread)
- {
ret = InternetErrorDlg(GetDesktopWindow(), hr,
ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED, 0, NULL);
todo_wine
ok(ret == ERROR_CANCELLED || ret == ERROR_SUCCESS,
"InternetErrorDlg failed\n");
InterlockedIncrement(&end_thread);
ret = WaitForSingleObject(hThread, 3000);
ok(ret == WAIT_OBJECT_0, "thread wait failed\n");
CloseHandle(hThread);
- }
- end_thread = 0;
- hThread = CreateThread(NULL, 0, killer_thread,
(LPVOID)GetCurrentThreadId(), 0, &id);
- ok(hThread != NULL, "create thread failed\n");
- if (NULL != hThread)
- {
ret = InternetErrorDlg(GetDesktopWindow(), hr,
ERROR_INTERNET_INVALID_CA, 0, NULL);
ok(ret == ERROR_CANCELLED || ret == ERROR_SUCCESS,
"InternetErrorDlg failed\n");
InterlockedIncrement(&end_thread);
ret = WaitForSingleObject(hThread, 3000);
ok(ret == WAIT_OBJECT_0, "thread wait failed\n");
CloseHandle(hThread);
- }
- end_thread = 0;
- hThread = CreateThread(NULL, 0, killer_thread,
(LPVOID)GetCurrentThreadId(), 0, &id);
- ok(hThread != NULL, "create thread failed\n");
- if (NULL != hThread)
- {
ret = InternetErrorDlg(GetDesktopWindow(), hr,
ERROR_INTERNET_SEC_CERT_CN_INVALID, 0, NULL);
ok(ret == ERROR_CANCELLED || ret == ERROR_SUCCESS,
"InternetErrorDlg failed\n");
InterlockedIncrement(&end_thread);
ret = WaitForSingleObject(hThread, 3000);
ok(ret == WAIT_OBJECT_0, "thread wait failed\n");
CloseHandle(hThread);
- }
- end_thread = 0;
- hThread = CreateThread(NULL, 0, killer_thread,
(LPVOID)GetCurrentThreadId(), 0, &id);
- ok(hThread != NULL, "create thread failed\n");
- if (NULL != hThread)
- {
ret = InternetErrorDlg(GetDesktopWindow(), hr,
ERROR_INTERNET_SEC_CERT_DATE_INVALID, 0, NULL);
ok(ret == ERROR_CANCELLED || ret == ERROR_SUCCESS,
"InternetErrorDlg failed\n");
InterlockedIncrement(&end_thread);
ret = WaitForSingleObject(hThread, 3000);
ok(ret == WAIT_OBJECT_0, "thread wait failed\n");
CloseHandle(hThread);
- }
- /* This crashes
Crashes what? Wine? Windows? If it crashes Windows, the test needs to be if-def'ed out, not commented out. If it crashes on Wine but not Windows, then this patch is wrong. You can't submit a test that crashes in Wine, even if it's commented out. The part that crashes has to be fixed first.