Dmitry Timoshkov : user32/tests: Add some tests for classes with non-zero low word instance.

Alexandre Julliard julliard at winehq.org
Tue Jun 2 08:11:17 CDT 2020


Module: wine
Branch: stable
Commit: 9e2ca4bae54823daeede530a0c8726365055551f
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=9e2ca4bae54823daeede530a0c8726365055551f

Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date:   Wed Feb 19 12:29:54 2020 +0800

user32/tests: Add some tests for classes with non-zero low word instance.

Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
(cherry picked from commit e2c0f51312b367989def1c4dd850aac796bd0943)
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>

---

 dlls/user32/tests/class.c | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/dlls/user32/tests/class.c b/dlls/user32/tests/class.c
index 2702fa00b9..67c95225f4 100644
--- a/dlls/user32/tests/class.c
+++ b/dlls/user32/tests/class.c
@@ -98,6 +98,7 @@ static void ClassTest(HINSTANCE hInstance, BOOL global)
     LONG i;
     WCHAR str[20];
     ATOM classatom;
+    HINSTANCE hInstance2;
 
     cls.style         = CS_HREDRAW | CS_VREDRAW | (global?CS_GLOBALCLASS:0);
     cls.lpfnWndProc   = ClassTest_WndProc;
@@ -121,6 +122,26 @@ static void ClassTest(HINSTANCE hInstance, BOOL global)
         "RegisterClass of the same class should fail for the second time\n");
 
     /* Setup windows */
+    hInstance2 = (HINSTANCE)(((ULONG_PTR)hInstance & ~0xffff) | 0xdead);
+
+    hTestWnd = CreateWindowW (className, winName,
+       WS_OVERLAPPEDWINDOW + WS_HSCROLL + WS_VSCROLL,
+       CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 0,
+       0, hInstance2, 0);
+todo_wine_if (!global)
+    ok(hTestWnd != 0, "Failed to create window for hInstance %p\n", hInstance2);
+
+todo_wine_if (!global)
+    ok((HINSTANCE)GetClassLongPtrA(hTestWnd, GCLP_HMODULE) == hInstance,
+       "Wrong GCL instance %p != %p\n",
+       (HINSTANCE)GetClassLongPtrA(hTestWnd, GCLP_HMODULE), hInstance);
+todo_wine_if (!global)
+    ok((HINSTANCE)GetWindowLongPtrA(hTestWnd, GWLP_HINSTANCE) == hInstance2,
+       "Wrong GWL instance %p != %p\n",
+       (HINSTANCE)GetWindowLongPtrA(hTestWnd, GWLP_HINSTANCE), hInstance2);
+
+    DestroyWindow(hTestWnd);
+
     hTestWnd = CreateWindowW (className, winName,
        WS_OVERLAPPEDWINDOW + WS_HSCROLL + WS_VSCROLL,
        CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 0,
@@ -128,6 +149,14 @@ static void ClassTest(HINSTANCE hInstance, BOOL global)
 
     ok(hTestWnd!=0, "Failed to create window\n");
 
+    ok((HINSTANCE)GetClassLongPtrA(hTestWnd, GCLP_HMODULE) == hInstance,
+                        "Wrong GCL instance %p/%p\n",
+        (HINSTANCE)GetClassLongPtrA(hTestWnd, GCLP_HMODULE), hInstance);
+    ok((HINSTANCE)GetWindowLongPtrA(hTestWnd, GWLP_HINSTANCE) == hInstance,
+       "Wrong GWL instance %p/%p\n",
+        (HINSTANCE)GetWindowLongPtrA(hTestWnd, GWLP_HINSTANCE), hInstance);
+
+
     /* test initial values of valid classwords */
     for(i=0; i<NUMCLASSWORDS; i++)
     {
@@ -1491,6 +1520,8 @@ START_TEST(class)
 
     ClassTest(hInstance,FALSE);
     ClassTest(hInstance,TRUE);
+    ClassTest((HANDLE)((ULONG_PTR)hInstance | 0x1234), FALSE);
+    ClassTest((HANDLE)((ULONG_PTR)hInstance | 0x1234), TRUE);
     CreateDialogParamTest(hInstance);
     test_styles();
     test_builtinproc();




More information about the wine-cvs mailing list