summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@samsung.com>2020-01-29 11:50:57 -0500
committerMarcel Hollerbach <mail@marcel-hollerbach.de>2020-02-05 10:10:53 +0100
commitd8ed195916f5ac31075e17481a9808eb7bc1b1d8 (patch)
tree175c31de4bcf9e0da41b16bc8043d18a62003b97
parentcd5a15bf5c27d6092b1f36fcc065a466778120bd (diff)
downloadefl-d8ed195916f5ac31075e17481a9808eb7bc1b1d8.tar.gz
tests/gesture: add second custom recognizer test
ensure that this functionality works Differential Revision: https://phab.enlightenment.org/D11239
-rw-r--r--src/tests/elementary/custom_recognizer2.c47
-rw-r--r--src/tests/elementary/custom_recognizer2.eo11
-rw-r--r--src/tests/elementary/efl_ui_test_gesture.c52
-rw-r--r--src/tests/elementary/meson.build2
4 files changed, 110 insertions, 2 deletions
diff --git a/src/tests/elementary/custom_recognizer2.c b/src/tests/elementary/custom_recognizer2.c
new file mode 100644
index 0000000000..1f005a7ebe
--- /dev/null
+++ b/src/tests/elementary/custom_recognizer2.c
@@ -0,0 +1,47 @@
+#include <Efl_Ui.h>
+#include "custom_recognizer2.eo.h"
+#define MY_CLASS CUSTOM_RECOGNIZER2_CLASS
+
+typedef struct Custom_Recognizer2_Data
+{
+} Custom_Recognizer2_Data;
+
+EOLIAN static Eo *
+_custom_recognizer2_efl_object_finalize(Eo *obj, Custom_Recognizer2_Data *pd EINA_UNUSED)
+{
+ efl_gesture_recognizer_custom_gesture_name_set(obj, "custom_gesture2");
+ return efl_finalize(efl_super(obj, MY_CLASS));
+}
+
+EOLIAN static Efl_Canvas_Gesture *
+_custom_recognizer2_efl_canvas_gesture_recognizer_add(Eo *obj, Custom_Recognizer2_Data *pd EINA_UNUSED, Efl_Object *target EINA_UNUSED)
+{
+ return efl_add(EFL_CANVAS_GESTURE_CUSTOM_CLASS, obj);
+}
+
+EOLIAN static Efl_Canvas_Gesture_Recognizer_Result
+_custom_recognizer2_efl_canvas_gesture_recognizer_recognize(Eo *obj EINA_UNUSED, Custom_Recognizer2_Data *pd EINA_UNUSED,
+ Efl_Canvas_Gesture *gesture EINA_UNUSED, Efl_Object *watched EINA_UNUSED,
+ Efl_Canvas_Gesture_Touch *event)
+{
+ Eina_Position2D start = efl_gesture_touch_start_point_get(event);
+ Eina_Position2D cur = efl_gesture_touch_cur_point_get(event);
+ switch (efl_gesture_touch_state_get(event))
+ {
+ case EFL_GESTURE_TOUCH_STATE_BEGIN:
+ return EFL_GESTURE_RECOGNIZER_RESULT_TRIGGER;
+ case EFL_GESTURE_TOUCH_STATE_UPDATE:
+ if (EINA_POSITION2D_EQ(start, cur))
+ return EFL_GESTURE_RECOGNIZER_RESULT_TRIGGER;
+ if ((cur.x - start.x == 1) && (cur.y == start.y))
+ return EFL_GESTURE_RECOGNIZER_RESULT_FINISH;
+ case EFL_GESTURE_TOUCH_STATE_END:
+ default:
+
+ break;
+ }
+
+ return EFL_GESTURE_RECOGNIZER_RESULT_CANCEL;
+}
+
+#include "custom_recognizer2.eo.c"
diff --git a/src/tests/elementary/custom_recognizer2.eo b/src/tests/elementary/custom_recognizer2.eo
new file mode 100644
index 0000000000..721c92af7f
--- /dev/null
+++ b/src/tests/elementary/custom_recognizer2.eo
@@ -0,0 +1,11 @@
+class @beta Custom_Recognizer2 extends Efl.Canvas.Gesture_Recognizer_Custom
+{
+ [[Custom gesture recognizer test class.
+ ]]
+ c_prefix: custom_recognizer2;
+ implements {
+ Efl.Object.finalize;
+ Efl.Canvas.Gesture_Recognizer.add;
+ Efl.Canvas.Gesture_Recognizer.recognize;
+ }
+}
diff --git a/src/tests/elementary/efl_ui_test_gesture.c b/src/tests/elementary/efl_ui_test_gesture.c
index f965b9a778..fdd5f16a98 100644
--- a/src/tests/elementary/efl_ui_test_gesture.c
+++ b/src/tests/elementary/efl_ui_test_gesture.c
@@ -9,6 +9,7 @@
#include <evas_canvas_eo.h>
#include "custom_recognizer.eo.h"
+#include "custom_recognizer2.eo.h"
/*
typedef enum
@@ -31,6 +32,7 @@ enum
FLICK,
ZOOM,
CUSTOM,
+ CUSTOM2,
LAST
};
@@ -514,8 +516,19 @@ custom_cb(void *data EINA_UNUSED , const Efl_Event *ev)
{
Efl_Canvas_Gesture *g = ev->info;
- ck_assert_str_eq(efl_gesture_custom_gesture_name_get(g), "custom_gesture");
int *count = data;
+ if (!eina_streq(efl_gesture_custom_gesture_name_get(g), "custom_gesture")) return;
+ /* increment counter for event state which has been processed */
+ count[efl_gesture_state_get(g) - 1]++;
+}
+
+static void
+custom_cb2(void *data EINA_UNUSED , const Efl_Event *ev)
+{
+ Efl_Canvas_Gesture *g = ev->info;
+
+ int *count = data;
+ if (!eina_streq(efl_gesture_custom_gesture_name_get(g), "custom_gesture2")) return;
/* increment counter for event state which has been processed */
count[efl_gesture_state_get(g) - 1]++;
}
@@ -525,13 +538,48 @@ EFL_START_TEST(test_efl_ui_gesture_custom)
Eo *rect = setup();
Eo *manager = efl_provider_find(rect, EFL_CANVAS_GESTURE_MANAGER_CLASS);
Eo *recognizer = efl_add(CUSTOM_RECOGNIZER_CLASS, manager);
- efl_gesture_manager_recognizer_register(manager, recognizer);
+ Eo *recognizer2 = efl_add(CUSTOM_RECOGNIZER2_CLASS, manager);
+ efl_gesture_manager_recognizer_register(manager, recognizer);
+ efl_gesture_manager_recognizer_register(manager, recognizer2);
efl_event_callback_add(rect, EFL_EVENT_GESTURE_CUSTOM, custom_cb, &count[CUSTOM]);
+ efl_event_callback_add(rect, EFL_EVENT_GESTURE_CUSTOM, custom_cb2, &count[CUSTOM2]);
+
+ /* verify that we're processing */
click_object(rect);
CHECK_ALL(CUSTOM, 1, 0, 1, 0);
+ CHECK_ALL(CUSTOM2, 1, 0, 0, 1);
+
+ RESET;
+
+ /* verify that we aren't still processing */
+ efl_gesture_manager_recognizer_unregister(manager, recognizer);
+ efl_gesture_manager_recognizer_unregister(manager, recognizer2);
+ click_object(rect);
+ CHECK_ZERO(CUSTOM);
+ CHECK_ZERO(CUSTOM2);
+
+ RESET;
+
+ /* verify re-register + early finish from custom2 */
+ efl_gesture_manager_recognizer_register(manager, recognizer);
+ efl_gesture_manager_recognizer_register(manager, recognizer2);
+ drag_object(rect, 500, 500, 1, 0, EINA_FALSE);
+ CHECK_ALL(CUSTOM, 1, 1, 1, 0);
+ CHECK_ALL(CUSTOM2, 1, 0, 1, 0);
+
efl_event_callback_del(rect, EFL_EVENT_GESTURE_CUSTOM, custom_cb, &count[CUSTOM]);
+ efl_event_callback_del(rect, EFL_EVENT_GESTURE_CUSTOM, custom_cb2, &count[CUSTOM2]);
+
+ RESET;
+
+ /* verify we don't have anything totally weird going on */
+ click_object(rect);
+ CHECK_ZERO(CUSTOM);
+ CHECK_ZERO(CUSTOM2);
+
efl_gesture_manager_recognizer_unregister(manager, recognizer);
+ efl_gesture_manager_recognizer_unregister(manager, recognizer2);
}
EFL_END_TEST
diff --git a/src/tests/elementary/meson.build b/src/tests/elementary/meson.build
index ba748514da..10534277b4 100644
--- a/src/tests/elementary/meson.build
+++ b/src/tests/elementary/meson.build
@@ -1,5 +1,6 @@
priv_eo_files = [
'custom_recognizer.eo',
+ 'custom_recognizer2.eo',
'focus_test.eo',
'focus_test_sub_main.eo',
'focus_manager_test.eo'
@@ -164,6 +165,7 @@ efl_ui_suite_src = [
'efl_ui_test_text.c',
'efl_ui_test_vg_animation.c',
'custom_recognizer.c',
+ 'custom_recognizer2.c',
]
efl_ui_suite = executable('efl_ui_suite',