ecore: remove tests for ecore_thread_promise_run.

This commit is contained in:
Cedric BAIL 2016-11-07 10:47:31 -08:00
parent e1e28ce320
commit af3788439b
1 changed files with 0 additions and 279 deletions

View File

@ -6,186 +6,6 @@
#include "ecore_suite.h"
#include <time.h>
void promised_thread(const void* data EINA_UNUSED, Eina_Promise_Owner* promise, Ecore_Thread* thread EINA_UNUSED)
{
eina_promise_owner_value_set(promise, NULL, NULL);
}
void promise_callback(void* data EINA_UNUSED, void* value EINA_UNUSED)
{
ecore_main_loop_quit();
}
START_TEST(ecore_test_promise)
{
Eina_Promise* promise;
ecore_init();
ecore_thread_promise_run(&promised_thread, NULL, NULL, &promise);
eina_promise_then(promise, &promise_callback, NULL, NULL);
ecore_main_loop_begin();
ecore_shutdown();
}
END_TEST
void promise_error_thread(const void* data EINA_UNUSED, Eina_Promise_Owner* promise, Ecore_Thread* thread EINA_UNUSED)
{
eina_promise_owner_error_set(promise, ENOMEM);
}
void promise_error_callback(void* data EINA_UNUSED, Eina_Error error)
{
ck_assert(error == ENOMEM);
ecore_main_loop_quit();
}
START_TEST(ecore_test_promise_error)
{
Eina_Promise* promise;
ecore_init();
ecore_thread_promise_run(&promise_error_thread, NULL, NULL, &promise);
eina_promise_then(promise, NULL, &promise_error_callback, NULL);
ecore_main_loop_begin();
ecore_shutdown();
}
END_TEST
START_TEST(ecore_test_promise_all)
{
Eina_Promise* promise;
Eina_Promise* first[2] = { NULL, NULL };
ecore_init();
ecore_thread_promise_run(&promised_thread, NULL, NULL, &first[0]);
promise = eina_promise_all(eina_carray_iterator_new((void**)&first[0]));
eina_promise_then(promise, &promise_callback, NULL, NULL);
ecore_main_loop_begin();
ecore_shutdown();
}
END_TEST
void promise_callback2(void* data, void* value EINA_UNUSED)
{
if(++(*(int*)data) == 2)
ecore_main_loop_quit();
}
START_TEST(ecore_test_promise_all_then_then)
{
Eina_Promise* promise;
Eina_Promise* first[2] = { NULL, NULL };
ecore_init();
int i = 0;
ecore_thread_promise_run(&promised_thread, NULL, NULL, &first[0]);
eina_promise_then(first[0], &promise_callback2, NULL, &i);
promise = eina_promise_all(eina_carray_iterator_new((void**)&first[0]));
eina_promise_then(promise, &promise_callback2, NULL, &i);
ecore_main_loop_begin();
ecore_shutdown();
}
END_TEST
struct sync_data
{
Eina_Lock lock;
Eina_Condition cond;
Eina_Bool var;
};
void promised_exit_thread(struct sync_data* data EINA_UNUSED, Eina_Promise_Owner* promise, Ecore_Thread* thread EINA_UNUSED)
{
eina_promise_owner_value_set(promise, NULL, NULL);
eina_lock_take(&data->lock);
data->var = EINA_TRUE;
eina_condition_broadcast(&data->cond);
eina_lock_release(&data->lock);
}
static void _ecore_test_promise_then_after_thread_finished_main_cb()
{
Eina_Promise* promise;
Ecore_Thread* thread;
struct sync_data data;
data.var = EINA_FALSE;
eina_lock_new(&data.lock);
eina_condition_new(&data.cond, &data.lock);
thread = ecore_thread_promise_run((Ecore_Thread_Promise_Cb)&promised_exit_thread, NULL, &data, &promise);
eina_lock_take(&data.lock);
while(!data.var)
{
eina_condition_wait(&data.cond);
}
eina_lock_release(&data.lock);
eina_promise_then(promise, &promise_callback, NULL, NULL);
while(ecore_thread_wait(thread, 1.0) != EINA_TRUE); // join thread
}
START_TEST(ecore_test_promise_then_after_thread_finished)
{
ecore_init();
ecore_job_add(&_ecore_test_promise_then_after_thread_finished_main_cb, NULL);
ecore_main_loop_begin();
ecore_shutdown();
}
END_TEST
static void _ecore_test_promise_then_after_thread_finished_all_main_cb()
{
Eina_Promise* first[] = {NULL, NULL};
Ecore_Thread* thread;
Eina_Promise* promise;
struct sync_data data;
data.var = EINA_FALSE;
eina_lock_new(&data.lock);
eina_condition_new(&data.cond, &data.lock);
thread = ecore_thread_promise_run((Ecore_Thread_Promise_Cb)&promised_exit_thread, NULL, &data, &first[0]);
promise = eina_promise_all(eina_carray_iterator_new((void**)&first[0]));
eina_lock_take(&data.lock);
while(!data.var)
{
eina_condition_wait(&data.cond);
}
eina_lock_release(&data.lock);
eina_promise_then(promise, &promise_callback, NULL, NULL);
while(ecore_thread_wait(thread, 1.0) != EINA_TRUE); // join thread
}
START_TEST(ecore_test_promise_then_after_thread_finished_all)
{
ecore_init();
ecore_job_add(&_ecore_test_promise_then_after_thread_finished_all_main_cb, NULL);
ecore_main_loop_begin();
ecore_shutdown();
}
END_TEST
static void
_ecore_test_promise_normal_lifetime_cb(void* data EINA_UNUSED, void* value EINA_UNUSED)
{
@ -285,97 +105,6 @@ START_TEST(ecore_test_promise_immediate_set_lifetime_all)
}
END_TEST
struct _condition_var
{
Eina_Lock lock;
Eina_Condition condvar;
Eina_Bool boolean;
};
typedef struct _condition_var _condition_var;
static void promise_cancel_thread(const void* data, Eina_Promise_Owner* promise EINA_UNUSED, Ecore_Thread* thread EINA_UNUSED)
{
_condition_var* v = (void*)data;
eina_lock_take(&v->lock);
while(!v->boolean)
eina_condition_wait(&v->condvar);
eina_lock_release(&v->lock);
}
static void _cancel_callback(const void* data, Eina_Promise_Owner* promise, Ecore_Thread* thread EINA_UNUSED)
{
_condition_var* v = (void*)data;
eina_lock_take(&v->lock);
v->boolean = EINA_TRUE;
eina_condition_broadcast(&v->condvar);
eina_lock_release(&v->lock);
eina_promise_owner_value_set(promise, NULL, NULL);
}
static void _cancel_promise_callback(void* data EINA_UNUSED, Eina_Error value)
{
ck_assert(value == EINA_ERROR_PROMISE_CANCEL);
ecore_main_loop_quit();
}
START_TEST(ecore_test_promise_cancel_promise)
{
_condition_var v = {.boolean = EINA_FALSE};
Eina_Promise* promise;
ecore_init();
eina_lock_new(&v.lock);
eina_condition_new(&v.condvar, &v.lock);
ecore_thread_promise_run(&promise_cancel_thread, &_cancel_callback, &v, &promise);
eina_promise_then(promise, NULL, &_cancel_promise_callback, NULL);
eina_promise_cancel(promise);
ecore_main_loop_begin();
eina_condition_free(&v.condvar);
eina_lock_free(&v.lock);
ecore_shutdown();
}
END_TEST
static void promise_progress_thread(const void* data EINA_UNUSED,
Eina_Promise_Owner* promise, Ecore_Thread* thread EINA_UNUSED)
{
void* v = (void*)1;
eina_promise_owner_progress(promise, v);
// Release the promise to avoid leaks
eina_promise_owner_value_set(promise, NULL, NULL);
}
static void _progress_callback(void* data EINA_UNUSED, void* value)
{
ck_assert(value == (void*)1);
ecore_main_loop_quit();
}
START_TEST(ecore_test_promise_progress_promise)
{
Eina_Promise* promise;
ecore_init();
ecore_thread_promise_run(&promise_progress_thread, NULL, NULL, &promise);
eina_promise_progress_cb_add(promise, &_progress_callback, NULL, NULL);
ecore_main_loop_begin();
ecore_shutdown();
}
END_TEST
typedef struct _Future_Ok Future_Ok;
struct _Future_Ok
{
@ -1231,18 +960,10 @@ END_TEST
void ecore_test_ecore_promise(TCase *tc)
{
tcase_add_test(tc, ecore_test_promise);
tcase_add_test(tc, ecore_test_promise_error);
tcase_add_test(tc, ecore_test_promise_all);
tcase_add_test(tc, ecore_test_promise_all_then_then);
tcase_add_test(tc, ecore_test_promise_then_after_thread_finished);
tcase_add_test(tc, ecore_test_promise_then_after_thread_finished_all);
tcase_add_test(tc, ecore_test_promise_normal_lifetime);
tcase_add_test(tc, ecore_test_promise_normal_lifetime_all);
tcase_add_test(tc, ecore_test_promise_immediate_set_lifetime);
tcase_add_test(tc, ecore_test_promise_immediate_set_lifetime_all);
tcase_add_test(tc, ecore_test_promise_cancel_promise);
tcase_add_test(tc, ecore_test_promise_progress_promise);
tcase_add_test(tc, efl_test_promise_future_success);
tcase_add_test(tc, efl_test_promise_future_cancel);