efl

Форк
0
/
eio_test_map.c 
96 строк · 2.1 Кб
1
#ifdef HAVE_CONFIG_H
2
# include <config.h>
3
#endif
4

5
#include <stdio.h>
6
#include <unistd.h>
7
#include <string.h>
8
#include <sys/stat.h>
9
#include <fcntl.h>
10

11
#include <Ecore.h>
12
#include <Eio.h>
13
#include <Eet.h>
14

15
#include "eio_suite.h"
16

17
Eina_File *eie;
18

19
static void
20
_done_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED)
21
{
22
   ecore_main_loop_quit();
23
}
24

25
static void
26
_open_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED, Eina_File *ef)
27
{
28
   eie = ef;
29
   ecore_main_loop_quit();
30
}
31

32
static Eina_Bool
33
_filter_cb(void *data, Eio_File *handler EINA_UNUSED, void *map, size_t length)
34
{
35
   char *str = data;
36
   size_t len = strlen(str);
37

38
   fail_if(len != length);
39
   fail_if(memcmp(data, map, length) != 0);
40
   return EINA_TRUE;
41
}
42

43
static void
44
_map_cb(void *datai EINA_UNUSED, Eio_File *handler EINA_UNUSED, void *map EINA_UNUSED, size_t length EINA_UNUSED)
45
{
46
   ecore_main_loop_quit();
47
}
48

49
static void
50
_error_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED, int error)
51
{
52
   fprintf(stderr, "Error:%s\n", strerror(error));
53
   ecore_main_loop_quit();
54
}
55

56
EFL_START_TEST(eio_test_map_simple)
57
{
58
   int fd;
59
   const char *file = "eio_map_exampleXXXXXX.txt";
60
   const char *data = "This is the data to save in file";
61
   Eio_File *ef;
62
   Eina_Tmpstr *file_path;
63

64
   fd = eina_file_mkstemp(file, &file_path);
65
   fail_if(fd < 0);
66
   fail_if(write(fd, data, strlen(data)) != (ssize_t)strlen(data));
67
   close(fd);
68

69
   ef = eio_file_open(file_path, EINA_FALSE, _open_cb, _error_cb, NULL);
70
   ecore_main_loop_begin();
71
   fail_if(!ef);
72

73
   ef = eio_file_map_all(eie, EINA_FILE_POPULATE, _filter_cb, _map_cb,
74
                    _error_cb, data);
75
   ecore_main_loop_begin();
76
   fail_if(!ef);
77

78
   ef = eio_file_map_new(eie, EINA_FILE_WILLNEED, 0, strlen(data), _filter_cb,
79
                         _map_cb, _error_cb, data);
80
   ecore_main_loop_begin();
81
   fail_if(!ef);
82

83
   ef = eio_file_close(eie, _done_cb, _error_cb, NULL);
84
   ecore_main_loop_begin();
85
   fail_if(!ef);
86

87
   unlink(file_path);
88
   eina_tmpstr_del(file_path);
89
}
90
EFL_END_TEST
91

92
void
93
eio_test_map(TCase *tc)
94
{
95
   tcase_add_test(tc, eio_test_map_simple);
96
}
97

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.