e_test_event: Added timeout set method 54/256854/1
authorJunseok, Kim <juns.kim@samsung.com>
Wed, 14 Apr 2021 03:40:26 +0000 (12:40 +0900)
committerJunseok, Kim <juns.kim@samsung.com>
Wed, 14 Apr 2021 03:40:26 +0000 (12:40 +0900)
Added timeout set method.
It could set/unset timer of Testcase, and can set time of timer.
The patch needs enlightenment's "e_test_helper: Added timeout set
method" patch.

Change-Id: I2651f3e6d561c90f6569baf07cf755eb2a843309

src/e_test_event.cpp
src/e_test_event.h

index 94d4dd5..63af5ac 100644 (file)
@@ -73,6 +73,7 @@ static void _cb_method_window_register(void *data, const Eldbus_Message *msg, El
 static void _cb_method_zone_rotation_change(void *data, const Eldbus_Message *msg, Eldbus_Pending *p);
 static void _cb_method_window_effect(void *data, const Eldbus_Message *msg, Eldbus_Pending *p);
 static void _cb_method_set_tc_start_end(void *data, const Eldbus_Message *msg, Eldbus_Pending *p);
+static void _cb_method_set_tc_timeout(void *data, const Eldbus_Message *msg, Eldbus_Pending *p);
 static void _cb_method_transient_for_below(void *data, const Eldbus_Message *msg, Eldbus_Pending *p);
 
 /* callbacks - signal */
@@ -592,6 +593,35 @@ etRunner::setTCEnd()
 }
 
 Eina_Bool
+etRunner::setTCTimeout(Eina_Bool set, int timeout)
+{
+   Eldbus_Pending *p = NULL;
+   Eina_Bool res = EINA_FALSE;
+
+   if (timeout <= 0) return EINA_FALSE;
+
+   p = eldbus_proxy_call(dbus.ds_proxy,
+                         "SetTestTimeout",
+                         _cb_method_set_tc_timeout,
+                         &res,
+                         -1,
+                         "bu",
+                         set,
+                         timeout);
+   EINA_SAFETY_ON_NULL_GOTO(p, err);
+
+   work();
+
+   EINA_SAFETY_ON_FALSE_GOTO(res, err);
+
+   return EINA_TRUE;
+
+err:
+   setTCEnd();
+   return EINA_FALSE;
+}
+
+Eina_Bool
 etRunner::getWinInfo(etWin *tw)
 {
    Eldbus_Pending *p = NULL;
@@ -1888,6 +1918,33 @@ finish:
 }
 
 static void
+_cb_method_set_tc_timeout(void *data,
+                          const Eldbus_Message *msg,
+                          Eldbus_Pending *p)
+{
+   const char *name = NULL, *text = NULL;
+   Eina_Bool res = EINA_FALSE;
+   Eina_Bool *accept = (Eina_Bool *)data;
+
+   *accept = EINA_FALSE;
+
+   res = eldbus_message_error_get(msg, &name, &text);
+   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
+
+   res = eldbus_message_arguments_get(msg, "b", accept);
+   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
+   EINA_SAFETY_ON_FALSE_GOTO(*accept, finish);
+
+finish:
+   if ((name) || (text))
+     {
+        ERR("errname: %s errmsg: %s\n", name, text);
+     }
+
+   etRunner::get().finishWork();
+}
+
+static void
 _cb_method_transient_for_below(void *data,
                                const Eldbus_Message *msg,
                                Eldbus_Pending *p)
index c8c7fd5..811e55a 100644 (file)
@@ -197,6 +197,7 @@ public:
    Eina_Bool     delAuxHint(etWin *tw, int hint_id);
    Eina_Bool     setTCStart();
    Eina_Bool     setTCEnd();
+   Eina_Bool     setTCTimeout(Eina_Bool set, int timeout);
    Eina_Bool     getWinInfo(etWin *tw);
    Eina_List    *getWinInfoList();
    void          freeWinInfoList(Eina_List *list);