Jacek Caban : taskschd: Added IDailyTrigger:: DaysInterval property implementation.

Alexandre Julliard julliard at winehq.org
Wed Oct 19 20:47:58 CDT 2016


Module: wine
Branch: master
Commit: 82a590403fbec212c5884d1688c099392652c026
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=82a590403fbec212c5884d1688c099392652c026

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Oct 19 14:04:32 2016 +0200

taskschd: Added IDailyTrigger::DaysInterval property implementation.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 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 5d7f467..6a1acc8 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)
@@ -217,15 +218,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)
@@ -279,6 +289,7 @@ static HRESULT DailyTrigger_create(ITrigger **trigger)
 
     daily_trigger->IDailyTrigger_iface.lpVtbl = &DailyTrigger_vtbl;
     daily_trigger->ref = 1;
+    daily_trigger->interval = 1;
 
     *trigger = (ITrigger*)&daily_trigger->IDailyTrigger_iface;
     return S_OK;
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);
 }
 




More information about the wine-cvs mailing list