stefan pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=166dafb0d8b75dbf8ffae085c9cb4f385c8e43b8

commit 166dafb0d8b75dbf8ffae085c9cb4f385c8e43b8
Author: Mike Blumenkrantz <[email protected]>
Date:   Mon Jan 28 14:03:26 2019 -0500

    tests: add atspi test for efl_ui_suite
    
    this is just a copy of the existing suite but with some small changes to
    use (mostly) eo apis
    
    Reviewed-by: Stefan Schmidt <[email protected]>
    Differential Revision: https://phab.enlightenment.org/D7806
---
 src/Makefile_Elementary.am               |   1 +
 src/tests/elementary/efl_ui_suite.c      |   1 +
 src/tests/elementary/efl_ui_suite.h      |   3 +-
 src/tests/elementary/efl_ui_test_atspi.c | 471 +++++++++++++++++++++++++++++++
 src/tests/elementary/meson.build         |   1 +
 5 files changed, 476 insertions(+), 1 deletion(-)

diff --git a/src/Makefile_Elementary.am b/src/Makefile_Elementary.am
index 7afb49fe6b..0694bb5e04 100644
--- a/src/Makefile_Elementary.am
+++ b/src/Makefile_Elementary.am
@@ -1608,6 +1608,7 @@ tests_elementary_efl_ui_suite_SOURCES = \
        tests/elementary/suite_helpers.c \
        tests/elementary/efl_ui_suite.c \
        tests/elementary/elm_test_init.c \
+       tests/elementary/efl_ui_test_atspi.c \
        tests/elementary/efl_ui_test_grid.c
 
 tests_elementary_efl_ui_suite_CPPFLAGS = \
diff --git a/src/tests/elementary/efl_ui_suite.c 
b/src/tests/elementary/efl_ui_suite.c
index d257f2d5bf..9f4fbda98b 100644
--- a/src/tests/elementary/efl_ui_suite.c
+++ b/src/tests/elementary/efl_ui_suite.c
@@ -12,6 +12,7 @@ static const Efl_Test_Case etc[] = {
   //{ "elm_focus", elm_test_focus},
   //{ "elm_focus_sub", elm_test_focus_sub},
   //{ "elm_widget_focus", elm_test_widget_focus},
+  { "efl_ui_atspi", efl_ui_test_atspi},
   { "efl_ui_grid", efl_ui_test_grid},
   { NULL, NULL }
 };
diff --git a/src/tests/elementary/efl_ui_suite.h 
b/src/tests/elementary/efl_ui_suite.h
index a077bc3876..720bc1a067 100644
--- a/src/tests/elementary/efl_ui_suite.h
+++ b/src/tests/elementary/efl_ui_suite.h
@@ -15,8 +15,9 @@
     ck_assert_str_eq(expected, actual);         \
   }
 
-#include <Evas.h>
+#include <Eo.h>
 void efl_ui_test_grid(TCase *tc);
+void efl_ui_test_atspi(TCase *tc);
 
 Eo *win_add();
 Eo *win_add_focused();
diff --git a/src/tests/elementary/efl_ui_test_atspi.c 
b/src/tests/elementary/efl_ui_test_atspi.c
new file mode 100644
index 0000000000..ecb0f96ddb
--- /dev/null
+++ b/src/tests/elementary/efl_ui_test_atspi.c
@@ -0,0 +1,471 @@
+#ifdef HAVE_CONFIG_H
+# include "elementary_config.h"
+#endif
+
+
+#define EFL_ACCESS_OBJECT_BETA
+#define EFL_ACCESS_OBJECT_PROTECTED
+
+#include <Elementary.h>
+#include "elm_priv.h"
+#include "efl_ui_suite.h"
+
+static Evas_Object *g_win, *g_btn, *g_bg;
+
+void generate_app(void)
+{
+   g_win = win_add(NULL, "Title", ELM_WIN_BASIC);
+   efl_gfx_entity_position_set(g_win, EINA_POSITION2D(100, 100));
+   efl_gfx_entity_size_set(g_win, EINA_SIZE2D(100, 100));
+
+   g_bg = efl_add(EFL_UI_BG_CLASS, g_win);
+
+   g_btn = efl_add(EFL_UI_BUTTON_CLASS, g_win);
+
+   efl_gfx_entity_visible_set(g_btn, EINA_TRUE);
+   efl_gfx_entity_visible_set(g_bg, EINA_TRUE);
+   efl_gfx_entity_visible_set(g_win, EINA_TRUE);
+}
+
+EFL_START_TEST(test_efl_access_app_obj_name_get)
+{
+   Eo* root = efl_add_ref(ELM_ATSPI_APP_OBJECT_CLASS, NULL);
+
+   ck_assert(root != NULL);
+
+   const char *ret = NULL;
+
+   elm_app_name_set("Test name");
+
+   ret = efl_access_object_i18n_name_get(root);
+
+   ck_assert_str_eq(ret, "Test name");
+
+   efl_unref(root);
+}
+EFL_END_TEST
+
+EFL_START_TEST(test_efl_access_object_i18n_name_get)
+{
+   generate_app();
+
+   const char *name;
+
+   name = efl_access_object_i18n_name_get(g_btn);
+
+   if (name && name[0]) {
+      ck_assert(0);
+   }
+
+   // Set name with additional text tags
+   efl_text_set(g_btn, "Some<br>text");
+
+   name = efl_access_object_i18n_name_get(g_btn);
+
+   // Accessible name should have cleared tags
+   ck_assert(name != NULL);
+   ck_assert_str_eq(name, "Some\ntext");
+
+}
+EFL_END_TEST
+
+EFL_START_TEST(test_efl_access_object_i18n_name_set)
+{
+   generate_app();
+
+   const char *name;
+
+   efl_text_set(g_btn, "Other text");
+   efl_access_object_i18n_name_set(g_btn, "Test name");
+
+   name = efl_access_object_i18n_name_get(g_btn);
+
+   ck_assert(name != NULL);
+   ck_assert_str_eq(name, "Test name");
+
+   efl_access_object_i18n_name_set(g_btn, NULL);
+   name = efl_access_object_i18n_name_get(g_btn);
+
+   ck_assert(name != NULL);
+   ck_assert_str_eq(name, "Other text");
+
+}
+EFL_END_TEST
+
+EFL_START_TEST(test_efl_access_object_role_get)
+{
+   Eo* root = efl_add_ref(ELM_ATSPI_APP_OBJECT_CLASS, NULL);
+
+   Efl_Access_Role role;
+
+   role = efl_access_object_role_get(root);
+
+   ck_assert(role == EFL_ACCESS_ROLE_APPLICATION);
+
+   efl_unref(root);
+}
+EFL_END_TEST
+
+EFL_START_TEST(test_efl_access_object_role_set)
+{
+   generate_app();
+   Efl_Access_Role role;
+
+   efl_access_object_role_set(g_btn, EFL_ACCESS_ROLE_ACCELERATOR_LABEL);
+   role = efl_access_object_role_get(g_btn);
+
+   if (role != EFL_ACCESS_ROLE_ACCELERATOR_LABEL)
+      ck_assert(0);
+
+   efl_access_object_role_set(g_btn, EFL_ACCESS_ROLE_ENTRY);
+   role = efl_access_object_role_get(g_btn);
+
+   if (role != EFL_ACCESS_ROLE_ENTRY)
+      ck_assert(0);
+
+}
+EFL_END_TEST
+
+EFL_START_TEST(test_efl_access_object_role_name_get)
+{
+   Eo* root = efl_add_ref(ELM_ATSPI_APP_OBJECT_CLASS, NULL);
+
+   const char *ret = NULL;
+
+   ret = efl_access_object_role_name_get(root);
+
+   ck_assert(ret != NULL);
+
+   efl_unref(root);
+}
+EFL_END_TEST
+
+EFL_START_TEST(test_efl_access_object_localized_role_name_get)
+{
+   Eo* root = efl_add_ref(ELM_ATSPI_APP_OBJECT_CLASS, NULL);
+
+   const char *ret = NULL;
+
+   ret = efl_access_object_localized_role_name_get(root);
+
+   ck_assert(ret != NULL);
+
+   efl_unref(root);
+}
+EFL_END_TEST
+
+EFL_START_TEST(test_efl_access_object_description_set)
+{
+   Eo* root = efl_add_ref(ELM_ATSPI_APP_OBJECT_CLASS, NULL);
+
+   const char *ret = NULL;
+
+   const char *desc = "Test description";
+
+   ret = efl_access_object_description_get(root);
+
+   ck_assert(ret == NULL);
+
+   efl_access_object_description_set(root, desc);
+   ret = efl_access_object_description_get(root);
+
+   ck_assert(ret != NULL);
+   ck_assert_str_eq(ret, "Test description");
+
+   efl_access_object_description_set(root, NULL);
+   ret = efl_access_object_description_get(root);
+
+   ck_assert(ret == NULL);
+
+   efl_unref(root);
+}
+EFL_END_TEST
+
+/* Test if initial description value is NULL */
+EFL_START_TEST(test_efl_access_object_description_get)
+{
+   generate_app();
+
+   const char *descr;
+   descr = efl_access_object_description_get(g_bg);
+
+   ck_assert(descr == NULL);
+
+}
+EFL_END_TEST
+
+EFL_START_TEST(test_efl_access_children_and_parent)
+{
+   generate_app();
+   Eo* root = efl_add_ref(ELM_ATSPI_APP_OBJECT_CLASS, NULL);
+
+   Eina_List *child_list = NULL;
+
+   child_list = efl_access_object_access_children_get(root);
+
+   //bg_child_list = 
efl_access_object_access_children_get(eina_list_nth(child_list, 0));
+
+   ck_assert_int_eq(eina_list_count(child_list), 1);
+
+   Eo *win = NULL;
+
+   win = eina_list_nth(child_list, 0);
+
+   ck_assert_ptr_ne(win, NULL);
+   ck_assert_ptr_eq(win, g_win);
+
+   efl_unref(root);
+}
+EFL_END_TEST
+
+EFL_START_TEST(test_efl_access_children_and_parent2)
+{
+   generate_app();
+   Eo* root = efl_add_ref(ELM_ATSPI_APP_OBJECT_CLASS, NULL);
+
+   Eo *win = NULL;
+
+   Eina_List *root_children;
+   root_children = efl_access_object_access_children_get(root);
+   win = eina_list_nth(root_children, 0);
+
+   Eina_List *win_children;
+   win_children = efl_access_object_access_children_get(win);
+
+   ck_assert(eina_list_count(win_children) == 1);
+
+   Eo *btn = NULL;
+
+   btn = eina_list_nth(win_children, 0);
+   ck_assert(btn != NULL);
+   ck_assert(btn == g_btn);
+
+   efl_unref(root);
+}
+EFL_END_TEST
+
+/* Initial value of translation domain should be NULL */
+EFL_START_TEST(test_efl_access_object_translation_domain_get)
+{
+   generate_app();
+
+   const char *domain;
+
+   domain = efl_access_object_translation_domain_get(g_btn);
+
+   ck_assert(domain == NULL);
+
+}
+EFL_END_TEST
+
+EFL_START_TEST(test_efl_access_object_translation_domain_set)
+{
+   generate_app();
+
+   const char *domain;
+
+   efl_access_object_translation_domain_set(g_btn, "Test translation_domain");
+   domain = efl_access_object_translation_domain_get(g_btn);
+
+   ck_assert(domain != NULL);
+   ck_assert_str_eq(domain, "Test translation_domain");
+
+   efl_access_object_translation_domain_set(g_btn, NULL);
+   domain = efl_access_object_translation_domain_get(g_btn);
+
+   ck_assert(domain == NULL);
+
+}
+EFL_END_TEST
+
+EFL_START_TEST(test_efl_access_object_relationship_append)
+{
+   generate_app();
+
+   Efl_Access_Relation *rel, *rel_to, *rel_from;
+   Eina_Iterator *it;
+   unsigned int i = 0;
+
+   efl_access_object_relationship_append(g_btn, EFL_ACCESS_RELATION_FLOWS_TO, 
g_bg);
+   efl_access_object_relationship_append(g_btn, 
EFL_ACCESS_RELATION_FLOWS_FROM, g_win);
+   it = efl_access_object_relations_get(g_btn);
+
+   ck_assert(it != NULL);
+
+   rel_to = rel_from = NULL;
+   EINA_ITERATOR_FOREACH(it, rel)
+   {
+      i++;
+
+      if (rel->type == EFL_ACCESS_RELATION_FLOWS_TO)
+        rel_to = rel;
+      if (rel->type == EFL_ACCESS_RELATION_FLOWS_FROM)
+        rel_from = rel;
+   }
+
+   ck_assert(i >= 2);
+   ck_assert(rel_to != NULL);
+   ck_assert(eina_list_data_find(rel_to->objects, g_bg) != NULL);
+
+   ck_assert(rel_from != NULL);
+   ck_assert(eina_list_data_find(rel_from->objects, g_win) != NULL);
+
+   eina_iterator_free(it);
+
+   /* Check if append do not procude duplicated relations */
+   efl_access_object_relationship_append(g_btn, EFL_ACCESS_RELATION_FLOWS_TO, 
g_bg);
+   efl_access_object_relationship_append(g_btn, 
EFL_ACCESS_RELATION_FLOWS_FROM, g_win);
+   it = efl_access_object_relations_get(g_btn); i = 0;
+
+   rel_to = rel_from = NULL;
+   EINA_ITERATOR_FOREACH(it, rel)
+   {
+      i++;
+
+      if (rel->type == EFL_ACCESS_RELATION_FLOWS_TO)
+        rel_to = rel;
+      if (rel->type == EFL_ACCESS_RELATION_FLOWS_FROM)
+        rel_from = rel;
+   }
+
+   ck_assert(rel_to != NULL);
+   ck_assert(rel_to->objects != NULL);
+   rel_to->objects = eina_list_remove(rel_to->objects, g_bg);
+   ck_assert(eina_list_data_find(rel_to->objects, g_bg) == NULL);
+
+   ck_assert(rel_from != NULL);
+   ck_assert(rel_from->objects != NULL);
+   rel_from->objects = eina_list_remove(rel_from->objects, g_win);
+   ck_assert(eina_list_data_find(rel_from->objects, g_win) == NULL);
+
+   eina_iterator_free(it);
+}
+EFL_END_TEST
+
+EFL_START_TEST(test_efl_access_object_relationship_remove)
+{
+   generate_app();
+
+   Efl_Access_Relation *rel, *rel_to, *rel_from;
+   Eina_Iterator *it;
+   unsigned int i = 0;
+
+   /* Test if removal of single relationship works */
+   efl_access_object_relationship_append(g_btn, EFL_ACCESS_RELATION_FLOWS_TO, 
g_bg);
+   efl_access_object_relationship_append(g_btn, 
EFL_ACCESS_RELATION_FLOWS_FROM, g_win);
+   efl_access_object_relationship_remove(g_btn, EFL_ACCESS_RELATION_FLOWS_TO, 
g_bg);
+   it = efl_access_object_relations_get(g_btn);
+
+   ck_assert(it != NULL);
+
+   rel_to = rel_from = NULL;
+   EINA_ITERATOR_FOREACH(it, rel)
+   {
+      i++;
+
+      if (rel->type == EFL_ACCESS_RELATION_FLOWS_TO)
+        rel_to = rel;
+      if (rel->type == EFL_ACCESS_RELATION_FLOWS_FROM)
+        rel_from = rel;
+   }
+
+   ck_assert(i >= 1);
+
+   if (rel_to) ck_assert(eina_list_data_find(rel_to->objects, g_bg) == NULL);
+   ck_assert(rel_from != NULL);
+   ck_assert(eina_list_data_find(rel_from->objects, g_win) != NULL);
+
+   eina_iterator_free(it);
+
+   /* Test if removal of type relationship works */
+   efl_access_object_relationship_append(g_btn, EFL_ACCESS_RELATION_FLOWS_TO, 
g_bg);
+   efl_access_object_relationship_append(g_btn, EFL_ACCESS_RELATION_FLOWS_TO, 
g_win);
+   efl_access_object_relationship_remove(g_btn, EFL_ACCESS_RELATION_FLOWS_TO, 
NULL);
+   it = efl_access_object_relations_get(g_btn); i = 0;
+
+   rel_to = rel_from = NULL;
+   EINA_ITERATOR_FOREACH(it, rel)
+   {
+      i++;
+
+      if (rel->type == EFL_ACCESS_RELATION_FLOWS_TO)
+        rel_to = rel;
+      if (rel->type == EFL_ACCESS_RELATION_FLOWS_FROM)
+        rel_from = rel;
+   }
+
+   ck_assert(rel_to == NULL);
+   ck_assert(rel_from != NULL);
+   ck_assert(eina_list_data_find(rel_from->objects, g_win) != NULL);
+
+   eina_iterator_free(it);
+
+   /* Test if relationship is implicity removed when object is deleted */
+   efl_access_object_relationship_append(g_btn, EFL_ACCESS_RELATION_FLOWS_TO, 
g_bg);
+   efl_access_object_relationship_append(g_btn, 
EFL_ACCESS_RELATION_FLOWS_FROM, g_bg);
+   efl_del(g_bg);
+   it = efl_access_object_relations_get(g_btn); i = 0;
+
+   rel_to = rel_from = NULL;
+   EINA_ITERATOR_FOREACH(it, rel)
+   {
+      i++;
+
+      if (rel->type == EFL_ACCESS_RELATION_FLOWS_TO)
+        rel_to = rel;
+      if (rel->type == EFL_ACCESS_RELATION_FLOWS_FROM)
+        rel_from = rel;
+   }
+
+   if (rel_to) ck_assert(eina_list_data_find(rel_to->objects, g_bg) == NULL);
+   if (rel_from) ck_assert(eina_list_data_find(rel_from->objects, g_bg) == 
NULL);
+
+   eina_iterator_free(it);
+}
+EFL_END_TEST
+
+EFL_START_TEST(test_efl_access_object_relationships_clear)
+{
+   Efl_Access_Relation *rel;
+   Eina_Iterator *it;
+
+   generate_app();
+
+   efl_access_object_relationship_append(g_btn, EFL_ACCESS_RELATION_FLOWS_TO, 
g_bg);
+   efl_access_object_relationship_append(g_btn, 
EFL_ACCESS_RELATION_FLOWS_FROM, g_bg);
+   efl_access_object_relationship_append(g_btn, EFL_ACCESS_RELATION_FLOWS_TO, 
g_win);
+   efl_access_object_relationship_append(g_btn, 
EFL_ACCESS_RELATION_FLOWS_FROM, g_win);
+
+   efl_access_object_relationships_clear(g_btn);
+
+   it = efl_access_object_relations_get(g_btn);
+   EINA_ITERATOR_FOREACH(it, rel)
+   {
+      ck_assert(!((rel->type == EFL_ACCESS_RELATION_FLOWS_TO) && 
eina_list_data_find(rel->objects, g_bg)));
+      ck_assert(!((rel->type == EFL_ACCESS_RELATION_FLOWS_FROM) && 
eina_list_data_find(rel->objects, g_bg)));
+      ck_assert(!((rel->type == EFL_ACCESS_RELATION_FLOWS_TO) && 
eina_list_data_find(rel->objects, g_win)));
+      ck_assert(!((rel->type == EFL_ACCESS_RELATION_FLOWS_FROM) && 
eina_list_data_find(rel->objects, g_win)));
+   }
+   eina_iterator_free(it);
+}
+EFL_END_TEST
+
+void efl_ui_test_atspi(TCase *tc)
+{
+   tcase_add_test(tc, test_efl_access_app_obj_name_get);
+   tcase_add_test(tc, test_efl_access_object_i18n_name_get);
+   tcase_add_test(tc, test_efl_access_object_i18n_name_set);
+   tcase_add_test(tc, test_efl_access_object_role_get);
+   tcase_add_test(tc, test_efl_access_object_role_set);
+   tcase_add_test(tc, test_efl_access_object_role_name_get);
+   tcase_add_test(tc, test_efl_access_object_localized_role_name_get);
+   tcase_add_test(tc, test_efl_access_object_description_set);
+   tcase_add_test(tc, test_efl_access_object_description_get);
+   tcase_add_test(tc, test_efl_access_children_and_parent);
+   tcase_add_test(tc, test_efl_access_children_and_parent2);
+   tcase_add_test(tc, test_efl_access_object_translation_domain_get);
+   tcase_add_test(tc, test_efl_access_object_translation_domain_set);
+   tcase_add_test(tc, test_efl_access_object_relationship_append);
+   tcase_add_test(tc, test_efl_access_object_relationship_remove);
+   tcase_add_test(tc, test_efl_access_object_relationships_clear);
+}
diff --git a/src/tests/elementary/meson.build b/src/tests/elementary/meson.build
index 36db763130..b1bf27e97e 100644
--- a/src/tests/elementary/meson.build
+++ b/src/tests/elementary/meson.build
@@ -120,6 +120,7 @@ efl_ui_suite_src = [
   'efl_ui_suite.c',
   'suite_helpers.c',
   'elm_test_init.c',
+  'efl_ui_test_atspi.c',
   'efl_ui_test_grid.c',
 ]
 

-- 


Reply via email to