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