From: Jacek Caban Subject: [PATCH 2/2] taskschd: Added IDailyTrigger::DaysInterval property implementation. Message-Id: <71ab7d6b-3fb5-bb64-55cd-d576c7b5fd8d@codeweavers.com> Date: Tue, 18 Oct 2016 17:33:36 +0200 Signed-off-by: Jacek Caban --- dlls/taskschd/task.c | 19 +++++++++++++++---- dlls/taskschd/tests/scheduler.c | 24 ++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/dlls/taskschd/task.c b/dlls/taskschd/task.c index 7064229..6ef7434 100644 --- a/dlls/taskschd/task.c +++ b/dlls/taskschd/task.c @@ -38,6 +38,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(taskschd); typedef struct { IDailyTrigger IDailyTrigger_iface; LONG ref; + short interval; } DailyTrigger; static inline DailyTrigger *impl_from_IDailyTrigger(IDailyTrigger *iface) @@ -212,15 +213,24 @@ static HRESULT WINAPI DailyTrigger_put_Enabled(IDailyTrigger *iface, VARIANT_BOO static HRESULT WINAPI DailyTrigger_get_DaysInterval(IDailyTrigger *iface, short *days) { DailyTrigger *This = impl_from_IDailyTrigger(iface); - FIXME("(%p)->(%p)\n", This, days); - return E_NOTIMPL; + + TRACE("(%p)->(%p)\n", This, days); + + *days = This->interval; + return S_OK; } static HRESULT WINAPI DailyTrigger_put_DaysInterval(IDailyTrigger *iface, short days) { DailyTrigger *This = impl_from_IDailyTrigger(iface); - FIXME("(%p)->(%d)\n", This, days); - return E_NOTIMPL; + + TRACE("(%p)->(%d)\n", This, days); + + if(days <= 0) + return E_INVALIDARG; + + This->interval = days; + return S_OK; } static HRESULT WINAPI DailyTrigger_get_RandomDelay(IDailyTrigger *iface, BSTR *pRandomDelay) @@ -386,6 +396,7 @@ static HRESULT WINAPI TriggerCollection_Create(ITriggerCollection *iface, TASK_T daily_trigger->IDailyTrigger_iface.lpVtbl = &DailyTrigger_vtbl; daily_trigger->ref = 1; + daily_trigger->interval = 1; *trigger = (ITrigger*)&daily_trigger->IDailyTrigger_iface; break; diff --git a/dlls/taskschd/tests/scheduler.c b/dlls/taskschd/tests/scheduler.c index 41c0ea8..efd5f60 100644 --- a/dlls/taskschd/tests/scheduler.c +++ b/dlls/taskschd/tests/scheduler.c @@ -1174,11 +1174,35 @@ todo_wine static void test_daily_trigger(ITrigger *trigger) { IDailyTrigger *daily_trigger; + short interval; HRESULT hr; hr = ITrigger_QueryInterface(trigger, &IID_IDailyTrigger, (void**)&daily_trigger); ok(hr == S_OK, "Could not get IDailyTrigger iface: %08x\n", hr); + interval = -1; + hr = IDailyTrigger_get_DaysInterval(daily_trigger, &interval); + ok(hr == S_OK, "get_DaysInterval failed: %08x\n", hr); + ok(interval == 1, "interval = %d\n", interval); + + hr = IDailyTrigger_put_DaysInterval(daily_trigger, -2); + ok(hr == E_INVALIDARG, "put_DaysInterval failed: %08x\n", hr); + hr = IDailyTrigger_put_DaysInterval(daily_trigger, 0); + ok(hr == E_INVALIDARG, "put_DaysInterval failed: %08x\n", hr); + + interval = -1; + hr = IDailyTrigger_get_DaysInterval(daily_trigger, &interval); + ok(hr == S_OK, "get_DaysInterval failed: %08x\n", hr); + ok(interval == 1, "interval = %d\n", interval); + + hr = IDailyTrigger_put_DaysInterval(daily_trigger, 2); + ok(hr == S_OK, "put_DaysInterval failed: %08x\n", hr); + + interval = -1; + hr = IDailyTrigger_get_DaysInterval(daily_trigger, &interval); + ok(hr == S_OK, "get_DaysInterval failed: %08x\n", hr); + ok(interval == 2, "interval = %d\n", interval); + IDailyTrigger_Release(daily_trigger); }