0019_cnp: Add new copy paste test 09/302109/3
authorJunkyeong Kim <jk0430.kim@samsung.com>
Thu, 30 Nov 2023 09:18:45 +0000 (18:18 +0900)
committerJunkyeong Kim <jk0430.kim@samsung.com>
Thu, 30 Nov 2023 09:20:38 +0000 (18:20 +0900)
Change-Id: I305992af06e673fce86269f4eb4beca8c38aeed9
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
src/Makefile.am
src/testcase/0019_cnp.cpp [new file with mode: 0644]

index d54218a..1860bd4 100644 (file)
@@ -27,7 +27,8 @@ testcase/0014_transient_for_below.cpp \
 testcase/0015_tzsh_quickpanel.cpp \
 testcase/0016_background_state.cpp \
 testcase/0017_input_sync.cpp \
-testcase/0018_input_region.cpp
+testcase/0018_input_region.cpp \
+testcase/0019_cnp.cpp
 
 e_tizen_unittests_SOURCES = \
 e_test_main.cpp \
diff --git a/src/testcase/0019_cnp.cpp b/src/testcase/0019_cnp.cpp
new file mode 100644 (file)
index 0000000..08e359f
--- /dev/null
@@ -0,0 +1,123 @@
+#include <Ecore_Wl2.h>
+
+#include "e_test_event.h"
+#include "e_test_base.h"
+#include "e_test_efl_util.h"
+
+#define CNP_INIT_W 640
+#define CNP_INIT_H 240
+
+//Copy and Paste test
+class etTestCnP : public ::etTCBase
+{
+public:
+   etTestCnP() { };
+   ~etTestCnP() { };
+
+protected:
+   std::string testCaseName;
+   std::string testName;
+   etWin *tw_src = NULL;
+   etWin *tw_dst = NULL;
+
+   Evas_Object *en_src = NULL;
+   Evas_Object *en_dst = NULL;
+
+   void initTC();
+};
+
+void
+etTestCnP::initTC()
+{
+   const ::testing::TestInfo *const test_info = ::testing::UnitTest::GetInstance()->current_test_info();
+   Evas_Object *gd;
+   tw_src = initNormalWin("TCWin_Source", 0, 0, CNP_INIT_W, CNP_INIT_H, E_TC_WIN_COLOR_YELLOW);
+   showTCWin(tw_src);
+   ASSERT_FOCUS_IN(tw_src);
+   ASSERT_TRUE(tw_src != NULL) << "failed to initiation window";
+
+   elm_win_autodel_set(tw_src->getElmWin(), EINA_TRUE);
+
+   gd = elm_grid_add(tw_src->getElmWin());
+   elm_grid_size_set(gd, 100, 100);
+   evas_object_size_hint_weight_set(gd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   elm_win_resize_object_add(tw_src->getElmWin(), gd);
+   evas_object_show(gd);
+
+   Evas_Object *en = elm_entry_add(tw_src->getElmWin());
+   elm_entry_scrollable_set(en, EINA_TRUE);
+   elm_entry_line_wrap_set(en, ELM_WRAP_CHAR);
+   evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
+   elm_grid_pack(gd, en, 0, 0, 100, 100);
+   evas_object_show(en);
+   en_src = en;
+
+   tw_dst = initNormalWin("TCWin_Source", 0, CNP_INIT_H, CNP_INIT_W, CNP_INIT_H, E_TC_WIN_COLOR_GREEN);
+   showTCWin(tw_dst);
+   ASSERT_FOCUS_IN(tw_dst);
+   ASSERT_TRUE(tw_dst != NULL) << "failed to initiation window";
+
+   elm_win_autodel_set(tw_dst->getElmWin(), EINA_TRUE);
+
+   gd = elm_grid_add(tw_dst->getElmWin());
+   elm_grid_size_set(gd, 100, 100);
+   evas_object_size_hint_weight_set(gd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   elm_win_resize_object_add(tw_dst->getElmWin(), gd);
+   evas_object_show(gd);
+
+   Evas_Object *en2 = elm_entry_add(tw_dst->getElmWin());
+   elm_entry_scrollable_set(en2, EINA_TRUE);
+   elm_entry_line_wrap_set(en2, ELM_WRAP_CHAR);
+   evas_object_size_hint_weight_set(en2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   evas_object_size_hint_align_set(en2, EVAS_HINT_FILL, EVAS_HINT_FILL);
+   elm_grid_pack(gd, en2, 0, 0, 100, 100);
+   evas_object_show(en2);
+   en_dst = en2;
+
+   testCaseName = test_info->test_case_name();
+   testName = test_info->name();
+}
+
+static Eina_Bool
+_selection_get(void *data, Evas_Object *obj EINA_UNUSED, Elm_Selection_Data *ev)
+{
+   Evas_Object *en = (Evas_Object *)data;
+
+   if (ev->format == ELM_SEL_FORMAT_TEXT)
+     {
+        char *stripstr;
+
+        stripstr = (char *)malloc(ev->len + 1);
+        strncpy(stripstr, (char *)ev->data, ev->len);
+        stripstr[ev->len] = '\0';
+        elm_entry_entry_insert(en, stripstr);
+        free(stripstr);
+     }
+
+   return EINA_TRUE;
+}
+
+TEST_F(etTestCnP, copypaste_basic)
+{
+   initTC();
+   const char *src_txt = "CnP test src context.";
+   const char *dst_txt;
+
+   elm_object_text_set(en_src, src_txt);
+   elm_cnp_selection_set(elm_object_parent_widget_get(en_src), ELM_SEL_TYPE_CLIPBOARD,
+                         ELM_SEL_FORMAT_TEXT, src_txt, strlen(src_txt));
+
+   etRunner::get().work(0.5);
+
+   elm_cnp_selection_get(en_dst, ELM_SEL_TYPE_CLIPBOARD, ELM_SEL_FORMAT_TEXT,
+                         _selection_get, en_dst);
+
+   etRunner::get().work(1.0);
+
+   dst_txt = elm_object_text_get(en_dst);
+
+   ASSERT_EQ(0, strcmp(src_txt, dst_txt));
+
+   ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
+}