diff options
author | Vivek Ellur <vivek.ellur@samsung.com> | 2016-06-06 16:47:49 +0200 |
---|---|---|
committer | Stefan Schmidt <stefan@osg.samsung.com> | 2016-09-13 11:28:52 +0200 |
commit | fb73aabc61c5333d9461da19be15304b220d9e4e (patch) | |
tree | 1cae0404b63c4f9a95a1bda9971c2223865f7db7 | |
parent | 0ee0baf94e3c90c8b94c495e8a79df4c4e516cf6 (diff) | |
download | efl-fb73aabc61c5333d9461da19be15304b220d9e4e.tar.gz |
eio_eet: Added test suite for eio eet module.
Summary:
Added new test suite for eio eet module
Signed-off-by: Vivek Ellur <vivek.ellur@samsung.com>
Reviewers: cedric
Subscribers: stefan_schmidt, jpeg, cedric
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D3316
-rw-r--r-- | src/Makefile_Eio.am | 1 | ||||
-rw-r--r-- | src/tests/eio/eio_suite.c | 1 | ||||
-rw-r--r-- | src/tests/eio/eio_suite.h | 2 | ||||
-rw-r--r-- | src/tests/eio/eio_test_eet.c | 216 |
4 files changed, 219 insertions, 1 deletions
diff --git a/src/Makefile_Eio.am b/src/Makefile_Eio.am index 1aff2ce493..3787636359 100644 --- a/src/Makefile_Eio.am +++ b/src/Makefile_Eio.am @@ -85,6 +85,7 @@ tests/eio/eio_test_xattr.c \ tests/eio/eio_test_common.c \ tests/eio/eio_test_common.h \ tests/eio/eio_test_map.c \ +tests/eio/eio_test_eet.c \ tests/eio/eio_suite.h tests_eio_eio_suite_CPPFLAGS = -I$(top_builddir)/src/lib/efl \ diff --git a/src/tests/eio/eio_suite.c b/src/tests/eio/eio_suite.c index a252ed2141..e08cc8fd89 100644 --- a/src/tests/eio/eio_suite.c +++ b/src/tests/eio/eio_suite.c @@ -19,6 +19,7 @@ static const Efl_Test_Case etc[] = { {"Eio Job Xattr", eio_test_job_xattr}, #endif {"Eio_Map", eio_test_map}, + {"Eio_Eet", eio_test_eet}, {NULL, NULL} }; diff --git a/src/tests/eio/eio_suite.h b/src/tests/eio/eio_suite.h index 45a5a325da..83f0303f6a 100644 --- a/src/tests/eio/eio_suite.h +++ b/src/tests/eio/eio_suite.h @@ -12,5 +12,5 @@ void eio_test_job(TCase *tc); void eio_test_job_xattr(TCase *tc); void eio_test_xattr(TCase *tc); void eio_test_map(TCase *tc); - +void eio_test_eet(TCase *tc); #endif /* _EIO_SUITE_H */ diff --git a/src/tests/eio/eio_test_eet.c b/src/tests/eio/eio_test_eet.c new file mode 100644 index 0000000000..d261be3be5 --- /dev/null +++ b/src/tests/eio/eio_test_eet.c @@ -0,0 +1,216 @@ +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <stdio.h> +#include <unistd.h> +#include <string.h> +#include <sys/stat.h> +#include <fcntl.h> + +#include <Ecore.h> +#include <Eio.h> +#include <Eet.h> + +#include "eio_suite.h" + +Eet_File *ee; + +static void +_open_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED, Eet_File *ef) +{ + ee = ef; + ecore_main_loop_quit(); +} + +static void +_done_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED) +{ + ecore_main_loop_quit(); +} + +static void +_write_done_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED, int i) +{ + fail_if (i <= 0); + ecore_main_loop_quit(); +} + +static void +_read_done_cb(void *data, Eio_File *handler EINA_UNUSED, void *read_data, + unsigned int size) +{ + char *str = data; + char *read_str = read_data; + + fail_if(!read_str); + fail_if(size != strlen(str) + 1); + fail_if(memcmp(str, read_str, strlen(str) + 1) != 0); + + ecore_main_loop_quit(); +} + +static void +_error_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED, int error) +{ + fail(); + fprintf(stderr, "Error:%s\n", strerror(error)); + ecore_main_loop_quit(); +} + +static void +_eet_error_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED, Eet_Error err EINA_UNUSED) +{ + fail(); + ecore_main_loop_quit(); +} + +START_TEST(eio_test_eet_cipher_decipher) +{ + int ret; + char *file = strdup("/tmp/eio_eet_example_XXXXXX"); + const char *data = "This is the data to save in file"; + const char *key = "This is a secret key"; + Eio_File *ef; + + ecore_init(); + eet_init(); + eio_init(); + + ret = mkstemp(file); + fail_if(ret == -1); + + ef = eio_eet_open(file, EET_FILE_MODE_WRITE, _open_cb, _error_cb, NULL); + ecore_main_loop_begin(); + fail_if(!ef); + + ef = eio_eet_write_cipher(ee, "keys/tests", data, strlen(data) + 1, 0, + key, _write_done_cb, _error_cb, NULL); + ecore_main_loop_begin(); + fail_if(!ef); + + ef = eio_eet_close(ee, _done_cb, _eet_error_cb, NULL); + ecore_main_loop_begin(); + fail_if(!ef); + + ef = eio_eet_open(file, EET_FILE_MODE_READ, _open_cb, _error_cb, NULL); + ecore_main_loop_begin(); + fail_if(!ef); + + ef = eio_eet_read_cipher(ee, "keys/tests", key, _read_done_cb, + _error_cb, data); + ecore_main_loop_begin(); + fail_if(!ef); + + ef = eio_eet_close(ee, _done_cb, _eet_error_cb, NULL); + ecore_main_loop_begin(); + fail_if(!ef); + + eio_shutdown(); + eet_shutdown(); + ecore_shutdown(); +} +END_TEST + +typedef struct +{ + unsigned int id; + const char *name; +} Test_Struct; + +static Eet_Data_Descriptor *_test_struct_descriptor; + +static void +_test_struct_descriptor_init(void) +{ + Eet_Data_Descriptor_Class eddc; + + EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Test_Struct); + _test_struct_descriptor = eet_data_descriptor_stream_new(&eddc); + + EET_DATA_DESCRIPTOR_ADD_BASIC(_test_struct_descriptor, Test_Struct, + "id", id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_test_struct_descriptor, Test_Struct, + "name", name, EET_T_STRING); +} + +static Test_Struct * +_test_struct_new(void) +{ + Test_Struct *tc = calloc(1, sizeof(Test_Struct)); + fail_if(!tc); + + tc->id = 1234; + tc->name = "eio_eet_test"; + + return tc; +} + +static void +_data_read_done_cb(void *data, Eio_File *handler EINA_UNUSED, void *decoded) +{ + Test_Struct *res = decoded; + Test_Struct *orig = data; + + fail_if(!res); + fail_if(res->id != orig->id); + fail_if(strcmp(res->name, orig->name) != 0); + ecore_main_loop_quit(); +} + +START_TEST(eio_test_eet_data_cipher_decipher) +{ + int ret; + char *file = strdup("/tmp/eio_eet_example_XXXXXX"); + const char *key = "This is a secret key"; + Eio_File *ef; + Test_Struct *tc; + + ecore_init(); + eet_init(); + eio_init(); + + _test_struct_descriptor_init(); + tc = _test_struct_new(); + + ret = mkstemp(file); + fail_if(ret == -1); + + ef = eio_eet_open(file, EET_FILE_MODE_WRITE, _open_cb, _error_cb, NULL); + ecore_main_loop_begin(); + fail_if(!ef); + + ef = eio_eet_data_write_cipher(ee, _test_struct_descriptor, "test", + key, tc, 0, _write_done_cb, _error_cb, NULL); + ecore_main_loop_begin(); + fail_if(!ef); + + ef = eio_eet_close(ee, _done_cb, _eet_error_cb, NULL); + ecore_main_loop_begin(); + fail_if(!ef); + + ef = eio_eet_open(file, EET_FILE_MODE_READ, _open_cb, _error_cb, NULL); + ecore_main_loop_begin(); + fail_if(!ef); + + ef = eio_eet_data_read_cipher(ee, _test_struct_descriptor, "test", + key, _data_read_done_cb, _error_cb, tc); + ecore_main_loop_begin(); + fail_if(!ef); + + ef = eio_eet_close(ee, _done_cb, _eet_error_cb, NULL); + ecore_main_loop_begin(); + fail_if(!ef); + + eio_shutdown(); + eet_shutdown(); + ecore_shutdown(); +} +END_TEST + +void +eio_test_eet(TCase *tc) +{ + tcase_add_test(tc, eio_test_eet_cipher_decipher); + tcase_add_test(tc, eio_test_eet_data_cipher_decipher); +} |