e_test_event: Support iconify by client info from test helper. 48/259548/1
authorJunseok, Kim <juns.kim@samsung.com>
Wed, 9 Jun 2021 08:28:46 +0000 (17:28 +0900)
committerJunseok, Kim <juns.kim@samsung.com>
Wed, 9 Jun 2021 08:31:57 +0000 (17:31 +0900)
Added iconify by client variables and methods for support iconify by
client information from server.

Change-Id: Ied63a0da7de00b2dd28222eb1813c391d663e6d4
Signed-off-by: Junseok, Kim <juns.kim@samsung.com>
src/e_test_event.cpp
src/e_test_event.h
src/e_test_util.h
src/e_test_win.h

index 4dbc63c..40f6241 100644 (file)
@@ -6,7 +6,7 @@
 #include "e_test_event.h"
 
 #define E_TEST_WORK_TIME 3.0
-#define E_TC_SIGN_WIN_INFO "usiiiiibbbiibbbbbi"
+#define E_TC_SIGN_WIN_INFO "usiiiiibbbiibibbbi"
 
 #define UT_WAIT(fmt, ...) \
    do \
@@ -1717,7 +1717,7 @@ etRunner::printWinInfoList()
                tw->Vis.opaque,
                tw->Vis.type,
                tw->Vis.skip,
-               tw->iconic,
+               tw->iconic.by_client ? 2 : tw->iconic.set,
                tw->Focus.win,
                tw->Focus.obj,
                tw->name);
@@ -1839,6 +1839,7 @@ _cb_method_win_info_get(void *data,
                         Eldbus_Pending *p)
 {
    const char *name = NULL, *text = NULL, *wname = NULL;
+   int iconic = 0;
    etWin *tw = NULL;
    Eina_Bool res = EINA_FALSE;
 
@@ -1860,12 +1861,28 @@ _cb_method_win_info_get(void *data,
        &tw->Vis.opaque,
        &tw->Vis.type,
        &tw->Vis.skip,
-       &tw->iconic,
+       &iconic,
        &tw->alpha,
        &tw->Focus.win,
        &tw->Focus.obj,
        &tw->rot);
 
+   switch (iconic)
+     {
+      case 2:
+        tw->iconic.set = EINA_TRUE;
+        tw->iconic.by_client = EINA_TRUE;
+        break;
+      case 1:
+        tw->iconic.set = EINA_TRUE;
+        tw->iconic.by_client = EINA_FALSE;
+        break;
+      default:
+        tw->iconic.set = EINA_FALSE;
+        tw->iconic.by_client = EINA_FALSE;
+        break;
+     }
+
    if (wname)
      {
         // change window name from char * to Eina_Stringshare
@@ -1889,6 +1906,7 @@ _cb_method_win_info_list_get(void *data,
                              Eldbus_Pending *p)
 {
    const char *name = NULL, *text = NULL, *wname = NULL;
+   int iconic = 0;
    Eldbus_Message_Iter *array = NULL, *ec = NULL;
    Window_Info_List *info_list = (Window_Info_List *)data;
    Eina_Bool res = EINA_FALSE, animating = EINA_FALSE;
@@ -1920,12 +1938,28 @@ _cb_method_win_info_list_get(void *data,
            &tw->Vis.opaque,
            &tw->Vis.type,
            &tw->Vis.skip,
-           &tw->iconic,
+           &iconic,
            &tw->alpha,
            &tw->Focus.win,
            &tw->Focus.obj,
            &tw->rot);
 
+        switch (iconic)
+          {
+           case 2:
+             tw->iconic.set = EINA_TRUE;
+             tw->iconic.by_client = EINA_TRUE;
+             break;
+           case 1:
+             tw->iconic.set = EINA_TRUE;
+             tw->iconic.by_client = EINA_FALSE;
+             break;
+           default:
+             tw->iconic.set = EINA_FALSE;
+             tw->iconic.by_client = EINA_FALSE;
+             break;
+          }
+
         if (wname)
           {
              // change name to eina_stringshare
@@ -2326,15 +2360,15 @@ _cb_signal_iconic_state_changed(void *data,
    Eina_Bool res = EINA_FALSE;
    Ecore_Window win = 0;
    std::shared_ptr<iconicStateEventItem> iconicEvent = NULL;
-   Eina_Bool iconic = EINA_FALSE;
+   Eina_Bool iconic = EINA_FALSE, by_client = EINA_FALSE;
 
    res = eldbus_message_error_get(msg, &name, &text);
    EINA_SAFETY_ON_TRUE_GOTO(res, finish);
 
-   res = eldbus_message_arguments_get(msg, "ub", &win, &iconic);
+   res = eldbus_message_arguments_get(msg, "ubb", &win, &iconic, &by_client);
    EINA_SAFETY_ON_FALSE_GOTO(res, finish);
 
-   iconicEvent = std::make_shared<iconicStateEventItem>(win, E_TC_EVENT_TYPE_ICONIC_STATE_CHANGED, iconic);
+   iconicEvent = std::make_shared<iconicStateEventItem>(win, E_TC_EVENT_TYPE_ICONIC_STATE_CHANGED, iconic, by_client);
    EINA_SAFETY_ON_NULL_GOTO(iconicEvent, finish);
 
    runner->insertEventQueue(iconicEvent);
index ca0b98e..8ca7884 100644 (file)
@@ -123,9 +123,10 @@ class iconicStateEventItem : public eventItem
 {
 public:
    iconicStateEventItem() = delete;
-   iconicStateEventItem (Ecore_Window win, E_TC_Event_Type type, int iconic) :
+   iconicStateEventItem (Ecore_Window win, E_TC_Event_Type type, int iconic, int by_client) :
    eventItem(win, type),
-   iconic(iconic)
+   iconic(iconic),
+   by_client(by_client)
    {
    }
    ~iconicStateEventItem()
@@ -134,9 +135,11 @@ public:
 
    Eina_Bool isIconified() { return this->iconic; }
    Eina_Bool isUniconified() { return !this->iconic; }
+   Eina_Bool isIconifiedByClient() { return this->by_client; }
 
 private:
    int iconic;
+   int by_client;
 };
 
 class etRunner
index 7e9ef1e..8e8f1bd 100644 (file)
@@ -277,6 +277,28 @@ typedef struct _Window_Info_List
      ASSERT_TRUE(ev_result_iconic->isIconified()) << "Window is uniconified"; \
    } while (0)
 
+#define ASSERT_ICONIFIED_BY_CLIENT(TEST_WINDOW) \
+   do { \
+     ASSERT_NE(TEST_WINDOW, nullptr) << "Window is NULL"; \
+     ev_result_iconic = std::static_pointer_cast<iconicStateEventItem>(etRunner::get().waitEvent(TEST_WINDOW, E_TC_EVENT_TYPE_ICONIC_STATE_CHANGED)); \
+     ASSERT_NE(ev_result_iconic, nullptr) << "result is NULL"; \
+     ASSERT_FALSE(ev_result_iconic->isTimeout) << "waitEvent timeout (1.0 sec)"; \
+     ASSERT_TRUE(ev_result_iconic->result) << "waitEvent failed"; \
+     ASSERT_TRUE(ev_result_iconic->isIconified()) << "Window is uniconified"; \
+     ASSERT_TRUE(ev_result_iconic->isIconifiedByClient()) << "Window is iconified by server"; \
+   } while (0)
+
+#define ASSERT_ICONIFIED_BY_SERVER(TEST_WINDOW) \
+   do { \
+     ASSERT_NE(TEST_WINDOW, nullptr) << "Window is NULL"; \
+     ev_result_iconic = std::static_pointer_cast<iconicStateEventItem>(etRunner::get().waitEvent(TEST_WINDOW, E_TC_EVENT_TYPE_ICONIC_STATE_CHANGED)); \
+     ASSERT_NE(ev_result_iconic, nullptr) << "result is NULL"; \
+     ASSERT_FALSE(ev_result_iconic->isTimeout) << "waitEvent timeout (1.0 sec)"; \
+     ASSERT_TRUE(ev_result_iconic->result) << "waitEvent failed"; \
+     ASSERT_TRUE(ev_result_iconic->isIconified()) << "Window is uniconified"; \
+     ASSERT_FALSE(ev_result_iconic->isIconifiedByClient()) << "Window is iconified by client"; \
+   } while (0)
+
 #define ASSERT_UNICONIFIED(TEST_WINDOW) \
    do { \
      ASSERT_NE(TEST_WINDOW, nullptr) << "Window is NULL"; \
index e938b6d..cdeccd2 100644 (file)
@@ -25,7 +25,12 @@ public: // TODO:: Change to private and add getter & setter
         E_Visibility  type        = E_VISIBILITY_UNKNOWN;
         Eina_Bool     skip        = EINA_FALSE;
      } Vis;
-   Eina_Bool          iconic     = EINA_FALSE;
+   struct
+     {
+        Eina_Bool     set         = EINA_FALSE;
+        Eina_Bool     by_client   = EINA_FALSE;
+     } iconic;
+
    Eina_Bool          alpha      = EINA_FALSE;
    struct
      {