aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkabeer khan <kabeer.khan@samsung.com>2015-04-16 18:47:44 +0200
committerCedric BAIL <cedric@osg.samsung.com>2015-04-16 19:21:45 +0200
commit351a30cfc7479005b4ee9d3191590d81cab11356 (patch)
tree1f36e7ae8df8c99f147877ced3c5e2715c3d838a
parentevas: fix bug in Evas_3D examples. (diff)
downloadefl-351a30cfc7479005b4ee9d3191590d81cab11356.tar.gz
eio: add new tests for eio.
Summary: Signed-off-by: kabeer khan <kabeer.khan@samsung.com> Reviewers: cedric Subscribers: cedric Differential Revision: https://phab.enlightenment.org/D2360 Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
-rw-r--r--src/Makefile_Eio.am3
-rw-r--r--src/tests/eio/eio_suite.c1
-rw-r--r--src/tests/eio/eio_suite.h1
-rw-r--r--src/tests/eio/eio_test_file.c233
4 files changed, 237 insertions, 1 deletions
diff --git a/src/Makefile_Eio.am b/src/Makefile_Eio.am
index 3543adc698..c7615844fc 100644
--- a/src/Makefile_Eio.am
+++ b/src/Makefile_Eio.am
@@ -63,7 +63,8 @@ tests_eio_eio_suite_SOURCES = \
tests/eio/eio_suite.c \
tests/eio/eio_model_test_file.c \
tests/eio/eio_model_test_monitor_add.c \
-tests/eio/eio_test_monitor.c
+tests/eio/eio_test_monitor.c \
+tests/eio/eio_test_file.c
tests_eio_eio_suite_CPPFLAGS = -I$(top_builddir)/src/lib/efl \
-DTESTS_SRC_DIR=\"$(top_srcdir)/src/tests/eio\" \
diff --git a/src/tests/eio/eio_suite.c b/src/tests/eio/eio_suite.c
index ecc52247b3..7b3de1bb30 100644
--- a/src/tests/eio/eio_suite.c
+++ b/src/tests/eio/eio_suite.c
@@ -21,6 +21,7 @@ static const Eio_Test_Case etc[] = {
{"Eio_Monitor", eio_test_monitor},
{"Eio Model", eio_model_test_file},
{"Eio Model Monitor", eio_model_test_monitor_add},
+ {"Eio File", eio_test_file},
{NULL, NULL}
};
diff --git a/src/tests/eio/eio_suite.h b/src/tests/eio/eio_suite.h
index d59a2ab6c0..d365f707b6 100644
--- a/src/tests/eio/eio_suite.h
+++ b/src/tests/eio/eio_suite.h
@@ -6,5 +6,6 @@
void eio_test_monitor(TCase *tc);
void eio_model_test_file(TCase *tc);
void eio_model_test_monitor_add(TCase *tc);
+void eio_test_file(TCase *tc);
#endif /* _EIO_SUITE_H */
diff --git a/src/tests/eio/eio_test_file.c b/src/tests/eio/eio_test_file.c
new file mode 100644
index 0000000000..7284c04b38
--- /dev/null
+++ b/src/tests/eio/eio_test_file.c
@@ -0,0 +1,233 @@
+#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 <Eio.h>
+#include <Ecore.h>
+
+#include "eio_suite.h"
+
+static int default_rights = 0777;
+int test_count = 0;
+
+static Eina_Bool
+_filter_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED, const char *file)
+{
+ char *last_slash = strrchr(file, '/');
+
+ //Check if it is a hidden file
+ if (last_slash != NULL && strlen(last_slash) > 1 && last_slash[1] == '.')
+ return EINA_FALSE;
+
+ return EINA_TRUE;
+}
+
+static Eina_Bool
+_delete_filter_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED,
+ const Eina_File_Direct_Info *info EINA_UNUSED)
+{
+ return EINA_TRUE;
+}
+
+static void
+_main_cb(void *data, Eio_File *handler EINA_UNUSED, const char *file)
+{
+ int *number_of_listed_files = (int *)data;
+
+ fprintf(stderr, "Processing file:%s\n", file);
+ (*number_of_listed_files)++;
+}
+
+static Eina_Bool
+_direct_filter_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED,
+ const Eina_File_Direct_Info *info)
+{
+ char *last_slash = strrchr(info->path, '/');
+
+ //Check if it is a hidden file
+ if (last_slash != NULL && strlen(last_slash) > 1 && last_slash[1] == '.')
+ return EINA_FALSE;
+
+ return EINA_TRUE;
+}
+
+static void
+_direct_main_cb(void *data, Eio_File *handler EINA_UNUSED, const Eina_File_Direct_Info *info)
+{
+ int *number_of_listed_files = (int *)data;
+
+ fprintf(stderr, "Processing file:%s\n", info->path);
+ (*number_of_listed_files)++;
+}
+
+static void
+_progress_cb(void *data, Eio_File *handler EINA_UNUSED, const Eio_Progress *info)
+{
+ int *number_of_listed_files = (int *)data;
+
+ fprintf(stderr, "Processing file:%s\n", info->source);
+ (*number_of_listed_files)++;
+}
+
+static void
+_done_cb(void *data, Eio_File *handler EINA_UNUSED)
+{
+ int *number_of_listed_files = (int *)data;
+ fail_if((*number_of_listed_files) != test_count);
+ ecore_main_loop_quit();
+}
+
+static void
+_error_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED, int error)
+{
+ fprintf(stderr, "Something wrong has happend:%s\n", strerror(error));
+ ecore_main_loop_quit();
+}
+
+Eina_Tmpstr*
+get_full_path(const char* tmpdirname, const char* filename)
+{
+ char full_path[PATH_MAX] = "";
+ eina_str_join(full_path, sizeof(full_path), '/', tmpdirname, filename);
+ return eina_tmpstr_add(full_path);
+}
+
+Eina_Tmpstr*
+get_eio_test_file_tmp_dir()
+{
+ Eina_Tmpstr *tmp_dir;
+
+ Eina_Bool created = eina_file_mkdtemp("EioFileTestXXXXXX", &tmp_dir);
+
+ if (!created)
+ {
+ return NULL;
+ }
+
+ return tmp_dir;
+}
+
+Eina_Tmpstr*
+create_test_dirs(Eina_Tmpstr *test_dirname)
+{
+ int i, fd;
+ const char *good_dirs[] =
+ {
+ "eio_file_ls_simple_dir",
+ "b."
+ };
+ const char *files[] =
+ {
+ ".hidden_file",
+ "~$b@:-*$a!{}",
+ "$b$a",
+ "normal_file"
+ };
+ int count = sizeof(good_dirs) / sizeof(const char *);
+ fail_if(test_dirname == NULL);
+
+ for (i = 0; i != count; ++i)
+ {
+ Eina_Tmpstr *dirname = get_full_path(test_dirname, good_dirs[i]);
+ fail_if(mkdir(dirname, default_rights) != 0);
+ eina_tmpstr_del(dirname);
+ }
+ count = sizeof(files) / sizeof(const char *);
+ for (i = 0; i != count; ++i)
+ {
+ Eina_Tmpstr *filename = get_full_path(test_dirname, files[i]);
+ fd = open(filename, O_RDWR|O_CREAT, default_rights);
+ fail_if(fd < 0);
+ fail_if(close(fd) != 0);
+ eina_tmpstr_del(filename);
+ }
+ Eina_Tmpstr *nested_dirname = get_full_path(test_dirname, good_dirs[0]);
+ for (i = 0; i != count; ++i)
+ {
+ Eina_Tmpstr *filename = get_full_path(nested_dirname, files[i]);
+ fd = open(filename, O_RDWR|O_CREAT, default_rights);
+ fail_if(fd < 0);
+ fail_if(close(fd) != 0);
+ eina_tmpstr_del(filename);
+ }
+ return nested_dirname;
+}
+
+START_TEST(eio_file_test_ls)
+{
+ int number_of_listed_files = 0, ret;
+
+ ret = ecore_init();
+ fail_if(ret < 1);
+ ret = eio_init();
+ fail_if(ret < 1);
+ ret = eina_init();
+ fail_if(ret < 1);
+
+ Eina_Tmpstr *test_dirname = get_eio_test_file_tmp_dir();
+ Eina_Tmpstr *nested_dirname = create_test_dirs(test_dirname);
+
+ eio_file_ls(test_dirname, _filter_cb, _main_cb, _done_cb, _error_cb,
+ &number_of_listed_files);
+ test_count = 5;
+ fail_if(number_of_listed_files != 0); //check asynchronous
+ ecore_main_loop_begin();
+
+ number_of_listed_files = 0;
+#ifdef _WIN32
+ eio_file_direct_ls(test_dirname, _direct_filter_cb, _direct_main_cb, _done_cb,
+ _error_cb, &number_of_listed_files);
+#else
+ eio_file_stat_ls(test_dirname, _direct_filter_cb, _direct_main_cb, _done_cb,
+ _error_cb, &number_of_listed_files);
+#endif
+ test_count = 5;
+ fail_if(number_of_listed_files != 0); //check asynchronous
+ ecore_main_loop_begin();
+
+ number_of_listed_files = 0;
+#ifdef _WIN32
+ eio_dir_direct_ls(test_dirname, _direct_filter_cb, _direct_main_cb, _done_cb,
+ _error_cb, &number_of_listed_files);
+#else
+ eio_dir_stat_ls(test_dirname, _direct_filter_cb, _direct_main_cb, _done_cb,
+ _error_cb, &number_of_listed_files);
+#endif
+ test_count = 8;
+ fail_if(number_of_listed_files != 0); //check asynchronous
+ ecore_main_loop_begin();
+
+ number_of_listed_files = 0;
+ eio_dir_unlink(nested_dirname, _delete_filter_cb, _progress_cb, _done_cb,
+ _error_cb, &number_of_listed_files);
+ test_count = 5; // 4 internal files + 1 nested_dir
+ fail_if(number_of_listed_files != 0); // check asynchronous
+ ecore_main_loop_begin();
+
+ number_of_listed_files = 0;
+ eio_dir_unlink(test_dirname, _delete_filter_cb, _progress_cb, _done_cb,
+ _error_cb, &number_of_listed_files);
+ test_count = 6; // 4 internal files + 1 dir + 1 test_dir
+ fail_if(number_of_listed_files != 0); // check asynchronous
+ ecore_main_loop_begin();
+
+ eina_tmpstr_del(nested_dirname);
+ eina_tmpstr_del(test_dirname);
+ eina_shutdown();
+ eio_shutdown();
+ ecore_shutdown();
+}
+END_TEST
+
+void
+eio_test_file(TCase *tc)
+{
+ tcase_add_test(tc, eio_file_test_ls);
+}
+