18 #include "eet_suite.h"
20 START_TEST(eet_test_init)
32 typedef struct _Eet_Test_Basic_Type Eet_Test_Basic_Type;
33 struct _Eet_Test_Basic_Type
47 unsigned long long ul;
48 Eet_Test_Basic_Type *empty;
49 Eet_Test_Basic_Type *with;
52 #define EET_TEST_CHAR 0x42
53 #define EET_TEST_SHORT 0x4224
54 #define EET_TEST_INT 0x42211224
55 #define EET_TEST_LONG_LONG 0x84CB42211224BC48
56 #define EET_TEST_STRING "my little test with escape \\\""
57 #define EET_TEST_KEY1 "key1"
58 #define EET_TEST_KEY2 "key2"
59 #define EET_TEST_FLOAT 123.45689
60 #define EET_TEST_FLOAT2 1.0
61 #define EET_TEST_FLOAT3 0.25
62 #define EET_TEST_FLOAT4 0.0001234
63 #define EET_TEST_DOUBLE 123456789.9876543210
64 #define EET_TEST_DOUBLE2 1.0
65 #define EET_TEST_DOUBLE3 0.25
66 #define EET_TEST_FILE_KEY1 "keys/data/1"
67 #define EET_TEST_FILE_KEY2 "keys/data/2"
68 #define EET_TEST_FILE_IMAGE "keys/images/"
70 typedef struct _Eet_Test_Image Eet_Test_Image;
71 struct _Eet_Test_Image
79 static const Eet_Test_Image test_noalpha = {
82 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000,
83 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000,
84 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00,
85 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA,
86 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000,
87 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000,
88 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00,
89 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA
93 static const Eet_Test_Image test_alpha = {
96 0x0FAA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x0F110000,
97 0x0000AA00, 0x0F0000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x0F110000, 0x00AA0000,
98 0x000000AA, 0x00110000, 0x0FAA0000, 0x0000AA00, 0x000000AA, 0x0F110000, 0x00AA0000, 0x0000AA00,
99 0x00110000, 0x00AA0000, 0x0000AA00, 0x0F0000AA, 0x0F110000, 0x00AA0000, 0x0000AA00, 0x000000AA,
100 0x00AA0000, 0x0000AA00, 0x000000AA, 0x0F110000, 0x0FAA0000, 0x0000AA00, 0x000000AA, 0x00110000,
101 0x0000AA00, 0x000000AA, 0x0F110000, 0x00AA0000, 0x0000AA00, 0x0F0000AA, 0x00110000, 0x00AA0000,
102 0x000000AA, 0x0F110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x0FAA0000, 0x0000AA00,
103 0x0F110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x0F0000AA
108 _eet_test_basic_set(Eet_Test_Basic_Type *res, int i)
110 res->c = EET_TEST_CHAR;
111 res->s = EET_TEST_SHORT;
112 res->i = EET_TEST_INT + i;
113 res->l = EET_TEST_LONG_LONG;
114 res->str = EET_TEST_STRING;
115 res->istr = EET_TEST_STRING;
116 res->f1 = - EET_TEST_FLOAT;
117 res->d = - EET_TEST_DOUBLE;
118 res->f2 = EET_TEST_FLOAT4;
119 res->uc = EET_TEST_CHAR;
120 res->us = EET_TEST_SHORT;
121 res->ui = EET_TEST_INT;
122 res->ul = EET_TEST_LONG_LONG;
128 Eet_Test_Basic_Type *tmp;
130 tmp = malloc(sizeof (Eet_Test_Basic_Type));
134 tmp->c = EET_TEST_CHAR;
135 tmp->s = EET_TEST_SHORT;
136 tmp->i = EET_TEST_INT + i + 1;
137 tmp->l = EET_TEST_LONG_LONG;
138 tmp->str = EET_TEST_STRING;
139 tmp->istr = EET_TEST_STRING;
140 tmp->f1 = - EET_TEST_FLOAT;
141 tmp->d = - EET_TEST_DOUBLE;
142 tmp->f2 = EET_TEST_FLOAT4;
143 tmp->uc = EET_TEST_CHAR;
144 tmp->us = EET_TEST_SHORT;
145 tmp->ui = EET_TEST_INT;
146 tmp->ul = EET_TEST_LONG_LONG;
153 _eet_test_basic_check(Eet_Test_Basic_Type *result, int i)
157 fail_if(result->c != EET_TEST_CHAR);
158 fail_if(result->s != EET_TEST_SHORT);
159 fail_if(result->i != EET_TEST_INT + i);
160 fail_if(result->l != (long long) EET_TEST_LONG_LONG);
161 fail_if(strcmp(result->str, EET_TEST_STRING) != 0);
162 fail_if(strcmp(result->istr, EET_TEST_STRING) != 0);
163 fail_if(result->uc != EET_TEST_CHAR);
164 fail_if(result->us != EET_TEST_SHORT);
165 fail_if(result->ui != EET_TEST_INT);
166 fail_if(result->ul != EET_TEST_LONG_LONG);
168 tmp = (result->f1 + EET_TEST_FLOAT);
169 if (tmp < 0) tmp = -tmp;
170 fail_if(tmp > 0.005);
172 tmp = (result->f2 - EET_TEST_FLOAT4);
173 if (tmp < 0) tmp = -tmp;
174 fail_if(tmp > 0.005);
176 tmp = (result->d + EET_TEST_DOUBLE);
177 if (tmp < 0) tmp = -tmp;
178 fail_if(tmp > 0.00005);
180 fail_if(result->empty != NULL);
183 Eet_Test_Basic_Type *tmp;
186 fail_if(tmp == NULL);
188 fail_if(tmp->c != EET_TEST_CHAR);
189 fail_if(tmp->s != EET_TEST_SHORT);
190 fail_if(tmp->i != EET_TEST_INT + i + 1);
191 fail_if(tmp->l != (long long) EET_TEST_LONG_LONG);
192 fail_if(strcmp(tmp->str, EET_TEST_STRING) != 0);
193 fail_if(strcmp(tmp->istr, EET_TEST_STRING) != 0);
194 fail_if(tmp->uc != EET_TEST_CHAR);
195 fail_if(tmp->us != EET_TEST_SHORT);
196 fail_if(tmp->ui != EET_TEST_INT);
197 fail_if(tmp->ul != EET_TEST_LONG_LONG);
200 fail_if(result->with != NULL);
204 _eet_build_basic_descriptor(Eet_Data_Descriptor *edd)
206 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Basic_Type, "c", c, EET_T_CHAR);
207 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Basic_Type, "s", s, EET_T_SHORT);
208 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Basic_Type, "i", i, EET_T_INT);
209 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Basic_Type, "l", l, EET_T_LONG_LONG);
210 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Basic_Type, "str", str, EET_T_STRING);
211 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Basic_Type, "istr", istr, EET_T_INLINED_STRING);
212 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Basic_Type, "f1", f1, EET_T_FLOAT);
213 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Basic_Type, "f2", f2, EET_T_FLOAT);
214 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Basic_Type, "d", d, EET_T_DOUBLE);
215 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Basic_Type, "uc", uc, EET_T_UCHAR);
216 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Basic_Type, "us", us, EET_T_USHORT);
217 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Basic_Type, "ui", ui, EET_T_UINT);
218 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Basic_Type, "ul", ul, EET_T_ULONG_LONG);
220 EET_DATA_DESCRIPTOR_ADD_SUB(edd, Eet_Test_Basic_Type, "empty", empty, edd);
221 EET_DATA_DESCRIPTOR_ADD_SUB(edd, Eet_Test_Basic_Type, "with", with, edd);
224 START_TEST(eet_test_basic_data_type_encoding_decoding)
226 Eet_Data_Descriptor *edd;
227 Eet_Test_Basic_Type *result;
228 Eet_Data_Descriptor_Class eddc;
229 Eet_Test_Basic_Type etbt;
235 _eet_test_basic_set(&etbt, 0);
237 eet_test_setup_eddc(&eddc);
238 eddc.name = "Eet_Test_Basic_Type";
239 eddc.size = sizeof(Eet_Test_Basic_Type);
241 edd = eet_data_descriptor2_new(&eddc);
244 _eet_build_basic_descriptor(edd);
246 transfert = eet_data_descriptor_encode(edd, &etbt, &size);
247 fail_if(!transfert || size <= 0);
249 result = eet_data_descriptor_decode(edd, transfert, size);
252 _eet_test_basic_check(result, 0);
257 eet_data_descriptor_free(edd);
263 typedef struct _Eet_Test_Ex_Type Eet_Test_Ex_Type;
264 struct _Eet_Test_Ex_Type
269 unsigned long long l;
286 Eet_Test_Basic_Type sarray1[10];
287 unsigned int sarray2[5];
288 unsigned int varray1_count;
289 unsigned int *varray1;
290 unsigned int varray2_count;
291 Eet_Test_Basic_Type *varray2;
295 unsigned long long ul;
304 _eet_build_ex_descriptor(Eet_Data_Descriptor *edd)
306 Eet_Data_Descriptor_Class eddc;
307 Eet_Test_Ex_Type etbt;
308 Eet_Data_Descriptor *eddb;
310 eet_test_setup_eddc(&eddc);
311 eddc.name = "Eet_Test_Basic_Type";
312 eddc.size = sizeof(Eet_Test_Basic_Type);
313 eddb = eet_data_descriptor3_new(&eddc);
316 _eet_build_basic_descriptor(eddb);
318 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Ex_Type, "c", c, EET_T_CHAR);
319 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Ex_Type, "s", s, EET_T_SHORT);
320 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Ex_Type, "i", i, EET_T_INT);
321 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Ex_Type, "l", l, EET_T_LONG_LONG);
322 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Ex_Type, "str", str, EET_T_STRING);
323 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Ex_Type, "istr", istr, EET_T_INLINED_STRING);
324 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Ex_Type, "f1", f1, EET_T_FLOAT);
325 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Ex_Type, "f2", f2, EET_T_FLOAT);
326 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Ex_Type, "f3", f3, EET_T_FLOAT);
327 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Ex_Type, "f4", f4, EET_T_FLOAT);
328 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Ex_Type, "d1", d1, EET_T_DOUBLE);
329 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Ex_Type, "d2", d2, EET_T_DOUBLE);
330 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Ex_Type, "d3", d3, EET_T_DOUBLE);
331 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Ex_Type, "d4", d4, EET_T_DOUBLE);
332 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Ex_Type, "uc", uc, EET_T_UCHAR);
333 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Ex_Type, "us", us, EET_T_USHORT);
334 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Ex_Type, "ui", ui, EET_T_UINT);
335 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Ex_Type, "ul", ul, EET_T_ULONG_LONG);
336 EET_DATA_DESCRIPTOR_ADD_ARRAY(edd, Eet_Test_Ex_Type, "sarray1", sarray1, eddb);
337 EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(edd, Eet_Test_Ex_Type, "varray2", varray2, eddb);
338 eet_data_descriptor_element_add(edd, "varray1", EET_T_INT, EET_G_VAR_ARRAY,
339 (char *)(&(etbt.varray1)) - (char *)(&(etbt)),
340 (char *)(&(etbt.varray1_count)) - (char *)(&(etbt)), /* 0, */NULL, NULL);
341 eet_data_descriptor_element_add(edd, "sarray2", EET_T_INT, EET_G_ARRAY,
342 (char *)(&(etbt.sarray2)) - (char *)(&(etbt)),
343 /* 0, */sizeof(etbt.sarray2)/sizeof(etbt.sarray2[0]), NULL, NULL);
344 eet_data_descriptor_element_add(edd, "charray", EET_T_STRING, EET_G_ARRAY,
345 (char *)(&(etbt.charray)) - (char *)(&(etbt)),
346 /* 0, */sizeof(etbt.charray)/sizeof(etbt.charray[0]), NULL, NULL);
347 EET_DATA_DESCRIPTOR_ADD_LIST(edd, Eet_Test_Ex_Type, "list", list, edd);
348 EET_DATA_DESCRIPTOR_ADD_HASH(edd, Eet_Test_Ex_Type, "hash", hash, edd);
349 eet_data_descriptor_element_add(edd, "ilist", EET_T_INT, EET_G_LIST,
350 (char *)(&(etbt.ilist)) - (char *)(&(etbt)),
351 0, /* 0, */NULL, NULL);
352 eet_data_descriptor_element_add(edd, "ihash", EET_T_INT, EET_G_HASH,
353 (char *)(&(etbt.ihash)) - (char *)(&(etbt)),
354 0, /* 0, */NULL, NULL);
355 eet_data_descriptor_element_add(edd, "slist", EET_T_STRING, EET_G_LIST,
356 (char *)(&(etbt.slist)) - (char *)(&(etbt)),
357 0, /* 0, */NULL, NULL);
358 eet_data_descriptor_element_add(edd, "shash", EET_T_STRING, EET_G_HASH,
359 (char *)(&(etbt.shash)) - (char *)(&(etbt)),
360 0, /* 0, */NULL, NULL);
363 static Eet_Test_Ex_Type*
364 _eet_test_ex_set(Eet_Test_Ex_Type *res, int offset)
368 if (!res) res = malloc( sizeof(Eet_Test_Ex_Type));
369 if (!res) return NULL;
371 res->c = EET_TEST_CHAR + offset;
372 res->s = EET_TEST_SHORT + offset;
373 res->i = EET_TEST_INT + offset;
374 res->l = EET_TEST_LONG_LONG + offset;
375 res->str = EET_TEST_STRING;
376 res->istr = EET_TEST_STRING;
377 res->f1 = EET_TEST_FLOAT + offset;
378 res->f2 = -(EET_TEST_FLOAT2 + offset);
379 res->f3 = EET_TEST_FLOAT3 + offset;
380 res->f4 = EET_TEST_FLOAT2 + offset;
381 res->d1 = EET_TEST_DOUBLE + offset;
382 res->d2 = -(EET_TEST_DOUBLE2 + offset);
383 res->d3 = EET_TEST_DOUBLE3 + offset;
384 res->d4 = EET_TEST_DOUBLE2 + offset;
391 for (i = 0; i < sizeof(res->charray)/sizeof(res->charray[0]); ++i)
392 res->charray[i] = NULL;
394 res->varray2 = malloc(sizeof (Eet_Test_Basic_Type) * 10);
395 res->varray1 = malloc(sizeof (int) * 5);
396 fail_if(!res->varray1 || !res->varray2);
397 for (i = 0; i < 10; ++i)
399 _eet_test_basic_set(res->sarray1 + i, i);
400 _eet_test_basic_set(res->varray2 + i, i);
402 res->varray2_count = 10;
403 for (i = 0; i < 5; ++i)
405 res->sarray2[i] = i * 42 + 1;
406 res->varray1[i] = i * 42 + 1;
408 res->varray1_count = 5;
410 res->uc = EET_TEST_CHAR + offset;
411 res->us = EET_TEST_SHORT + offset;
412 res->ui = EET_TEST_INT + offset;
413 res->ul = EET_TEST_LONG_LONG + offset;
419 _eet_test_ex_check(Eet_Test_Ex_Type *stuff, int offset)
424 if (!stuff) return 1;
426 if (stuff->c != EET_TEST_CHAR + offset) return 1;
427 if (stuff->s != EET_TEST_SHORT + offset) return 1;
428 if (stuff->i != EET_TEST_INT + offset) return 1;
429 if (stuff->l != EET_TEST_LONG_LONG + offset) return 1;
430 if (strcmp(stuff->str, EET_TEST_STRING) != 0) return 1;
431 if (strcmp(stuff->istr, EET_TEST_STRING) != 0) return 1;
433 tmp = stuff->f1 - (EET_TEST_FLOAT + offset);
434 if (tmp < 0) tmp = -tmp;
435 if (tmp > 0.005) return 1;
437 tmp = stuff->d1 - (EET_TEST_DOUBLE + offset);
438 if (tmp < 0) tmp = -tmp;
439 if (tmp > 0.00005) return 1;
441 if (stuff->f2 != - (EET_TEST_FLOAT2 + offset)) return 1;
442 if (stuff->d2 != - (EET_TEST_DOUBLE2 + offset)) return 1;
444 if (stuff->f3 != EET_TEST_FLOAT3 + offset) return 1;
445 if (stuff->d3 != EET_TEST_DOUBLE3 + offset) return 1;
447 if (stuff->f4 != EET_TEST_FLOAT2 + offset) return 1;
448 if (stuff->d4 != EET_TEST_DOUBLE2 + offset) return 1;
450 if (stuff->uc != EET_TEST_CHAR + offset) return 1;
451 if (stuff->us != EET_TEST_SHORT + offset) return 1;
452 if (stuff->ui != (unsigned int) EET_TEST_INT + offset) return 1;
453 if (stuff->ul != EET_TEST_LONG_LONG + offset) return 1;
455 for (i = 0; i < 5; ++i)
456 if (stuff->sarray2[i] != i * 42 + 1)
459 for (i = 0; i < 10; ++i)
460 _eet_test_basic_check(stuff->sarray1 + i, i);
466 func(__UNUSED__ const Eina_Hash *hash, const char *key, void *data, void *fdata)
470 if (strcmp(key, EET_TEST_KEY1) != 0
471 && strcmp(key, EET_TEST_KEY2) != 0) *res = 1;
472 if (_eet_test_ex_check(data, 2)) *res = 1;
478 func7(__UNUSED__ const Eina_Hash *hash, __UNUSED__ const char *key, void *data, void *fdata)
485 if (*val != 7) *res = 1;
490 START_TEST(eet_test_data_type_encoding_decoding)
492 Eet_Data_Descriptor *edd;
493 Eet_Test_Ex_Type *result;
495 Eet_Data_Descriptor_Class eddc;
496 Eet_Test_Ex_Type etbt;
502 _eet_test_ex_set(&etbt, 0);
503 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
504 etbt.hash = eina_hash_string_superfast_new(NULL);
505 eina_hash_add(etbt.hash, EET_TEST_KEY1, _eet_test_ex_set(NULL, 2));
506 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
507 etbt.ihash = eina_hash_string_superfast_new(NULL);
508 eina_hash_add(etbt.ihash, EET_TEST_KEY1, &i7);
509 etbt.slist = eina_list_prepend(NULL, "test");
510 etbt.shash = eina_hash_string_superfast_new(NULL);
511 eina_hash_add(etbt.shash, EET_TEST_KEY1, "test");
512 memset(&etbt.charray, 0, sizeof(etbt.charray));
513 etbt.charray[0] = "test";
514 etbt.charray[5] = "plouf";
516 eet_test_setup_eddc(&eddc);
517 eddc.name = "Eet_Test_Ex_Type";
518 eddc.size = sizeof(Eet_Test_Ex_Type);
520 edd = eet_data_descriptor3_new(&eddc);
523 _eet_build_ex_descriptor(edd);
525 transfert = eet_data_descriptor_encode(edd, &etbt, &size);
526 fail_if(!transfert || size <= 0);
528 result = eet_data_descriptor_decode(edd, transfert, size);
531 fail_if(_eet_test_ex_check(result, 0) != 0);
532 fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
533 fail_if(eina_list_data_get(result->ilist) == NULL);
534 fail_if(*((int*)eina_list_data_get(result->ilist)) != 42);
535 fail_if(eina_list_data_get(result->slist) == NULL);
536 fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
537 fail_if(eina_hash_find(result->shash, EET_TEST_KEY1) == NULL);
538 fail_if(strcmp(eina_hash_find(result->shash, EET_TEST_KEY1), "test") != 0);
539 fail_if(strcmp(result->charray[0], "test") != 0);
540 fail_if(strcmp(result->charray[5], "plouf") != 0);
543 eina_hash_foreach(result->hash, func, &test);
545 eina_hash_foreach(result->ihash, func7, &test);
553 append_string(void *data, const char *str)
555 char **string = data;
560 length = *string ? strlen(*string) : 0;
561 *string = realloc(*string, strlen(str) + length + 1);
563 memcpy((*string) + length, str, strlen(str) + 1);
566 START_TEST(eet_test_data_type_dump_undump)
568 Eet_Data_Descriptor *edd;
569 Eet_Test_Ex_Type *result;
570 Eet_Data_Descriptor_Class eddc;
571 Eet_Test_Ex_Type etbt;
582 _eet_test_ex_set(&etbt, 0);
583 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
584 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
585 etbt.hash = eina_hash_string_superfast_new(NULL);
586 eina_hash_add(etbt.hash, EET_TEST_KEY1, _eet_test_ex_set(NULL, 2));
587 etbt.hash = eina_hash_string_superfast_new(NULL);
588 eina_hash_add(etbt.hash, EET_TEST_KEY2, _eet_test_ex_set(NULL, 2));
589 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
590 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
591 etbt.ihash = eina_hash_string_superfast_new(NULL);
592 eina_hash_add(etbt.ihash, EET_TEST_KEY1, &i7);
593 etbt.ihash = eina_hash_string_superfast_new(NULL);
594 eina_hash_add(etbt.ihash, EET_TEST_KEY2, &i7);
595 etbt.slist = eina_list_prepend(NULL, "test");
596 etbt.shash = eina_hash_string_superfast_new(NULL);
597 eina_hash_add(etbt.shash, EET_TEST_KEY1, "test");
598 memset(&etbt.charray, 0, sizeof(etbt.charray));
599 etbt.charray[0] = "test";
601 eet_test_setup_eddc(&eddc);
602 eddc.name = "Eet_Test_Ex_Type";
603 eddc.size = sizeof(Eet_Test_Ex_Type);
605 edd = eet_data_descriptor3_new(&eddc);
608 _eet_build_ex_descriptor(edd);
610 transfert1 = eet_data_descriptor_encode(edd, &etbt, &size1);
611 fail_if(!transfert1 || size1 <= 0);
614 eet_data_text_dump(transfert1, size1, append_string, &string1);
617 transfert2 = eet_data_text_undump(string1, strlen(string1), &size2);
618 fail_if(!transfert2 && size2 <= 0);
619 fail_if(size1 != size2);
622 eet_data_text_dump(transfert2, size2, append_string, &string2);
625 fail_if(memcmp(transfert1, transfert2, size1) != 0);
627 result = eet_data_descriptor_decode(edd, transfert2, size2);
630 fail_if(_eet_test_ex_check(result, 0) != 0);
631 fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
632 fail_if(eina_list_data_get(result->ilist) == NULL);
633 fail_if(*((int*)eina_list_data_get(result->ilist)) != 42);
634 fail_if(eina_list_data_get(result->slist) == NULL);
635 fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
636 fail_if(eina_hash_find(result->shash, EET_TEST_KEY1) == NULL);
637 fail_if(strcmp(eina_hash_find(result->shash, EET_TEST_KEY1), "test") != 0);
638 fail_if(strcmp(result->charray[0], "test") != 0);
641 eina_hash_foreach(result->hash, func, &test);
643 eina_hash_foreach(result->ihash, func7, &test);
650 START_TEST(eet_file_simple_write)
652 const char *buffer = "Here is a string of data to save !";
655 char *file = strdup("/tmp/eet_suite_testXXXXXX");
662 fail_if(eet_mode_get(NULL) != EET_FILE_MODE_INVALID);
664 ef = eet_open(file, EET_FILE_MODE_WRITE);
667 fail_if(!eet_write(ef, "keys/tests", buffer, strlen(buffer) + 1, 1));
669 fail_if(eet_mode_get(ef) != EET_FILE_MODE_WRITE);
671 fail_if(eet_list(ef, "*", &size) != NULL);
672 fail_if(eet_num_entries(ef) != -1);
676 /* Test read of simple file */
677 ef = eet_open(file, EET_FILE_MODE_READ);
680 test = eet_read(ef, "keys/tests", &size);
682 fail_if(size != (int) strlen(buffer) + 1);
684 fail_if(memcmp(test, buffer, strlen(buffer) + 1) != 0);
686 fail_if(eet_mode_get(ef) != EET_FILE_MODE_READ);
687 fail_if(eet_num_entries(ef) != 1);
691 /* Test eet cache system */
692 ef = eet_open(file, EET_FILE_MODE_READ);
695 test = eet_read(ef, "keys/tests", &size);
697 fail_if(size != (int) strlen(buffer) + 1);
699 fail_if(memcmp(test, buffer, strlen(buffer) + 1) != 0);
703 fail_if(unlink(file) != 0);
709 START_TEST(eet_file_data_test)
711 Eet_Data_Descriptor *edd;
712 Eet_Test_Ex_Type *result;
716 char *file = strdup("/tmp/eet_suite_testXXXXXX");
717 Eet_Data_Descriptor_Class eddc;
718 Eet_Test_Ex_Type etbt;
724 _eet_test_ex_set(&etbt, 0);
725 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
726 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
727 etbt.hash = eina_hash_string_superfast_new(NULL);
728 eina_hash_add(etbt.hash, EET_TEST_KEY1, _eet_test_ex_set(NULL, 2));
729 etbt.hash = eina_hash_string_superfast_new(NULL);
730 eina_hash_add(etbt.hash, EET_TEST_KEY2, _eet_test_ex_set(NULL, 2));
731 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
732 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
733 etbt.ihash = eina_hash_string_superfast_new(NULL);
734 eina_hash_add(etbt.ihash, EET_TEST_KEY1, &i7);
735 etbt.ihash = eina_hash_string_superfast_new(NULL);
736 eina_hash_add(etbt.ihash, EET_TEST_KEY2, &i7);
737 etbt.slist = eina_list_prepend(NULL, "test");
738 etbt.shash = eina_hash_string_superfast_new(NULL);
739 eina_hash_add(etbt.shash, EET_TEST_KEY1, "test");
740 memset(&etbt.charray, 0, sizeof(etbt.charray));
741 etbt.charray[0] = "test";
743 eet_test_setup_eddc(&eddc);
744 eddc.name = "Eet_Test_Ex_Type";
745 eddc.size = sizeof(Eet_Test_Ex_Type);
747 edd = eet_data_descriptor3_new(&eddc);
750 _eet_build_ex_descriptor(edd);
754 /* Insert an error in etbt. */
757 /* Save the encoded data in a file. */
758 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
761 fail_if(!eet_data_write(ef, edd, EET_TEST_FILE_KEY1, &etbt, 0));
763 result = eet_data_read(ef, edd, EET_TEST_FILE_KEY1);
766 fail_if(eet_mode_get(ef) != EET_FILE_MODE_READ_WRITE);
768 /* Test string space. */
769 ed = eet_dictionary_get(ef);
771 fail_if(!eet_dictionary_string_check(ed, result->str));
772 fail_if(eet_dictionary_string_check(ed, result->istr));
776 /* Attempt to replace etbt by the correct one. */
777 etbt.i = EET_TEST_INT;
779 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
782 fail_if(!eet_data_write(ef, edd, EET_TEST_FILE_KEY1, &etbt, 0));
786 /* Read back the data. */
787 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
790 fail_if(!eet_data_write(ef, edd, EET_TEST_FILE_KEY2, &etbt, 0));
792 result = eet_data_read(ef, edd, EET_TEST_FILE_KEY1);
795 /* Test string space. */
796 ed = eet_dictionary_get(ef);
799 fail_if(!eet_dictionary_string_check(ed, result->str));
800 fail_if(eet_dictionary_string_check(ed, result->istr));
802 /* Test the resulting data. */
803 fail_if(_eet_test_ex_check(result, 0) != 0);
804 fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
805 fail_if(eina_list_data_get(result->ilist) == NULL);
806 fail_if(*((int*)eina_list_data_get(result->ilist)) != 42);
807 fail_if(eina_list_data_get(result->slist) == NULL);
808 fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
809 fail_if(eina_hash_find(result->shash, EET_TEST_KEY1) == NULL);
810 fail_if(strcmp(eina_hash_find(result->shash, EET_TEST_KEY1), "test") != 0);
811 fail_if(strcmp(result->charray[0], "test") != 0);
814 eina_hash_foreach(result->hash, func, &test);
816 eina_hash_foreach(result->ihash, func7, &test);
819 list = eet_list(ef, "keys/*", &size);
820 fail_if(eet_num_entries(ef) != 2);
822 fail_if(!(strcmp(list[0], EET_TEST_FILE_KEY1) == 0 && strcmp(list[1], EET_TEST_FILE_KEY2) == 0)
823 && !(strcmp(list[0], EET_TEST_FILE_KEY2) == 0 && strcmp(list[1], EET_TEST_FILE_KEY1) == 0));
826 fail_if(eet_delete(ef, NULL) != 0);
827 fail_if(eet_delete(NULL, EET_TEST_FILE_KEY1) != 0);
828 fail_if(eet_delete(ef, EET_TEST_FILE_KEY1) == 0);
830 list = eet_list(ef, "keys/*", &size);
832 fail_if(eet_num_entries(ef) != 1);
834 /* Test some more wrong case */
835 fail_if(eet_data_read(ef, edd, "plop") != NULL);
836 fail_if(eet_data_read(ef, edd, EET_TEST_FILE_KEY1) != NULL);
838 /* Reinsert and reread data */
839 fail_if(!eet_data_write(ef, edd, EET_TEST_FILE_KEY1, &etbt, 0));
840 fail_if(eet_data_read(ef, edd, EET_TEST_FILE_KEY1) == NULL);
841 fail_if(eet_read_direct(ef, EET_TEST_FILE_KEY1, &size) == NULL);
845 fail_if(unlink(file) != 0);
851 START_TEST(eet_file_data_dump_test)
853 Eet_Data_Descriptor *edd;
854 Eet_Test_Ex_Type *result;
855 Eet_Data_Descriptor_Class eddc;
856 Eet_Test_Ex_Type etbt;
859 char *file = strdup("/tmp/eet_suite_testXXXXXX");
864 _eet_test_ex_set(&etbt, 0);
865 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
866 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
867 etbt.hash = eina_hash_string_superfast_new(NULL);
868 eina_hash_add(etbt.hash, EET_TEST_KEY1, _eet_test_ex_set(NULL, 2));
869 etbt.hash = eina_hash_string_superfast_new(NULL);
870 eina_hash_add(etbt.hash, EET_TEST_KEY2, _eet_test_ex_set(NULL, 2));
871 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
872 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
873 etbt.ihash = eina_hash_string_superfast_new(NULL);
874 eina_hash_add(etbt.ihash, EET_TEST_KEY1, &i7);
875 etbt.ihash = eina_hash_string_superfast_new(NULL);
876 eina_hash_add(etbt.ihash, EET_TEST_KEY2, &i7);
877 etbt.slist = eina_list_prepend(NULL, "test");
878 etbt.hash = eina_hash_string_superfast_new(NULL);
879 eina_hash_add(etbt.shash, EET_TEST_KEY1, "test");
880 memset(&etbt.charray, 0, sizeof(etbt.charray));
881 etbt.charray[0] = "test";
883 eet_test_setup_eddc(&eddc);
884 eddc.name = "Eet_Test_Ex_Type";
885 eddc.size = sizeof(Eet_Test_Ex_Type);
887 edd = eet_data_descriptor3_new(&eddc);
890 _eet_build_ex_descriptor(edd);
894 /* Save the encoded data in a file. */
895 ef = eet_open(file, EET_FILE_MODE_WRITE);
898 fail_if(!eet_data_write(ef, edd, EET_TEST_FILE_KEY1, &etbt, 0));
902 /* Use dump/undump in the middle */
903 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
907 fail_if(eet_data_dump(ef, EET_TEST_FILE_KEY1, append_string, &string1) != 1);
908 fail_if(eet_delete(ef, EET_TEST_FILE_KEY1) == 0);
909 fail_if(!eet_data_undump(ef, EET_TEST_FILE_KEY1, string1, strlen(string1), 1));
913 /* Test the correctness of the reinsertion. */
914 ef = eet_open(file, EET_FILE_MODE_READ);
917 result = eet_data_read(ef, edd, EET_TEST_FILE_KEY1);
922 /* Test the resulting data. */
923 fail_if(_eet_test_ex_check(result, 0) != 0);
924 fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
925 fail_if(eina_list_data_get(result->ilist) == NULL);
926 fail_if(*((int*)eina_list_data_get(result->ilist)) != 42);
927 fail_if(eina_list_data_get(result->slist) == NULL);
928 fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
929 fail_if(eina_hash_find(result->shash, EET_TEST_KEY1) == NULL);
930 fail_if(strcmp(eina_hash_find(result->shash, EET_TEST_KEY1), "test") != 0);
931 fail_if(strcmp(result->charray[0], "test") != 0);
934 eina_hash_foreach(result->hash, func, &test);
936 eina_hash_foreach(result->ihash, func7, &test);
939 fail_if(unlink(file) != 0);
945 START_TEST(eet_image)
948 char *file = strdup("/tmp/eet_suite_testXXXXXX");
960 /* Save the encoded data in a file. */
961 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
964 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "0", test_noalpha.color,
965 test_noalpha.w, test_noalpha.h, test_noalpha.alpha,
967 fail_if(result == 0);
969 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "1", test_noalpha.color,
970 test_noalpha.w, test_noalpha.h, test_noalpha.alpha,
972 fail_if(result == 0);
974 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "2", test_noalpha.color,
975 test_noalpha.w, test_noalpha.h, test_noalpha.alpha,
977 fail_if(result == 0);
979 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "3", test_noalpha.color,
980 test_noalpha.w, test_noalpha.h, test_noalpha.alpha,
982 fail_if(result == 0);
984 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "4", test_noalpha.color,
985 test_noalpha.w, test_noalpha.h, test_noalpha.alpha,
987 fail_if(result == 0);
989 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "5", test_noalpha.color,
990 test_noalpha.w, test_noalpha.h, test_noalpha.alpha,
992 fail_if(result == 0);
994 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "6", test_noalpha.color,
995 test_noalpha.w, test_noalpha.h, test_noalpha.alpha,
997 fail_if(result == 0);
999 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "7", test_alpha.color,
1000 test_alpha.w, test_alpha.h, test_alpha.alpha,
1002 fail_if(result == 0);
1004 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "8", test_alpha.color,
1005 test_alpha.w, test_alpha.h, test_alpha.alpha,
1007 fail_if(result == 0);
1009 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "9", test_alpha.color,
1010 test_alpha.w, test_alpha.h, test_alpha.alpha,
1012 fail_if(result == 0);
1014 data = eet_data_image_read(ef, EET_TEST_FILE_IMAGE "2", &w, &h, &alpha, &compress, &quality, &lossy);
1015 fail_if(data == NULL);
1016 fail_if(w != test_noalpha.w);
1017 fail_if(h != test_noalpha.h);
1018 fail_if(alpha != test_noalpha.alpha);
1019 fail_if(compress != 9);
1020 fail_if(lossy != 0);
1021 fail_if(data[0] != test_noalpha.color[0]);
1024 result = eet_data_image_header_read(ef, EET_TEST_FILE_IMAGE "2", &w, &h, &alpha, &compress, &quality, &lossy);
1025 fail_if(result == 0);
1026 fail_if(w != test_noalpha.w);
1027 fail_if(h != test_noalpha.h);
1028 fail_if(alpha != test_noalpha.alpha);
1029 fail_if(compress != 9);
1030 fail_if(lossy != 0);
1034 /* Test read of image */
1035 ef = eet_open(file, EET_FILE_MODE_READ);
1038 result = eet_data_image_header_read(ef, EET_TEST_FILE_IMAGE "0", &w, &h, &alpha, &compress, &quality, &lossy);
1039 fail_if(result == 0);
1040 fail_if(w != test_noalpha.w);
1041 fail_if(h != test_noalpha.h);
1042 fail_if(alpha != test_noalpha.alpha);
1043 fail_if(compress != 0);
1044 fail_if(lossy != 0);
1046 data = malloc(w * h * 4);
1047 fail_if(data == NULL);
1048 result = eet_data_image_read_to_surface(ef, EET_TEST_FILE_IMAGE "0", 4, 4, data, 2, 2, w * 4, &alpha, &compress, &quality, &lossy);
1049 fail_if(result != 1);
1050 fail_if(alpha != test_noalpha.alpha);
1051 fail_if(compress != 0);
1052 fail_if(quality != 100);
1053 fail_if(lossy != 0);
1054 fail_if(data[0] != test_noalpha.color[4 + 4 * w]);
1057 data = malloc(w * h * 4);
1058 fail_if(data == NULL);
1059 result = eet_data_image_read_to_surface(ef, EET_TEST_FILE_IMAGE "0", 0, 0, data, w, h, w * 4, &alpha, &compress, &quality, &lossy);
1060 fail_if(result != 1);
1061 fail_if(alpha != test_noalpha.alpha);
1062 fail_if(compress != 0);
1063 fail_if(quality != 100);
1064 fail_if(lossy != 0);
1065 fail_if(data[0] != test_noalpha.color[0]);
1068 data = eet_data_image_read(ef, EET_TEST_FILE_IMAGE "1", &w, &h, &alpha, &compress, &quality, &lossy);
1069 fail_if(data == NULL);
1070 fail_if(w != test_noalpha.w);
1071 fail_if(h != test_noalpha.h);
1072 fail_if(alpha != test_noalpha.alpha);
1073 fail_if(compress != 5);
1074 fail_if(quality != 100);
1075 fail_if(lossy != 0);
1076 fail_if(data[0] != test_noalpha.color[0]);
1079 data = eet_data_image_read(ef, EET_TEST_FILE_IMAGE "2", &w, &h, &alpha, &compress, &quality, &lossy);
1080 fail_if(data == NULL);
1081 fail_if(w != test_noalpha.w);
1082 fail_if(h != test_noalpha.h);
1083 fail_if(alpha != test_noalpha.alpha);
1084 fail_if(compress != 9);
1085 fail_if(lossy != 0);
1086 fail_if(data[0] != test_noalpha.color[0]);
1089 data = eet_data_image_read(ef, EET_TEST_FILE_IMAGE "3", &w, &h, &alpha, &compress, &quality, &lossy);
1090 fail_if(data == NULL);
1091 fail_if(w != test_noalpha.w);
1092 fail_if(h != test_noalpha.h);
1093 fail_if(alpha != test_noalpha.alpha);
1094 fail_if(lossy != 1);
1097 data = eet_data_image_read(ef, EET_TEST_FILE_IMAGE "5", &w, &h, &alpha, &compress, &quality, &lossy);
1098 fail_if(data == NULL);
1099 fail_if(w != test_noalpha.w);
1100 fail_if(h != test_noalpha.h);
1101 fail_if(alpha != test_noalpha.alpha);
1102 fail_if(lossy != 1);
1105 data = eet_data_image_read(ef, EET_TEST_FILE_IMAGE "6", &w, &h, &alpha, &compress, &quality, &lossy);
1106 fail_if(data == NULL);
1107 fail_if(w != test_noalpha.w);
1108 fail_if(h != test_noalpha.h);
1109 fail_if(alpha != test_noalpha.alpha);
1110 fail_if(lossy != 1);
1113 result = eet_data_image_header_read(ef, EET_TEST_FILE_IMAGE "7", &w, &h, &alpha, &compress, &quality, &lossy);
1114 fail_if(result == 0);
1115 fail_if(w != test_alpha.w);
1116 fail_if(h != test_alpha.h);
1117 fail_if(alpha != test_alpha.alpha);
1118 fail_if(compress != 9);
1119 fail_if(lossy != 0);
1121 data = eet_data_image_read(ef, EET_TEST_FILE_IMAGE "7", &w, &h, &alpha, &compress, &quality, &lossy);
1122 fail_if(data == NULL);
1123 fail_if(w != test_alpha.w);
1124 fail_if(h != test_alpha.h);
1125 fail_if(alpha != test_alpha.alpha);
1126 fail_if(compress != 9);
1127 fail_if(lossy != 0);
1128 fail_if(data[0] != test_alpha.color[0]);
1131 result = eet_data_image_header_read(ef, EET_TEST_FILE_IMAGE "9", &w, &h, &alpha, &compress, &quality, &lossy);
1132 fail_if(result == 0);
1133 fail_if(w != test_alpha.w);
1134 fail_if(h != test_alpha.h);
1135 fail_if(alpha != test_alpha.alpha);
1136 fail_if(lossy != 1);
1138 data = eet_data_image_read(ef, EET_TEST_FILE_IMAGE "9", &w, &h, &alpha, &compress, &quality, &lossy);
1139 fail_if(data == NULL);
1140 fail_if(w != test_alpha.w);
1141 fail_if(h != test_alpha.h);
1142 fail_if(alpha != test_alpha.alpha);
1143 fail_if(lossy != 1);
1152 #define IM0 0x00112233
1153 #define IM1 0x44556677
1154 #define IM2 0x8899aabb
1155 #define IM3 0xccddeeff
1157 START_TEST(eet_small_image)
1159 char *file = strdup("/tmp/eet_suite_testXXXXXX");
1160 unsigned int image[4];
1180 ef = eet_open(file, EET_FILE_MODE_WRITE);
1183 result = eet_data_image_write(ef, "/images/test", image, 2, 2, 1, 9, 100, 0);
1184 fail_if(result == 0);
1188 ef = eet_open(file, EET_FILE_MODE_READ);
1191 data = (unsigned int*) eet_data_image_read(ef, "/images/test", &w, &h, &alpha, &compression, &quality, &lossy);
1192 fail_if(data == NULL);
1196 fail_if(data[0] != IM0);
1197 fail_if(data[1] != IM1);
1198 fail_if(data[2] != IM2);
1199 fail_if(data[3] != IM3);
1207 START_TEST(eet_identity_simple)
1209 const char *buffer = "Here is a string of data to save !";
1214 char *file = strdup("/tmp/eet_suite_testXXXXXX");
1223 /* Sign an eet file. */
1224 ef = eet_open(file, EET_FILE_MODE_WRITE);
1227 fail_if(!eet_write(ef, "keys/tests", buffer, strlen(buffer) + 1, 0));
1229 k = eet_identity_open("cert.pem", "key.pem", NULL);
1232 fail_if(eet_identity_set(ef, k) != EET_ERROR_NONE);
1236 /* Open a signed file. */
1237 ef = eet_open(file, EET_FILE_MODE_READ);
1240 test = eet_read(ef, "keys/tests", &size);
1242 fail_if(size != (int) strlen(buffer) + 1);
1244 fail_if(memcmp(test, buffer, strlen(buffer) + 1) != 0);
1246 tmp = eet_identity_x509(ef, &size);
1247 fail_if(tmp == NULL);
1251 /* As we are changing file contain in less than 1s, this could get unnoticed
1252 by eet cache system. */
1255 /* Corrupting the file. */
1256 fd = open(file, O_WRONLY);
1259 fail_if(lseek(fd, 200, SEEK_SET) != 200);
1260 fail_if(write(fd, "42", 2) != 2);
1261 fail_if(lseek(fd, 50, SEEK_SET) != 50);
1262 fail_if(write(fd, "42", 2) != 2);
1263 fail_if(lseek(fd, 88, SEEK_SET) != 88);
1264 fail_if(write(fd, "42", 2) != 2);
1268 /* Attempt to open a modified file. */
1269 ef = eet_open(file, EET_FILE_MODE_READ);
1272 fail_if(unlink(file) != 0);
1278 START_TEST(eet_cipher_decipher_simple)
1280 const char *buffer = "Here is a string of data to save !";
1281 const char *key = "This is a crypto key";
1282 const char *key_bad = "This is another crypto key";
1285 char *file = strdup("/tmp/eet_suite_testXXXXXX");
1294 /* Crypt an eet file. */
1295 ef = eet_open(file, EET_FILE_MODE_WRITE);
1298 fail_if(!eet_write_cipher(ef, "keys/tests", buffer, strlen(buffer) + 1, 0, key));
1302 /* Decrypt an eet file. */
1303 ef = eet_open(file, EET_FILE_MODE_READ);
1306 test = eet_read_cipher(ef, "keys/tests", &size, key);
1308 fail_if(size != (int) strlen(buffer) + 1);
1310 fail_if(memcmp(test, buffer, strlen(buffer) + 1) != 0);
1314 /* Decrypt an eet file. */
1315 ef = eet_open(file, EET_FILE_MODE_READ);
1318 test = eet_read_cipher(ef, "keys/tests", &size, key_bad);
1320 if (size == (int) strlen(buffer) + 1)
1321 fail_if(memcmp(test, buffer, strlen(buffer) + 1) == 0);
1325 fail_if(unlink(file) != 0);
1338 s = suite_create("Eet");
1340 tc = tcase_create("Eet_Init");
1341 tcase_add_test(tc, eet_test_init);
1342 suite_add_tcase(s, tc);
1344 tc = tcase_create("Eet Data Encoding/Decoding");
1345 tcase_add_test(tc, eet_test_basic_data_type_encoding_decoding);
1346 tcase_add_test(tc, eet_test_data_type_encoding_decoding);
1347 tcase_add_test(tc, eet_test_data_type_dump_undump);
1348 suite_add_tcase(s, tc);
1350 tc = tcase_create("Eet File");
1351 tcase_add_test(tc, eet_file_simple_write);
1352 tcase_add_test(tc, eet_file_data_test);
1353 tcase_add_test(tc, eet_file_data_dump_test);
1354 suite_add_tcase(s, tc);
1356 tc = tcase_create("Eet Image");
1357 tcase_add_test(tc, eet_image);
1358 tcase_add_test(tc, eet_small_image);
1359 suite_add_tcase(s, tc);
1361 #ifdef HAVE_SIGNATURE
1362 tc = tcase_create("Eet Identity");
1363 tcase_add_test(tc, eet_identity_simple);
1364 suite_add_tcase(s, tc);
1368 tc = tcase_create("Eet Cipher");
1369 tcase_add_test(tc, eet_cipher_decipher_simple);
1370 suite_add_tcase(s, tc);
1384 sr = srunner_create(s);
1385 srunner_run_all(sr, CK_NORMAL);
1386 failed_count = srunner_ntests_failed(sr);
1389 return (failed_count == 0) ? EXIT_SUCCESS : EXIT_FAILURE;