0009_input: add edge drag gesture testcases 56/196556/1
authorjeon <jhyuni.kang@samsung.com>
Wed, 2 Jan 2019 08:13:06 +0000 (17:13 +0900)
committerjeon <jhyuni.kang@samsung.com>
Wed, 2 Jan 2019 08:13:06 +0000 (17:13 +0900)
Change-Id: If22e9578d21c478ae9ad22e5888e8132e52ffd8b

src/e_test_event.cpp
src/e_test_event.h
src/e_test_util.h
src/testcase/0009_input.cpp

index fea6f23..b176064 100644 (file)
@@ -100,10 +100,12 @@ static Eina_Bool _ev_wait_timeout(void *data);
 /* callbacks - gesture */
 static Eina_Bool _cb_gesture_tap(void *data, int type, void *event);
 static Eina_Bool _cb_gesture_edge_swipe(void *data, int type, void *event);
+static Eina_Bool _cb_gesture_edge_drag(void *data, int type, void *event);
 
 /* functions - gesture */
 static void _gesture_tap_generate(etRunner *runner);
 static void _gesture_edge_swipe_generate(etRunner *runner);
+static void _gesture_edge_drag_generate(etRunner *runner);
 
 /**********************
       listeners
@@ -1056,6 +1058,11 @@ etRunner::waitEvent(E_TC_Event_Type ev_type)
          _gesture_edge_swipe_generate(this);
          break;
 
+      case E_TC_EVENT_TYPE_GESTURE_EDGE_DRAG:
+         eh = ecore_event_handler_add(EFL_UTIL_EVENT_GESTURE_EDGE_DRAG, _cb_gesture_edge_drag, this);
+         _gesture_edge_drag_generate(this);
+         break;
+
       default:
          goto finish;
          break;
@@ -1827,13 +1834,13 @@ _cb_gesture_edge_swipe(void *data, int type, void *event)
    efl_util_event_gesture_edge_swipe_s *ev =
      (efl_util_event_gesture_edge_swipe_s *)event;
 
-   if ((ev->fingers == (unsigned int)runner->ev.gesture.edge_swipe.fingers) &&
-       (ev->edge == (unsigned int)runner->ev.gesture.edge_swipe.edge))
+   if ((ev->fingers == (unsigned int)runner->ev.gesture.edge.fingers) &&
+       (ev->edge == (unsigned int)runner->ev.gesture.edge.edge))
      {
         runner->ev.response = E_TC_EVENT_TYPE_GESTURE_EDGE_SWIPE;
         if (runner->ev.gesture.timer)
           {
-             runner->ev.gesture.edge_swipe.get_event = EINA_TRUE;
+             runner->ev.gesture.edge.get_event = EINA_TRUE;
           }
         else
           elm_exit();
@@ -1849,9 +1856,9 @@ _cb_gesture_edge_swipe_delay_timer(void *data)
    int i, cnt, fingers, w, h;
    efl_util_gesture_edge_e edge;
 
-   cnt = ++runner->ev.gesture.edge_swipe.touch_count;
-   fingers = runner->ev.gesture.edge_swipe.fingers;
-   edge = runner->ev.gesture.edge_swipe.edge;
+   cnt = ++runner->ev.gesture.edge.touch_count;
+   fingers = runner->ev.gesture.edge.fingers;
+   edge = runner->ev.gesture.edge.edge;
    w = runner->output.w - 1;
    h = runner->output.h - 1;
 
@@ -1926,9 +1933,9 @@ _cb_gesture_edge_swipe_delay_timer(void *data)
           }
 
         runner->ev.gesture.timer = NULL;
-        if (runner->ev.gesture.edge_swipe.get_event)
+        if (runner->ev.gesture.edge.get_event)
           {
-             runner->ev.gesture.edge_swipe.get_event = EINA_FALSE;
+             runner->ev.gesture.edge.get_event = EINA_FALSE;
              elm_exit();
           }
         return ECORE_CALLBACK_CANCEL;
@@ -1945,11 +1952,133 @@ _cb_gesture_edge_swipe_delay_timer(void *data)
 static void
 _gesture_edge_swipe_generate(etRunner *runner)
 {
-   runner->ev.gesture.edge_swipe.touch_count = 0;
-   runner->ev.gesture.edge_swipe.get_event = EINA_FALSE;
+   runner->ev.gesture.edge.touch_count = 0;
+   runner->ev.gesture.edge.get_event = EINA_FALSE;
 
    runner->ev.gesture.timer = ecore_timer_add(1.0,
                                               _cb_gesture_edge_swipe_delay_timer,
                                               runner);
 }
 
+static Eina_Bool
+_cb_gesture_edge_drag(void *data, int type, void *event)
+{
+   etRunner *runner = (etRunner *)data;
+   efl_util_event_gesture_edge_drag_s *ev =
+     (efl_util_event_gesture_edge_drag_s *)event;
+
+   if ((ev->fingers == (unsigned int)runner->ev.gesture.edge.fingers) &&
+       (ev->edge == (unsigned int)runner->ev.gesture.edge.edge) &&
+       (ev->mode == EFL_UTIL_GESTURE_MODE_END))
+     {
+        runner->ev.response = E_TC_EVENT_TYPE_GESTURE_EDGE_DRAG;
+        elm_exit();
+     }
+
+   return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool
+_cb_gesture_edge_drag_delay_timer(void *data)
+{
+   etRunner *runner = (etRunner *)data;
+   int i, cnt, fingers, w, h;
+   efl_util_gesture_edge_e edge;
+
+   cnt = ++runner->ev.gesture.edge.touch_count;
+   fingers = runner->ev.gesture.edge.fingers;
+   edge = runner->ev.gesture.edge.edge;
+   w = runner->output.w - 1;
+   h = runner->output.h - 1;
+
+   if (cnt == 1)
+     {
+        for (i = 0; i < fingers; i++)
+          {
+             switch (edge)
+               {
+                  case EFL_UTIL_GESTURE_EDGE_TOP:
+                    runner->generateTouchDown(i, 100 * (i + 1), 1);
+                    break;
+                  case EFL_UTIL_GESTURE_EDGE_RIGHT:
+                    runner->generateTouchDown(i, w - 1, 100 * (i + 1));
+                    break;
+                  case EFL_UTIL_GESTURE_EDGE_BOTTOM:
+                    runner->generateTouchDown(i, 100 * (i + 1), h - 1);
+                    break;
+                  case EFL_UTIL_GESTURE_EDGE_LEFT:
+                    runner->generateTouchDown(i, 1, 100 * (i + 1));
+                    break;
+                  default:
+                    break;
+               }
+          }
+     }
+   else if (cnt < 5)
+     {
+        for (i = 0; i < fingers; i++)
+          {
+             switch (edge)
+               {
+                  case EFL_UTIL_GESTURE_EDGE_TOP:
+                    runner->generateTouchMove(i, 100 * (i + 1), 50 * cnt);
+                    break;
+                  case EFL_UTIL_GESTURE_EDGE_RIGHT:
+                    runner->generateTouchMove(i, (w - 1) - (50 * cnt), 100 * (i + 1));
+                    break;
+                  case EFL_UTIL_GESTURE_EDGE_BOTTOM:
+                    runner->generateTouchMove(i, 100 * (i + 1), (h - 1) - (50 * cnt));
+                    break;
+                  case EFL_UTIL_GESTURE_EDGE_LEFT:
+                    runner->generateTouchMove(i, 50 * cnt, 100 * (i + 1));
+                    break;
+                  default:
+                    break;
+               }
+          }
+     }
+   else
+     {
+        cnt--;
+        for (i = 0; i < fingers; i++)
+          {
+             switch (edge)
+               {
+                  case EFL_UTIL_GESTURE_EDGE_TOP:
+                    runner->generateTouchUp(i, 100 * (i + 1), 50 * cnt);
+                    break;
+                  case EFL_UTIL_GESTURE_EDGE_RIGHT:
+                    runner->generateTouchUp(i, (w - 1) - (50 * cnt), 100 * (i + 1));
+                    break;
+                  case EFL_UTIL_GESTURE_EDGE_BOTTOM:
+                    runner->generateTouchUp(i, 100 * (i + 1), (h - 1) - (50 * cnt));
+                    break;
+                  case EFL_UTIL_GESTURE_EDGE_LEFT:
+                    runner->generateTouchUp(i, 50 * cnt, 100 * (i + 1));
+                    break;
+                  default:
+                    break;
+               }
+          }
+
+        runner->ev.gesture.timer = NULL;
+        return ECORE_CALLBACK_CANCEL;
+     }
+
+   runner->ev.gesture.timer = NULL;
+   runner->ev.gesture.timer = ecore_timer_add(0.11,
+                                              _cb_gesture_edge_drag_delay_timer,
+                                              runner);
+
+   return ECORE_CALLBACK_CANCEL;
+}
+
+static void
+_gesture_edge_drag_generate(etRunner *runner)
+{
+   runner->ev.gesture.edge.touch_count = 0;
+
+   runner->ev.gesture.timer = ecore_timer_add(1.0,
+                                              _cb_gesture_edge_drag_delay_timer,
+                                              runner);
+}
index 81373c2..aa40618 100644 (file)
@@ -95,7 +95,7 @@ public: /* TODO: make it hidden */
                   efl_util_gesture_edge_e edge;
                   int touch_count;
                   Eina_Bool get_event;
-               } edge_swipe;
+               } edge;
           } gesture;
      } ev;
    struct
index cbc05cd..5abf0f4 100644 (file)
@@ -81,6 +81,7 @@ typedef enum _E_TC_Event_Type
    E_TC_EVENT_TYPE_EFFECT,
    E_TC_EVENT_TYPE_GESTURE_TAP,
    E_TC_EVENT_TYPE_GESTURE_EDGE_SWIPE,
+   E_TC_EVENT_TYPE_GESTURE_EDGE_DRAG,
    E_TC_EVENT_TYPE_MAX
 } E_TC_Event_Type;
 
index da194a6..15929d6 100644 (file)
@@ -377,14 +377,14 @@ _test_gesture_edge_swipe(int fingers, efl_util_gesture_edge_e edge)
    ASSERT_TRUE(ret == EFL_UTIL_ERROR_NONE) << "failed to grab edge swipe gesture: (ret: "
      << EFL_UTIL_RETURN_TO_STRING(ret) << ")";
 
-   etRunner::get().ev.gesture.edge_swipe.fingers = fingers;
-   etRunner::get().ev.gesture.edge_swipe.edge = edge;
+   etRunner::get().ev.gesture.edge.fingers = fingers;
+   etRunner::get().ev.gesture.edge.edge = edge;
 
    ret = etRunner::get().waitEvent(E_TC_EVENT_TYPE_GESTURE_EDGE_SWIPE);
    ASSERT_TRUE(ret);
 
-   etRunner::get().ev.gesture.edge_swipe.fingers = 0;
-   etRunner::get().ev.gesture.edge_swipe.edge = EFL_UTIL_GESTURE_EDGE_NONE;;
+   etRunner::get().ev.gesture.edge.fingers = 0;
+   etRunner::get().ev.gesture.edge.edge = EFL_UTIL_GESTURE_EDGE_NONE;;
 
    ret = efl_util_gesture_ungrab(gesture_h, edge_swipe_d);
    ASSERT_TRUE(ret == EFL_UTIL_ERROR_NONE) << "failed to grab edge swipe gesture: (ret: "
@@ -437,4 +437,83 @@ TEST_F(etTestInput, gesture_edge_swipe23)
 TEST_F(etTestInput, gesture_edge_swipe24)
 {
    _test_gesture_edge_swipe(2, EFL_UTIL_GESTURE_EDGE_LEFT);
+}
+
+static void
+_test_gesture_edge_drag(int fingers, efl_util_gesture_edge_e edge)
+{
+   int ret = EFL_UTIL_ERROR_NONE;
+   efl_util_gesture_h gesture_h;
+   efl_util_gesture_data edge_drag_d;
+
+   gesture_h = efl_util_gesture_initialize();
+   ASSERT_TRUE(gesture_h != NULL) << "failed to initialize gesture system";
+
+   edge_drag_d = efl_util_gesture_edge_drag_new(gesture_h, fingers, edge);
+   ASSERT_TRUE(edge_drag_d != NULL) << "failed to generate edge drag grab data";
+
+   ret = efl_util_gesture_grab(gesture_h, edge_drag_d);
+   ASSERT_TRUE(ret == EFL_UTIL_ERROR_NONE) << "failed to grab edge drag gesture: (ret: "
+     << EFL_UTIL_RETURN_TO_STRING(ret) << ")";
+
+   etRunner::get().ev.gesture.edge.fingers = fingers;
+   etRunner::get().ev.gesture.edge.edge = edge;
+
+   ret = etRunner::get().waitEvent(E_TC_EVENT_TYPE_GESTURE_EDGE_DRAG);
+   ASSERT_TRUE(ret);
+
+   etRunner::get().ev.gesture.edge.fingers = 0;
+   etRunner::get().ev.gesture.edge.edge = EFL_UTIL_GESTURE_EDGE_NONE;;
+
+   ret = efl_util_gesture_ungrab(gesture_h, edge_drag_d);
+   ASSERT_TRUE(ret == EFL_UTIL_ERROR_NONE) << "failed to grab edge drag gesture: (ret: "
+     << EFL_UTIL_RETURN_TO_STRING(ret) << ")";
+
+   ret = efl_util_gesture_edge_drag_free(gesture_h, edge_drag_d);
+   ASSERT_TRUE(ret == EFL_UTIL_ERROR_NONE) << "failed to free tap grab data: (ret: "
+     << EFL_UTIL_RETURN_TO_STRING(ret) << ")";
+
+   ret = efl_util_gesture_deinitialize(gesture_h);
+   ASSERT_TRUE(ret == EFL_UTIL_ERROR_NONE) << "failed to deinitialize gesture system: (ret: "
+     << EFL_UTIL_RETURN_TO_STRING(ret) << ")";
+}
+
+TEST_F(etTestInput, gesture_edge_drag11)
+{
+   _test_gesture_edge_drag(1, EFL_UTIL_GESTURE_EDGE_TOP);
+}
+
+TEST_F(etTestInput, gesture_edge_drag12)
+{
+   _test_gesture_edge_drag(1, EFL_UTIL_GESTURE_EDGE_RIGHT);
+}
+
+TEST_F(etTestInput, gesture_edge_drag13)
+{
+   _test_gesture_edge_drag(1, EFL_UTIL_GESTURE_EDGE_BOTTOM);
+}
+
+TEST_F(etTestInput, gesture_edge_drag14)
+{
+   _test_gesture_edge_drag(1, EFL_UTIL_GESTURE_EDGE_LEFT);
+}
+
+TEST_F(etTestInput, gesture_edge_drag21)
+{
+   _test_gesture_edge_drag(2, EFL_UTIL_GESTURE_EDGE_TOP);
+}
+
+TEST_F(etTestInput, gesture_edge_drag22)
+{
+   _test_gesture_edge_drag(2, EFL_UTIL_GESTURE_EDGE_RIGHT);
+}
+
+TEST_F(etTestInput, gesture_edge_drag23)
+{
+   _test_gesture_edge_drag(2, EFL_UTIL_GESTURE_EDGE_BOTTOM);
+}
+
+TEST_F(etTestInput, gesture_edge_drag24)
+{
+   _test_gesture_edge_drag(2, EFL_UTIL_GESTURE_EDGE_LEFT);
 }
\ No newline at end of file