From d902989b74cba94053b57daaa528d05b277ed3dd Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Fri, 12 Jul 2019 12:24:58 -0700 Subject: [PATCH] elementary: add a test for Efl.Ui.View interface. Reviewed-by: Marcel Hollerbach Differential Revision: https://phab.enlightenment.org/D9308 --- src/tests/elementary/spec/efl_test_ui_view.c | 65 +++++++++++++++++++ src/tests/elementary/spec/efl_ui_spec_suite.h | 1 + src/tests/elementary/spec/meson.build | 1 + 3 files changed, 67 insertions(+) create mode 100644 src/tests/elementary/spec/efl_test_ui_view.c diff --git a/src/tests/elementary/spec/efl_test_ui_view.c b/src/tests/elementary/spec/efl_test_ui_view.c new file mode 100644 index 0000000000..064da03080 --- /dev/null +++ b/src/tests/elementary/spec/efl_test_ui_view.c @@ -0,0 +1,65 @@ +#ifdef HAVE_CONFIG_H +# include "elementary_config.h" +#endif + +#include +#include "efl_ui_spec_suite.h" +#include "suite_helpers.h" + +/* spec-meta-start + {"test-interface":"Efl.Ui.View", + "test-widgets": ["Efl.Ui.Image", "Efl.Ui.Layout", "Efl.Ui.Button"]} + spec-meta-end */ + +typedef struct _Efl_Ui_Image_Model_Change Efl_Ui_Image_Model_Change; +struct _Efl_Ui_Image_Model_Change +{ + Efl_Model *expected_current; + + Eina_Bool called; + Eina_Bool previous; + Eina_Bool current; +}; + +static void +_efl_ui_image_model_changed(void *data, const Efl_Event *event) +{ + Efl_Ui_Image_Model_Change *change = data; + Efl_Model_Changed_Event *ev = event->info; + + ck_assert(!change->called); + change->called = EINA_TRUE; + change->previous = ev->previous ? EINA_TRUE : EINA_FALSE; + ck_assert_ptr_eq(ev->current, change->expected_current); + change->current = ev->current ? EINA_TRUE : EINA_FALSE; +} + +EFL_START_TEST(model_change_event) +{ + Efl_Model *model = efl_add(EFL_GENERIC_MODEL_CLASS, efl_main_loop_get()); + Efl_Ui_Image_Model_Change test = { NULL, EINA_FALSE, EINA_FALSE, EINA_FALSE }; + + efl_event_callback_add(widget, EFL_UI_VIEW_EVENT_MODEL_CHANGED, + _efl_ui_image_model_changed, &test); + + ck_assert_int_eq(test.called, EINA_FALSE); + test.expected_current = model; + efl_ui_view_model_set(widget, model); + ck_assert_int_eq(test.called, EINA_TRUE); + ck_assert_int_eq(test.previous, EINA_FALSE); + ck_assert_int_eq(test.current, EINA_TRUE); + + test.called = EINA_FALSE; + test.expected_current = NULL; + efl_ui_view_model_set(widget, NULL); + ck_assert_int_eq(test.called, EINA_TRUE); + ck_assert_int_eq(test.previous, EINA_TRUE); + ck_assert_int_eq(test.current, EINA_FALSE); +} +EFL_END_TEST + +void +efl_ui_view_behavior_test(TCase *tc) +{ + tcase_add_test(tc, model_change_event); +} diff --git a/src/tests/elementary/spec/efl_ui_spec_suite.h b/src/tests/elementary/spec/efl_ui_spec_suite.h index a1ecbd59ed..01be37652d 100644 --- a/src/tests/elementary/spec/efl_ui_spec_suite.h +++ b/src/tests/elementary/spec/efl_ui_spec_suite.h @@ -18,6 +18,7 @@ void efl_ui_clickable_behavior_test(TCase *tc); void efl_ui_format_behavior_test(TCase *tc); void efl_ui_range_display_behavior_test(TCase *tc); void efl_ui_range_display_interactive_behavior_test(TCase *tc); +void efl_ui_view_behavior_test(TCase *tc); void efl_test_container_content_equal(Efl_Ui_Widget **wid, unsigned int len); void efl_test_container_expect_evt_content_added(Efl_Ui_Widget *widget, const Efl_Event_Description *ev, Eina_Bool *flag, void *event_data); diff --git a/src/tests/elementary/spec/meson.build b/src/tests/elementary/spec/meson.build index e80a24d166..eb047ed957 100644 --- a/src/tests/elementary/spec/meson.build +++ b/src/tests/elementary/spec/meson.build @@ -8,6 +8,7 @@ efl_ui_suite_behavior_test_files = files([ 'efl_test_format.c', 'efl_test_range_display.c', 'efl_test_range_interactive.c', + 'efl_test_ui_view.c', ]) efl_ui_suite_behavior_src = files([