Dmitry Timoshkov : mstask/tests: Add some tests for workitem data.

Alexandre Julliard julliard at winehq.org
Wed Jun 13 16:10:51 CDT 2018


Module: wine
Branch: master
Commit: 14ff4bfefe5a15ccc3ba4640de3b7959bd43c014
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=14ff4bfefe5a15ccc3ba4640de3b7959bd43c014

Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date:   Wed Jun 13 12:05:21 2018 +0800

mstask/tests: Add some tests for workitem data.

Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mstask/tests/task.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/dlls/mstask/tests/task.c b/dlls/mstask/tests/task.c
index 0e2b433..4e8386a 100644
--- a/dlls/mstask/tests/task.c
+++ b/dlls/mstask/tests/task.c
@@ -720,6 +720,60 @@ static void test_SetFlags(void)
     ITask_Release(task);
 }
 
+static void test_workitem_data(void)
+{
+    static BYTE hello[] = "Hello World!";
+    HRESULT hr;
+    ITask *task;
+    WORD count;
+    BYTE *data;
+
+    hr = ITaskScheduler_NewWorkItem(scheduler, task_name, &CLSID_CTask,
+                                    &IID_ITask, (IUnknown **)&task);
+    ok(hr == S_OK, "got %#x\n", hr);
+
+    if (0) /* crashes under Windows */
+        hr = ITask_GetWorkItemData(task, &count, NULL);
+    if (0) /* crashes under Windows */
+        hr = ITask_GetWorkItemData(task, NULL, &data);
+
+    count = 0xdead;
+    data = (BYTE *)0xdeadbeef;
+    hr = ITask_GetWorkItemData(task, &count, &data);
+    ok(hr == S_OK, "got %#x\n", hr);
+    ok(count == 0, "got %u\n", count);
+    ok(data == NULL, "got %p\n", data);
+
+    hr = ITask_SetWorkItemData(task, sizeof(hello), NULL);
+    ok(hr == E_INVALIDARG, "got %#x\n", hr);
+
+    hr = ITask_SetWorkItemData(task, 0, hello);
+    ok(hr == E_INVALIDARG, "got %#x\n", hr);
+
+    hr = ITask_SetWorkItemData(task, sizeof(hello), hello);
+    ok(hr == S_OK, "got %#x\n", hr);
+
+    count = 0xdead;
+    data = NULL;
+    hr = ITask_GetWorkItemData(task, &count, &data);
+    ok(hr == S_OK, "got %#x\n", hr);
+    ok(count == sizeof(hello), "got %u\n", count);
+    ok(data != NULL, "got NULL\n");
+    ok(!memcmp(data, hello, sizeof(hello)), "data mismatch\n");
+
+    hr = ITask_SetWorkItemData(task, 0, NULL);
+    ok(hr == S_OK, "got %#x\n", hr);
+
+    count = 0xdead;
+    data = (BYTE *)0xdeadbeef;
+    hr = ITask_GetWorkItemData(task, &count, &data);
+    ok(hr == S_OK, "got %#x\n", hr);
+    ok(count == 0, "got %u\n", count);
+    ok(data == NULL, "got %p\n", data);
+
+    ITask_Release(task);
+}
+
 START_TEST(task)
 {
     HRESULT hr;
@@ -738,6 +792,7 @@ START_TEST(task)
     test_task_state();
     test_Run();
     test_SetFlags();
+    test_workitem_data();
 
     ITaskScheduler_Release(scheduler);
     CoUninitialize();




More information about the wine-cvs mailing list