Add missing files
authorTimo Kreuzer <timo.kreuzer@reactos.org>
Wed, 25 Aug 2010 08:50:10 +0000 (08:50 +0000)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Wed, 25 Aug 2010 08:50:10 +0000 (08:50 +0000)
svn path=/trunk/; revision=48620

rostests/apitests/dciman32/DCICreatePrimary.c [new file with mode: 0644]
rostests/apitests/dciman32/dciman32_apitest.rbuild [new file with mode: 0644]
rostests/apitests/dciman32/testlist.c [new file with mode: 0644]
rostests/apitests/user32/GetSystemMetrics.c [new file with mode: 0644]
rostests/apitests/user32/InitializeLpkHooks.c [new file with mode: 0644]
rostests/apitests/user32/RealGetWindowClass.c [new file with mode: 0644]
rostests/apitests/user32/ScrollDC.c [new file with mode: 0644]
rostests/apitests/user32/ScrollWindowEx.c [new file with mode: 0644]
rostests/apitests/user32/testlist.c [new file with mode: 0644]
rostests/apitests/user32/user32_apitest.rbuild [new file with mode: 0644]

diff --git a/rostests/apitests/dciman32/DCICreatePrimary.c b/rostests/apitests/dciman32/DCICreatePrimary.c
new file mode 100644 (file)
index 0000000..e6409e9
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * PROJECT:         ReactOS api tests
+ * LICENSE:         GPL - See COPYING in the top level directory
+ * PURPOSE:         Test for DCICreatePrimary
+ * PROGRAMMERS:     Timo Kreuzer
+ */
+
+#include <stdio.h>
+#include <wine/test.h>
+#include <windows.h>
+
+void Test_DCICreatePrimary()
+{
+
+}
+
+START_TEST(DCICreatePrimary)
+{
+    Test_DCICreatePrimary();
+}
+
diff --git a/rostests/apitests/dciman32/dciman32_apitest.rbuild b/rostests/apitests/dciman32/dciman32_apitest.rbuild
new file mode 100644 (file)
index 0000000..950bb1b
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
+<group>
+<module name="dciman32_apitest" type="win32cui" installbase="bin" installname="dciman32_apitest.exe">
+       <include base="dciman32_apitest">.</include>
+       <library>wine</library>
+       <library>gdi32</library>
+       <library>user32</library>
+       <library>pseh</library>
+       <file>testlist.c</file>
+
+       <file>DCICreatePrimary.c</file>
+
+</module>
+</group>
diff --git a/rostests/apitests/dciman32/testlist.c b/rostests/apitests/dciman32/testlist.c
new file mode 100644 (file)
index 0000000..4dba129
--- /dev/null
@@ -0,0 +1,16 @@
+#define WIN32_LEAN_AND_MEAN
+#define __ROS_LONG64__
+#include <windows.h>
+
+#define STANDALONE
+#include "wine/test.h"
+
+extern void func_DCICreatePrimary(void);
+
+const struct test winetest_testlist[] =
+{
+    { "DCICreatePrimary", func_DCICreatePrimary },
+
+    { 0, 0 }
+};
+
diff --git a/rostests/apitests/user32/GetSystemMetrics.c b/rostests/apitests/user32/GetSystemMetrics.c
new file mode 100644 (file)
index 0000000..8a8a5cb
--- /dev/null
@@ -0,0 +1,410 @@
+/*
+ * PROJECT:         ReactOS api tests
+ * LICENSE:         GPL - See COPYING in the top level directory
+ * PURPOSE:         Test for GetSystemMetrics
+ * PROGRAMMERS:     Timo Kreuzer
+ */
+
+#include <stdio.h>
+#include <wine/test.h>
+#include <windows.h>
+
+void Test_GetSystemMetrics()
+{
+    INT ret;
+    HDC hDC;
+    BOOL BoolVal;
+    UINT UintVal;
+    RECT rect;
+
+    SetLastError(0);
+    hDC = GetDC(0);
+
+    ret = GetSystemMetrics(0);
+    ok(ret > 0, "ret = %d", ret);
+
+    ret = GetSystemMetrics(64);
+    ok(ret == 0, "ret = %d", ret);
+    ret = GetSystemMetrics(65);
+    ok(ret == 0, "ret = %d", ret);
+    ret = GetSystemMetrics(66);
+    ok(ret == 0, "ret = %d", ret);
+
+
+    ret = GetSystemMetrics(SM_CXSCREEN);
+    ok(ret == GetDeviceCaps(hDC, HORZRES), "ret = %d", ret);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYSCREEN);
+    ok(ret == GetDeviceCaps(hDC, VERTRES), "ret = %d", ret);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXVSCROLL);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYHSCROLL);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYCAPTION);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXBORDER);
+    SystemParametersInfoW(SPI_GETFOCUSBORDERWIDTH, 0, &UintVal, 0);
+    ok(ret == UintVal, "ret = %d", ret);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYBORDER);
+    SystemParametersInfoW(SPI_GETFOCUSBORDERHEIGHT, 0, &UintVal, 0);
+    ok(ret == UintVal, "ret = %d", ret);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXDLGFRAME);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYDLGFRAME);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYVTHUMB);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXHTHUMB);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXICON);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYICON);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXCURSOR);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYCURSOR);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYMENU);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    SystemParametersInfoW(SPI_GETWORKAREA, 0, &rect, 0);
+    ret = GetSystemMetrics(SM_CXFULLSCREEN);
+    ok(ret == rect.right, "ret = %d", ret);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYFULLSCREEN);
+    ok(ret == rect.bottom - rect.top - GetSystemMetrics(SM_CYCAPTION), "ret = %d", ret);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYKANJIWINDOW);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_MOUSEPRESENT);
+    ok(ret == 1, "ret = %d", ret);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYVSCROLL);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXHSCROLL);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_DEBUG);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_SWAPBUTTON);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_RESERVED1);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_RESERVED2);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_RESERVED3);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_RESERVED4);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXMIN);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYMIN);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXSIZE);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYSIZE);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXFRAME);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYFRAME);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXMINTRACK);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYMINTRACK);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXDOUBLECLK);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYDOUBLECLK);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXICONSPACING);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYICONSPACING);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_MENUDROPALIGNMENT);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_PENWINDOWS);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_DBCSENABLED);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CMOUSEBUTTONS);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+#if(WINVER >= 0x0400)
+    ret = GetSystemMetrics(SM_SECURE);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXEDGE);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYEDGE);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXMINSPACING);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYMINSPACING);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXSMICON);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYSMICON);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYSMCAPTION);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXSMSIZE);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYSMSIZE);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXMENUSIZE);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYMENUSIZE);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_ARRANGE);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXMINIMIZED);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYMINIMIZED);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXMAXTRACK);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYMAXTRACK);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXMAXIMIZED);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYMAXIMIZED);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_NETWORK);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CLEANBOOT);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXDRAG);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYDRAG);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_SHOWSOUNDS);
+    SystemParametersInfoW(SPI_GETSHOWSOUNDS, 0, &BoolVal, 0);
+    ok(ret == BoolVal, "ret = %d", ret);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXMENUCHECK);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYMENUCHECK);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_SLOWMACHINE);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_MIDEASTENABLED);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+#endif
+
+#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
+    ret = GetSystemMetrics(SM_MOUSEWHEELPRESENT);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+#endif
+
+#if(WINVER >= 0x0500)
+    ret = GetSystemMetrics(SM_XVIRTUALSCREEN);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_YVIRTUALSCREEN);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXVIRTUALSCREEN);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYVIRTUALSCREEN);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CMONITORS);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_SAMEDISPLAYFORMAT);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+#endif
+
+#if(_WIN32_WINNT >= 0x0500)
+    ret = GetSystemMetrics(SM_IMMENABLED);
+    ok(ret == 0 || ret == 1, "ret = %d\n", ret);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+#endif
+
+#if(_WIN32_WINNT >= 0x0501)
+    ret = GetSystemMetrics(SM_CXFOCUSBORDER);
+    SystemParametersInfoW(SPI_GETFOCUSBORDERWIDTH, 0, &UintVal, 0);
+    ok(ret == UintVal, "ret = %d", ret);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CYFOCUSBORDER);
+    SystemParametersInfoW(SPI_GETFOCUSBORDERHEIGHT, 0, &UintVal, 0);
+    ok(ret == UintVal, "ret = %d", ret);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_TABLETPC);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_MEDIACENTER);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_STARTER);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_SERVERR2);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+#endif
+
+#if(_WIN32_WINNT >= 0x0600)
+    ret = GetSystemMetrics(SM_MOUSEHORIZONTALWHEELPRESENT);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+
+    ret = GetSystemMetrics(SM_CXPADDEDBORDER);
+//    TEST(ret == 0);
+    ok(GetLastError() == 0, "GetLastError() = %ld\n", GetLastError());
+#endif
+
+}
+
+START_TEST(GetSystemMetrics)
+{
+    Test_GetSystemMetrics();
+}
+
diff --git a/rostests/apitests/user32/InitializeLpkHooks.c b/rostests/apitests/user32/InitializeLpkHooks.c
new file mode 100644 (file)
index 0000000..462b65c
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+ * PROJECT:         ReactOS api tests
+ * LICENSE:         GPL - See COPYING in the top level directory
+ * PURPOSE:         Test for InitializeLpkHooks
+ * PROGRAMMERS:     Magnus Olsen
+ */
+
+#include <stdio.h>
+#include <wine/test.h>
+#include <windows.h>
+
+
+typedef struct _LPK_LPEDITCONTROL_LIST
+{
+    PVOID EditCreate;
+    PVOID EditIchToXY;
+    PVOID EditMouseToIch;
+    PVOID EditCchInWidth;
+    PVOID EditGetLineWidth;
+    PVOID EditDrawText;
+    PVOID EditHScroll;
+    PVOID EditMoveSelection;
+    PVOID EditVerifyText;
+    PVOID EditNextWord;
+    PVOID EditSetMenu;
+    PVOID EditProcessMenu;
+    PVOID EditCreateCaret;
+    PVOID EditAdjustCaret;
+} LPK_LPEDITCONTROL_LIST, *PLPK_LPEDITCONTROL_LIST;
+
+
+DWORD (APIENTRY *fpLpkTabbedTextOut) (LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID);
+DWORD (APIENTRY *fpLpkPSMTextOut) (LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID);
+DWORD (APIENTRY *fpLpkDrawTextEx) (LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID);
+PLPK_LPEDITCONTROL_LIST (APIENTRY *fpLpkEditControl) ();
+
+int Count_myLpkTabbedTextOut = 0;
+int Count_myLpkPSMTextOut = 0;
+int Count_myLpkDrawTextEx = 0;
+
+DWORD WINAPI myLpkTabbedTextOut (LPVOID x1,LPVOID x2,LPVOID x3, LPVOID x4, LPVOID x5, LPVOID x6, LPVOID x7, LPVOID x8, 
+                                   LPVOID x9, LPVOID x10, LPVOID x11, LPVOID x12)
+{
+    Count_myLpkTabbedTextOut++;
+    return fpLpkTabbedTextOut(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12);
+}
+
+DWORD myLpkPSMTextOut (LPVOID x1,LPVOID x2,LPVOID x3,LPVOID x4,LPVOID x5,LPVOID x6)
+{
+    Count_myLpkPSMTextOut++;
+    return fpLpkPSMTextOut ( x1,  x2,  x3,  x4,  x5,  x6);
+}
+
+DWORD myLpkDrawTextEx(LPVOID x1,LPVOID x2,LPVOID x3,LPVOID x4,LPVOID x5, LPVOID x6, LPVOID x7, LPVOID x8, LPVOID x9,LPVOID x10)
+{
+    Count_myLpkDrawTextEx++;
+    return fpLpkDrawTextEx(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10);
+}
+
+
+typedef struct _USER32_INTERN_INITALIZEHOOKS
+{
+    PVOID fpLpkTabbedTextOut;
+    PVOID fpLpkPSMTextOut;
+    PVOID fpLpkDrawTextEx;
+    PLPK_LPEDITCONTROL_LIST fpListLpkEditControl;
+} USER32_INTERN_INITALIZEHOOKS, *PUSER32_INTERN_INITALIZEHOOKS;
+
+VOID WINAPI InitializeLpkHooks (PUSER32_INTERN_INITALIZEHOOKS);
+
+void Test_InitializeLpkHooks()
+{
+    USER32_INTERN_INITALIZEHOOKS setup;
+    HMODULE lib = LoadLibrary("LPK.DLL");
+
+    ok(lib != NULL, "lib = 0\n");
+    if (lib != NULL)
+    {
+        fpLpkTabbedTextOut = (DWORD (APIENTRY *) (LPVOID,LPVOID,LPVOID,LPVOID,LPVOID, LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID)) GetProcAddress(lib, "LpkTabbedTextOut");
+        fpLpkPSMTextOut = (DWORD (APIENTRY *) (LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID)) GetProcAddress(lib, "fpLpkPSMTextOut");
+        fpLpkDrawTextEx = (DWORD (APIENTRY *) (LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID,LPVOID)) GetProcAddress(lib, "LpkDrawTextEx");
+        fpLpkEditControl = (PLPK_LPEDITCONTROL_LIST (APIENTRY *) (VOID)) GetProcAddress(lib, "LpkEditControl");
+
+        setup.fpLpkTabbedTextOut = myLpkTabbedTextOut;
+        setup.fpLpkPSMTextOut = myLpkPSMTextOut;
+        setup.fpLpkDrawTextEx = myLpkDrawTextEx;
+
+        /* we have not add any test to this api */
+        setup.fpListLpkEditControl = (PLPK_LPEDITCONTROL_LIST)fpLpkEditControl;
+
+        /* use our own api that we just made */
+        InitializeLpkHooks(&setup);
+
+        /* FIXME add test now */
+
+        /* restore */
+        setup.fpLpkTabbedTextOut = fpLpkTabbedTextOut;
+        setup.fpLpkPSMTextOut = fpLpkPSMTextOut;
+        setup.fpLpkDrawTextEx = fpLpkDrawTextEx;
+        setup.fpListLpkEditControl = (PLPK_LPEDITCONTROL_LIST)fpLpkEditControl;
+        InitializeLpkHooks(&setup);
+    }
+
+}
+
+START_TEST(InitializeLpkHooks)
+{
+    Test_InitializeLpkHooks();
+}
+
diff --git a/rostests/apitests/user32/RealGetWindowClass.c b/rostests/apitests/user32/RealGetWindowClass.c
new file mode 100644 (file)
index 0000000..a8fe9db
--- /dev/null
@@ -0,0 +1,134 @@
+/*
+ * PROJECT:         ReactOS api tests
+ * LICENSE:         GPL - See COPYING in the top level directory
+ * PURPOSE:         Test for RealGetWindowClass
+ * PROGRAMMERS:     Gregor Gullwi
+ */
+
+#include <stdio.h>
+#include <wine/test.h>
+#include <windows.h>
+
+#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
+
+typedef struct _TestData
+{
+    BOOL    OverrideWndProc;            /* TRUE if lpfnWndProc should be overridden */
+    LPCSTR  ClassName;                  /* Name of the new class to register */
+    DWORD   WndExtra;                   /* Remove these WNDCLASS::cbWndExtra flags */
+    BOOL    ExpectsHwnd;                /* TRUE if a HWND should be created to run tests on */
+    LPCSTR  ExpectedClassNameBefore;    /* Expected class name before any dialog function is called */
+    LPCSTR  ExpectedClassNameAfter;     /* Expected class name after any dialog function is called */
+} TestData;
+
+static TestData RealClassTestData[] =
+{
+    {
+        TRUE,
+        "OverrideWndProc_with_DLGWINDOWEXTRA_TRUE",
+        0,
+        TRUE,
+        "OverrideWndProc_with_DLGWINDOWEXTRA_TRUE",
+        "#32770",
+    },
+    {
+        TRUE,
+        "OverrideWndProc_without_DLGWINDOWEXTRA_TRUE",
+        DLGWINDOWEXTRA,
+        TRUE,
+        "OverrideWndProc_without_DLGWINDOWEXTRA_TRUE",
+        "OverrideWndProc_without_DLGWINDOWEXTRA_TRUE",
+    },
+    {
+        FALSE,
+        "DefaultWndProc_with_DLGWINDOWEXTRA_FALSE",
+        0,
+        TRUE,
+        "#32770",
+        "#32770",
+    },
+    {
+        FALSE,
+        "DefaultWndProc_without_DLGWINDOWEXTRA_FALSE",
+        DLGWINDOWEXTRA,
+        FALSE,
+        "N/A",
+        "N/A",
+    },
+};
+
+void Test_RealGetWindowClass()
+{
+    int testNo;
+    UINT Result;
+    CHAR Buffer[1024];
+
+    Result = RealGetWindowClass( NULL, Buffer, ARRAY_SIZE(Buffer) );
+    ok(Result == 0, "Result = %d\n", Result);
+    ok(GetLastError() == ERROR_INVALID_WINDOW_HANDLE, "GetLastError() = %ld\n", GetLastError());
+
+    for (testNo = 0; testNo < ARRAY_SIZE(RealClassTestData); testNo++)
+    {
+        ATOM atom;
+        WNDCLASSA cls;
+        HWND hWnd;
+
+        /* Register classes, "derived" from built-in dialog, with and without the DLGWINDOWEXTRA flag set */
+        GetClassInfoA(0, "#32770", &cls);
+        if (RealClassTestData[testNo].OverrideWndProc)
+            cls.lpfnWndProc = DefWindowProcA;
+        cls.lpszClassName = RealClassTestData[testNo].ClassName;
+        cls.cbWndExtra &= ~RealClassTestData[testNo].WndExtra;
+        atom = RegisterClassA (&cls);
+        if (atom == 0) return;
+
+        /* Create a window */
+        hWnd = CreateWindowEx( WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR |
+                               WS_EX_DLGMODALFRAME | WS_EX_WINDOWEDGE | WS_EX_CONTROLPARENT | WS_EX_APPWINDOW,
+                               RealClassTestData[testNo].ClassName,
+                               RealClassTestData[testNo].ClassName,
+                               WS_POPUPWINDOW | WS_CLIPSIBLINGS | WS_DLGFRAME | WS_OVERLAPPED |
+                               WS_MINIMIZEBOX | WS_MAXIMIZEBOX | DS_3DLOOK | DS_SETFONT | DS_MODALFRAME,
+                               CW_USEDEFAULT, CW_USEDEFAULT, 100, 100,
+                               NULL, NULL, 0, 0);
+
+        /* Do we expect a HWND at all? */
+        if (RealClassTestData[testNo].ExpectsHwnd)
+        {
+            ok(hWnd != NULL, "\n");
+
+            if (hWnd != NULL)
+            {
+                /* Get the "real" class name */
+                Result = RealGetWindowClass( hWnd, Buffer, ARRAY_SIZE(Buffer) );
+                printf("Buffer: %s\nExpectedClassNameBefore(%d): %s\n", Buffer, testNo, RealClassTestData[testNo].ExpectedClassNameBefore);
+                ok( Result != 0, "\n" );
+                ok( strcmp( Buffer, RealClassTestData[testNo].ExpectedClassNameBefore ) == 0, "\n" );
+
+                /* Call a function that requires a dialog window */
+                DefDlgProcA( hWnd, DM_SETDEFID, IDCANCEL, 0 );
+
+                /* Get the "real" class name again */
+                Result = RealGetWindowClass( hWnd, Buffer, ARRAY_SIZE(Buffer) );
+                printf("Buffer: %s\nExpectedClassNameAfter(%d): %s\n", Buffer, testNo, RealClassTestData[testNo].ExpectedClassNameAfter);
+                ok( Result != 0, "\n" );
+                ok( strcmp( Buffer, RealClassTestData[testNo].ExpectedClassNameAfter ) == 0, "\n" );
+            }
+        }
+        else
+        {
+            ok(hWnd == NULL, "\n");
+        }
+
+        /* Cleanup */
+        DestroyWindow(hWnd);
+        UnregisterClass(RealClassTestData[testNo].ClassName, 0);
+    }
+
+}
+
+START_TEST(RealGetWindowClass)
+{
+    Test_RealGetWindowClass();
+}
+
diff --git a/rostests/apitests/user32/ScrollDC.c b/rostests/apitests/user32/ScrollDC.c
new file mode 100644 (file)
index 0000000..4697109
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * PROJECT:         ReactOS api tests
+ * LICENSE:         GPL - See COPYING in the top level directory
+ * PURPOSE:         Test for ScrollDC
+ * PROGRAMMERS:     Timo Kreuzer
+ */
+
+#include <stdio.h>
+#include <wine/test.h>
+#include <windows.h>
+
+void Test_ScrollDC()
+{
+       HWND hWnd, hWnd2;
+       HDC hDC;
+       HRGN hrgn;
+       RECT rcClip;
+       int iResult;
+
+       /* Create a window */
+       hWnd = CreateWindowW(L"BUTTON", L"TestWindow", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
+                           100, 100, 100, 100,
+                           NULL, NULL, 0, 0);
+       UpdateWindow(hWnd);
+       hDC = GetDC(hWnd);
+
+       /* Test that no update region is there */
+       hrgn = CreateRectRgn(0,0,0,0);
+       iResult = GetUpdateRgn(hWnd, hrgn, FALSE);
+       ok (iResult == NULLREGION, "\n");
+
+    /* Test normal scrolling */
+       ok(ScrollDC(hDC, 0, 0, NULL, NULL, hrgn, NULL) == TRUE, "\n");
+
+    /* Scroll with invalid update region */
+       DeleteObject(hrgn);
+       ok(ScrollDC(hDC, 50, 0, NULL, NULL, hrgn, NULL) == FALSE, "\n");
+       hrgn = CreateRectRgn(0,0,0,0);
+       ok(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION, "\n");
+
+    /* Scroll with invalid update rect pointer */
+       ok(ScrollDC(hDC, 50, 0, NULL, NULL, NULL, (PRECT)1) == 0, "\n");
+       ok(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION, "\n");
+
+    /* Scroll with a clip rect */
+    rcClip.left = 50; rcClip.top = 0; rcClip.right = 100; rcClip.bottom = 100;
+       ok(ScrollDC(hDC, 50, 0, NULL, &rcClip, hrgn, NULL) == TRUE, "\n");
+       ok(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION, "\n");
+
+    /* Scroll with a clip rect */
+    rcClip.left = 50; rcClip.top = 0; rcClip.right = 100; rcClip.bottom = 100;
+       ok(ScrollDC(hDC, 50, 50, NULL, &rcClip, hrgn, NULL) == TRUE, "\n");
+       ok(GetUpdateRgn(hWnd, hrgn, FALSE) == NULLREGION, "\n");
+
+       /* Overlap with another window */
+       hWnd2 = CreateWindowW(L"BUTTON", L"TestWindow", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
+                           30, 160, 100, 100,
+                           NULL, NULL, 0, 0);
+       UpdateWindow(hWnd2);
+
+    /* Cleanup */
+       ReleaseDC(hWnd, hDC);
+    DestroyWindow(hWnd);
+    DestroyWindow(hWnd2);
+
+}
+
+START_TEST(ScrollDC)
+{
+    Test_ScrollDC();
+}
+
diff --git a/rostests/apitests/user32/ScrollWindowEx.c b/rostests/apitests/user32/ScrollWindowEx.c
new file mode 100644 (file)
index 0000000..2fd3a9d
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * PROJECT:         ReactOS api tests
+ * LICENSE:         GPL - See COPYING in the top level directory
+ * PURPOSE:         Test for ScrollWindowEx
+ * PROGRAMMERS:     Timo Kreuzer
+ */
+
+#include <stdio.h>
+#include <wine/test.h>
+#include <windows.h>
+
+void Test_ScrollWindowEx()
+{
+       HWND hWnd;
+       HRGN hrgn;
+       int Result;
+
+       /* Create a window */
+       hWnd = CreateWindowW(L"BUTTON", L"TestWindow", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
+                           CW_USEDEFAULT, CW_USEDEFAULT, 100, 100,
+                           NULL, NULL, 0, 0);
+       UpdateWindow(hWnd);
+
+       /* Assert that no update region is there */
+       hrgn = CreateRectRgn(0,0,0,0);
+       Result = GetUpdateRgn(hWnd, hrgn, FALSE);
+       ok(Result == NULLREGION, "Result = %d\n", Result);
+
+       Result = ScrollWindowEx(hWnd, 20, 0, NULL, NULL, NULL, NULL, 0);
+       ok(Result == SIMPLEREGION, "Result = %d\n", Result);
+       Result = GetUpdateRgn(hWnd, hrgn, FALSE);
+       ok(Result == NULLREGION, "Result = %d\n", Result);
+
+       Result = ScrollWindowEx(hWnd, 20, 0, NULL, NULL, NULL, NULL, SW_INVALIDATE);
+       ok(Result == SIMPLEREGION, "Result = %d\n", Result);
+       Result = GetUpdateRgn(hWnd, hrgn, FALSE);
+       ok(Result == SIMPLEREGION, "Result = %d\n", Result);
+       UpdateWindow(hWnd);
+
+       // test invalid update region
+       DeleteObject(hrgn);
+       Result = ScrollWindowEx(hWnd, 20, 0, NULL, NULL, hrgn, NULL, SW_INVALIDATE);
+       ok(Result == ERROR, "Result = %d\n", Result);
+       hrgn = CreateRectRgn(0,0,0,0);
+       UpdateWindow(hWnd);
+
+       // Test invalid updaterect pointer
+       Result = ScrollWindowEx(hWnd, 20, 0, NULL, NULL, NULL, (LPRECT)1, SW_INVALIDATE);
+       ok(Result == ERROR, "Result = %d\n", Result);
+       Result = GetUpdateRgn(hWnd, hrgn, FALSE);
+       ok(Result == SIMPLEREGION, "Result = %d\n", Result);
+
+// test for alignment of rects
+
+       DeleteObject(hrgn);
+    DestroyWindow(hWnd);
+}
+
+START_TEST(ScrollWindowEx)
+{
+    Test_ScrollWindowEx();
+}
+
diff --git a/rostests/apitests/user32/testlist.c b/rostests/apitests/user32/testlist.c
new file mode 100644 (file)
index 0000000..a81b5e4
--- /dev/null
@@ -0,0 +1,24 @@
+#define WIN32_LEAN_AND_MEAN
+#define __ROS_LONG64__
+#include <windows.h>
+
+#define STANDALONE
+#include "wine/test.h"
+
+extern void func_InitializeLpkHooks(void);
+extern void func_RealGetWindowClass(void);
+extern void func_ScrollDC(void);
+extern void func_ScrollWindowEx(void);
+extern void func_GetSystemMetrics(void);
+
+const struct test winetest_testlist[] =
+{
+    { "InitializeLpkHooks", func_InitializeLpkHooks },
+    { "RealGetWindowClass", func_RealGetWindowClass },
+    { "ScrollDC", func_ScrollDC },
+    { "ScrollWindowEx", func_ScrollWindowEx },
+    { "GetSystemMetrics", func_GetSystemMetrics },
+
+    { 0, 0 }
+};
+
diff --git a/rostests/apitests/user32/user32_apitest.rbuild b/rostests/apitests/user32/user32_apitest.rbuild
new file mode 100644 (file)
index 0000000..07a7d30
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
+<group>
+<module name="user32_apitest" type="win32cui" installbase="bin" installname="user32_apitest.exe">
+       <include base="user32_apitest">.</include>
+       <library>wine</library>
+       <library>gdi32</library>
+       <library>user32</library>
+       <library>pseh</library>
+       <file>testlist.c</file>
+
+       <file>InitializeLpkHooks.c</file>
+       <file>RealGetWindowClass.c</file>
+       <file>ScrollDC.c</file>
+       <file>ScrollWindowEx.c</file>
+       <file>GetSystemMetrics.c</file>
+
+</module>
+</group>