Genlist: Test Cases for Genlist Item Show on Launch

Summary:
This includes test cases for the Genlist Item Show Changes ( D5428 )

Signed-off-by: Godly T.Alias <godlytalias@yahoo.co.in>

Test Plan: Elementary Test -> Genlist Item Show

Reviewers: SanghyeonLee, cedric, raster, prince.dubey

Subscribers: shilpasingh, rajeshps, jpeg

Differential Revision: https://phab.enlightenment.org/D5499
This commit is contained in:
Godly T.Alias 2018-05-02 19:16:49 -04:00 committed by Mike Blumenkrantz
parent 4d62d59978
commit e72cf7b0a4
2 changed files with 282 additions and 1 deletions

View File

@ -141,6 +141,7 @@ void test_genlist_filter(void *data, Evas_Object *obj, void *event_info);
void test_genlist_show_bring(void *data, Evas_Object *obj, void *event_info);
void test_genlist_cache(void *data, Evas_Object *obj, void *event_info);
void test_genlist_reusable(void *data, Evas_Object *obj, void *event_info);
void test_genlist_item_show(void *data, Evas_Object *obj, void *event_info);
void test_gesture_layer(void *data, Evas_Object *obj, void *event_info);
void test_gesture_layer2(void *data, Evas_Object *obj, void *event_info);
void test_gesture_layer3(void *data, Evas_Object *obj, void *event_info);
@ -967,6 +968,7 @@ add_tests:
ADD_TEST(NULL, "Lists - Genlist", "Genlist Show/Bring", test_genlist_show_bring);
ADD_TEST(NULL, "Lists - Genlist", "Genlist Cache", test_genlist_cache);
ADD_TEST(NULL, "Lists - Genlist", "Genlist Reusable Contents", test_genlist_reusable);
ADD_TEST(NULL, "Lists - Genlist", "Genlist Item Show", test_genlist_item_show);
//------------------------------//

View File

@ -21,6 +21,9 @@ struct _api_data
void *gl;
void *filter_data; /* The data used for filtering */
Elm_Genlist_Item_Scrollto_Type type;
Elm_List_Mode mode;
int max_items, show_item;
int scrollto;
};
typedef struct _api_data api_data;
@ -5467,7 +5470,6 @@ test_genlist_show_bring(void *data EINA_UNUSED,
elm_genlist_item_class_free(api->itc1);
gli = elm_genlist_nth_item_get(gl, 1340);
elm_genlist_item_selected_set(gli, EINA_TRUE);
elm_genlist_item_show(gli, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE);
evas_object_resize(win, 480, 400);
@ -5475,6 +5477,283 @@ test_genlist_show_bring(void *data EINA_UNUSED,
evas_object_show(win);
}
static Eina_Bool
_late_item_prepender(void *data)
{
api_data *api = (api_data*)data;
int i;
Elm_Object_Item *it = elm_genlist_nth_item_get(api->gl, api->show_item);
for (i = 0; i <= 100; i++)
elm_genlist_item_prepend(api->gl, api->itc1, (void*)(uintptr_t)i, it, ELM_GENLIST_ITEM_NONE, NULL, NULL);
elm_genlist_item_class_free(api->itc1);
return ECORE_CALLBACK_CANCEL;
}
static void
test_genlist_show_item(void *data,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Evas_Object *win, *gl;
Elm_Object_Item *gli = NULL;
int i, max;
api_data *api = calloc(1, sizeof(api_data));
api_data *g_data = (api_data*)data;
win = elm_win_util_standard_add("genlist", "Genlist Show Last Item");
elm_win_autodel_set(win, EINA_TRUE);
evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _cleanup_cb, api);
gl = elm_genlist_add(win);
evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(gl);
if (g_data)
elm_genlist_mode_set(gl, g_data->mode);
else
elm_genlist_mode_set(gl, ELM_LIST_COMPRESS);
api->gl = gl;
elm_win_resize_object_add(win, gl);
api->itc1 = elm_genlist_item_class_new();
api->itc1->item_style = "default";
api->itc1->func.text_get = gl_text_get1;
api->itc1->func.content_get = gl_content_get;
api->itc1->func.state_get = NULL;
api->itc1->func.del = NULL;
g_data->gl = gl;
g_data->itc1 = api->itc1;
if (g_data)
max = g_data->max_items;
else max = 20000;
for (i = 0; i <= max; i++)
elm_genlist_item_append(gl, api->itc1, (void*)(uintptr_t)i, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
if (g_data)
gli = elm_genlist_nth_item_get(gl, g_data->show_item);
if (!gli) gli = elm_genlist_last_item_get(gl);
elm_genlist_item_show(gli, g_data->type);
//prepends item while queue processing is happening
ecore_timer_add(0.1, _late_item_prepender, g_data);
evas_object_resize(win, 480, 400);
explode_win_enable(win);
evas_object_show(win);
}
static void
test_genlist_show_tree(void *data,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Evas_Object *win, *gl;
Elm_Object_Item *gli = NULL, *show = NULL;
int i, max;
api_data *api = calloc(1, sizeof(api_data));
api_data *g_data = (api_data*)data;
win = elm_win_util_standard_add("genlist", "Genlist Show Tree");
elm_win_autodel_set(win, EINA_TRUE);
evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _cleanup_cb, api);
gl = elm_genlist_add(win);
evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(gl);
api->gl = gl;
elm_win_resize_object_add(win, gl);
if (g_data)
elm_genlist_mode_set(gl, g_data->mode);
else
elm_genlist_mode_set(gl, ELM_LIST_COMPRESS);
api->itc1 = elm_genlist_item_class_new();
api->itc1->item_style = "default";
api->itc1->func.text_get = gl_text_get1;
api->itc1->func.content_get = gl_content_get;
api->itc1->func.state_get = NULL;
api->itc1->func.del = NULL;
if (g_data)
max = g_data->max_items;
else max = 2000;
for (i = 0; i <= max; i++)
{
if (i % (max / 20) == 0)
gli = elm_genlist_item_append(gl, api->itc1, (void*)(uintptr_t)i, gli, ELM_GENLIST_ITEM_TREE, NULL, NULL);
else
elm_genlist_item_append(gl, api->itc1, (void*)(uintptr_t)i, gli, ELM_GENLIST_ITEM_NONE, NULL, NULL);
}
if (g_data)
show = elm_genlist_nth_item_get(gl, g_data->show_item);
else show = gli;
elm_genlist_item_class_free(api->itc1);
elm_genlist_item_show(show, g_data->type);
evas_object_resize(win, 480, 400);
explode_win_enable(win);
evas_object_show(win);
}
static void
_entry_changed_cb(void *data,
Evas_Object *obj,
void *event_info EINA_UNUSED)
{
int *val = (int*) data;
*val = atoi(elm_entry_entry_get(obj));
}
static void
_radio_changed_type_cb(void *data,
Evas_Object *obj,
void *event_info EINA_UNUSED)
{
int val = elm_radio_state_value_get(obj);
api_data *api = (api_data*)data;
api->type = val;
}
static void
_radio_changed_mode_cb(void *data,
Evas_Object *obj,
void *event_info EINA_UNUSED)
{
int val = elm_radio_state_value_get(obj);
api_data *api = (api_data*)data;
api->mode = val;
}
void
test_genlist_item_show(void *data EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Evas_Object *win, *bt_show, *bt_bring, *bx, *max_items, *show_item, *bxx, *rd1, *rd2, *rd3;
static Elm_Entry_Filter_Accept_Set digits_filter_data;
api_data *api = calloc(1, sizeof(api_data));
win = elm_win_util_standard_add("genlist", "Genlist Item Show");
elm_win_autodel_set(win, EINA_TRUE);
evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _cleanup_cb, api);
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(bx);
elm_win_resize_object_add(win, bx);
digits_filter_data.accepted = "0123456789";
digits_filter_data.rejected = NULL;
max_items = elm_entry_add(win);
elm_entry_single_line_set(max_items, EINA_TRUE);
elm_entry_scrollable_set(max_items, EINA_TRUE);
evas_object_size_hint_weight_set(max_items, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(max_items, EVAS_HINT_FILL, 0.5);
elm_object_part_text_set(max_items, "guide", "Enter the maximum number of items needed");
evas_object_smart_callback_add(max_items, "changed", _entry_changed_cb, (void*)(&(api->max_items)));
elm_entry_markup_filter_append(max_items, elm_entry_filter_accept_set, &digits_filter_data);
evas_object_show(max_items);
elm_box_pack_end(bx, max_items);
show_item = elm_entry_add(win);
elm_entry_single_line_set(show_item, EINA_TRUE);
elm_entry_scrollable_set(show_item, EINA_TRUE);
evas_object_size_hint_weight_set(show_item, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(show_item, EVAS_HINT_FILL, 0.5);
elm_object_part_text_set(show_item, "guide", "Enter the number of item to be shown");
evas_object_smart_callback_add(show_item, "changed", _entry_changed_cb, (void*)(&(api->show_item)));
elm_entry_markup_filter_append(show_item, elm_entry_filter_accept_set, &digits_filter_data);
evas_object_show(show_item);
elm_box_pack_end(bx, show_item);
bxx = elm_box_add(win);
elm_box_horizontal_set(bxx, EINA_TRUE);
evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bxx, EVAS_HINT_FILL, 0.5);
rd1 = elm_radio_add(win);
elm_object_text_set(rd1, "Top");
elm_radio_state_value_set(rd1, ELM_GENLIST_ITEM_SCROLLTO_TOP);
evas_object_smart_callback_add(rd1, "changed", _radio_changed_type_cb, api);
evas_object_show(rd1);
elm_box_pack_end(bxx, rd1);
rd2 = elm_radio_add(win);
elm_object_text_set(rd2, "Middle");
evas_object_smart_callback_add(rd2, "changed", _radio_changed_type_cb, api);
elm_radio_state_value_set(rd2, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE);
elm_radio_group_add(rd2, rd1);
evas_object_show(rd2);
elm_box_pack_end(bxx, rd2);
rd3 = elm_radio_add(win);
elm_object_text_set(rd3, "Bottom");
evas_object_smart_callback_add(rd3, "changed", _radio_changed_type_cb, api);
elm_radio_state_value_set(rd3, ELM_GENLIST_ITEM_SCROLLTO_BOTTOM);
elm_radio_group_add(rd3, rd1);
evas_object_show(rd3);
elm_box_pack_end(bxx, rd3);
evas_object_show(bxx);
elm_box_pack_end(bx, bxx);
elm_radio_value_set(rd1, ELM_GENLIST_ITEM_SCROLLTO_TOP);
api->type = ELM_GENLIST_ITEM_SCROLLTO_TOP;
bxx = elm_box_add(win);
elm_box_horizontal_set(bxx, EINA_TRUE);
evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bxx, EVAS_HINT_FILL, 0.5);
rd1 = elm_radio_add(win);
elm_object_text_set(rd1, "ELM_LIST_SCROLL");
elm_radio_state_value_set(rd1, ELM_LIST_SCROLL);
evas_object_smart_callback_add(rd1, "changed", _radio_changed_mode_cb, api);
evas_object_show(rd1);
elm_box_pack_end(bxx, rd1);
rd2 = elm_radio_add(win);
elm_object_text_set(rd2, "ELM_LIST_LIMIT");
evas_object_smart_callback_add(rd2, "changed", _radio_changed_mode_cb, api);
elm_radio_state_value_set(rd2, ELM_LIST_LIMIT);
elm_radio_group_add(rd2, rd1);
evas_object_show(rd2);
elm_box_pack_end(bxx, rd2);
rd3 = elm_radio_add(win);
elm_object_text_set(rd3, "ELM_LIST_COMPRESS");
evas_object_smart_callback_add(rd3, "changed", _radio_changed_mode_cb, api);
elm_radio_state_value_set(rd3, ELM_LIST_COMPRESS);
elm_radio_group_add(rd3, rd1);
evas_object_show(rd3);
elm_box_pack_end(bxx, rd3);
evas_object_show(bxx);
elm_box_pack_end(bx, bxx);
elm_radio_value_set(rd1, ELM_LIST_SCROLL);
api->mode = ELM_LIST_SCROLL;
bt_show = elm_button_add(win);
elm_object_text_set(bt_show, "Plain Genlist");
evas_object_smart_callback_add(bt_show, "clicked", test_genlist_show_item, api);
evas_object_show(bt_show);
elm_box_pack_end(bx, bt_show);
bt_bring = elm_button_add(win);
elm_object_text_set(bt_bring, "Genlist Tree");
evas_object_smart_callback_add(bt_bring, "clicked", test_genlist_show_tree, api);
evas_object_show(bt_bring);
elm_box_pack_end(bx, bt_bring);
evas_object_resize(win, 480, 400);
explode_win_enable(win);
evas_object_show(win);
}
/*** Genlist Cache *********************************************************/
static char *