Add testcases for trigger time event/condition 37/60337/2
authorMu-Woong Lee <muwoong.lee@samsung.com>
Thu, 25 Feb 2016 06:11:46 +0000 (15:11 +0900)
committerMu-Woong Lee <muwoong.lee@samsung.com>
Fri, 26 Feb 2016 11:11:48 +0000 (20:11 +0900)
Change-Id: I7c62d10fbb7d333a35c0bf2952650e857957610a
Signed-off-by: Mu-Woong Lee <muwoong.lee@samsung.com>
testsuite/src/trigger/condition.cpp
testsuite/src/trigger/condition.h
testsuite/src/trigger/event.cpp
testsuite/src/trigger/event.h

index 5594980..4cadf47 100644 (file)
@@ -34,6 +34,7 @@ int test_trigger_condition(int *argc, char ***argv)
        run_testcase("/trigger/cond/wifi", _trigger_cond_wifi);
        run_testcase("/trigger/cond/psmode", _trigger_cond_psmode);
        run_testcase("/trigger/cond/call", _trigger_cond_call);
+       run_testcase("/trigger/cond/time", _trigger_cond_time);
 
        run_testcase("/trigger/cond/app_freq1", _trigger_cond_app_use_freq1);
        run_testcase("/trigger/cond/app_freq2", _trigger_cond_app_use_freq2);
@@ -177,6 +178,20 @@ bool _trigger_cond_call()
        return true;
 }
 
+bool _trigger_cond_time()
+{
+       if (!__support(CONTEXT_TRIGGER_CONDITION_TIME)) return false;
+
+       err = ctx::request_handler::read_sync(CT_CONDITION_TIME, NULL, &req_id, &json_val);
+       ASSERT_CMPINT(err, ==, ERR_NONE);
+
+       ASSERT_CONTAIN_INT(json_val, CONTEXT_TRIGGER_TIME_OF_DAY);
+       ASSERT_CONTAIN_INT(json_val, CONTEXT_TRIGGER_DAY_OF_MONTH);
+       ASSERT_CONTAIN_STR(json_val, CONTEXT_TRIGGER_DAY_OF_WEEK);
+
+       return true;
+}
+
 static std::string& __get_objective_app_id()
 {
        static std::string app_id;
index b5683f1..d2a8282 100644 (file)
@@ -27,6 +27,7 @@ bool _trigger_cond_usb();
 bool _trigger_cond_wifi();
 bool _trigger_cond_psmode();
 bool _trigger_cond_call();
+bool _trigger_cond_time();
 
 bool _trigger_cond_app_use_freq1();
 bool _trigger_cond_app_use_freq2();
index b5968f8..9d843c8 100644 (file)
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+#include <time.h>
 #include <request_handler.h>
 #include <context_trigger.h>
 #include <context_trigger_types_internal.h>
@@ -45,6 +46,7 @@ int test_trigger_event(int *argc, char ***argv)
        ctx::request_handler::register_callback(CT_EVENT_USB, __domain_cb);
        ctx::request_handler::register_callback(CT_EVENT_WIFI, __domain_cb);
        ctx::request_handler::register_callback(CT_EVENT_CALL, __domain_cb);
+       ctx::request_handler::register_callback(CT_EVENT_TIME, __domain_cb);
        ctx::request_handler::register_callback(CT_EVENT_EMAIL, __domain_cb);
        ctx::request_handler::register_callback(CT_EVENT_MESSAGE, __domain_cb);
        ctx::request_handler::register_callback(CT_EVENT_ACTIVITY_STATIONARY, __domain_cb);
@@ -61,6 +63,7 @@ int test_trigger_event(int *argc, char ***argv)
        run_testcase("/trigger/event/wifi", _trigger_event_wifi);
        run_testcase("/trigger/event/psmode", _trigger_event_psmode);
        run_testcase("/trigger/event/call", _trigger_event_call);
+       run_testcase("/trigger/event/time", _trigger_event_time);
        run_testcase("/trigger/event/email", _trigger_event_email);
        run_testcase("/trigger/event/message", _trigger_event_message);
        run_testcase("/trigger/event/activity", _trigger_event_activity);
@@ -229,6 +232,65 @@ bool _trigger_event_call()
        return true;
 }
 
+bool _trigger_event_time()
+{
+       if (!__support(CONTEXT_TRIGGER_EVENT_TIME)) return false;
+
+       time_t rawtime;
+       struct tm timeinfo;
+       time(&rawtime);
+       tzset();
+       localtime_r(&rawtime, &timeinfo);
+       int dow = timeinfo.tm_wday;
+       int tod = timeinfo.tm_hour * 3600 + timeinfo.tm_min * 60 + timeinfo.tm_sec;
+       tod = (tod + 70) / 60;
+
+       std::string dow_str;
+       switch (dow) {
+       case 0:
+               dow_str = CONTEXT_TRIGGER_SUN;
+               break;
+       case 1:
+               dow_str = CONTEXT_TRIGGER_MON;
+               break;
+       case 2:
+               dow_str = CONTEXT_TRIGGER_TUE;
+               break;
+       case 3:
+               dow_str = CONTEXT_TRIGGER_WED;
+               break;
+       case 4:
+               dow_str = CONTEXT_TRIGGER_THU;
+               break;
+       case 5:
+               dow_str = CONTEXT_TRIGGER_FRI;
+               break;
+       case 6:
+               dow_str = CONTEXT_TRIGGER_SAT;
+               break;
+       default:
+               dow_str = CONTEXT_TRIGGER_WEEKDAY;
+               break;
+       }
+       ctx::Json option;
+       option.append(NULL, CONTEXT_TRIGGER_DAY_OF_WEEK, dow_str);
+       option.append(NULL, CONTEXT_TRIGGER_TIME_OF_DAY, tod);
+
+       err = ctx::request_handler::subscribe(CT_EVENT_TIME, &option, &req_id, NULL);
+       ASSERT_CMPINT(err, ==, ERR_NONE);
+
+       callback_count = 1;
+       g_print("\n> Wait until %02d:%02d %s.\n", tod / 60, tod % 60, dow_str.c_str());
+       start_mainloop();
+
+       ctx::request_handler::unsubscribe(CT_EVENT_CALL, req_id);
+
+       ASSERT_CONTAIN_INT(json_val, CONTEXT_TRIGGER_TIME_OF_DAY);
+       ASSERT_CONTAIN_STR(json_val, CONTEXT_TRIGGER_DAY_OF_WEEK);
+
+       return true;
+}
+
 bool _trigger_event_email()
 {
        if (!__support(CONTEXT_TRIGGER_EVENT_EMAIL)) return false;
index f1a758c..54a65bb 100644 (file)
@@ -27,6 +27,7 @@ bool _trigger_event_usb();
 bool _trigger_event_wifi();
 bool _trigger_event_psmode();
 bool _trigger_event_call();
+bool _trigger_event_time();
 bool _trigger_event_email();
 bool _trigger_event_message();
 bool _trigger_event_activity();