Paul Vriens : kernel32: Make tests run on Win98 again.
Alexandre Julliard
julliard at winehq.org
Wed Dec 5 06:57:00 CST 2007
Module: wine
Branch: master
Commit: 0ada917873a69f96aaa0e07817194b63e5d2896e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0ada917873a69f96aaa0e07817194b63e5d2896e
Author: Paul Vriens <paul.vriens.wine at gmail.com>
Date: Wed Dec 5 11:40:05 2007 +0100
kernel32: Make tests run on Win98 again.
---
dlls/kernel32/tests/console.c | 45 ++++++++++++++++++++++++++++++-----------
1 files changed, 33 insertions(+), 12 deletions(-)
diff --git a/dlls/kernel32/tests/console.c b/dlls/kernel32/tests/console.c
index 109b6bb..d3605aa 100644
--- a/dlls/kernel32/tests/console.c
+++ b/dlls/kernel32/tests/console.c
@@ -23,10 +23,8 @@
#include <windows.h>
#include <stdio.h>
-BOOL WINAPI GetConsoleInputExeNameA(DWORD, LPSTR);
-BOOL WINAPI GetConsoleInputExeNameW(DWORD, LPWSTR);
-BOOL WINAPI SetConsoleInputExeNameA(LPCSTR);
-BOOL WINAPI SetConsoleInputExeNameW(LPCWSTR);
+static BOOL (WINAPI *pGetConsoleInputExeNameA)(DWORD, LPSTR);
+static BOOL (WINAPI *pSetConsoleInputExeNameA)(LPCSTR);
/* DEFAULT_ATTRIB is used for all initial filling of the console.
* all modifications are made with TEST_ATTRIB so that we could check
@@ -55,6 +53,21 @@ BOOL WINAPI SetConsoleInputExeNameW(LPCWSTR);
ok(expect, "At (%d,%d): expecting attr %04x got %04x\n", (c).X, (c).Y, (attr), __attr); \
} while (0)
+static void init_function_pointers(void)
+{
+ HMODULE hKernel32;
+
+#define KERNEL32_GET_PROC(func) \
+ p##func = (void *)GetProcAddress(hKernel32, #func); \
+ if(!p##func) trace("GetProcAddress(hKernel32, '%s') failed\n", #func);
+
+ hKernel32 = GetModuleHandleA("kernel32.dll");
+ KERNEL32_GET_PROC(GetConsoleInputExeNameA);
+ KERNEL32_GET_PROC(SetConsoleInputExeNameA);
+
+#undef KERNEL32_GET_PROC
+}
+
/* FIXME: this could be optimized on a speed point of view */
static void resetContent(HANDLE hCon, COORD sbSize, BOOL content)
{
@@ -759,13 +772,13 @@ static void test_GetSetConsoleInputExeName(void)
static char input_exe[MAX_PATH] = "winetest.exe";
SetLastError(0xdeadbeef);
- ret = GetConsoleInputExeNameA(0, NULL);
+ ret = pGetConsoleInputExeNameA(0, NULL);
error = GetLastError();
ok(ret, "GetConsoleInputExeNameA failed\n");
ok(error == ERROR_BUFFER_OVERFLOW, "got %u expected ERROR_BUFFER_OVERFLOW\n", error);
SetLastError(0xdeadbeef);
- ret = GetConsoleInputExeNameA(0, buffer);
+ ret = pGetConsoleInputExeNameA(0, buffer);
error = GetLastError();
ok(ret, "GetConsoleInputExeNameA failed\n");
ok(error == ERROR_BUFFER_OVERFLOW, "got %u expected ERROR_BUFFER_OVERFLOW\n", error);
@@ -773,26 +786,26 @@ static void test_GetSetConsoleInputExeName(void)
GetModuleFileNameA(GetModuleHandle(NULL), module, sizeof(module));
p = strrchr(module, '\\') + 1;
- ret = GetConsoleInputExeNameA(sizeof(buffer)/sizeof(buffer[0]), buffer);
+ ret = pGetConsoleInputExeNameA(sizeof(buffer)/sizeof(buffer[0]), buffer);
ok(ret, "GetConsoleInputExeNameA failed\n");
todo_wine ok(!lstrcmpA(buffer, p), "got %s expected %s\n", buffer, p);
SetLastError(0xdeadbeef);
- ret = SetConsoleInputExeNameA(NULL);
+ ret = pSetConsoleInputExeNameA(NULL);
error = GetLastError();
ok(!ret, "SetConsoleInputExeNameA failed\n");
ok(error == ERROR_INVALID_PARAMETER, "got %u expected ERROR_INVALID_PARAMETER\n", error);
SetLastError(0xdeadbeef);
- ret = SetConsoleInputExeNameA("");
+ ret = pSetConsoleInputExeNameA("");
error = GetLastError();
ok(!ret, "SetConsoleInputExeNameA failed\n");
ok(error == ERROR_INVALID_PARAMETER, "got %u expected ERROR_INVALID_PARAMETER\n", error);
- ret = SetConsoleInputExeNameA(input_exe);
+ ret = pSetConsoleInputExeNameA(input_exe);
ok(ret, "SetConsoleInputExeNameA failed\n");
- ret = GetConsoleInputExeNameA(sizeof(buffer)/sizeof(buffer[0]), buffer);
+ ret = pGetConsoleInputExeNameA(sizeof(buffer)/sizeof(buffer[0]), buffer);
ok(ret, "GetConsoleInputExeNameA failed\n");
ok(!lstrcmpA(buffer, input_exe), "got %s expected %s\n", buffer, input_exe);
}
@@ -803,6 +816,8 @@ START_TEST(console)
BOOL ret;
CONSOLE_SCREEN_BUFFER_INFO sbi;
+ init_function_pointers();
+
/* be sure we have a clean console (and that's our own)
* FIXME: this will make the test fail (currently) if we don't run
* under X11
@@ -836,5 +851,11 @@ START_TEST(console)
testCtrlHandler();
/* still to be done: access rights & access on objects */
- test_GetSetConsoleInputExeName();
+ if (!pGetConsoleInputExeNameA && !pSetConsoleInputExeNameA)
+ {
+ skip("GetConsoleInputExeNameA and/or SetConsoleInputExeNameA is not available\n");
+ return;
+ }
+ else
+ test_GetSetConsoleInputExeName();
}
More information about the wine-cvs
mailing list