efl/src/tests/ecore_wl2/ecore_wl2_test_display.c

322 lines
6.8 KiB
C

#include "ecore_wl2_suite.h"
#include "ecore_wl2_tests_helpers.h"
static Ecore_Wl2_Display *
_display_setup(void)
{
return ecore_wl2_display_create(NULL);
}
EFL_START_TEST(wl2_display_create)
{
Ecore_Wl2_Display *disp;
disp = _display_setup();
ck_assert(disp != NULL);
}
EFL_END_TEST
EFL_START_TEST(wl2_display_destroy)
{
Ecore_Wl2_Display *disp;
disp = _display_setup();
ck_assert(disp != NULL);
ecore_wl2_display_destroy(disp);
}
EFL_END_TEST
EFL_START_TEST(wl2_display_get)
{
Ecore_Wl2_Display *disp;
struct wl_display *wdisp;
disp = _display_setup();
ck_assert(disp != NULL);
wdisp = ecore_wl2_display_get(disp);
ck_assert(wdisp != NULL);
}
EFL_END_TEST
EFL_START_TEST(wl2_display_name_get)
{
Ecore_Wl2_Display *disp;
disp = _display_setup();
ck_assert(disp != NULL);
ck_assert(ecore_wl2_display_name_get(disp) != NULL);
}
EFL_END_TEST
EFL_START_TEST(wl2_display_connect)
{
Ecore_Wl2_Display *disp;
disp = _display_connect();
ck_assert(disp != NULL);
}
EFL_END_TEST
EFL_START_TEST(wl2_display_disconnect)
{
Ecore_Wl2_Display *disp;
disp = _display_connect();
ck_assert(disp != NULL);
ecore_wl2_display_disconnect(disp);
}
EFL_END_TEST
EFL_START_TEST(wl2_display_registry_get)
{
Ecore_Wl2_Display *disp;
disp = _display_connect();
ck_assert(disp != NULL);
ck_assert(ecore_wl2_display_registry_get(disp) != NULL);
}
EFL_END_TEST
EFL_START_TEST(wl2_display_shm_get)
{
Ecore_Wl2_Display *disp;
struct wl_shm *shm;
disp = _display_connect();
ck_assert(disp != NULL);
shm = ecore_wl2_display_shm_get(disp);
ck_assert(shm != NULL);
}
EFL_END_TEST
EFL_START_TEST(wl2_display_dmabuf_get)
{
Ecore_Wl2_Display *disp;
void *dma;
disp = _display_connect();
ck_assert(disp != NULL);
dma = ecore_wl2_display_dmabuf_get(disp);
ck_assert(dma != NULL);
}
EFL_END_TEST
EFL_START_TEST(wl2_display_globals_get)
{
Ecore_Wl2_Display *disp;
Ecore_Wl2_Global *global;
Eina_Iterator *itr;
void *data;
disp = _display_connect();
ck_assert(disp != NULL);
itr = ecore_wl2_display_globals_get(disp);
ck_assert(itr != NULL);
EINA_ITERATOR_FOREACH(itr, data)
{
global = (Ecore_Wl2_Global *)data;
printf("Interface: <%s>\n", global->interface);
}
eina_iterator_free(itr);
}
EFL_END_TEST
EFL_START_TEST(wl2_display_screen_size_get)
{
Ecore_Wl2_Display *disp;
int w, h;
disp = _display_connect();
ck_assert(disp != NULL);
ecore_wl2_display_screen_size_get(disp, &w, &h);
ck_assert_int_ne(w, 0);
ck_assert_int_ne(h, 0);
}
EFL_END_TEST
EFL_START_TEST(wl2_display_inputs_get)
{
Ecore_Wl2_Display *disp;
Eina_Iterator *itr;
disp = _display_connect();
ck_assert(disp != NULL);
itr = ecore_wl2_display_inputs_get(disp);
ck_assert(itr != NULL);
eina_iterator_free(itr);
}
EFL_END_TEST
EFL_START_TEST(wl2_display_compositor_version_get)
{
Ecore_Wl2_Display *disp;
int ver;
disp = _display_connect();
ck_assert(disp != NULL);
ver = ecore_wl2_display_compositor_version_get(disp);
ck_assert_int_ne(ver, 0);
}
EFL_END_TEST
Ecore_Wl2_Input *test_input;
static Eina_Bool
_test_input_find_configure_complete(void *data, int type EINA_UNUSED, void *event EINA_UNUSED)
{
Test_Data *td = data;
/* NB: Enlightenment uses "seat0" here, but Weston uses "default" */
if (getenv("E_START"))
test_input = ecore_wl2_display_input_find_by_name(td->display, "seat0");
else
test_input = ecore_wl2_display_input_find_by_name(td->display, "default");
ck_assert(test_input != NULL);
test_input = NULL;
if (getenv("E_START"))
{
test_input = ecore_wl2_display_input_find(td->display, 13);
ck_assert(test_input != NULL);
}
ecore_main_loop_quit();
return ECORE_CALLBACK_PASS_ON;
}
EFL_START_TEST(wl2_display_input_find)
{
Test_Data *td;
ecore_wl2_init();
td = calloc(1, sizeof(Test_Data));
td->width = WIDTH;
td->height = HEIGHT;
td->display = _display_connect();
ck_assert(td->display != NULL);
td->win = _window_create(td->display);
ck_assert(td->win != NULL);
ecore_wl2_window_show(td->win);
td->handler = ecore_event_handler_add(ECORE_WL2_EVENT_WINDOW_CONFIGURE_COMPLETE,
_test_input_find_configure_complete, td);
ecore_main_loop_begin();
ecore_wl2_shutdown();
free(td);
}
EFL_END_TEST
EFL_START_TEST(wl2_display_flush)
{
Ecore_Wl2_Display *disp;
disp = _display_connect();
ck_assert(disp != NULL);
//FIXME: Ambiguous way to check with code to make sure flushing was successful.
// We might think it's being verified by another TC that actually draws to the screen buffer ...
ecore_wl2_display_flush(disp);
}
EFL_END_TEST
static Eina_Bool
_test_sync_done(void *data, int type EINA_UNUSED, void *event EINA_UNUSED)
{
Test_Data *td = data;
Eina_Bool ret;
ret = ecore_wl2_display_sync_is_done(td->display);
fail_if(ret == EINA_FALSE);
ecore_main_loop_quit();
return ECORE_CALLBACK_PASS_ON;
}
EFL_START_TEST(wl2_display_sync_is_done)
{
Test_Data *td;
ecore_wl2_init();
td = calloc(1, sizeof(Test_Data));
td->width = WIDTH;
td->height = HEIGHT;
td->display = _display_connect();
ck_assert(td->display != NULL);
td->win = _window_create(td->display);
ck_assert(td->win != NULL);
ecore_wl2_window_show(td->win);
ecore_event_handler_add(ECORE_WL2_EVENT_SYNC_DONE,
_test_sync_done, td);
ecore_main_loop_begin();
ecore_wl2_shutdown();
free(td);
}
EFL_END_TEST
void
ecore_wl2_test_display(TCase *tc)
{
if ((!getenv("WAYLAND_DISPLAY")) && (getenv("XDG_RUNTIME_DIR")))
{
/* tests here are for server-side functions */
printf("No Wayland Compositor detected. Testing server-side functions\n");
tcase_add_test(tc, wl2_display_create);
tcase_add_test(tc, wl2_display_destroy);
tcase_add_test(tc, wl2_display_get);
tcase_add_test(tc, wl2_display_name_get);
}
else if (getenv("WAYLAND_DISPLAY"))
{
/* tests here are for client-side functions */
printf("Wayland Compositor detected. Testing client-side functions\n");
tcase_add_test(tc, wl2_display_connect);
tcase_add_test(tc, wl2_display_disconnect);
tcase_add_test(tc, wl2_display_registry_get);
tcase_add_test(tc, wl2_display_shm_get);
tcase_add_test(tc, wl2_display_globals_get);
tcase_add_test(tc, wl2_display_inputs_get);
tcase_add_test(tc, wl2_display_compositor_version_get);
tcase_add_test(tc, wl2_display_input_find);
tcase_add_test(tc, wl2_display_flush);
tcase_add_test(tc, wl2_display_sync_is_done);
}
if (!getenv("E_START"))
{
tcase_add_test(tc, wl2_display_dmabuf_get);
tcase_add_test(tc, wl2_display_screen_size_get);
}
}