0021_output_resolution: Add TCs for verifing coordinates of mouse events 56/315456/1
authorduna.oh <duna.oh@samsung.com>
Thu, 1 Aug 2024 06:38:14 +0000 (15:38 +0900)
committerduna.oh <duna.oh@samsung.com>
Thu, 1 Aug 2024 06:38:14 +0000 (15:38 +0900)
Change-Id: I6e82b51a7579a6e57468bb1c4da2217fd2935548

src/e_test_event.cpp
src/testcase/0021_output_resolution.cpp

index ecf040e589bb77ec62bea754b82ef326c390a073..f82cec810d2f732642b636f9fe186b64db731236 100644 (file)
@@ -2552,7 +2552,7 @@ _cb_ecore_mouse_button_down(void *data, int type, void *event)
    Ecore_Event_Mouse_Button *ev = (Ecore_Event_Mouse_Button *)event;
    etRunner *runner = (etRunner *)data;
 
-   DBG("Mouse button DOWN cb");
+   DBG("Mouse button DOWN cb (%d, %d) buttons: %d", ev->x, ev->y, ev->buttons);
    if (runner->ev.mouse.buttons != ev->buttons) return ECORE_CALLBACK_PASS_ON;
 
    if ((runner->ev.mouse.x == ev->x) &&
@@ -2576,7 +2576,7 @@ _cb_ecore_mouse_button_up(void *data, int type, void *event)
    Ecore_Event_Mouse_Button *ev = (Ecore_Event_Mouse_Button *)event;
    etRunner *runner = (etRunner *)data;
 
-   DBG("Mouse button UP cb");
+   DBG("Mouse button UP cb (%d, %d) buttons: %d", ev->x, ev->y, ev->buttons);
    if (runner->ev.mouse.buttons != ev->buttons) return ECORE_CALLBACK_PASS_ON;
 
    if ((runner->ev.mouse.x == ev->x) &&
@@ -2600,7 +2600,7 @@ _cb_ecore_mouse_move(void *data, int type, void *event)
    Ecore_Event_Mouse_Move *ev = (Ecore_Event_Mouse_Move *)event;
    etRunner *runner = (etRunner *)data;
 
-   DBG("Mouse MOVE cb");
+   DBG("Mouse MOVE cb (%d, %d)", ev->x, ev->y);
    if ((runner->ev.mouse.x == ev->x) &&
        (runner->ev.mouse.y == ev->y))
      {
index 77def327b81f0302f4a4561d522cde3355f121a4..5d7e8843036b9e26d61450d60661514c50633191 100644 (file)
@@ -133,5 +133,100 @@ TEST_F(etTestOutputResolution, base_output_resolution_basic)
    res = etRunner::get().unsetConfiguredOutputResolution();
    ASSERT_EQ(res, 0);
 
+   ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
+}
+
+TEST_F(etTestOutputResolution, basic_robustness)
+{
+   Eina_Bool res = 0;
+   int ret = EFL_UTIL_ERROR_NONE;
+   const int win_w = 100, win_h = 100;
+   int screen_w = 0, screen_h = 0;
+   double ratio_w = 1.0, ratio_h = 1.0;
+   int pos_x = 100, pos_y = 100;
+
+   etTCResult initRes = initTC();
+   ASSERT_TRUE(initRes.result()) << initRes.description();
+
+   res = etRunner::get().setConfiguredOutputResolution(CONFIGURED_OUTPUT_RESOLUTION_W, CONFIGURED_OUTPUT_RESOLUTION_H);
+   ASSERT_EQ(res, EINA_TRUE);
+
+   tw_red = initNormalWin("TCWin_Red", 0, 0, win_w, win_h, E_TC_WIN_COLOR_RED);
+   showTCWin(tw_red);
+   ASSERT_FOCUS_IN(tw_red);
+   ASSERT_TRUE(tw_red != NULL) << "failed to initiation window";
+
+   res = etRunner::get().getScreenSize(&screen_w, &screen_h);
+   ASSERT_EQ(res, EINA_TRUE) << "failed to get screen size";
+
+   // Expected values: (ratio_x = 1.5, ratio_w = 1.5 as FHD screen)
+   ratio_w = (double) screen_w / CONFIGURED_OUTPUT_RESOLUTION_W;
+   ratio_h = (double) screen_h / CONFIGURED_OUTPUT_RESOLUTION_H;
+
+   InputGenHandler inputgen_h = std::make_shared<etInputGenHandler>(EFL_UTIL_INPUT_DEVTYPE_POINTER, true);
+   ret = inputgen_h->generatePointerMove(1, 0, 0);
+   ASSERT_TRUE(ret);
+
+   // Expected event coordinate: (x = 66, y = 66 as FHD screen)
+   etRunner::get().ev.mouse.x = pos_x / ratio_w;
+   etRunner::get().ev.mouse.y = pos_y / ratio_h;
+
+   ret = inputgen_h->generatePointerMove(1, pos_x, pos_y);
+   ASSERT_TRUE(ret);
+   ev_result = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_INPUT_ECORE_MOUSE);
+
+   res = etRunner::get().unsetConfiguredOutputResolution();
+   ASSERT_EQ(res, 0);
+
+   ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
+}
+
+TEST_F(etTestOutputResolution, base_output_resolution_basic_robustness)
+{
+   Eina_Bool res = 0;
+   int ret = EFL_UTIL_ERROR_NONE;
+   const int win_w = 100, win_h = 100;
+   int screen_w = 0, screen_h = 0;
+   double ratio_w = 1.0, ratio_h = 1.0;
+   int pos_x = 100, pos_y = 100;
+
+   etTCResult initRes = initTC();
+   ASSERT_TRUE(initRes.result()) << initRes.description();
+
+   res = etRunner::get().setConfiguredOutputResolution(CONFIGURED_OUTPUT_RESOLUTION_W, CONFIGURED_OUTPUT_RESOLUTION_H);
+   ASSERT_EQ(res, EINA_TRUE);
+   res = etRunner::get().setBaseOutputResolution(getpid(), BASE_OUTPUT_RESOLUTION_W, BASE_OUTPUT_RESOLUTION_H);
+   ASSERT_EQ(res, EINA_TRUE);
+
+   tw_red = initNormalWin("TCWin_Red", 0, 0, win_w, win_h, E_TC_WIN_COLOR_RED);
+   showTCWin(tw_red);
+   ASSERT_FOCUS_IN(tw_red);
+   ASSERT_TRUE(tw_red != NULL) << "failed to initiation window";
+
+   res = etRunner::get().getScreenSize(&screen_w, &screen_h);
+   ASSERT_EQ(res, EINA_TRUE) << "failed to get screen size";
+
+   // Expected values: (ratio_x = 3, ratio_w = 2 as FHD screen)
+   ratio_w = (double) screen_w / BASE_OUTPUT_RESOLUTION_W;
+   ratio_h = (double) screen_h / BASE_OUTPUT_RESOLUTION_H;
+
+   InputGenHandler inputgen_h = std::make_shared<etInputGenHandler>(EFL_UTIL_INPUT_DEVTYPE_POINTER, true);
+   ret = inputgen_h->generatePointerMove(1, 0, 0);
+   ASSERT_TRUE(ret);
+
+   // Expected event coordinate: (x = 33, y = 50 as FHD screen)
+   etRunner::get().ev.mouse.x = pos_x / ratio_w;
+   etRunner::get().ev.mouse.y = pos_y / ratio_h;
+
+   ret = inputgen_h->generatePointerMove(1, pos_x, pos_y);
+   ASSERT_TRUE(ret);
+   ev_result = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_INPUT_ECORE_MOUSE);
+
+   res = etRunner::get().unsetBaseOutputResolution(getpid());
+   ASSERT_EQ(res, 0);
+
+   res = etRunner::get().unsetConfiguredOutputResolution();
+   ASSERT_EQ(res, 0);
+
    ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
 }
\ No newline at end of file