Nikolay Sivov : kernel32/tests: Test for several assemblies in context with window class redirects.

Alexandre Julliard julliard at winehq.org
Wed Jul 31 15:31:33 CDT 2013


Module: wine
Branch: master
Commit: db5d9aa9e69b2b8c893cc129d9b9853bba706094
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=db5d9aa9e69b2b8c893cc129d9b9853bba706094

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Wed Jul 31 08:42:45 2013 +0400

kernel32/tests: Test for several assemblies in context with window class redirects.

---

 dlls/kernel32/tests/actctx.c |   85 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 85 insertions(+), 0 deletions(-)

diff --git a/dlls/kernel32/tests/actctx.c b/dlls/kernel32/tests/actctx.c
index 50529f8..0b56c25 100644
--- a/dlls/kernel32/tests/actctx.c
+++ b/dlls/kernel32/tests/actctx.c
@@ -101,6 +101,39 @@ static const char manifest3[] =
 "</file>"
 "</assembly>";
 
+static const char manifest_wndcls1[] =
+"<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\">"
+"<assemblyIdentity version=\"1.2.3.4\"  name=\"testdep1\" type=\"win32\" processorArchitecture=\"" ARCH "\"/>"
+"<file name=\"testlib1.dll\">"
+"<windowClass>wndClass1</windowClass>"
+"<windowClass>wndClass2</windowClass>"
+"</file>"
+"</assembly>";
+
+static const char manifest_wndcls2[] =
+"<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\">"
+"<assemblyIdentity version=\"4.3.2.1\"  name=\"testdep2\" type=\"win32\" processorArchitecture=\"" ARCH "\" />"
+"<file name=\"testlib2.dll\">"
+"<windowClass>wndClass3</windowClass>"
+"<windowClass>wndClass4</windowClass>"
+"</file>"
+"</assembly>";
+
+static const char manifest_wndcls_main[] =
+"<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\">"
+"<assemblyIdentity version=\"1.2.3.4\" name=\"Wine.Test\" type=\"win32\" />"
+"<dependency>"
+" <dependentAssembly>"
+"  <assemblyIdentity type=\"win32\" name=\"testdep1\" version=\"1.2.3.4\" processorArchitecture=\"" ARCH "\" />"
+" </dependentAssembly>"
+"</dependency>"
+"<dependency>"
+" <dependentAssembly>"
+"  <assemblyIdentity type=\"win32\" name=\"testdep2\" version=\"4.3.2.1\" processorArchitecture=\"" ARCH "\" />"
+" </dependentAssembly>"
+"</dependency>"
+"</assembly>";
+
 static const char manifest4[] =
 "<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\">"
 "<assemblyIdentity version=\"1.2.3.4\" name=\"Wine.Test\" type=\"win32\">"
@@ -191,8 +224,12 @@ static const WCHAR testlib2_dll[] =
     {'t','e','s','t','l','i','b','2','.','d','l','l',0};
 static const WCHAR wndClassW[] =
     {'w','n','d','C','l','a','s','s',0};
+static const WCHAR wndClass1W[] =
+    {'w','n','d','C','l','a','s','s','1',0};
 static const WCHAR wndClass2W[] =
     {'w','n','d','C','l','a','s','s','2',0};
+static const WCHAR wndClass3W[] =
+    {'w','n','d','C','l','a','s','s','3',0};
 static const WCHAR acr_manifest[] =
     {'a','c','r','.','m','a','n','i','f','e','s','t',0};
 
@@ -1088,6 +1125,53 @@ todo_wine
        data.ulAssemblyRosterIndex, exid);
 }
 
+static void test_wndclass_section(void)
+{
+    ACTCTX_SECTION_KEYED_DATA data, data2;
+    ULONG_PTR cookie;
+    HANDLE handle;
+    BOOL ret;
+
+    /* use two dependent manifests, each defines 2 window class redirects */
+    create_manifest_file("testdep1.manifest", manifest_wndcls1, -1, NULL, NULL);
+    create_manifest_file("testdep2.manifest", manifest_wndcls2, -1, NULL, NULL);
+    create_manifest_file("main_wndcls.manifest", manifest_wndcls_main, -1, NULL, NULL);
+
+    handle = test_create("main_wndcls.manifest");
+    DeleteFileA("testdep1.manifest");
+    DeleteFileA("testdep2.manifest");
+    DeleteFileA("main_wndcls.manifest");
+
+    ret = pActivateActCtx(handle, &cookie);
+    ok(ret, "ActivateActCtx failed: %u\n", GetLastError());
+
+    memset(&data, 0, sizeof(data));
+    memset(&data2, 0, sizeof(data2));
+    data.cbSize = sizeof(data);
+    data2.cbSize = sizeof(data2);
+
+    /* get data for two classes from different assemblies */
+    ret = pFindActCtxSectionStringW(0, NULL,
+                                    ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION,
+                                    wndClass1W, &data);
+    ok(ret, "got %d\n", ret);
+    ret = pFindActCtxSectionStringW(0, NULL,
+                                    ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION,
+                                    wndClass3W, &data2);
+    ok(ret, "got %d\n", ret);
+
+    /* For both string same section is returned, meaning it's one wndclass section per context */
+todo_wine
+    ok(data.lpSectionBase == data2.lpSectionBase, "got %p, %p\n", data.lpSectionBase, data2.lpSectionBase);
+    ok(data.ulSectionTotalLength == data2.ulSectionTotalLength, "got %u, %u\n", data.ulSectionTotalLength,
+        data2.ulSectionTotalLength);
+
+    ret = pDeactivateActCtx(0, cookie);
+    ok(ret, "DeactivateActCtx failed: %u\n", GetLastError());
+
+    pReleaseActCtx(handle);
+}
+
 static void test_actctx(void)
 {
     ULONG_PTR cookie;
@@ -1306,6 +1390,7 @@ static void test_actctx(void)
         pReleaseActCtx(handle);
     }
 
+    test_wndclass_section();
 }
 
 static void test_app_manifest(void)




More information about the wine-cvs mailing list