elementary: add a test for Efl.Ui.View interface.
authorCedric BAIL <cedric.bail@free.fr>
Fri, 12 Jul 2019 19:24:58 +0000 (12:24 -0700)
committerSangHyeon Jade Lee <sh10233.lee@samsung.com>
Tue, 23 Jul 2019 05:04:43 +0000 (14:04 +0900)
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D9308

src/tests/elementary/spec/efl_test_ui_view.c [new file with mode: 0644]
src/tests/elementary/spec/efl_ui_spec_suite.h
src/tests/elementary/spec/meson.build

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 (file)
index 0000000..064da03
--- /dev/null
@@ -0,0 +1,65 @@
+#ifdef HAVE_CONFIG_H
+# include "elementary_config.h"
+#endif
+
+#include <Efl_Ui.h>
+#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);
+}
index a1ecbd5..01be376 100644 (file)
@@ -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);
index e80a24d..eb047ed 100644 (file)
@@ -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([