moved psapi test
authorSteven Edwards <winehacker@gmail.com>
Sat, 6 Aug 2005 23:11:59 +0000 (23:11 +0000)
committerSteven Edwards <winehacker@gmail.com>
Sat, 6 Aug 2005 23:11:59 +0000 (23:11 +0000)
svn path=/trunk/; revision=17121

reactos/regtests/winetests/psapi/module.c [new file with mode: 0644]
reactos/regtests/winetests/psapi/psapi_test.xml [new file with mode: 0644]
reactos/regtests/winetests/psapi/testlist.c [new file with mode: 0644]

diff --git a/reactos/regtests/winetests/psapi/module.c b/reactos/regtests/winetests/psapi/module.c
new file mode 100644 (file)
index 0000000..9d8aec0
--- /dev/null
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2004 Stefan Leichter
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include <stdarg.h>
+
+#include "wine/test.h"
+#include "windef.h"
+#include "winbase.h"
+#include "winerror.h"
+#include "wingdi.h"
+#include "psapi.h"
+
+/* Function ptrs */
+static HMODULE dll;
+static DWORD (WINAPI *pGetModuleBaseNameA)(HANDLE, HANDLE, LPSTR, DWORD);
+
+static void test_module_base_name(void)
+{   DWORD retval;
+    char buffer[MAX_PATH];
+    HMODULE self, modself;
+    DWORD exact;
+
+    if (!pGetModuleBaseNameA) return;
+
+    self = OpenProcess( PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,
+                       FALSE, GetCurrentProcessId());
+    if (!self) {
+       ok(0, "OpenProcess() failed\n");
+       return;
+    }
+    modself = GetModuleHandle(NULL);
+    if (!modself) {
+       ok(0, "GetModuleHandle() failed\n");
+       return;
+    }
+    exact = pGetModuleBaseNameA( self, modself, buffer, MAX_PATH);
+    if (!exact) {
+       ok(0, "GetModuleBaseNameA failed unexpected with error 0x%08lx\n",
+               GetLastError());
+       return;
+    }
+
+    SetLastError(ERROR_SUCCESS);
+    retval = pGetModuleBaseNameA( NULL, NULL, NULL, 0);
+    ok(!retval, "function result wrong, got %ld expected 0\n", retval);
+    ok( ERROR_INVALID_PARAMETER == GetLastError() ||
+       ERROR_INVALID_HANDLE == GetLastError(),
+       "last error wrong, got %ld expected ERROR_INVALID_PARAMETER/"
+       "ERROR_INVALID_HANDLE (98)\n", GetLastError());
+
+    SetLastError(ERROR_SUCCESS);
+    retval = pGetModuleBaseNameA( NULL, NULL, NULL, MAX_PATH);
+    ok(!retval, "function result wrong, got %ld expected 0\n", retval);
+    ok( ERROR_INVALID_PARAMETER == GetLastError() ||
+       ERROR_INVALID_HANDLE == GetLastError(),
+       "last error wrong, got %ld expected ERROR_INVALID_PARAMETER/"
+       "ERROR_INVALID_HANDLE (98)\n", GetLastError());
+
+    SetLastError(ERROR_SUCCESS);
+    retval = pGetModuleBaseNameA( NULL, NULL, buffer, 0);
+    ok(!retval, "function result wrong, got %ld expected 0\n", retval);
+    ok( ERROR_INVALID_PARAMETER == GetLastError() ||
+       ERROR_INVALID_HANDLE == GetLastError(),
+       "last error wrong, got %ld expected ERROR_INVALID_PARAMETER/"
+       "ERROR_INVALID_HANDLE (98)\n", GetLastError());
+
+    memset(buffer, 0, sizeof(buffer));
+    SetLastError(ERROR_SUCCESS);
+    retval = pGetModuleBaseNameA( NULL, NULL, buffer, 1);
+    ok(!retval, "function result wrong, got %ld expected 0\n", retval);
+    ok(ERROR_INVALID_HANDLE == GetLastError(),
+       "last error wrong, got %ld expected ERROR_INVALID_HANDLE\n",
+       GetLastError());
+
+    memset(buffer, 0, sizeof(buffer));
+    SetLastError(ERROR_SUCCESS);
+    retval = pGetModuleBaseNameA( self, NULL, buffer, 1);
+    ok(!retval || retval == 1,
+       "function result wrong, got %ld expected 0 (98)/1\n", retval);
+#ifndef __REACTOS__
+    ok((retval && ERROR_SUCCESS == GetLastError()) ||
+       (!retval && ERROR_MOD_NOT_FOUND == GetLastError()),
+       "last error wrong, got %ld expected ERROR_SUCCESS/"
+       "ERROR_MOD_NOT_FOUND (98)\n", GetLastError());
+#endif 
+    ok(1 == strlen(buffer) || !strlen(buffer),
+       "buffer content length wrong, got %d(%s) expected 0 (98,XP)/1\n",
+       strlen(buffer), buffer);
+
+    memset(buffer, 0, sizeof(buffer));
+    SetLastError(ERROR_SUCCESS);
+    retval = pGetModuleBaseNameA( self, modself, buffer, 1);
+#ifndef __REACTOS__
+    ok(retval == 1, "function result wrong, got %ld expected 1\n", retval);
+#endif
+    ok(ERROR_SUCCESS == GetLastError(),
+       "last error wrong, got %ld expected ERROR_SUCCESS\n",
+       GetLastError());
+    ok((!strlen(buffer)) || (1 == strlen(buffer)), 
+       "buffer content length wrong, got %d(%s) expected 0 (XP)/1\n",
+       strlen(buffer), buffer);
+
+    SetLastError(ERROR_SUCCESS);
+    memset(buffer, 0, sizeof(buffer));
+    retval = pGetModuleBaseNameA( self, NULL, buffer, exact);
+    ok( !retval || retval == exact, 
+       "function result wrong, got %ld expected 0 (98)/%ld\n", retval, exact);
+#ifndef __REACTOS__
+    ok( (retval && ERROR_SUCCESS == GetLastError()) ||
+       (!retval && ERROR_MOD_NOT_FOUND == GetLastError()),
+       "last error wrong, got %ld expected ERROR_SUCCESS/"
+       "ERROR_MOD_NOT_FOUND (98)\n", GetLastError());
+#endif
+    ok((retval && (exact == strlen(buffer) || exact -1 == strlen(buffer))) ||
+       (!retval && !strlen(buffer)),
+       "buffer content length wrong, got %d(%s) expected 0(98)/%ld(XP)/%ld\n",
+       strlen(buffer), buffer, exact -1, exact);
+
+    SetLastError(ERROR_SUCCESS);
+    memset(buffer, 0, sizeof(buffer));
+    retval = pGetModuleBaseNameA( self, modself, buffer, exact);
+    ok(retval == exact || retval == exact -1, 
+       "function result wrong, got %ld expected %ld(98)/%ld\n",
+       retval, exact -1, exact);
+    ok(ERROR_SUCCESS == GetLastError(),
+       "last error wrong, got %ld expected ERROR_SUCCESS\n",
+       GetLastError());
+    ok(exact == strlen(buffer) || exact -1 == strlen(buffer),
+       "buffer content length wrong, got %d(%s) expected %ld(98,XP)/%ld\n",
+       strlen(buffer), buffer, exact -1, exact);
+}
+
+START_TEST(module)
+{
+    dll = LoadLibrary("psapi.dll");
+    if (!dll) {
+       trace("LoadLibraryA(psapi.dll) failed: skipping tests with target module\n");
+       return;
+    }
+
+    pGetModuleBaseNameA = (void*) GetProcAddress(dll, "GetModuleBaseNameA");
+
+    test_module_base_name();
+
+    FreeLibrary(dll);
+}
diff --git a/reactos/regtests/winetests/psapi/psapi_test.xml b/reactos/regtests/winetests/psapi/psapi_test.xml
new file mode 100644 (file)
index 0000000..4b7317a
--- /dev/null
@@ -0,0 +1,8 @@
+<module name="psapi_test" type="win32cui" installbase="bin" installname="psapi_test.exe" warnings="true">
+    <include base="psapi_test">.</include>
+    <define name="__USE_W32API" />
+    <library>ntdll</library>
+    <library>psapi</library>
+    <file>testlist.c</file>
+    <file>module.c</file>
+</module>
diff --git a/reactos/regtests/winetests/psapi/testlist.c b/reactos/regtests/winetests/psapi/testlist.c
new file mode 100644 (file)
index 0000000..a388adb
--- /dev/null
@@ -0,0 +1,25 @@
+/* Automatically generated file; DO NOT EDIT!! */
+
+/* stdarg.h is needed for Winelib */
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include "windef.h"
+#include "winbase.h"
+
+extern void func_module(void);
+
+struct test
+{
+    const char *name;
+    void (*func)(void);
+};
+
+static const struct test winetest_testlist[] =
+{
+    { "module", func_module },
+    { 0, 0 }
+};
+
+#define WINETEST_WANT_MAIN
+#include "wine/test.h"