diff --git a/src/tests/elementary/elm_test_radio.c b/src/tests/elementary/elm_test_radio.c index e619d29a4c..c196850015 100644 --- a/src/tests/elementary/elm_test_radio.c +++ b/src/tests/elementary/elm_test_radio.c @@ -41,8 +41,65 @@ EFL_START_TEST(elm_atspi_role_get) } EFL_END_TEST +static unsigned int radio_change_count = 0; + +static void +_rdg_changed_cb() +{ + radio_change_count++; + ecore_main_loop_quit(); +} + +EFL_START_TEST(elm_test_radio_selection) +{ + radio_change_count = 0; + Evas_Object *rd, *rdg; + Evas_Object *win = win_add(NULL, "radio", ELM_WIN_BASIC); + evas_object_resize(win, 100, 100); + + // radio 1 + rd = elm_radio_add(win); + evas_object_resize(rd, 100, 100); + + // rdg radio group + rdg = rd; + evas_object_smart_callback_add(rdg, "changed", _rdg_changed_cb, NULL); + + elm_radio_state_value_set(rd, 1); + elm_object_text_set(rd, "Radio Group Test #1"); + evas_object_show(rd); + + + // radio 2 + rd = elm_radio_add(win); + evas_object_smart_callback_add(rd, "changed", _rdg_changed_cb, NULL); + evas_object_resize(rd, 100, 100); + elm_radio_state_value_set(rd, 2); + elm_object_text_set(rd, "Radio Group Test #2"); + elm_radio_group_add(rd, rdg); + evas_object_show(rd); + evas_object_show(win); + + elm_layout_signal_emit(rdg, "elm,action,radio,toggle", "elm"); + ecore_main_loop_begin(); + ck_assert_int_eq(elm_radio_value_get(rdg), 1); + ck_assert_int_eq(radio_change_count, 1); + + elm_layout_signal_emit(rd, "elm,action,radio,toggle", "elm"); + ecore_main_loop_begin(); + ck_assert_int_eq(elm_radio_value_get(rdg), 2); + ck_assert_int_eq(radio_change_count, 2); + + elm_layout_signal_emit(rdg, "elm,action,radio,toggle", "elm"); + ecore_main_loop_begin(); + ck_assert_int_eq(elm_radio_value_get(rdg), 1); + ck_assert_int_eq(radio_change_count, 3); +} +EFL_END_TEST + void elm_test_radio(TCase *tc) { tcase_add_test(tc, elm_radio_legacy_type_check); tcase_add_test(tc, elm_atspi_role_get); + tcase_add_test(tc, elm_test_radio_selection); }