[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