add test case for input_inialize_generator_with_sync 25/285325/2
authorduna.oh <duna.oh@samsung.com>
Fri, 9 Dec 2022 05:20:51 +0000 (14:20 +0900)
committerduna.oh <duna.oh@samsung.com>
Mon, 6 Feb 2023 11:14:19 +0000 (20:14 +0900)
Change-Id: I43fe8200aa72fa0c593d71ff3c6937e23b543494

src/Makefile.am
src/e_test_efl_util.h
src/testcase/0017_input_sync.cpp [new file with mode: 0644]

index 27bdef71d317bb59a67fc1c5dd85e1cbc786e521..549e569351de6e3073e9b9daee7b2a4eb25c2e80 100644 (file)
@@ -25,7 +25,8 @@ testcase/0012_aux_hint.cpp \
 testcase/0013_iconic_state.cpp \
 testcase/0014_transient_for_below.cpp \
 testcase/0015_tzsh_quickpanel.cpp \
-testcase/0016_background_state.cpp
+testcase/0016_background_state.cpp \
+testcase/0017_input_sync.cpp
 
 e_tizen_unittests_SOURCES = \
 e_test_main.cpp \
index fab0432a1111d08e399cb03636ce192c84059a79..783c7a7805075820b568b8a54b932bf69022f346 100644 (file)
@@ -17,6 +17,17 @@ class etInputGenHandler
       if (handler == nullptr)
         printf("failed to init input generator\n");
    }
+   etInputGenHandler(efl_util_input_device_type_e type, bool with_sync) :
+   handler(nullptr)
+   {
+      if (with_sync)
+        handler = efl_util_input_initialize_generator_with_sync(type, NULL);
+      else
+        handler = efl_util_input_initialize_generator_with_name(type, NULL);
+
+      if (handler == nullptr)
+        printf("failed to init input generator\n");
+   }
    ~etInputGenHandler()
    {
       efl_util_input_deinitialize_generator(handler);
diff --git a/src/testcase/0017_input_sync.cpp b/src/testcase/0017_input_sync.cpp
new file mode 100644 (file)
index 0000000..8750877
--- /dev/null
@@ -0,0 +1,83 @@
+#include <Ecore_Wl2.h>
+
+#include "e_test_event.h"
+#include "e_test_base.h"
+#include "e_test_efl_util.h"
+
+class etTestInputSync : public ::etTCBase
+{
+public:
+   etTestInputSync()
+     {
+        key_name = eina_stringshare_add("XF86Menu");
+        etRunner::get().ev.key.name = eina_stringshare_add("XF86Menu");
+        const ::testing::TestInfo *const test_info = ::testing::UnitTest::GetInstance()->current_test_info();
+        testCaseName = test_info->test_case_name();
+        testName = test_info->name();
+     };
+   ~etTestInputSync()
+     {
+        eina_stringshare_del(key_name);
+        eina_stringshare_del(etRunner::get().ev.key.name);
+        key_name = NULL;
+     };
+
+protected:
+   std::string testCaseName;
+   std::string testName;
+
+   Eina_Stringshare *key_name = NULL;
+};
+
+TEST_F(etTestInputSync, keygrab_nowin_shared)
+{
+   Eina_Bool ret = EINA_FALSE;
+   ret = ecore_wl2_window_keygrab_set(NULL, "XF86Menu", 0, 0, 0, ECORE_WL2_WINDOW_KEYGRAB_SHARED);
+   ASSERT_TRUE(ret);
+
+   InputGenHandler inputgen_h = std::make_shared<etInputGenHandler>(EFL_UTIL_INPUT_DEVTYPE_KEYBOARD, true);
+   inputgen_h->generateKeyEvent(key_name, 0.3);
+   ev_result = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_INPUT_ECORE_KEY);
+   ASSERT_NE(ev_result, nullptr);
+
+   ret = ecore_wl2_window_keygrab_unset(NULL, "XF86Menu", 0, 0);
+   ASSERT_TRUE(ret);
+
+   ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
+}
+
+TEST_F(etTestInputSync, keygrab_nowin_orexcl)
+{
+   Eina_Bool ret = EINA_FALSE;
+
+   ret = ecore_wl2_window_keygrab_set(NULL, "XF86Menu", 0, 0, 0, ECORE_WL2_WINDOW_KEYGRAB_OVERRIDE_EXCLUSIVE);
+   ASSERT_TRUE(ret);
+
+   InputGenHandler inputgen_h = std::make_shared<etInputGenHandler>(EFL_UTIL_INPUT_DEVTYPE_KEYBOARD, true);
+   inputgen_h->generateKeyEvent(key_name, 0.3);
+   ev_result = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_INPUT_ECORE_KEY);
+   ASSERT_NE(ev_result, nullptr);
+
+   ret = ecore_wl2_window_keygrab_unset(NULL, "XF86Menu", 0, 0);
+   ASSERT_TRUE(ret);
+
+   ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
+}
+
+TEST_F(etTestInputSync, keygrab_nowin_excl)
+{
+   Eina_Bool ret = EINA_FALSE;
+
+   ret = ecore_wl2_window_keygrab_set(NULL, "XF86Menu", 0, 0, 0, ECORE_WL2_WINDOW_KEYGRAB_EXCLUSIVE);
+   ASSERT_TRUE(ret);
+
+   InputGenHandler inputgen_h = std::make_shared<etInputGenHandler>(EFL_UTIL_INPUT_DEVTYPE_KEYBOARD, true);
+   inputgen_h->generateKeyEvent(key_name, 0.3);
+   ev_result = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_INPUT_ECORE_KEY);
+   ASSERT_NE(ev_result, nullptr);
+
+   ret = ecore_wl2_window_keygrab_unset(NULL, "XF86Menu", 0, 0);
+   ASSERT_TRUE(ret);
+
+   ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
+}