2014-06-10 19:07:15 -07:00
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
# include "elementary_config.h"
|
|
|
|
#endif
|
|
|
|
|
2017-11-07 21:18:05 -08:00
|
|
|
#define EFL_ACCESS_BETA
|
2014-06-10 19:07:15 -07:00
|
|
|
#include <Elementary.h>
|
|
|
|
#include "elm_suite.h"
|
|
|
|
|
2015-04-22 08:08:59 -07:00
|
|
|
static const char pathfmt[] = ELM_IMAGE_DATA_DIR"/images/icon_%02d.png";
|
2015-04-10 00:28:30 -07:00
|
|
|
static const char invalid[] = "thereisnosuchimage.png";
|
|
|
|
#define MAX_IMAGE_ID 23
|
|
|
|
|
|
|
|
typedef struct _Test_Data Test_Data;
|
|
|
|
struct _Test_Data
|
|
|
|
{
|
|
|
|
int image_id;
|
2016-09-21 23:24:40 -07:00
|
|
|
int success;
|
2015-04-10 00:28:30 -07:00
|
|
|
};
|
2014-06-10 19:07:15 -07:00
|
|
|
|
2018-02-14 12:04:24 -08:00
|
|
|
START_TEST (elm_image_legacy_type_check)
|
|
|
|
{
|
|
|
|
Evas_Object *win, *image;
|
|
|
|
const char *type;
|
|
|
|
|
2018-03-06 06:43:06 -08:00
|
|
|
char *args[] = { "exe" };
|
|
|
|
elm_init(1, args);
|
2018-02-14 12:04:24 -08:00
|
|
|
win = elm_win_add(NULL, "image", ELM_WIN_BASIC);
|
|
|
|
|
|
|
|
image = elm_image_add(win);
|
|
|
|
|
|
|
|
type = elm_object_widget_type_get(image);
|
|
|
|
ck_assert(type != NULL);
|
|
|
|
ck_assert(!strcmp(type, "Elm_Image"));
|
|
|
|
|
|
|
|
type = evas_object_type_get(image);
|
|
|
|
ck_assert(type != NULL);
|
|
|
|
ck_assert(!strcmp(type, "elm_image"));
|
|
|
|
|
|
|
|
elm_shutdown();
|
|
|
|
}
|
|
|
|
END_TEST
|
|
|
|
|
2014-06-10 19:07:15 -07:00
|
|
|
START_TEST (elm_atspi_role_get)
|
|
|
|
{
|
|
|
|
Evas_Object *win, *image;
|
2017-10-18 18:13:54 -07:00
|
|
|
Efl_Access_Role role;
|
2014-06-10 19:07:15 -07:00
|
|
|
|
2018-03-06 06:43:06 -08:00
|
|
|
char *args[] = { "exe" };
|
|
|
|
elm_init(1, args);
|
2014-06-10 19:07:15 -07:00
|
|
|
win = elm_win_add(NULL, "image", ELM_WIN_BASIC);
|
|
|
|
|
|
|
|
image = elm_image_add(win);
|
2017-10-18 18:13:54 -07:00
|
|
|
role = efl_access_role_get(image);
|
2014-06-10 19:07:15 -07:00
|
|
|
|
2017-10-18 18:13:54 -07:00
|
|
|
ck_assert(role == EFL_ACCESS_ROLE_IMAGE);
|
2014-06-10 19:07:15 -07:00
|
|
|
|
|
|
|
elm_shutdown();
|
|
|
|
}
|
|
|
|
END_TEST
|
|
|
|
|
2016-06-20 07:31:31 -07:00
|
|
|
static void
|
2016-09-21 23:24:40 -07:00
|
|
|
_async_error_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
|
2015-04-10 00:28:30 -07:00
|
|
|
{
|
|
|
|
Test_Data *td = data;
|
|
|
|
char path[PATH_MAX];
|
|
|
|
sprintf(path, pathfmt, td->image_id);
|
2016-09-21 23:24:40 -07:00
|
|
|
elm_image_file_set(obj, path, NULL);
|
|
|
|
|
|
|
|
td->success = 1;
|
2015-04-10 00:28:30 -07:00
|
|
|
}
|
|
|
|
|
2016-06-20 07:31:31 -07:00
|
|
|
static void
|
2016-09-21 23:24:40 -07:00
|
|
|
_async_opened_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
|
2015-04-10 00:28:30 -07:00
|
|
|
{
|
|
|
|
Test_Data *td = data;
|
|
|
|
const char *ff, *kk, *r1, *r2;
|
|
|
|
char path[PATH_MAX];
|
|
|
|
|
|
|
|
sprintf(path, pathfmt, td->image_id);
|
2016-09-21 23:24:40 -07:00
|
|
|
elm_image_file_get(obj, &ff, &kk);
|
2015-04-10 00:28:30 -07:00
|
|
|
r1 = strrchr(ff, '/');
|
|
|
|
r2 = strrchr(path, '/');
|
2016-09-21 23:24:40 -07:00
|
|
|
ck_assert(eina_streq(r1, r2));
|
2015-04-10 00:28:30 -07:00
|
|
|
ck_assert(!kk);
|
|
|
|
|
2016-09-21 23:24:40 -07:00
|
|
|
fprintf(stderr, "opened: %s\n", ff);
|
|
|
|
|
2015-04-10 00:28:30 -07:00
|
|
|
if (td->image_id < MAX_IMAGE_ID / 2)
|
|
|
|
{
|
|
|
|
td->image_id++;
|
|
|
|
sprintf(path, pathfmt, td->image_id);
|
2016-09-21 23:24:40 -07:00
|
|
|
elm_image_file_set(obj, path, NULL);
|
2016-06-20 07:31:31 -07:00
|
|
|
return;
|
2015-04-10 00:28:30 -07:00
|
|
|
}
|
|
|
|
else if (td->image_id < MAX_IMAGE_ID)
|
|
|
|
{
|
|
|
|
// mini stress-test
|
|
|
|
for (; td->image_id < MAX_IMAGE_ID;)
|
|
|
|
{
|
|
|
|
sprintf(path, pathfmt, ++td->image_id);
|
2016-09-21 23:24:40 -07:00
|
|
|
elm_image_file_set(obj, path, NULL);
|
2015-04-10 00:28:30 -07:00
|
|
|
}
|
2016-06-20 07:31:31 -07:00
|
|
|
return;
|
2015-04-10 00:28:30 -07:00
|
|
|
}
|
|
|
|
|
2016-09-21 23:24:40 -07:00
|
|
|
if (td->success == 1)
|
|
|
|
td->success = 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_async_ready_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Test_Data *td = data;
|
|
|
|
|
|
|
|
const char *ff;
|
|
|
|
elm_image_file_get(obj, &ff, 0);
|
|
|
|
fprintf(stderr, "ready : %s\n", ff);
|
|
|
|
if (td->success == 2)
|
|
|
|
{
|
|
|
|
td->success = 3;
|
|
|
|
ecore_main_loop_quit();
|
|
|
|
}
|
2015-04-10 00:28:30 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static Eina_Bool
|
|
|
|
_timeout_cb(void *data)
|
|
|
|
{
|
|
|
|
Test_Data *td = data;
|
|
|
|
|
|
|
|
td->success = 0;
|
|
|
|
ecore_main_loop_quit();
|
|
|
|
|
|
|
|
return ECORE_CALLBACK_CANCEL;
|
|
|
|
}
|
|
|
|
|
|
|
|
START_TEST (elm_image_async_path)
|
|
|
|
{
|
|
|
|
Evas_Object *win, *image;
|
2016-09-21 23:24:40 -07:00
|
|
|
Eina_Bool ok;
|
2015-04-10 00:28:30 -07:00
|
|
|
Test_Data td;
|
|
|
|
|
2018-03-06 06:43:06 -08:00
|
|
|
char *args[] = { "exe" };
|
|
|
|
elm_init(1, args);
|
2015-04-10 00:28:30 -07:00
|
|
|
win = elm_win_add(NULL, "image", ELM_WIN_BASIC);
|
|
|
|
|
|
|
|
td.success = 0;
|
|
|
|
td.image_id = 0;
|
|
|
|
|
|
|
|
image = elm_image_add(win);
|
2016-09-21 23:24:40 -07:00
|
|
|
elm_image_async_open_set(image, 1);
|
|
|
|
evas_object_smart_callback_add(image, "load,error", _async_error_cb, &td);
|
|
|
|
evas_object_smart_callback_add(image, "load,open", _async_opened_cb, &td);
|
|
|
|
evas_object_smart_callback_add(image, "load,ready", _async_ready_cb, &td);
|
|
|
|
evas_object_show(image);
|
|
|
|
ok = elm_image_file_set(image, invalid, NULL);
|
2015-04-10 00:28:30 -07:00
|
|
|
ck_assert(ok);
|
|
|
|
|
|
|
|
ecore_timer_add(10.0, _timeout_cb, &td);
|
|
|
|
|
|
|
|
elm_run();
|
2016-09-21 23:24:40 -07:00
|
|
|
ck_assert(td.success == 3);
|
2015-04-10 00:28:30 -07:00
|
|
|
|
|
|
|
elm_shutdown();
|
|
|
|
}
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
START_TEST (elm_image_async_mmap)
|
|
|
|
{
|
|
|
|
Evas_Object *win, *image;
|
|
|
|
Eina_Bool ok;
|
|
|
|
Test_Data td;
|
|
|
|
Eina_File *f;
|
|
|
|
char path[PATH_MAX];
|
|
|
|
|
2018-03-06 06:43:06 -08:00
|
|
|
char *args[] = { "exe" };
|
|
|
|
elm_init(1, args);
|
2015-04-10 00:28:30 -07:00
|
|
|
win = elm_win_add(NULL, "image", ELM_WIN_BASIC);
|
|
|
|
|
2016-09-21 23:24:40 -07:00
|
|
|
td.success = 1; // skip "error" case
|
2015-04-10 00:28:30 -07:00
|
|
|
td.image_id = 1;
|
|
|
|
|
|
|
|
sprintf(path, pathfmt, td.image_id);
|
|
|
|
f = eina_file_open(path, 0);
|
|
|
|
ck_assert(f);
|
|
|
|
|
|
|
|
image = elm_image_add(win);
|
2016-09-21 23:24:40 -07:00
|
|
|
elm_image_async_open_set(image, 1);
|
|
|
|
evas_object_smart_callback_add(image, "load,error", _async_error_cb, &td);
|
|
|
|
evas_object_smart_callback_add(image, "load,open", _async_opened_cb, &td);
|
|
|
|
evas_object_smart_callback_add(image, "load,ready", _async_ready_cb, &td);
|
|
|
|
evas_object_show(image);
|
|
|
|
ok = elm_image_mmap_set(image, f, NULL);
|
2015-04-10 00:28:30 -07:00
|
|
|
ck_assert(ok);
|
|
|
|
|
|
|
|
ecore_timer_add(10.0, _timeout_cb, &td);
|
|
|
|
|
|
|
|
elm_run();
|
2016-09-21 23:24:40 -07:00
|
|
|
ck_assert(td.success == 3);
|
2015-04-10 00:28:30 -07:00
|
|
|
|
|
|
|
eina_file_close(f);
|
|
|
|
|
|
|
|
elm_shutdown();
|
|
|
|
}
|
|
|
|
END_TEST
|
|
|
|
|
2017-06-05 00:33:27 -07:00
|
|
|
START_TEST (efl_ui_image_icon)
|
|
|
|
{
|
|
|
|
Evas_Object *win, *image;
|
|
|
|
Eina_Bool ok;
|
|
|
|
const char *icon_name;
|
|
|
|
|
2018-03-06 06:43:06 -08:00
|
|
|
char *args[] = { "exe" };
|
|
|
|
elm_init(1, args);
|
2017-06-05 00:33:27 -07:00
|
|
|
win = elm_win_add(NULL, "image", ELM_WIN_BASIC);
|
|
|
|
|
|
|
|
image = efl_add(EFL_UI_IMAGE_CLASS, win);
|
|
|
|
evas_object_show(image);
|
|
|
|
|
|
|
|
ok = efl_ui_image_icon_set(image, "folder");
|
|
|
|
ck_assert(ok);
|
|
|
|
icon_name = efl_ui_image_icon_get(image);
|
|
|
|
ck_assert_str_eq(icon_name, "folder");
|
|
|
|
|
|
|
|
ok = efl_ui_image_icon_set(image, "None");
|
|
|
|
ck_assert(ok == 0);
|
|
|
|
icon_name = efl_ui_image_icon_get(image);
|
2017-06-05 01:01:25 -07:00
|
|
|
ck_assert(icon_name == NULL);
|
2017-06-05 00:33:27 -07:00
|
|
|
|
|
|
|
elm_shutdown();
|
|
|
|
}
|
|
|
|
END_TEST
|
|
|
|
|
2014-06-10 19:07:15 -07:00
|
|
|
void elm_test_image(TCase *tc)
|
|
|
|
{
|
2018-02-14 12:04:24 -08:00
|
|
|
tcase_add_test(tc, elm_image_legacy_type_check);
|
|
|
|
tcase_add_test(tc, elm_atspi_role_get);
|
|
|
|
tcase_add_test(tc, elm_image_async_path);
|
|
|
|
tcase_add_test(tc, elm_image_async_mmap);
|
|
|
|
tcase_add_test(tc, efl_ui_image_icon);
|
2014-06-10 19:07:15 -07:00
|
|
|
}
|