InputGenHandler inputgen_h = std::make_shared<etInputGenHandler>(EFL_UTIL_INPUT_DEVTYPE_TOUCHSCREEN, true);
etRunner::get().work(1.0); // wait for touch device enabled
+ // finger 0 - down
etRunner::get().ev.mouse.buttons = 1;
etRunner::get().ev.mouse.x = 50;
etRunner::get().ev.mouse.y = 50;
ASSERT_TRUE(ret);
ASSERT_EVENT(tw_small, E_TC_EVENT_TYPE_INPUT_ECORE_MOUSE_DOWN);
+ // finger 1 - down
etRunner::get().ev.mouse.multi_device = 1;
etRunner::get().ev.mouse.x = 200;
etRunner::get().ev.mouse.y = 200;
ASSERT_TRUE(ret);
ASSERT_EVENT(tw_small, E_TC_EVENT_TYPE_INPUT_ECORE_MOUSE_DOWN);
+ // finger 1 - up
ret = inputgen_h->generateTouchUp(1, 200, 200);
ASSERT_TRUE(ret);
ASSERT_EVENT(tw_small, E_TC_EVENT_TYPE_INPUT_ECORE_MOUSE_UP);
+ // finger 0 - up
etRunner::get().ev.mouse.multi_device = 0;
etRunner::get().ev.mouse.x = 50;
etRunner::get().ev.mouse.y = 50;
ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
}
+TEST_F(etTestInput, touch_multi_down_up_down)
+{
+ int ret = EFL_UTIL_ERROR_NONE;
+
+ etWin *tw_big = initNormalWin("TCWin_TouchMultiEvent_Big", 0, 0, 500, 500);
+ ASSERT_TRUE(tw_big != NULL) << "failed to initiation Big window";
+ showTCWin(tw_big);
+ ASSERT_VIS_ON(tw_big);
+
+ etWin *tw_small = initNormalWin("TCWin_TouchMultiEvent_Small", 0, 0, 100, 100);
+ ASSERT_TRUE(tw_small != NULL) << "failed to initiation Small window";
+ showTCWin(tw_small);
+ ASSERT_VIS_ON(tw_small);
+
+ InputGenHandler inputgen_h = std::make_shared<etInputGenHandler>(EFL_UTIL_INPUT_DEVTYPE_TOUCHSCREEN, true);
+ etRunner::get().work(1.0); // wait for touch device enabled
+
+ // finger 0 - down
+ etRunner::get().ev.mouse.buttons = 1;
+ etRunner::get().ev.mouse.x = 50;
+ etRunner::get().ev.mouse.y = 50;
+
+ ret = inputgen_h->generateTouchDown(0, 50, 50);
+ ASSERT_TRUE(ret);
+ ASSERT_EVENT(tw_small, E_TC_EVENT_TYPE_INPUT_ECORE_MOUSE_DOWN);
+
+ // finger 1 - down
+ etRunner::get().ev.mouse.multi_device = 1;
+ etRunner::get().ev.mouse.x = 200;
+ etRunner::get().ev.mouse.y = 200;
+
+ // Even if the second mouse down position is on the tw_big window, an event occurs on the tw_small window
+ // because mouse events are grabbed to tw_small window after the first mouse down position is on it.
+ ret = inputgen_h->generateTouchDown(1, 200, 200);
+ ASSERT_TRUE(ret);
+ ASSERT_EVENT(tw_small, E_TC_EVENT_TYPE_INPUT_ECORE_MOUSE_DOWN);
+
+ // finger 0 - up
+ etRunner::get().ev.mouse.multi_device = 0;
+ etRunner::get().ev.mouse.x = 50;
+ etRunner::get().ev.mouse.y = 50;
+
+ ret = inputgen_h->generateTouchUp(0, 50, 50);
+ ASSERT_TRUE(ret);
+ ASSERT_EVENT(tw_small, E_TC_EVENT_TYPE_INPUT_ECORE_MOUSE_UP);
+
+ // finger 0 - down
+ etRunner::get().ev.mouse.buttons = 1;
+ etRunner::get().ev.mouse.multi_device = 0;
+ etRunner::get().ev.mouse.x = 200;
+ etRunner::get().ev.mouse.y = 100;
+
+ // Even if the first finger down position is on the tw_big window, an event occurs on the tw_small window
+ // because mouse events are grabbed to tw_small window until all fingers are released.
+ ret = inputgen_h->generateTouchDown(0, 200, 100);
+ ASSERT_TRUE(ret);
+ ASSERT_EVENT(tw_small, E_TC_EVENT_TYPE_INPUT_ECORE_MOUSE_DOWN);
+
+ // finger 0 - up
+ ret = inputgen_h->generateTouchUp(0, 200, 100);
+
+ // finger 1 - up
+ ret = inputgen_h->generateTouchUp(1, 200, 100);
+
+ ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
+}
+
#ifndef DISABLE_GESTURE_TESTS
TEST_F(etTestInput, gesture_tap22)
{