tests/evas: add file for evas event unit tests, add frozen mouse-up test

this adds an explicit test verifying that if an object is frozen before
a mouse-up event is passed through it, the callback for mouse-up will
not be called for that object

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D9239
This commit is contained in:
Mike Blumenkrantz 2019-07-09 08:52:07 -04:00 committed by Marcel Hollerbach
parent d76d5db5cb
commit 0fe216420c
4 changed files with 50 additions and 0 deletions

View File

@ -28,6 +28,7 @@ static const Efl_Test_Case etc[] = {
{ "Evas GL", evas_test_evasgl },
{ "Object Smart", evas_test_object_smart },
{ "Matrix", evas_test_matrix },
{ "Events", evas_test_events },
{ NULL, NULL }
};

View File

@ -22,5 +22,6 @@ void evas_test_mask(TCase *tc);
void evas_test_evasgl(TCase *tc);
void evas_test_object_smart(TCase *tc);
void evas_test_matrix(TCase *tc);
void evas_test_events(TCase *tc);
#endif /* _EVAS_SUITE_H */

View File

@ -0,0 +1,47 @@
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <stdio.h>
#include <Evas.h>
#include <Ecore_Evas.h>
#include "evas_suite.h"
#include "evas_tests_helpers.h"
static void
_mouse_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
intptr_t *val = data;
ck_assert_int_eq(*val, 0);
*val = 1;
}
EFL_START_TEST(evas_test_events_frozen_mouse_up)
{
Evas *evas;
Evas_Object *rect;
static int callback_called = 0;
evas = EVAS_TEST_INIT_EVAS();
rect = evas_object_rectangle_add(evas);
evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb, &callback_called);
evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_UP, _mouse_down_cb, &callback_called);
evas_object_resize(rect, 500, 500);
evas_object_show(rect);
evas_event_feed_mouse_in(evas, 0, NULL);
evas_event_feed_mouse_move(evas, 100, 100, 0, NULL);
evas_event_feed_mouse_down(evas, 1, 0, 0, NULL);
ck_assert_int_eq(callback_called, 1);
callback_called = 0;
evas_object_freeze_events_set(rect, 1);
evas_event_feed_mouse_up(evas, 1, 0, 0, NULL);
ck_assert_int_eq(callback_called, 0);
}
EFL_END_TEST
void evas_test_events(TCase *tc)
{
tcase_add_test(tc, evas_test_events_frozen_mouse_up);
}

View File

@ -15,6 +15,7 @@ evas_suite_src = [
'evas_test_evasgl.c',
'evas_test_matrix.c',
'evas_test_focus.c',
'evas_test_events.c',
'evas_tests_helpers.h',
'evas_suite.h'
]