efl_ui_suite: fix errors in focus tests
authorMarcel Hollerbach <mail@marcel-hollerbach.de>
Tue, 28 May 2019 16:01:50 +0000 (12:01 -0400)
committerJunsuChoi <jsuya.choi@samsung.com>
Thu, 30 May 2019 08:17:53 +0000 (17:17 +0900)
Summary:
there have been a few cases where things were just wrong. Like missing
regular nodes in a focus manager that received focus, and stuff like
this. This now fixes all those cases.

Reviewers: zmike, cedric, segfaultxavi

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9021

src/Makefile_Elementary.am
src/lib/elementary/Efl_Ui.h
src/tests/elementary/efl_ui_test_focus.c
src/tests/elementary/efl_ui_test_focus_common.c
src/tests/elementary/efl_ui_test_focus_common.h
src/tests/elementary/focus_manager_test.eo [new file with mode: 0644]
src/tests/elementary/meson.build

index 5c7d500..48c21b5 100644 (file)
@@ -158,6 +158,7 @@ elm_private_eolian_files = \
        lib/elementary/efl_ui_focus_parent_provider_standard.eo \
        lib/elementary/efl_ui_state_model.eo \
        tests/elementary/focus_test.eo \
+       tests/elementary/focus_manager_test.eo \
        tests/elementary/focus_test_sub_main.eo \
        lib/elementary/efl_ui_selection_manager.eo \
        lib/elementary/efl_datetime_manager.eo \
index e30df89..84b26de 100644 (file)
@@ -154,6 +154,7 @@ typedef Eo Efl_Ui_Focus_Manager;
 # ifdef EFL_BETA_API_SUPPORT
 EAPI void efl_ui_focus_relation_free(Efl_Ui_Focus_Relations *rel);
 # endif
+# include <efl_ui_focus_manager_window_root.eo.h>
 # include <efl_ui_focus_manager_calc.eo.h>
 # include <efl_ui_focus_manager_sub.eo.h>
 # include <efl_ui_focus_manager_root_focus.eo.h>
index 16fce9f..38a2ac0 100644 (file)
@@ -2,13 +2,11 @@
 
 EFL_START_TEST(focus_unregister_twice)
 {
-   Efl_Ui_Focus_Object *r1 = efl_add_ref(FOCUS_TEST_CLASS, NULL);
-   Efl_Ui_Focus_Object *r2 = efl_add_ref(FOCUS_TEST_CLASS, NULL);
+   Efl_Ui_Focus_Object *r1, *r2;
 
-   Efl_Ui_Focus_Manager *m = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
-    efl_ui_focus_manager_root_set(efl_added, r1)
-   );
+   Efl_Ui_Focus_Manager *m = focus_test_manager_new(&r1, EINA_TRUE);
 
+   r2 = efl_add_ref(FOCUS_TEST_CLASS, NULL);
    fail_if(!efl_ui_focus_manager_calc_register(m, r2, r1, NULL));
 
    efl_ui_focus_manager_calc_unregister(m, r1);
@@ -16,7 +14,6 @@ EFL_START_TEST(focus_unregister_twice)
    efl_ui_focus_manager_calc_unregister(m, r1);
 
    efl_unref(r2);
-   efl_unref(r1);
    efl_unref(m);
 
 }
@@ -24,20 +21,22 @@ EFL_END_TEST
 
 EFL_START_TEST(focus_register_twice)
 {
-   Efl_Ui_Focus_Object *r1 = focus_test_object_new("r1", 0, 0, 10, 10);
-   Efl_Ui_Focus_Object *r2 = focus_test_object_new("r2", 0, 10, 10, 10);
+   Efl_Ui_Focus_Object *r1, *r2, *r3;
 
-   Efl_Ui_Focus_Manager *m = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
-    efl_ui_focus_manager_root_set(efl_added, r1)
-   );
+   Efl_Ui_Focus_Manager *m = focus_test_manager_new(&r1, EINA_TRUE);
+   Efl_Ui_Focus_Manager *m2 = focus_test_manager_new(&r3, EINA_TRUE);
+
+   r2 = efl_add_ref(FOCUS_TEST_CLASS, NULL);
 
    fail_if(!efl_ui_focus_manager_calc_register(m, r2, r1, NULL));
    //same confguration don't error out
    fail_if(!efl_ui_focus_manager_calc_register(m, r2, r1, NULL));
+
+   EXPECT_ERROR_START;
    //different confidurations error out
-   fail_if(efl_ui_focus_manager_calc_register(m, r2, r1, r1));
+   fail_if(efl_ui_focus_manager_calc_register(m, r2, r1, m2));
+   EXPECT_ERROR_END;
 
-   efl_unref(r1);
    efl_unref(m);
 
 }
@@ -50,7 +49,7 @@ EFL_START_TEST(pos_check)
 
    focus_test_setup_cross(&middle, &south, &north, &east, &west);
 
-   m = focus_test_manager_new(&root);
+   m = focus_test_manager_new(&root, EINA_TRUE);
    efl_ui_focus_manager_calc_register(m, middle, root, NULL);
    efl_ui_focus_manager_calc_register(m, north, root, NULL);
    efl_ui_focus_manager_calc_register(m, south, root, NULL);
@@ -122,7 +121,7 @@ EFL_START_TEST(pos_check2)
    south_east = focus_test_object_new("south_east", 60, 60, 5, 5);
    south_west = focus_test_object_new("south_west", 20, 60, 5, 5);
 
-   m = focus_test_manager_new(&root);
+   m = focus_test_manager_new(&root, EINA_TRUE);
    efl_ui_focus_manager_calc_register(m, middle, root, NULL);
    efl_ui_focus_manager_calc_register(m, north_east, root, NULL);
    efl_ui_focus_manager_calc_register(m, north_west, root, NULL);
@@ -156,18 +155,12 @@ EFL_START_TEST(pos_check2)
 EFL_END_TEST
 EFL_START_TEST(redirect)
 {
-   TEST_OBJ_NEW(root, 0, 0, 20, 20);
-   TEST_OBJ_NEW(root2, 0, 0, 20, 20);
+   Efl_Ui_Focus_Object *root, *root2;
    TEST_OBJ_NEW(one, 0, 0, 20, 20);
    TEST_OBJ_NEW(two, 20, 0, 20, 20);
 
-   Efl_Ui_Focus_Manager *m = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
-    efl_ui_focus_manager_root_set(efl_added, root)
-   );
-
-   Efl_Ui_Focus_Manager *m2 = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
-    efl_ui_focus_manager_root_set(efl_added, root2)
-   );
+   Efl_Ui_Focus_Manager *m = focus_test_manager_new(&root, EINA_TRUE);
+   Efl_Ui_Focus_Manager *m2 = focus_test_manager_new(&root2, EINA_TRUE);
 
    efl_ui_focus_manager_calc_register(m2, one, root2, NULL);
    efl_ui_focus_manager_calc_register(m2, two, root2, NULL);
@@ -192,7 +185,7 @@ EFL_START_TEST(border_check)
 
    focus_test_setup_cross(&middle, &south, &north, &east, &west);
 
-   m = focus_test_manager_new(&root);
+   m = focus_test_manager_new(&root, EINA_TRUE);
    efl_ui_focus_manager_calc_register(m, middle, root, NULL);
    efl_ui_focus_manager_calc_register(m, south, root, NULL);
    efl_ui_focus_manager_calc_register(m, north, root, NULL);
@@ -226,7 +219,7 @@ EFL_START_TEST(logical_chain)
 
    TEST_OBJ_NEW(root, 0, 0, 20, 20);
 
-   m = focus_test_manager_new(&lroot);
+   m = focus_test_manager_new(&lroot, EINA_TRUE);
 
    fail_if(!m);
 
@@ -326,32 +319,31 @@ _check_chain(Efl_Ui_Focus_Manager *m, Efl_Ui_Focus_Object *objects[])
 EFL_START_TEST(logical_chain_multi_redirect)
 {
    Efl_Ui_Focus_Manager *m, *m2, *m3, *m4;
-   Efl_Ui_Focus_Object *root,*root2, *root3, *root4, *c1_1, *c1_2, *c1_3, *c2, *c3, *c4;
+   Efl_Ui_Focus_Object *root,*root2, *root3, *root4, *c2, *c3, *c4;
 
-   m = focus_test_manager_new(&root);
-   m2 = focus_test_manager_new(&root2);
-   m3 = focus_test_manager_new(&root3);
-   m4 = focus_test_manager_new(&root4);
-   c1_1 = focus_test_object_new("child1", 0, 0, 20, 20);
-   c1_2 = focus_test_object_new("child2", 0, 0, 20, 20);
-   c1_3 = focus_test_object_new("child3", 0, 0, 20, 20);
-   focus_test_manager_set(c1_1, m2);
-   focus_test_manager_set(c1_2, m3);
-   focus_test_manager_set(c1_3, m4);
-   c2 = focus_test_object_new("child1", 0, 0, 20, 20);
-   c3 = focus_test_object_new("child2", 0, 0, 20, 20);
-   c4 = focus_test_object_new("child3", 0, 0, 20, 20);
+   m = focus_test_manager_new(&root, EINA_TRUE);
 
-   Efl_Ui_Focus_Object *objects[] = {c2, c3, c4, NULL};
+   //Create 3 linked focus managers
+   m2 = focus_test_manager_new(&root2, EINA_FALSE);
+   efl_ui_focus_manager_calc_register_logical(m, root2, root, m2);
+   focus_test_manager_set(root2, m);
+
+   m3 = focus_test_manager_new(&root3, EINA_FALSE);
+   efl_ui_focus_manager_calc_register_logical(m, root3, root, m3);
+   focus_test_manager_set(root3, m);
 
-   efl_ui_focus_manager_calc_register(m, c1_1, root, m2);
-   efl_ui_focus_manager_calc_register(m, c1_2, root, m3);
-   efl_ui_focus_manager_calc_register(m, c1_3, root, m4);
+   m4 = focus_test_manager_new(&root4, EINA_FALSE);
+   efl_ui_focus_manager_calc_register_logical(m, root4, root, m4);
+   focus_test_manager_set(root4, m);
 
+   c2 = focus_test_object_new("child1", 0, 0, 20, 20);
+   c3 = focus_test_object_new("child2", 0, 0, 20, 20);
+   c4 = focus_test_object_new("child3", 0, 0, 20, 20);
    efl_ui_focus_manager_calc_register(m2, c2, root2, NULL);
    efl_ui_focus_manager_calc_register(m3, c3, root3, NULL);
    efl_ui_focus_manager_calc_register(m4, c4, root4, NULL);
 
+   Efl_Ui_Focus_Object *objects[] = {c2, c3, c4, NULL};
    _check_chain(m, objects);
 
    efl_unref(m2);
@@ -364,11 +356,11 @@ EFL_START_TEST(logical_chain_single_redirect)
    Efl_Ui_Focus_Manager *m, *m2;
    Efl_Ui_Focus_Object *root,*root2, *c1_1, *c1_2, *c1_3, *c2_1, *c2_2, *c2_3;
 
-   m = focus_test_manager_new(&root);
-   m2 = focus_test_manager_new(&root2);
+   m = focus_test_manager_new(&root, EINA_TRUE);
+   m2 = focus_test_manager_new(&root2, EINA_FALSE);
+   focus_test_manager_set(root2, m);
    c1_1 = focus_test_object_new("child1", 0, 0, 20, 20);
-   c1_2 = focus_test_object_new("child2", 0, 0, 20, 20);
-   focus_test_manager_set(c1_2, m2);
+   c1_2 = root2;
    c1_3 = focus_test_object_new("child3", 0, 0, 20, 20);
    c2_1 = focus_test_object_new("child1", 0, 0, 20, 20);
    c2_2 = focus_test_object_new("child2", 0, 0, 20, 20);
@@ -395,7 +387,9 @@ EFL_START_TEST(finalize_check)
 {
    Efl_Ui_Focus_Manager *m;
 
+   EXPECT_ERROR_START;
    m = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL);
+   EXPECT_ERROR_END;
    fail_if(m);
 
    efl_unref(m);
@@ -405,21 +399,19 @@ EFL_END_TEST
 EFL_START_TEST(redirect_param)
 {
    Efl_Ui_Focus_Manager *m, *m2;
+   Efl_Ui_Focus_Object *root,*root2;
 
-   TEST_OBJ_NEW(root, 0, 20, 20, 20);
-   TEST_OBJ_NEW(root2, 0, 20, 20, 20);
    TEST_OBJ_NEW(child, 0, 20, 20, 20);
+   TEST_OBJ_NEW(child2, 0, 20, 20, 20);
 
-   m = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
-    efl_ui_focus_manager_root_set(efl_added, root)
-   );
-
-   m2 = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
-    efl_ui_focus_manager_root_set(efl_added, root2)
-   );
+   m = focus_test_manager_new(&root, EINA_TRUE);
+   m2 = focus_test_manager_new(&root2, EINA_FALSE);
+   efl_ui_focus_manager_calc_register_logical(m, root2, root, m2);
+   focus_test_manager_set(root2, m);
 
    efl_ui_focus_manager_calc_register(m, child, root, m2);
-   efl_ui_focus_manager_focus_set(m, child);
+   efl_ui_focus_manager_calc_register(m2, child2, root2, NULL);
+   efl_ui_focus_manager_focus_set(m, root2);
 
    ck_assert_ptr_eq(efl_ui_focus_manager_redirect_get(m), m2);
 
@@ -431,29 +423,35 @@ EFL_END_TEST
 EFL_START_TEST(invalid_args_check)
 {
    Efl_Ui_Focus_Manager *m;
+   Efl_Ui_Focus_Object *root;
 
-   TEST_OBJ_NEW(root, 0, 20, 20, 20);
    TEST_OBJ_NEW(child, 0, 20, 20, 20);
    TEST_OBJ_NEW(child2, 0, 20, 20, 20);
 
-   m = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
-    efl_ui_focus_manager_root_set(efl_added, root)
-   );
+   m = focus_test_manager_new(&root, EINA_TRUE);
 
    //no child and no parent
+   EXPECT_ERROR_START;
    ck_assert_int_eq(efl_ui_focus_manager_calc_register(m, NULL, NULL, NULL), 0);
+   EXPECT_ERROR_END;
+   EXPECT_ERROR_START;
    ck_assert_int_eq(efl_ui_focus_manager_calc_register(m, child, NULL, NULL), 0);
+   EXPECT_ERROR_END;
+   EXPECT_ERROR_START;
    ck_assert_int_eq(efl_ui_focus_manager_calc_register(m, NULL, root, NULL), 0);
-
+   EXPECT_ERROR_END;
    ck_assert_int_eq(efl_ui_focus_manager_calc_register(m, child, root, NULL), 1);
-
+   EXPECT_ERROR_START;
    ck_assert_int_eq(efl_ui_focus_manager_calc_update_parent(m, child, NULL), 0);
+   EXPECT_ERROR_END;
+   EXPECT_ERROR_START;
    ck_assert_int_eq(efl_ui_focus_manager_calc_update_parent(m, NULL, NULL), 0);
+   EXPECT_ERROR_END;
+   EXPECT_ERROR_START;
    ck_assert_int_eq(efl_ui_focus_manager_calc_update_parent(m, child, child2), 0);
-
+   EXPECT_ERROR_END;
    ck_assert_int_eq(efl_ui_focus_manager_calc_register(m, child2, root, NULL), 1);
    ck_assert_int_eq(efl_ui_focus_manager_calc_update_parent(m, child, child2), 1);
-
    efl_unref(m);
 }
 EFL_END_TEST
@@ -462,15 +460,13 @@ EFL_START_TEST(order_check)
 {
    Efl_Ui_Focus_Manager *m;
    Eina_List *order = NULL;
+   Efl_Ui_Focus_Object *root;
 
-   TEST_OBJ_NEW(root, 0, 20, 20, 20);
    TEST_OBJ_NEW(child1, 0, 20, 20, 20);
    TEST_OBJ_NEW(child2, 0, 20, 20, 20);
    TEST_OBJ_NEW(child3, 0, 20, 20, 20);
 
-   m = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
-    efl_ui_focus_manager_root_set(efl_added, root)
-   );
+   m = focus_test_manager_new(&root, EINA_TRUE);
 
    //no child and no parent
    efl_ui_focus_manager_calc_register(m, child1, root, NULL);
@@ -488,8 +484,9 @@ EFL_START_TEST(order_check)
    //negativ check
    order = eina_list_append(order, child1);
    order = eina_list_append(order, child2);
+   EXPECT_ERROR_START;
    ck_assert_int_eq(efl_ui_focus_manager_calc_update_children(m, root, order), 0);
-
+   EXPECT_ERROR_END;
    efl_unref(m);
 }
 EFL_END_TEST
@@ -497,16 +494,14 @@ EFL_END_TEST
 EFL_START_TEST(logical_shift)
 {
    Efl_Ui_Focus_Manager *m;
+   Efl_Ui_Focus_Object *root;
 
-   TEST_OBJ_NEW(root, 0, 0, 10, 10);
    TEST_OBJ_NEW(child, 0, 0, 10, 10);
    TEST_OBJ_NEW(sub, 0, 0, 10, 10);
    TEST_OBJ_NEW(sub_sub, 0, 0, 10, 10);
    TEST_OBJ_NEW(sub_child, 0, 0, 10, 10);
 
-   m = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
-    efl_ui_focus_manager_root_set(efl_added, root)
-   );
+   m = focus_test_manager_new(&root, EINA_TRUE);
 
    efl_ui_focus_manager_calc_register(m, child, root, NULL);
    efl_ui_focus_manager_calc_register_logical(m, sub, root, NULL);
@@ -519,9 +514,10 @@ EFL_START_TEST(logical_shift)
    efl_ui_focus_manager_focus_set(m, sub);
    ck_assert_ptr_eq(efl_ui_focus_manager_focus_get(m), sub_child);
 
+   EXPECT_ERROR_START;
    efl_ui_focus_manager_focus_set(m, sub_sub);
    ck_assert_ptr_eq(efl_ui_focus_manager_focus_get(m), sub_child);
-
+   EXPECT_ERROR_END;
    efl_unref(m);
 }
 EFL_END_TEST
@@ -529,21 +525,14 @@ EFL_END_TEST
 EFL_START_TEST(root_redirect_chain)
 {
    Efl_Ui_Focus_Manager *m, *m2;
+   Efl_Ui_Focus_Object *root, *root2;
 
-   TEST_OBJ_NEW(root, 0, 20, 20, 20);
-   TEST_OBJ_NEW(root2, 0, 20, 20, 20);
    TEST_OBJ_NEW(child, 0, 20, 20, 20);
 
-   m = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
-    efl_ui_focus_manager_root_set(efl_added, root)
-   );
-
+   m = focus_test_manager_new(&root, EINA_TRUE);
+   m2 = focus_test_manager_new(&root2, EINA_TRUE);
    focus_test_manager_set(root2, m);
 
-   m2 = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
-    efl_ui_focus_manager_root_set(efl_added, root2)
-   );
-
    efl_ui_focus_manager_calc_register(m, root2, root, m2);
    efl_ui_focus_manager_calc_register(m2, child, root2, NULL);
    efl_ui_focus_manager_focus_set(m2, child);
@@ -558,35 +547,30 @@ EFL_END_TEST
 EFL_START_TEST(root_redirect_chain_unset)
 {
    Efl_Ui_Focus_Manager *m, *m2, *m3, *m4;
+   Efl_Ui_Focus_Object *root, *root2, *root3, *root4;
 
-   TEST_OBJ_NEW(root, 0, 20, 20, 20);
-   TEST_OBJ_NEW(root2, 0, 20, 20, 20);
    TEST_OBJ_NEW(child, 0, 20, 20, 20);
+   TEST_OBJ_NEW(child2, 0, 20, 20, 20);
+   TEST_OBJ_NEW(child3, 0, 20, 20, 20);
 
-   m = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
-    efl_ui_focus_manager_root_set(efl_added, root)
-   );
-
+   m = focus_test_manager_new(&root, EINA_TRUE);
+   m2 = focus_test_manager_new(&root2, EINA_FALSE);
+   m3 = focus_test_manager_new(&root3, EINA_FALSE);
+   m4 = focus_test_manager_new(&root4, EINA_FALSE);
    focus_test_manager_set(root2, m);
+   focus_test_manager_set(root3, m);
+   focus_test_manager_set(root4, m3);
 
-   m2 = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
-    efl_ui_focus_manager_root_set(efl_added, root2)
-   );
-
-   m3 = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
-    efl_ui_focus_manager_root_set(efl_added, root2)
-   );
-
-   m4 = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
-    efl_ui_focus_manager_root_set(efl_added, root2)
-   );
+   efl_ui_focus_manager_calc_register(m, root2, root, m2);
+   efl_ui_focus_manager_calc_register(m, root3, root, m3);
+   efl_ui_focus_manager_calc_register(m2, child, root2, NULL);
+   efl_ui_focus_manager_calc_register(m3, child2, root3, NULL);
+   efl_ui_focus_manager_calc_register(m3, root4, root3, NULL);
+   efl_ui_focus_manager_calc_register(m4, child3, root4, NULL);
 
    efl_ui_focus_manager_redirect_set(m, m3);
    efl_ui_focus_manager_redirect_set(m3, m4);
-   efl_ui_focus_manager_redirect_set(m4, m2);
 
-   efl_ui_focus_manager_calc_register(m, root2, root, m2);
-   efl_ui_focus_manager_calc_register(m2, child, root2, NULL);
    efl_ui_focus_manager_focus_set(m2, child);
 
    ck_assert_ptr_eq(efl_ui_focus_manager_redirect_get(m), m2);
@@ -605,16 +589,11 @@ static Efl_Ui_Focus_Manager_Calc*
 _recursive_triangle_manager(int recusion_depth, Efl_Ui_Focus_Object **most_right, Efl_Ui_Focus_Object **most_left, Eina_List **managers)
 {
    Efl_Ui_Focus_Manager *m, *m_child1 = NULL, *m_child3 = NULL;
-   Efl_Ui_Focus_Object *child1, *child3;
+   Efl_Ui_Focus_Object *child1, *child3, *root;
 
-   TEST_OBJ_NEW(root, 0, 20, 20, 20);
    TEST_OBJ_NEW(child2, 0, 20, 20, 20);
 
-   m = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
-    efl_ui_focus_manager_root_set(efl_added, root)
-   );
-
-   printf("New manaager %p\n", m);
+   m = focus_test_manager_new(&root, recusion_depth == 0);
 
    if (recusion_depth < 3)
      {
@@ -636,20 +615,14 @@ _recursive_triangle_manager(int recusion_depth, Efl_Ui_Focus_Object **most_right
         if (most_left)
           {
              *most_left = child1;
-             printf("SETTING %p\n", child1);
           }
 
         if (most_right)
           {
              *most_right = child3;
-             printf("SETTING %p\n", child3);
           }
      }
 
-   printf("Child 1 %p\n", child1);
-   printf("Child 2 %p\n", child2);
-   printf("Child 3 %p\n", child3);
-
    efl_ui_focus_manager_calc_register(m, child1, root, m_child1);
    efl_ui_focus_manager_calc_register(m, child2, root, NULL);
    efl_ui_focus_manager_calc_register(m, child3, root, m_child3);
@@ -681,14 +654,12 @@ EFL_START_TEST(first_touch_check)
    m = _recursive_triangle_manager(0, &most_right, &most_left, &managers);
 
    efl_ui_focus_manager_setup_on_first_touch(m, EFL_UI_FOCUS_DIRECTION_NEXT, efl_ui_focus_manager_root_get(m));
-   printf("%p %p\n", most_left, most_right);
 
    ck_assert_ptr_eq(efl_ui_focus_manager_focus_get(_get_highest_redirect(m)), most_left);
 
    efl_ui_focus_manager_reset_history(m);
 
    efl_ui_focus_manager_setup_on_first_touch(m, EFL_UI_FOCUS_DIRECTION_PREVIOUS, efl_ui_focus_manager_root_get(m));
-   printf("%s\n", efl_name_get(efl_ui_focus_manager_focus_get(_get_highest_redirect(m))));
    ck_assert_ptr_eq(efl_ui_focus_manager_focus_get(_get_highest_redirect(m)), most_right);
 
    EINA_LIST_FREE(managers, m)
@@ -701,7 +672,7 @@ EFL_START_TEST(test_request_subchild_empty)
    Efl_Ui_Focus_Manager *m;
    Efl_Ui_Focus_Object *root;
 
-   m = focus_test_manager_new(&root);
+   m = focus_test_manager_new(&root, EINA_TRUE);
 
    ck_assert_ptr_eq(efl_ui_focus_manager_request_subchild(m, root), NULL);
 
@@ -714,7 +685,7 @@ EFL_START_TEST(test_request_subchild_one_element)
    Efl_Ui_Focus_Manager *m;
    Efl_Ui_Focus_Object *root, *c1;
 
-   m = focus_test_manager_new(&root);
+   m = focus_test_manager_new(&root, EINA_TRUE);
    c1 = focus_test_object_new("child1", 0, 0, 20, 20);
    efl_ui_focus_manager_calc_register(m, c1, root, NULL);
 
@@ -730,7 +701,7 @@ EFL_START_TEST(test_request_subchild_child_alongside)
    Efl_Ui_Focus_Manager *m;
    Efl_Ui_Focus_Object *root, *c1, *c2;
 
-   m = focus_test_manager_new(&root);
+   m = focus_test_manager_new(&root, EINA_TRUE);
    c1 = focus_test_object_new("child1", 0, 0, 20, 20);
    c2 = focus_test_object_new("child2", 0, 0, 20, 20);
    efl_ui_focus_manager_calc_register(m, c1, root, NULL);
@@ -749,7 +720,7 @@ EFL_START_TEST(test_request_subchild_child_logical_regular)
    Efl_Ui_Focus_Manager *m;
    Efl_Ui_Focus_Object *root, *c1, *c2;
 
-   m = focus_test_manager_new(&root);
+   m = focus_test_manager_new(&root, EINA_TRUE);
    c1 = focus_test_object_new("child1", 0, 0, 20, 20);
    c2 = focus_test_object_new("child2", 0, 0, 20, 20);
    efl_ui_focus_manager_calc_register_logical(m, c1, root, NULL);
@@ -768,7 +739,7 @@ EFL_START_TEST(test_request_subchild_child_regular_regular)
    Efl_Ui_Focus_Manager *m;
    Efl_Ui_Focus_Object *root, *c1, *c2;
 
-   m = focus_test_manager_new(&root);
+   m = focus_test_manager_new(&root, EINA_TRUE);
    c1 = focus_test_object_new("child1", 0, 0, 20, 20);
    c2 = focus_test_object_new("child2", 0, 0, 20, 20);
    efl_ui_focus_manager_calc_register(m, c1, root, NULL);
@@ -787,7 +758,7 @@ EFL_START_TEST(test_unregister_last_focused_no_history)
    Efl_Ui_Focus_Manager *m;
    Efl_Ui_Focus_Object *root, *c1, *c2, *c3;
 
-   m = focus_test_manager_new(&root);
+   m = focus_test_manager_new(&root, EINA_TRUE);
    c1 = focus_test_object_new("child1", 0, 0, 20, 20);
    c2 = focus_test_object_new("child2", 0, 0, 20, 20);
    c3 = focus_test_object_new("child3", 0, 0, 20, 20);
@@ -810,7 +781,7 @@ EFL_START_TEST(test_unregister_last_focused)
    Efl_Ui_Focus_Manager *m;
    Efl_Ui_Focus_Object *root, *c1, *c2, *c3;
 
-   m = focus_test_manager_new(&root);
+   m = focus_test_manager_new(&root, EINA_TRUE);
    c1 = focus_test_object_new("child1", 0, 0, 20, 20);
    c2 = focus_test_object_new("child2", 0, 0, 20, 20);
    c3 = focus_test_object_new("child3", 0, 0, 20, 20);
@@ -835,7 +806,7 @@ EFL_START_TEST(test_unregister_last_focused_no_child)
    Efl_Ui_Focus_Manager *m;
    Efl_Ui_Focus_Object *root, *c1;
 
-   m = focus_test_manager_new(&root);
+   m = focus_test_manager_new(&root, EINA_TRUE);
    c1 = focus_test_object_new("child1", 0, 0, 20, 20);
    efl_ui_focus_manager_calc_register(m, c1, root, NULL);
 
@@ -853,7 +824,7 @@ EFL_START_TEST(test_pop_history_element)
    Efl_Ui_Focus_Manager *m;
    Efl_Ui_Focus_Object *root, *c1, *c2, *c3;
 
-   m = focus_test_manager_new(&root);
+   m = focus_test_manager_new(&root, EINA_TRUE);
    c1 = focus_test_object_new("child1", 0, 0, 20, 20);
    c2 = focus_test_object_new("child2", 0, 0, 20, 20);
    c3 = focus_test_object_new("child3", 0, 0, 20, 20);
@@ -902,7 +873,7 @@ EFL_START_TEST(test_request_move)
    Efl_Ui_Focus_Manager *m;
    Efl_Ui_Focus_Object *root, *c1, *c2, *c3, *c4, *c5, *c6;
 
-   m = focus_test_manager_new(&root);
+   m = focus_test_manager_new(&root, EINA_TRUE);
    c1 = focus_test_object_new("child1", 0, 0, 20, 20);
    c2 = focus_test_object_new("child2", 0, 0, 20, 20);
    c3 = focus_test_object_new("child3", 0, 0, 20, 20);
@@ -936,21 +907,14 @@ EFL_END_TEST
 EFL_START_TEST(redirect_unregister_entrypoint)
 {
    Efl_Ui_Focus_Manager *m, *m2;
+   Efl_Ui_Focus_Object *root, *root2;
 
-   TEST_OBJ_NEW(root, 0, 20, 20, 20);
-   TEST_OBJ_NEW(root2, 0, 20, 20, 20);
    TEST_OBJ_NEW(child, 0, 20, 20, 20);
    TEST_OBJ_NEW(child2, 0, 20, 20, 20);
    TEST_OBJ_NEW(child3, 0, 20, 20, 20);
 
-   m = efl_add(EFL_UI_FOCUS_MANAGER_CALC_CLASS, efl_main_loop_get(),
-    efl_ui_focus_manager_root_set(efl_added, root)
-   );
-
-   m2 = efl_add(EFL_UI_FOCUS_MANAGER_CALC_CLASS, efl_main_loop_get(),
-    efl_ui_focus_manager_root_set(efl_added, root2)
-   );
-
+   m = focus_test_manager_new(&root, EINA_TRUE);
+   m2 = focus_test_manager_new(&root2, EINA_TRUE);
 
    efl_ui_focus_manager_calc_register(m2, child3, root2, m2);
 
@@ -963,19 +927,17 @@ EFL_START_TEST(redirect_unregister_entrypoint)
    ck_assert_ptr_eq(efl_ui_focus_manager_redirect_get(m), m2);
    ck_assert_ptr_eq(efl_ui_focus_manager_focus_get(m), NULL);
 
-   efl_del(m);
-   efl_del(m2);
+   efl_unref(m);
+   efl_unref(m2);
 }
 EFL_END_TEST
 
 static void
-_child_focus_changed(void *data, const Efl_Event *ev)
+_child_focus_changed(void *data, const Efl_Event *ev EINA_UNUSED)
 {
    Eina_Bool *flag = data;
 
    *flag = EINA_TRUE;
-
-   printf("%s\n", efl_class_name_get(ev->object));
 }
 
 EFL_START_TEST(test_events_child_focus)
@@ -985,7 +947,7 @@ EFL_START_TEST(test_events_child_focus)
    Eina_Bool froot = EINA_FALSE, fc1 = EINA_FALSE, fc2 = EINA_FALSE,
              fc3 = EINA_FALSE, fc4 = EINA_FALSE, fc5 = EINA_FALSE, fc6 = EINA_FALSE;
 
-   m = focus_test_manager_new(&root);
+   m = focus_test_manager_new(&root, EINA_TRUE);
    c1 = focus_test_object_new("child1", 0, 0, 20, 20);
    efl_parent_set(c1, root);
    c2 = focus_test_object_new("child2", 0, 0, 20, 20);
@@ -1087,7 +1049,7 @@ EFL_START_TEST(viewport_check)
 
    focus_test_setup_cross(&middle, &south, &north, &east, &west);
 
-   m = focus_test_manager_new(&root);
+   m = focus_test_manager_new(&root, EINA_TRUE);
    efl_ui_focus_manager_calc_register(m, middle, root, NULL);
    efl_ui_focus_manager_calc_register(m, south, root, NULL);
    efl_ui_focus_manager_calc_register(m, north, root, NULL);
index c025d28..3750318 100644 (file)
@@ -2,6 +2,8 @@
 
 #include "efl_ui_test_focus_common.h"
 
+//#define DEBUG
+
 #define Q(o,_x,_y,_w,_h) \
   do {\
    Eina_Rect rect; \
@@ -42,15 +44,28 @@ focus_test_setup_cross(Efl_Ui_Focus_Object **middle,
 
 
 Efl_Ui_Focus_Manager*
-focus_test_manager_new(Efl_Ui_Focus_Object **middle)
+focus_test_manager_new(Efl_Ui_Focus_Object **middle, Eina_Bool is_root)
 {
    Efl_Ui_Focus_Object *root;
    Efl_Ui_Focus_Manager *m;
 
-   root = focus_test_object_new("middle", 40, 40, 20, 20);
+
+   if (!is_root)
+     {
+        root = focus_test_object_new("middle", 40, 40, 20, 20);
+     }
+   else
+     {
+
+         root = efl_add_ref(FOCUS_MANAGER_TEST_CLASS, NULL,
+          efl_name_set(efl_added, "middle")
+         );
+         Q(root, 40,40,20,20);
+     }
    m = efl_add_ref(EFL_UI_FOCUS_MANAGER_CALC_CLASS, NULL,
      efl_ui_focus_manager_root_set(efl_added, root)
    );
+
    if (middle)
      *middle = root;
 
@@ -79,7 +94,9 @@ EOLIAN static void
 _focus_test_efl_ui_focus_object_focus_set(Eo *obj, Focus_Test_Data *pd, Eina_Bool focus)
 {
    pd->focus = focus;
+#ifdef DEBUG
    printf("Object %p now focused\n", obj);
+#endif
    efl_ui_focus_object_focus_set(efl_super(obj, FOCUS_TEST_CLASS), focus);
 }
 
@@ -121,3 +138,9 @@ _focus_test_manager_set(Eo *obj EINA_UNUSED, Focus_Test_Data *pd, Efl_Ui_Focus_M
 
 
 #include "focus_test.eo.c"
+
+typedef struct {
+
+} Focus_Manager_Test_Data;
+
+#include "focus_manager_test.eo.c"
index fc17edb..ceda6a0 100644 (file)
@@ -10,6 +10,7 @@
 #include <Efl_Ui.h>
 #include "efl_ui_suite.h"
 #include "focus_test.eo.h"
+#include "focus_manager_test.eo.h"
 
 #define TEST_OBJ_NEW(name, x, y, w, h) \
   Efl_Ui_Focus_Object* name; \
@@ -24,5 +25,5 @@ void focus_test_setup_cross(Efl_Ui_Focus_Object **middle,
                                 Efl_Ui_Focus_Object **east,
                                 Efl_Ui_Focus_Object **west);
 
-Efl_Ui_Focus_Manager *focus_test_manager_new(Efl_Ui_Focus_Object **middle);
+Efl_Ui_Focus_Manager *focus_test_manager_new(Efl_Ui_Focus_Object **middle, Eina_Bool);
 #endif
diff --git a/src/tests/elementary/focus_manager_test.eo b/src/tests/elementary/focus_manager_test.eo
new file mode 100644 (file)
index 0000000..5d334b1
--- /dev/null
@@ -0,0 +1,4 @@
+class @beta Focus_Manager_Test extends Focus.Test implements Efl.Ui.Focus.Manager_Window_Root
+{
+
+}
index edea953..9eb1b50 100644 (file)
@@ -1,6 +1,7 @@
 priv_eo_files = [
    'focus_test.eo',
-   'focus_test_sub_main.eo'
+   'focus_test_sub_main.eo',
+   'focus_manager_test.eo'
 ]
 
 priv_eo_file_target = []