11
#include <Ecore_File.h>
15
#include "eio_test_common.h"
20
static char *str_attr = "user.name";
21
static char *str_data = "Vivek Ellur";
22
static char *int_attr = "user.id";
23
static int int_data = 1234;
24
static char *double_attr = "user.size";
25
static double double_data = 123.456;
27
static const char *attribute[] =
33
static const char *attr_data[] =
35
"This is a test file",
36
"This line is a comment",
37
"This file has extra attributes"
41
_filter_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED, const char *attr EINA_UNUSED)
47
_main_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED, const char *attr)
49
int *num_of_attr = (int *)data;
52
for (i = 0; i < sizeof (attribute) / sizeof (attribute[0]); ++i)
53
if (strcmp(attr, attribute[i]) == 0)
61
_done_cb(void *data, Eio_File *handler EINA_UNUSED)
64
int *num_of_attr = (int *)data;
68
if (((*num_of_attr) + 1) == (sizeof (attribute) / sizeof (attribute[0])))
69
ecore_main_loop_quit();
73
_done_once_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED)
75
ecore_main_loop_quit();
79
_done_file_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED)
81
int *num_of_attr = (int *)data;
83
fail_if( (*num_of_attr) != (sizeof (attribute) / sizeof (attribute[0])));
84
ecore_main_loop_quit();
88
_done_get_cb(void *data, Eio_File *handler EINA_UNUSED, const char *name, unsigned int len EINA_UNUSED)
91
int i = (int)(uintptr_t)data;
93
fail_if(strcmp(name, attr_data[i]) != 0);
95
if ((i + 1) == (sizeof (attribute) / sizeof (attribute[0])))
96
ecore_main_loop_quit();
100
_done_string_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED, const char *xattr_string)
102
fail_if(strcmp(xattr_string, str_data) != 0);
104
ecore_main_loop_quit();
108
_done_int_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED, int xattr_int)
110
fail_if(xattr_int != int_data);
112
ecore_main_loop_quit();
116
_done_double_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED, double xattr_double)
118
fail_if(!EINA_DBL_EQ(xattr_double, double_data));
120
ecore_main_loop_quit();
124
_error_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED, int error)
127
fprintf(stderr, "Something has gone wrong:%s\n", strerror(error));
130
ecore_main_loop_quit();
133
EFL_START_TEST(eio_test_xattr_set)
135
char *filename = "eio-tmpfile";
136
Eina_Tmpstr *test_file_path;
138
int num_of_attr = 0, fd;
141
test_file_path = get_full_path(XATTR_TEST_DIR, filename);
142
fd = open(test_file_path,
143
O_WRONLY | O_CREAT | O_TRUNC,
144
S_IRWXU | S_IRWXG | S_IRWXO);
147
for (i = 0; i < sizeof(attribute) / sizeof(attribute[0]); ++i)
149
fp = eio_file_xattr_set(test_file_path, attribute[i],
150
attr_data[i], strlen(attr_data[i]),
152
_done_cb, _error_cb, &num_of_attr);
154
fail_if(num_of_attr != 0);
158
ecore_main_loop_begin();
160
for (i = 0; i < sizeof(attribute) / sizeof(attribute[0]); ++i)
162
fp = eio_file_xattr_get(test_file_path, attribute[i],
163
_done_get_cb, _error_cb, (void*)(uintptr_t) i);
167
ecore_main_loop_begin();
170
fp = eio_file_xattr(test_file_path,
171
_filter_cb, _main_cb, _done_file_cb, _error_cb,
173
fail_if(num_of_attr != 0);
176
ecore_main_loop_begin();
179
unlink(test_file_path);
180
eina_tmpstr_del(test_file_path);
184
EFL_START_TEST(eio_test_xattr_types_set)
186
char *filename = "eio-tmpfile";
188
Eina_Tmpstr *test_file_path;
189
int fd, num_of_attr=0;
192
test_file_path = get_full_path(XATTR_TEST_DIR, filename);
193
fd = open(test_file_path,
194
O_WRONLY | O_CREAT | O_TRUNC,
195
S_IRWXU | S_IRWXG | S_IRWXO);
197
fp = eio_file_xattr_string_set(test_file_path, str_attr,
198
str_data, EINA_XATTR_INSERT,
199
_done_once_cb, _error_cb, &num_of_attr);
201
fail_if(num_of_attr != 0);
204
ecore_main_loop_begin();
206
fp = eio_file_xattr_string_get(test_file_path, str_attr,
207
_done_string_cb, _error_cb, NULL);
210
ecore_main_loop_begin();
212
fp = eio_file_xattr_int_set(test_file_path, int_attr,
213
int_data, EINA_XATTR_INSERT,
214
_done_once_cb, _error_cb, &num_of_attr);
216
fail_if(num_of_attr != 0);
219
ecore_main_loop_begin();
221
fp = eio_file_xattr_int_get(test_file_path, int_attr,
222
_done_int_cb, _error_cb, NULL);
225
ecore_main_loop_begin();
227
fp = eio_file_xattr_double_set(test_file_path, double_attr,
228
double_data, EINA_XATTR_INSERT,
229
_done_once_cb, _error_cb, &num_of_attr);
231
fail_if(num_of_attr != 0);
234
ecore_main_loop_begin();
236
fp = eio_file_xattr_double_get(test_file_path, double_attr,
237
_done_double_cb, _error_cb, NULL);
240
ecore_main_loop_begin();
243
unlink(test_file_path);
244
eina_tmpstr_del(test_file_path);
249
void eio_test_xattr(TCase *tc)
252
tcase_add_test(tc, eio_test_xattr_set);
253
tcase_add_test(tc, eio_test_xattr_types_set);