efl/src/tests/elementary/elm_test_check.c

228 lines
5.7 KiB
C

#ifdef HAVE_CONFIG_H
# include "elementary_config.h"
#endif
#define EFL_ACCESS_OBJECT_BETA
#include <Elementary.h>
#include "elm_suite.h"
typedef struct _Check_Data
{
Evas_Object *check1;
Evas_Object *check2;
int value;
} Check_Data;
EFL_START_TEST(elm_test_check_size)
{
Evas_Object *win, *check, *box;
int width, height;
win = elm_win_util_standard_add("check", "Check");
box = elm_box_add(win);
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, box);
evas_object_show(box);
check = elm_check_add(box);
elm_box_pack_end(box, check);
evas_object_show(check);
evas_object_show(win);
get_me_to_those_events(check);
evas_object_size_hint_min_get(check, &width, &height);
ck_assert_int_gt(width, 0);
ck_assert_int_gt(height, 0);
}
EFL_END_TEST
EFL_START_TEST(elm_test_check_legacy_type_check)
{
Evas_Object *win, *check;
const char *type;
win = win_add(NULL, "check", ELM_WIN_BASIC);
check = elm_check_add(win);
type = elm_object_widget_type_get(check);
ck_assert(type != NULL);
ck_assert(!strcmp(type, "Elm_Check"));
type = evas_object_type_get(check);
ck_assert(type != NULL);
ck_assert(!strcmp(type, "elm_check"));
}
EFL_END_TEST
EFL_START_TEST(elm_test_check_onoff_text)
{
Evas_Object *win, *check;
win = win_add(NULL, "check", ELM_WIN_BASIC);
check = elm_check_add(win);
elm_object_style_set(check, "toggle");
elm_object_part_text_set(check, "on", "OnText");
elm_object_part_text_set(check, "off", "OffText");
ck_assert_str_eq(elm_object_part_text_get(check, "on"), "OnText");
ck_assert_str_eq(elm_object_part_text_get(check, "off"), "OffText");
elm_object_style_set(check, "default");
DISABLE_ABORT_ON_CRITICAL_START;
ck_assert(elm_object_part_text_get(check, "on") == NULL);
ck_assert(elm_object_part_text_get(check, "off") == NULL);
DISABLE_ABORT_ON_CRITICAL_END;
}
EFL_END_TEST
EFL_START_TEST(elm_test_check_callbacks)
{
Evas_Object *win, *check;
int called = 0;
int i;
win = win_add(NULL, "check", ELM_WIN_BASIC);
evas_object_resize(win, 500, 500);
check = elm_check_add(win);
// XXX: disable toggle tests and re-dun check tests
// if (_i)
// elm_object_style_set(check, "toggle");
elm_object_text_set(check, "TEST TEST TEST");
evas_object_smart_callback_add(check, "changed", event_callback_single_call_int_data, &called);
evas_object_resize(check, 200, 100);
evas_object_show(win);
evas_object_show(check);
get_me_to_those_events(check);
for (i = 0; i < 4; i++)
{
called = 0;
// XXX: disable toggle tests and re-dun check tests
// if (_i)
// click_object_at(check, 150, 50);
// else
click_object(check);
ecore_main_loop_iterate();
ck_assert_int_eq(elm_check_state_get(check), !(i % 2));
ck_assert_int_eq(called, 1);
}
}
EFL_END_TEST
EFL_START_TEST(elm_test_check_state)
{
Evas_Object *win, *check;
Eina_Bool state = EINA_TRUE;
int called = 0;
win = win_add(NULL, "check", ELM_WIN_BASIC);
check = elm_check_add(win);
elm_check_state_pointer_set(check, &state);
ck_assert(elm_check_state_get(check) == EINA_TRUE);
ck_assert(state == EINA_TRUE);
evas_object_smart_callback_add(check, "changed", event_callback_single_call_int_data, &called);
elm_check_state_set(check, EINA_FALSE);
ck_assert(elm_check_state_get(check) == EINA_FALSE);
ck_assert(state == EINA_FALSE);
ck_assert_int_eq(called, 0);
}
EFL_END_TEST
EFL_START_TEST(elm_atspi_role_get)
{
Evas_Object *win, *check;
Efl_Access_Role role;
win = win_add(NULL, "check", ELM_WIN_BASIC);
check = elm_check_add(win);
role = efl_access_object_role_get(check);
ck_assert(role == EFL_ACCESS_ROLE_CHECK_BOX);
}
EFL_END_TEST
static void
_check_changed_cb(void *ptr, Evas_Object *obj, void *e EINA_UNUSED)
{
Check_Data *data = (Check_Data*) ptr;
if (obj == data->check1) {
elm_check_state_set(data->check2, EINA_TRUE);
} else if ( obj == data->check2) {
elm_check_state_set(data->check1, EINA_FALSE);
} else {
ck_assert(EINA_FALSE);
}
data->value ++;
}
EFL_START_TEST(elm_test_check_api_call)
{
Evas_Object *win, *check1, *check2, *box;
Check_Data data ={0,};
win = elm_win_util_standard_add("check", "Check");
box = elm_box_add(win);
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, box);
evas_object_show(box);
data.check1 = check1 = elm_check_add(box);
elm_object_text_set(check1, "TEST TEST TEST");
evas_object_smart_callback_add(check1, "changed", _check_changed_cb, &data);
elm_box_pack_end(box, check1);
evas_object_show(check1);
data.check2 = check2 = elm_check_add(box);
elm_object_text_set(check2, "TEST TEST TEST");
evas_object_smart_callback_add(check2, "changed", _check_changed_cb, &data);
elm_box_pack_end(box, check2);
evas_object_show(check2);
evas_object_show(win);
get_me_to_those_events(check1);
data.value = 0;
click_object(data.check1);
ecore_main_loop_iterate();
ck_assert_int_eq(data.value, 1);
data.value = 0;
click_object(data.check2);
ecore_main_loop_iterate();
ck_assert_int_eq(data.value, 1);
data.value = 0;
click_object(data.check1);
ecore_main_loop_iterate();
ck_assert_int_eq(data.value, 1);
}
EFL_END_TEST
void elm_test_check(TCase *tc)
{
tcase_add_test(tc, elm_test_check_size);
tcase_add_test(tc, elm_test_check_legacy_type_check);
tcase_add_test(tc, elm_test_check_onoff_text);
tcase_add_test(tc, elm_test_check_state);
tcase_add_loop_test(tc, elm_test_check_callbacks, 0, 2);
tcase_add_test(tc, elm_atspi_role_get);
tcase_add_test(tc, elm_test_check_api_call);
}