atspi: implement add/del callbacks. Add genlist item tests

This commit is contained in:
Lukasz Stanislawski 2014-09-30 19:48:22 +02:00 committed by Lukasz Stanislawski
parent 824bdbacb4
commit 7a7cc2094c
2 changed files with 109 additions and 0 deletions

View File

@ -4263,6 +4263,7 @@ EOLIAN static void
_elm_widget_item_eo_base_destructor(Eo *eo_item, Elm_Widget_Item_Data *item)
{
Elm_Translate_String_Data *ts;
Eo *parent;
ELM_WIDGET_ITEM_CHECK_OR_RETURN(item);
@ -4289,6 +4290,10 @@ _elm_widget_item_eo_base_destructor(Eo *eo_item, Elm_Widget_Item_Data *item)
if (item->description)
eina_stringshare_del(item->description);
eo_do(eo_item, parent = elm_interface_atspi_accessible_parent_get());
if (parent && !eo_destructed_is(parent))
elm_interface_atspi_accessible_children_changed_del_signal_emit(parent, eo_item);
EINA_MAGIC_SET(item, EINA_MAGIC_NONE);
eo_do_super(eo_item, ELM_WIDGET_ITEM_CLASS, eo_destructor());

View File

@ -8,6 +8,9 @@
static Evas_Object *win, *genlist;
static Elm_Gen_Item_Class itc;
static Eo *current;
static int counter;
static Elm_Atspi_Event_Children_Changed_Data ev_data;
void test_init(void)
{
@ -84,9 +87,110 @@ START_TEST(elm_atspi_children_get2)
}
END_TEST
static Eina_Bool
_children_changed_cb(void *data EINA_UNUSED, Eo *obj EINA_UNUSED,
const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED)
{
ev_data = *(Elm_Atspi_Event_Children_Changed_Data*)event_info;
current = obj;
counter++;
return EINA_TRUE;
}
START_TEST(elm_atspi_children_events_add)
{
test_init();
current = NULL;
counter = 0;
Elm_Object_Item *it[3];
eo_do(genlist, eo_event_callback_add(ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_CHILDREN_CHANGED, _children_changed_cb, NULL));
it[0] = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
ck_assert(genlist == current);
ck_assert(counter == 1);
ck_assert(ev_data.is_added == EINA_TRUE);
ck_assert(ev_data.child == it[0]);
it[1] = elm_genlist_item_prepend(genlist, &itc, it[0], NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL);
ck_assert(genlist == current);
ck_assert(counter == 1);
ck_assert(ev_data.is_added == EINA_TRUE);
ck_assert(ev_data.child == it[0]);
it[2] = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_TREE, NULL, NULL);
ck_assert(genlist == current);
ck_assert(counter == 2);
ck_assert(ev_data.is_added == EINA_TRUE);
ck_assert(ev_data.child == it[2]);
elm_shutdown();
}
END_TEST
START_TEST(elm_atspi_children_events_del1)
{
test_init();
current = NULL;
counter = 0;
Elm_Object_Item *it[3];
eo_do(genlist, eo_event_callback_add(ELM_INTERFACE_ATSPI_ACCESSIBLE_EVENT_CHILDREN_CHANGED, _children_changed_cb, NULL));
it[0] = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
it[1] = elm_genlist_item_prepend(genlist, &itc, it[0], NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
it[2] = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_TREE, NULL, NULL);
elm_object_item_del(it[0]);
ck_assert(genlist == current);
ck_assert(counter == 3);
ck_assert(ev_data.is_added == EINA_FALSE);
ck_assert(ev_data.child == it[1]);
elm_object_item_del(it[2]);
ck_assert(genlist == current);
ck_assert(counter == 4);
ck_assert(ev_data.is_added == EINA_FALSE);
ck_assert(ev_data.child == it[2]);
elm_shutdown();
}
END_TEST
START_TEST(elm_atspi_children_events_del2)
{
test_init();
Elm_Object_Item *it[3];
current = NULL;
counter = 0;
it[0] = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
it[1] = elm_genlist_item_prepend(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
it[2] = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_TREE, NULL, NULL);
elm_genlist_clear(genlist);
ck_assert(genlist == current);
ck_assert(counter == 6);
ck_assert(ev_data.is_added == EINA_FALSE);
ck_assert(ev_data.child == it[2]);
elm_shutdown();
}
END_TEST
void elm_test_genlist(TCase *tc)
{
tcase_add_test(tc, elm_atspi_role_get);
tcase_add_test(tc, elm_atspi_children_get1);
tcase_add_test(tc, elm_atspi_children_get2);
tcase_add_test(tc, elm_atspi_children_events_add);
tcase_add_test(tc, elm_atspi_children_events_del1);
tcase_add_test(tc, elm_atspi_children_events_del2);
}