Piotr Caban : msvcp140/tests: Add _TaskEventLogger tests.

Alexandre Julliard julliard at winehq.org
Fri Oct 20 07:19:58 CDT 2017


Module: wine
Branch: stable
Commit: 4aa135340969b8afe85a70e6420f6f74d6a122e9
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4aa135340969b8afe85a70e6420f6f74d6a122e9

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Wed Mar 15 12:06:29 2017 +0100

msvcp140/tests: Add _TaskEventLogger tests.

Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
(cherry picked from commit 17b34a2e08b3ebd6195ed1f9c250ccf230b643f8)
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>

---

 dlls/msvcp140/tests/msvcp140.c | 101 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 101 insertions(+)

diff --git a/dlls/msvcp140/tests/msvcp140.c b/dlls/msvcp140/tests/msvcp140.c
index 99ab8a3..dca8d0a 100644
--- a/dlls/msvcp140/tests/msvcp140.c
+++ b/dlls/msvcp140/tests/msvcp140.c
@@ -119,6 +119,12 @@ typedef struct {
     void *this;
 } function_void_cdecl_void;
 
+typedef struct {
+    void *task;
+    MSVCP_bool scheduled;
+    MSVCP_bool started;
+} _TaskEventLogger;
+
 static unsigned int (__cdecl *p__Thrd_id)(void);
 static task_continuation_context* (__thiscall *p_task_continuation_context_ctor)(task_continuation_context*);
 static void (__thiscall *p__ContextCallback__Assign)(_ContextCallback*, void*);
@@ -126,6 +132,12 @@ static void (__thiscall *p__ContextCallback__CallInContext)(const _ContextCallba
 static void (__thiscall *p__ContextCallback__Capture)(_ContextCallback*);
 static void (__thiscall *p__ContextCallback__Reset)(_ContextCallback*);
 static MSVCP_bool (__cdecl *p__ContextCallback__IsCurrentOriginSTA)(_ContextCallback*);
+static void (__thiscall *p__TaskEventLogger__LogCancelTask)(_TaskEventLogger*);
+static void (__thiscall *p__TaskEventLogger__LogScheduleTask)(_TaskEventLogger*, MSVCP_bool);
+static void (__thiscall *p__TaskEventLogger__LogTaskCompleted)(_TaskEventLogger*);
+static void (__thiscall *p__TaskEventLogger__LogTaskExecutionCompleted)(_TaskEventLogger*);
+static void (__thiscall *p__TaskEventLogger__LogWorkItemCompleted)(_TaskEventLogger*);
+static void (__thiscall *p__TaskEventLogger__LogWorkItemStarted)(_TaskEventLogger*);
 
 static HMODULE msvcp;
 #define SETNOFAIL(x,y) x = (void*)GetProcAddress(msvcp,y)
@@ -148,6 +160,12 @@ static BOOL init(void)
         SET(p__ContextCallback__CallInContext, "?_CallInContext at _ContextCallback@details at Concurrency@@QEBAXV?$function@$$A6AXXZ at std@@_N at Z");
         SET(p__ContextCallback__Capture, "?_Capture at _ContextCallback@details at Concurrency@@AEAAXXZ");
         SET(p__ContextCallback__Reset, "?_Reset at _ContextCallback@details at Concurrency@@AEAAXXZ");
+        SET(p__TaskEventLogger__LogCancelTask, "?_LogCancelTask at _TaskEventLogger@details at Concurrency@@QEAAXXZ");
+        SET(p__TaskEventLogger__LogScheduleTask, "?_LogScheduleTask at _TaskEventLogger@details at Concurrency@@QEAAX_N at Z");
+        SET(p__TaskEventLogger__LogTaskCompleted, "?_LogTaskCompleted at _TaskEventLogger@details at Concurrency@@QEAAXXZ");
+        SET(p__TaskEventLogger__LogTaskExecutionCompleted, "?_LogTaskExecutionCompleted at _TaskEventLogger@details at Concurrency@@QEAAXXZ");
+        SET(p__TaskEventLogger__LogWorkItemCompleted, "?_LogWorkItemCompleted at _TaskEventLogger@details at Concurrency@@QEAAXXZ");
+        SET(p__TaskEventLogger__LogWorkItemStarted, "?_LogWorkItemStarted at _TaskEventLogger@details at Concurrency@@QEAAXXZ");
     } else {
 #ifdef __arm__
         SET(p_task_continuation_context_ctor, "??0task_continuation_context at Concurrency@@AAA at XZ");
@@ -155,12 +173,24 @@ static BOOL init(void)
         SET(p__ContextCallback__CallInContext, "?_CallInContext at _ContextCallback@details at Concurrency@@QBAXV?$function@$$A6AXXZ at std@@_N at Z");
         SET(p__ContextCallback__Capture, "?_Capture at _ContextCallback@details at Concurrency@@AAAXXZ");
         SET(p__ContextCallback__Reset, "?_Reset at _ContextCallback@details at Concurrency@@AAAXXZ");
+        SET(p__TaskEventLogger__LogCancelTask, "?_LogCancelTask at _TaskEventLogger@details at Concurrency@@QAAXXZ");
+        SET(p__TaskEventLogger__LogScheduleTask, "?_LogScheduleTask at _TaskEventLogger@details at Concurrency@@QAEX_N at Z");
+        SET(p__TaskEventLogger__LogTaskCompleted, "?_LogTaskCompleted at _TaskEventLogger@details at Concurrency@@QAAXXZ");
+        SET(p__TaskEventLogger__LogTaskExecutionCompleted, "?_LogTaskExecutionCompleted at _TaskEventLogger@details at Concurrency@@QAAXXZ");
+        SET(p__TaskEventLogger__LogWorkItemCompleted, "?_LogWorkItemCompleted at _TaskEventLogger@details at Concurrency@@QAAXXZ");
+        SET(p__TaskEventLogger__LogWorkItemStarted, "?_LogWorkItemStarted at _TaskEventLogger@details at Concurrency@@QAAXXZ");
 #else
         SET(p_task_continuation_context_ctor, "??0task_continuation_context at Concurrency@@AAE at XZ");
         SET(p__ContextCallback__Assign, "?_Assign at _ContextCallback@details at Concurrency@@AAEXPAX at Z");
         SET(p__ContextCallback__CallInContext, "?_CallInContext at _ContextCallback@details at Concurrency@@QBEXV?$function@$$A6AXXZ at std@@_N at Z");
         SET(p__ContextCallback__Capture, "?_Capture at _ContextCallback@details at Concurrency@@AAEXXZ");
         SET(p__ContextCallback__Reset, "?_Reset at _ContextCallback@details at Concurrency@@AAEXXZ");
+        SET(p__TaskEventLogger__LogCancelTask, "?_LogCancelTask at _TaskEventLogger@details at Concurrency@@QAEXXZ");
+        SET(p__TaskEventLogger__LogScheduleTask, "?_LogScheduleTask at _TaskEventLogger@details at Concurrency@@QAEX_N at Z");
+        SET(p__TaskEventLogger__LogTaskCompleted, "?_LogTaskCompleted at _TaskEventLogger@details at Concurrency@@QAEXXZ");
+        SET(p__TaskEventLogger__LogTaskExecutionCompleted, "?_LogTaskExecutionCompleted at _TaskEventLogger@details at Concurrency@@QAEXXZ");
+        SET(p__TaskEventLogger__LogWorkItemCompleted, "?_LogWorkItemCompleted at _TaskEventLogger@details at Concurrency@@QAEXXZ");
+        SET(p__TaskEventLogger__LogWorkItemStarted, "?_LogWorkItemStarted at _TaskEventLogger@details at Concurrency@@QAEXXZ");
 #endif
     }
 
@@ -295,6 +325,76 @@ static void test__ContextCallback(void)
 #endif
 }
 
+static void test__TaskEventLogger(void)
+{
+    _TaskEventLogger logger;
+    memset(&logger, 0, sizeof(logger));
+
+    call_func1(p__TaskEventLogger__LogCancelTask, &logger);
+    ok(!logger.task, "logger.task = %p\n", logger.task);
+    ok(!logger.scheduled, "logger.scheduled = %x\n", logger.scheduled);
+    ok(!logger.started, "logger.started = %x\n", logger.started);
+
+    call_func2(p__TaskEventLogger__LogScheduleTask, &logger, FALSE);
+    ok(!logger.task, "logger.task = %p\n", logger.task);
+    ok(!logger.scheduled, "logger.scheduled = %x\n", logger.scheduled);
+    ok(!logger.started, "logger.started = %x\n", logger.started);
+
+    call_func1(p__TaskEventLogger__LogTaskCompleted, &logger);
+    ok(!logger.task, "logger.task = %p\n", logger.task);
+    ok(!logger.scheduled, "logger.scheduled = %x\n", logger.scheduled);
+    ok(!logger.started, "logger.started = %x\n", logger.started);
+
+    call_func1(p__TaskEventLogger__LogTaskExecutionCompleted, &logger);
+    ok(!logger.task, "logger.task = %p\n", logger.task);
+    ok(!logger.scheduled, "logger.scheduled = %x\n", logger.scheduled);
+    ok(!logger.started, "logger.started = %x\n", logger.started);
+
+    call_func1(p__TaskEventLogger__LogWorkItemCompleted, &logger);
+    ok(!logger.task, "logger.task = %p\n", logger.task);
+    ok(!logger.scheduled, "logger.scheduled = %x\n", logger.scheduled);
+    ok(!logger.started, "logger.started = %x\n", logger.started);
+
+    call_func1(p__TaskEventLogger__LogWorkItemStarted, &logger);
+    ok(!logger.task, "logger.task = %p\n", logger.task);
+    ok(!logger.scheduled, "logger.scheduled = %x\n", logger.scheduled);
+    ok(!logger.started, "logger.started = %x\n", logger.started);
+
+    logger.task = (void*)0xdeadbeef;
+    logger.scheduled = TRUE;
+    logger.started = TRUE;
+
+    call_func1(p__TaskEventLogger__LogCancelTask, &logger);
+    ok(logger.task == (void*)0xdeadbeef, "logger.task = %p\n", logger.task);
+    ok(logger.scheduled, "logger.scheduled = FALSE\n");
+    ok(logger.started, "logger.started = FALSE\n");
+
+    call_func2(p__TaskEventLogger__LogScheduleTask, &logger, FALSE);
+    ok(logger.task == (void*)0xdeadbeef, "logger.task = %p\n", logger.task);
+    ok(logger.scheduled, "logger.scheduled = FALSE\n");
+    ok(logger.started, "logger.started = FALSE\n");
+
+    call_func1(p__TaskEventLogger__LogTaskCompleted, &logger);
+    ok(logger.task == (void*)0xdeadbeef, "logger.task = %p\n", logger.task);
+    ok(logger.scheduled, "logger.scheduled = FALSE\n");
+    ok(logger.started, "logger.started = FALSE\n");
+
+    call_func1(p__TaskEventLogger__LogTaskExecutionCompleted, &logger);
+    ok(logger.task == (void*)0xdeadbeef, "logger.task = %p\n", logger.task);
+    ok(logger.scheduled, "logger.scheduled = FALSE\n");
+    ok(logger.started, "logger.started = FALSE\n");
+
+    call_func1(p__TaskEventLogger__LogWorkItemCompleted, &logger);
+    ok(logger.task == (void*)0xdeadbeef, "logger.task = %p\n", logger.task);
+    ok(logger.scheduled, "logger.scheduled = FALSE\n");
+    ok(logger.started, "logger.started = FALSE\n");
+
+    call_func1(p__TaskEventLogger__LogWorkItemStarted, &logger);
+    ok(logger.task == (void*)0xdeadbeef, "logger.task = %p\n", logger.task);
+    ok(logger.scheduled, "logger.scheduled = FALSE\n");
+    ok(logger.started, "logger.started = FALSE\n");
+}
+
 START_TEST(msvcp140)
 {
     if(!init()) return;
@@ -302,5 +402,6 @@ START_TEST(msvcp140)
     test_vbtable_size_exports();
     test_task_continuation_context();
     test__ContextCallback();
+    test__TaskEventLogger();
     FreeLibrary(msvcp);
 }




More information about the wine-cvs mailing list