[PATCH 5/5] mstask/tests: Add tests for ITaskScheduler_SetTargetComputer

Detlef Riekenberg wine.dev at web.de
Sun Nov 4 15:39:37 CST 2012


--
By by ... Detlef
---
 dlls/mstask/tests/Makefile.in      |    2 +-
 dlls/mstask/tests/task_scheduler.c |   84 ++++++++++++++++++++++++++++++++++++
 2 files changed, 85 insertions(+), 1 deletions(-)

diff --git a/dlls/mstask/tests/Makefile.in b/dlls/mstask/tests/Makefile.in
index ffb66a8..1c0345d 100644
--- a/dlls/mstask/tests/Makefile.in
+++ b/dlls/mstask/tests/Makefile.in
@@ -1,5 +1,5 @@
 TESTDLL   = mstask.dll
-IMPORTS   = ole32
+IMPORTS   = ole32 user32
 
 C_SRCS = \
 	task.c \
diff --git a/dlls/mstask/tests/task_scheduler.c b/dlls/mstask/tests/task_scheduler.c
index 5893e20..3525610 100644
--- a/dlls/mstask/tests/task_scheduler.c
+++ b/dlls/mstask/tests/task_scheduler.c
@@ -28,6 +28,24 @@
 
 static ITaskScheduler *test_task_scheduler;
 
+static const WCHAR unc_winetestW[] = {'\\','\\','w','i','n','e','t','e','s','t',0};
+
+static LPWSTR get_unc_computername(void)
+{
+    static WCHAR buffer[MAX_COMPUTERNAME_LENGTH + 3]; /* extra space for two '\' and a zero */
+    DWORD len = MAX_COMPUTERNAME_LENGTH + 1;          /* extra space for the zero */
+
+    if (*buffer)
+        return buffer;
+
+    if (!GetComputerNameW(buffer + 2, &len))
+        return NULL;
+
+    buffer[1] = '\\';
+    buffer[0] = '\\';
+    return buffer;
+}
+
 static void test_NewWorkItem(void)
 {
     HRESULT hres;
@@ -134,6 +152,71 @@ static void test_GetTargetComputer(void)
     return;
 }
 
+static void test_SetTargetComputer(void)
+{
+    WCHAR buffer[MAX_COMPUTERNAME_LENGTH + 3];
+    WCHAR *oldname = NULL;
+    WCHAR *name = NULL;
+    LPWSTR my_computer = get_unc_computername();
+    HRESULT hres;
+
+    if (!my_computer)
+        return;
+
+    /* Create TaskScheduler */
+    hres = CoCreateInstance(&CLSID_CTaskScheduler, NULL, CLSCTX_INPROC_SERVER,
+            &IID_ITaskScheduler, (void **) &test_task_scheduler);
+    ok(hres == S_OK, "CTaskScheduler CoCreateInstance failed: %08x\n", hres);
+    if (hres != S_OK)
+    {
+        skip("Failed to create task scheduler.  Skipping tests.\n");
+        return;
+    }
+
+    hres = ITaskScheduler_GetTargetComputer(test_task_scheduler, &oldname);
+    ok(hres == S_OK, "got 0x%x and %s (expected S_OK)\n", hres, wine_dbgstr_w(oldname));
+
+    /* Use NULL to select this computer */
+    hres = ITaskScheduler_SetTargetComputer(test_task_scheduler, NULL);
+    ok(hres == S_OK, "got 0x%x (expected S_OK)\n", hres);
+    hres = ITaskScheduler_GetTargetComputer(test_task_scheduler, &name);
+    ok((hres == S_OK && !lstrcmpiW(name, my_computer)),
+        "got 0x%x with %s (expected S_OK and %s)\n",
+        hres, wine_dbgstr_w(name), wine_dbgstr_w(my_computer));
+    CoTaskMemFree(name);
+
+    /* The name must be valid */
+    hres = ITaskScheduler_SetTargetComputer(test_task_scheduler, unc_winetestW);
+    ok(hres == HRESULT_FROM_WIN32(ERROR_BAD_NETPATH), "got 0x%x (expected 0x80070035)\n", hres);
+    /* the target name is unchanged */
+    hres = ITaskScheduler_GetTargetComputer(test_task_scheduler, &name);
+    ok((hres == S_OK && !lstrcmpiW(name, my_computer)),
+        "got 0x%x with %s (expected S_OK and %s)\n",
+        hres, wine_dbgstr_w(name), wine_dbgstr_w(my_computer));
+    CoTaskMemFree(name);
+
+    /* the two backslash are optional */
+    hres = ITaskScheduler_SetTargetComputer(test_task_scheduler, oldname+2);
+    ok(hres == S_OK, "got 0x%x (expected S_OK)\n", hres);
+
+    /* the case is ignored */
+    lstrcpyW(buffer, oldname);
+    CharUpperW(buffer);
+    hres = ITaskScheduler_SetTargetComputer(test_task_scheduler, buffer);
+    ok(hres == S_OK, "got 0x%x (expected S_OK)\n", hres);
+    CharLowerW(buffer);
+    hres = ITaskScheduler_SetTargetComputer(test_task_scheduler, buffer);
+    ok(hres == S_OK, "got 0x%x (expected S_OK)\n", hres);
+
+    /* cleanup */
+    hres = ITaskScheduler_SetTargetComputer(test_task_scheduler, oldname);
+    ok(hres == S_OK, "got 0x%x (expected S_OK)\n", hres);
+
+    CoTaskMemFree(oldname);
+    ITaskScheduler_Release(test_task_scheduler);
+    return;
+}
+
 START_TEST(task_scheduler)
 {
     HRESULT hres;
@@ -152,5 +235,6 @@ START_TEST(task_scheduler)
     test_NewWorkItem();
     test_Activate();
     test_GetTargetComputer();
+    test_SetTargetComputer();
     CoUninitialize();
 }
-- 
1.7.5.4




More information about the wine-patches mailing list