From: Vijay Kiran Kamuju infyquest@gmail.com
--- dlls/taskschd/task.c | 14 ++++++++++++-- dlls/taskschd/tests/scheduler.c | 23 ++++++++++++++++------- 2 files changed, 28 insertions(+), 9 deletions(-)
diff --git a/dlls/taskschd/task.c b/dlls/taskschd/task.c index 76cba042164..4b9cfb8b296 100644 --- a/dlls/taskschd/task.c +++ b/dlls/taskschd/task.c @@ -39,6 +39,7 @@ typedef struct { LONG ref; short interval; WCHAR *start_boundary; + WCHAR *end_boundary; BOOL enabled; } DailyTrigger;
@@ -92,6 +93,7 @@ static ULONG WINAPI DailyTrigger_Release(IDailyTrigger *iface) { TRACE("destroying %p\n", iface); free(This->start_boundary); + free(This->end_boundary); free(This); }
@@ -216,8 +218,15 @@ static HRESULT WINAPI DailyTrigger_get_EndBoundary(IDailyTrigger *iface, BSTR *e static HRESULT WINAPI DailyTrigger_put_EndBoundary(IDailyTrigger *iface, BSTR end) { DailyTrigger *This = impl_from_IDailyTrigger(iface); - FIXME("(%p)->(%s)\n", This, debugstr_w(end)); - return E_NOTIMPL; + WCHAR *str = NULL; + + TRACE("(%p)->(%s)\n", This, debugstr_w(end)); + + if (end && !(str = wcsdup(end))) return E_OUTOFMEMORY; + free(This->end_boundary); + This->end_boundary = str; + + return S_OK; }
static HRESULT WINAPI DailyTrigger_get_Enabled(IDailyTrigger *iface, VARIANT_BOOL *enabled) @@ -318,6 +327,7 @@ static HRESULT DailyTrigger_create(ITrigger **trigger) daily_trigger->ref = 1; daily_trigger->interval = 1; daily_trigger->start_boundary = NULL; + daily_trigger->end_boundary = NULL; daily_trigger->enabled = TRUE;
*trigger = (ITrigger*)&daily_trigger->IDailyTrigger_iface; diff --git a/dlls/taskschd/tests/scheduler.c b/dlls/taskschd/tests/scheduler.c index 31e9878a48a..ea571f71ff2 100644 --- a/dlls/taskschd/tests/scheduler.c +++ b/dlls/taskschd/tests/scheduler.c @@ -1319,19 +1319,20 @@ static void test_daily_trigger(ITrigger *trigger) static const struct { const WCHAR *str; + const WCHAR *end; HRESULT hr; } start_test[] = { - {L"2004-01-01T00:00:00", S_OK}, - {L"2004-01-01T00:00:00Z", S_OK}, - {L"2004-01-01T00:00:00+01:00", S_OK}, - {L"2004.01.01T00.00.00", S_OK}, - {L"9999-99-99T99:99:99", S_OK}, - {L"invalid", S_OK}, + {L"2004-01-01T00:00:00", L"2004-01-02T00:00:00", S_OK}, + {L"2004-01-01T00:00:00Z", L"2004-01-02T00:00:00Z", S_OK}, + {L"2004-01-01T00:00:00+01:00", L"2004-01-02T00:00:00+01:00", S_OK}, + {L"2004.01.01T00.00.00", L"2004.01.02T00.00.00", S_OK}, + {L"9999-99-99T99:99:99", L"9999-99-99T99:99:99", S_OK}, + {L"invalid", L"invalid", S_OK}, }; IDailyTrigger *daily_trigger; - BSTR start_boundary; + BSTR start_boundary, end_boundary; VARIANT_BOOL enabled; short interval; HRESULT hr; @@ -1387,12 +1388,20 @@ static void test_daily_trigger(ITrigger *trigger) ok(!lstrcmpW(start_boundary, start_test[i].str), "got %s\n", wine_dbgstr_w(start_boundary)); SysFreeString(start_boundary); } + + end_boundary = SysAllocString(start_test[i].end); + hr = IDailyTrigger_put_EndBoundary(daily_trigger, end_boundary); + ok(hr == start_test[i].hr, "got %08lx expected %08lx\n", hr, start_test[i].hr); + SysFreeString(end_boundary); winetest_pop_context(); }
hr = IDailyTrigger_put_StartBoundary(daily_trigger, NULL); ok(hr == S_OK, "put_StartBoundary failed: %08lx\n", hr);
+ hr = IDailyTrigger_put_EndBoundary(daily_trigger, NULL); + ok(hr == S_OK, "put_EndBoundary failed: %08lx\n", hr); + hr = IDailyTrigger_get_Enabled(daily_trigger, NULL); ok(hr == E_POINTER, "get_Enabled failed: %08lx\n", hr);