efl/src/tests/eio/eio_test_map.c

101 lines
2.1 KiB
C
Raw Normal View History

#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"
Eina_File *ee;
static void
_done_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED)
{
ecore_main_loop_quit();
}
static void
_open_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED, Eina_File *ef)
{
ee = ef;
ecore_main_loop_quit();
}
static Eina_Bool
_filter_cb(void *data, Eio_File *handler EINA_UNUSED, void *map, size_t length)
{
char *str = data;
size_t len = strlen(str);
fail_if(len != length);
fail_if(memcmp(data, map, length) != 0);
return EINA_TRUE;
}
static void
_map_cb(void *datai EINA_UNUSED, Eio_File *handler EINA_UNUSED, void *map EINA_UNUSED, size_t length EINA_UNUSED)
{
ecore_main_loop_quit();
}
static void
_error_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED, int error)
{
fprintf(stderr, "Error:%s\n", strerror(error));
ecore_main_loop_quit();
}
START_TEST(eio_test_map_simple)
{
int fd;
char *file = strdup("/tmp/eio_map_example.txt");
const char *data = "This is the data to save in file";
Eio_File *ef;
ecore_init();
eina_init();
eio_init();
fd = open(file, O_WRONLY | O_CREAT | O_TRUNC, S_IRWXU | S_IRWXG);
fail_if(fd == 0);
fail_if(write(fd, data, strlen(data)) != (ssize_t)strlen(data));
close(fd);
ef = eio_file_open(file, EINA_FALSE, _open_cb, _error_cb, NULL);
ecore_main_loop_begin();
fail_if(!ef);
ef = eio_file_map_all(ee, EINA_FILE_POPULATE, _filter_cb, _map_cb,
_error_cb, data);
ecore_main_loop_begin();
fail_if(!ef);
ef = eio_file_map_new(ee, EINA_FILE_WILLNEED, 0, strlen(data), _filter_cb,
_map_cb, _error_cb, data);
ecore_main_loop_begin();
fail_if(!ef);
ef = eio_file_close(ee, _done_cb, _error_cb, NULL);
ecore_main_loop_begin();
fail_if(!ef);
eio_shutdown();
eina_shutdown();
ecore_shutdown();
}
END_TEST
void
eio_test_map(TCase *tc)
{
tcase_add_test(tc, eio_test_map_simple);
}