cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=91ed9b59d90b5fc65ad5b64f8beba96d608d31c0

commit 91ed9b59d90b5fc65ad5b64f8beba96d608d31c0
Author: Mike Blumenkrantz <zm...@samsung.com>
Date:   Fri Jan 3 10:06:40 2020 -0500

    elementary: start some collectionview tests
    
    * basic test checking realize/unrealize signals
    * selection model test
    
    Reviewed-by: Cedric BAIL <cedric.b...@free.fr>
    Differential Revision: https://phab.enlightenment.org/D11012
---
 src/tests/elementary/efl_ui_suite.c                |   1 +
 src/tests/elementary/efl_ui_suite.h                |   1 +
 src/tests/elementary/efl_ui_test_collection_view.c | 158 +++++++++++++++++++++
 src/tests/elementary/meson.build                   |   1 +
 4 files changed, 161 insertions(+)

diff --git a/src/tests/elementary/efl_ui_suite.c 
b/src/tests/elementary/efl_ui_suite.c
index 9234d68a2f..4b8dc0dbbb 100644
--- a/src/tests/elementary/efl_ui_suite.c
+++ b/src/tests/elementary/efl_ui_suite.c
@@ -38,6 +38,7 @@ static const Efl_Test_Case etc[] = {
   { "efl_ui_collection", efl_ui_test_item_container },
   { "efl_ui_grid_container", efl_ui_test_grid_container },
   { "efl_ui_list_container", efl_ui_test_list_container },
+  { "efl_ui_collection_view", efl_ui_test_collection_view },
   { "efl_ui_select_model", efl_ui_test_select_model },
   { "efl_ui_view_model", efl_ui_test_view_model },
   { "efl_ui_group_item", efl_ui_test_group_item },
diff --git a/src/tests/elementary/efl_ui_suite.h 
b/src/tests/elementary/efl_ui_suite.h
index cb83a00ce7..c63df11bfb 100644
--- a/src/tests/elementary/efl_ui_suite.h
+++ b/src/tests/elementary/efl_ui_suite.h
@@ -46,6 +46,7 @@ void efl_ui_test_spin_button(TCase *tc);
 void efl_ui_test_item_container(TCase *tc);
 void efl_ui_test_list_container(TCase *tc);
 void efl_ui_test_grid_container(TCase *tc);
+void efl_ui_test_collection_view(TCase *tc);
 void efl_ui_test_config(TCase *tc);
 void efl_ui_test_popup(TCase *tc);
 void efl_ui_test_scroller(TCase *tc);
diff --git a/src/tests/elementary/efl_ui_test_collection_view.c 
b/src/tests/elementary/efl_ui_test_collection_view.c
new file mode 100644
index 0000000000..8740fdb623
--- /dev/null
+++ b/src/tests/elementary/efl_ui_test_collection_view.c
@@ -0,0 +1,158 @@
+#ifdef HAVE_CONFIG_H
+# include "elementary_config.h"
+#endif
+
+#include <Efl_Ui.h>
+#include "efl_ui_suite.h"
+
+#define NUM_ITEMS 50
+
+static Efl_Model*
+_make_model(Efl_Ui_Win *win)
+{
+   Eina_Value vi;
+   Efl_Generic_Model *model, *child;
+   unsigned int i;
+
+   model = efl_add(EFL_GENERIC_MODEL_CLASS, win);
+   model = efl_add(EFL_UI_VIEW_MODEL_CLASS, model,
+                   efl_ui_view_model_set(efl_added, model));
+   eina_value_setup(&vi, EINA_VALUE_TYPE_INT);
+
+   efl_ui_view_model_property_string_add(model, "relative", "Relative index 
${child.index}", "WRONG", "WRONG");
+   efl_ui_view_model_property_string_add(model, "title", "Initial index 
${initial}", "WRONG", "WRONG");
+
+
+   for (i = 0; i < (NUM_ITEMS); i++)
+     {
+        child = efl_model_child_add(model);
+        eina_value_set(&vi, i);
+        efl_model_property_set(child, "initial", &vi);
+     }
+
+   eina_value_flush(&vi);
+   return model;
+}
+
+static Eina_Value
+_quit(Eo *obj, void *data EINA_UNUSED, const Eina_Value v)
+{
+   efl_loop_quit(efl_loop_get(obj), v);
+   return v;
+}
+
+static Eina_Value
+_children_get(Eo *obj EINA_UNUSED, void *data EINA_UNUSED, const Eina_Value v)
+{
+   Efl_Model *child;
+   Eina_Future **all;
+   unsigned int i, len;
+
+   all = calloc(1 + 1, sizeof(Eina_Future*));
+   if (!all) return eina_value_error_init(ENOMEM);
+
+   EINA_VALUE_ARRAY_FOREACH(&v, len, i, child)
+     {
+        Eina_Value *rel_val, *title_val;
+        char *relative, *title;
+        if (i != 5) continue;
+        rel_val = efl_model_property_get(child, "relative");
+        title_val = efl_model_property_get(child, "title");
+        relative = eina_value_to_string(rel_val);
+        title = eina_value_to_string(title_val);
+
+        ck_assert(eina_streq(relative, "Relative index 5"));
+        ck_assert(eina_streq(title, "Initial index 5"));
+        free(relative);
+        free(title);
+        break;
+     }
+   return EINA_VALUE_EMPTY;
+}
+
+EFL_START_TEST(test_efl_ui_collection_view_basic)
+{
+   Efl_Ui_Win *win;
+   Efl_Model *model;
+   Efl_Ui_List_View *lv;
+   Efl_Ui_Factory *fl;
+   Eina_Future *f;
+   int count_realize = 0;
+   int count_unrealize = 0;
+
+   win = win_add();
+   efl_gfx_entity_size_set(win, EINA_SIZE2D(100, 100));
+
+   model = _make_model(win);
+   fl = efl_add(EFL_UI_LAYOUT_FACTORY_CLASS, win,
+                efl_ui_property_bind(efl_added, "text", "title"),
+                efl_ui_widget_factory_item_class_set(efl_added, 
EFL_UI_LIST_DEFAULT_ITEM_CLASS));
+
+   lv = efl_add(EFL_UI_LIST_VIEW_CLASS, win,
+                efl_ui_collection_view_factory_set(efl_added, fl),
+                efl_ui_view_model_set(efl_added, model),
+                efl_event_callback_add(efl_added, 
EFL_UI_COLLECTION_VIEW_EVENT_ITEM_REALIZED,
+                  (void*)event_callback_that_increments_an_int_when_called, 
&count_realize),
+                efl_event_callback_add(efl_added, 
EFL_UI_COLLECTION_VIEW_EVENT_ITEM_UNREALIZED,
+                  (void*)event_callback_that_increments_an_int_when_called, 
&count_unrealize)
+               );
+   efl_content_set(win, lv);
+
+   get_me_to_those_events(lv);
+   ck_assert_int_gt(count_realize, 0);
+   /* FIXME: this should eventually be eq(0) */
+   ck_assert_int_gt(count_unrealize, 0);
+
+   f = efl_model_children_slice_get(lv, 0, efl_model_children_count_get(lv));
+   f = efl_future_then(lv, f, .success_type = EINA_VALUE_TYPE_ARRAY, .success 
= _children_get);
+   ecore_main_loop_iterate();
+}
+EFL_END_TEST
+
+EFL_START_TEST(test_efl_ui_collection_view_select)
+{
+   Efl_Ui_Win *win;
+   Efl_Model *model;
+   Efl_Ui_List_View *lv;
+   Efl_Ui_Factory *fl;
+   Eina_Value *sel_val;
+   unsigned long sel = 10000;
+
+   win = win_add();
+   efl_gfx_entity_size_set(win, EINA_SIZE2D(100, 100));
+
+   model = _make_model(win);
+   model = efl_add(EFL_UI_SELECT_MODEL_CLASS, efl_main_loop_get(), 
efl_ui_view_model_set(efl_added, model));
+   fl = efl_add(EFL_UI_LAYOUT_FACTORY_CLASS, win,
+                efl_ui_property_bind(efl_added, "text", "title"),
+                efl_ui_widget_factory_item_class_set(efl_added, 
EFL_UI_LIST_DEFAULT_ITEM_CLASS));
+
+   lv = efl_add(EFL_UI_LIST_VIEW_CLASS, win,
+                efl_ui_collection_view_factory_set(efl_added, fl),
+                efl_ui_view_model_set(efl_added, model)
+               );
+   efl_content_set(win, lv);
+
+   get_me_to_those_events(lv);
+
+   /* nothing selected yet */
+   sel_val = efl_model_property_get(model, "child.selected");
+   ck_assert(eina_value_type_get(sel_val) == EINA_VALUE_TYPE_ERROR);
+
+   click_object_at(lv, 50, 5);
+   get_me_to_those_events(lv);
+
+   //efl_future_then(model, efl_model_property_ready_get(model, 
"child.selected"), .success = _quit);
+   //ecore_main_loop_begin();
+   sel_val = efl_model_property_get(model, "child.selected");
+   ck_assert(eina_value_type_get(sel_val) == EINA_VALUE_TYPE_ULONG);
+   ck_assert(eina_value_ulong_get(sel_val, &sel));
+   ck_assert_int_eq(sel, 0);
+}
+EFL_END_TEST
+
+void efl_ui_test_collection_view(TCase *tc)
+{
+   tcase_add_test(tc, test_efl_ui_collection_view_basic);
+   tcase_add_test(tc, test_efl_ui_collection_view_select);
+}
diff --git a/src/tests/elementary/meson.build b/src/tests/elementary/meson.build
index 7c7c62fdac..c3e85d92ef 100644
--- a/src/tests/elementary/meson.build
+++ b/src/tests/elementary/meson.build
@@ -150,6 +150,7 @@ efl_ui_suite_src = [
   'efl_ui_test_slider.c',
   'efl_ui_test_collection_common.c',
   'efl_ui_test_collection.c',
+  'efl_ui_test_collection_view.c',
   'efl_ui_test_list_collection.c',
   'efl_ui_test_grid_collection.c',
   'efl_ui_test_position_manager_common.c',

-- 


Reply via email to