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 void *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 void *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 eina_hash_add(etbt.hash, EET_TEST_KEY2, _eet_test_ex_set(NULL, 2));
870 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
871 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
872 etbt.ihash = eina_hash_string_superfast_new(NULL);
873 eina_hash_add(etbt.ihash, EET_TEST_KEY1, &i7);
874 eina_hash_add(etbt.ihash, EET_TEST_KEY2, &i7);
875 etbt.slist = eina_list_prepend(NULL, "test");
876 etbt.shash = eina_hash_string_superfast_new(NULL);
877 eina_hash_add(etbt.shash, EET_TEST_KEY1, "test");
878 memset(&etbt.charray, 0, sizeof(etbt.charray));
879 etbt.charray[0] = "test";
881 eet_test_setup_eddc(&eddc);
882 eddc.name = "Eet_Test_Ex_Type";
883 eddc.size = sizeof(Eet_Test_Ex_Type);
885 edd = eet_data_descriptor3_new(&eddc);
888 _eet_build_ex_descriptor(edd);
892 /* Save the encoded data in a file. */
893 ef = eet_open(file, EET_FILE_MODE_WRITE);
896 fail_if(!eet_data_write(ef, edd, EET_TEST_FILE_KEY1, &etbt, 0));
900 /* Use dump/undump in the middle */
901 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
905 fail_if(eet_data_dump(ef, EET_TEST_FILE_KEY1, append_string, &string1) != 1);
906 fail_if(eet_delete(ef, EET_TEST_FILE_KEY1) == 0);
907 fail_if(!eet_data_undump(ef, EET_TEST_FILE_KEY1, string1, strlen(string1), 1));
911 /* Test the correctness of the reinsertion. */
912 ef = eet_open(file, EET_FILE_MODE_READ);
915 result = eet_data_read(ef, edd, EET_TEST_FILE_KEY1);
920 /* Test the resulting data. */
921 fail_if(_eet_test_ex_check(result, 0) != 0);
922 fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
923 fail_if(eina_list_data_get(result->ilist) == NULL);
924 fail_if(*((int*)eina_list_data_get(result->ilist)) != 42);
925 fail_if(eina_list_data_get(result->slist) == NULL);
926 fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
927 fail_if(eina_hash_find(result->shash, EET_TEST_KEY1) == NULL);
928 fail_if(strcmp(eina_hash_find(result->shash, EET_TEST_KEY1), "test") != 0);
929 fail_if(strcmp(result->charray[0], "test") != 0);
932 eina_hash_foreach(result->hash, func, &test);
934 eina_hash_foreach(result->ihash, func7, &test);
937 fail_if(unlink(file) != 0);
943 START_TEST(eet_image)
946 char *file = strdup("/tmp/eet_suite_testXXXXXX");
958 /* Save the encoded data in a file. */
959 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
962 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "0", test_noalpha.color,
963 test_noalpha.w, test_noalpha.h, test_noalpha.alpha,
965 fail_if(result == 0);
967 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "1", test_noalpha.color,
968 test_noalpha.w, test_noalpha.h, test_noalpha.alpha,
970 fail_if(result == 0);
972 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "2", test_noalpha.color,
973 test_noalpha.w, test_noalpha.h, test_noalpha.alpha,
975 fail_if(result == 0);
977 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "3", test_noalpha.color,
978 test_noalpha.w, test_noalpha.h, test_noalpha.alpha,
980 fail_if(result == 0);
982 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "4", test_noalpha.color,
983 test_noalpha.w, test_noalpha.h, test_noalpha.alpha,
985 fail_if(result == 0);
987 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "5", test_noalpha.color,
988 test_noalpha.w, test_noalpha.h, test_noalpha.alpha,
990 fail_if(result == 0);
992 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "6", test_noalpha.color,
993 test_noalpha.w, test_noalpha.h, test_noalpha.alpha,
995 fail_if(result == 0);
997 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "7", test_alpha.color,
998 test_alpha.w, test_alpha.h, test_alpha.alpha,
1000 fail_if(result == 0);
1002 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "8", test_alpha.color,
1003 test_alpha.w, test_alpha.h, test_alpha.alpha,
1005 fail_if(result == 0);
1007 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "9", test_alpha.color,
1008 test_alpha.w, test_alpha.h, test_alpha.alpha,
1010 fail_if(result == 0);
1012 data = eet_data_image_read(ef, EET_TEST_FILE_IMAGE "2", &w, &h, &alpha, &compress, &quality, &lossy);
1013 fail_if(data == NULL);
1014 fail_if(w != test_noalpha.w);
1015 fail_if(h != test_noalpha.h);
1016 fail_if(alpha != test_noalpha.alpha);
1017 fail_if(compress != 9);
1018 fail_if(lossy != 0);
1019 fail_if(data[0] != test_noalpha.color[0]);
1022 result = eet_data_image_header_read(ef, EET_TEST_FILE_IMAGE "2", &w, &h, &alpha, &compress, &quality, &lossy);
1023 fail_if(result == 0);
1024 fail_if(w != test_noalpha.w);
1025 fail_if(h != test_noalpha.h);
1026 fail_if(alpha != test_noalpha.alpha);
1027 fail_if(compress != 9);
1028 fail_if(lossy != 0);
1032 /* Test read of image */
1033 ef = eet_open(file, EET_FILE_MODE_READ);
1036 result = eet_data_image_header_read(ef, EET_TEST_FILE_IMAGE "0", &w, &h, &alpha, &compress, &quality, &lossy);
1037 fail_if(result == 0);
1038 fail_if(w != test_noalpha.w);
1039 fail_if(h != test_noalpha.h);
1040 fail_if(alpha != test_noalpha.alpha);
1041 fail_if(compress != 0);
1042 fail_if(lossy != 0);
1044 data = malloc(w * h * 4);
1045 fail_if(data == NULL);
1046 result = eet_data_image_read_to_surface(ef, EET_TEST_FILE_IMAGE "0", 4, 4, data, 2, 2, w * 4, &alpha, &compress, &quality, &lossy);
1047 fail_if(result != 1);
1048 fail_if(alpha != test_noalpha.alpha);
1049 fail_if(compress != 0);
1050 fail_if(quality != 100);
1051 fail_if(lossy != 0);
1052 fail_if(data[0] != test_noalpha.color[4 + 4 * w]);
1055 data = malloc(w * h * 4);
1056 fail_if(data == NULL);
1057 result = eet_data_image_read_to_surface(ef, EET_TEST_FILE_IMAGE "0", 0, 0, data, w, h, w * 4, &alpha, &compress, &quality, &lossy);
1058 fail_if(result != 1);
1059 fail_if(alpha != test_noalpha.alpha);
1060 fail_if(compress != 0);
1061 fail_if(quality != 100);
1062 fail_if(lossy != 0);
1063 fail_if(data[0] != test_noalpha.color[0]);
1066 data = eet_data_image_read(ef, EET_TEST_FILE_IMAGE "1", &w, &h, &alpha, &compress, &quality, &lossy);
1067 fail_if(data == NULL);
1068 fail_if(w != test_noalpha.w);
1069 fail_if(h != test_noalpha.h);
1070 fail_if(alpha != test_noalpha.alpha);
1071 fail_if(compress != 5);
1072 fail_if(quality != 100);
1073 fail_if(lossy != 0);
1074 fail_if(data[0] != test_noalpha.color[0]);
1077 data = eet_data_image_read(ef, EET_TEST_FILE_IMAGE "2", &w, &h, &alpha, &compress, &quality, &lossy);
1078 fail_if(data == NULL);
1079 fail_if(w != test_noalpha.w);
1080 fail_if(h != test_noalpha.h);
1081 fail_if(alpha != test_noalpha.alpha);
1082 fail_if(compress != 9);
1083 fail_if(lossy != 0);
1084 fail_if(data[0] != test_noalpha.color[0]);
1087 data = eet_data_image_read(ef, EET_TEST_FILE_IMAGE "3", &w, &h, &alpha, &compress, &quality, &lossy);
1088 fail_if(data == NULL);
1089 fail_if(w != test_noalpha.w);
1090 fail_if(h != test_noalpha.h);
1091 fail_if(alpha != test_noalpha.alpha);
1092 fail_if(lossy != 1);
1095 data = eet_data_image_read(ef, EET_TEST_FILE_IMAGE "5", &w, &h, &alpha, &compress, &quality, &lossy);
1096 fail_if(data == NULL);
1097 fail_if(w != test_noalpha.w);
1098 fail_if(h != test_noalpha.h);
1099 fail_if(alpha != test_noalpha.alpha);
1100 fail_if(lossy != 1);
1103 data = eet_data_image_read(ef, EET_TEST_FILE_IMAGE "6", &w, &h, &alpha, &compress, &quality, &lossy);
1104 fail_if(data == NULL);
1105 fail_if(w != test_noalpha.w);
1106 fail_if(h != test_noalpha.h);
1107 fail_if(alpha != test_noalpha.alpha);
1108 fail_if(lossy != 1);
1111 result = eet_data_image_header_read(ef, EET_TEST_FILE_IMAGE "7", &w, &h, &alpha, &compress, &quality, &lossy);
1112 fail_if(result == 0);
1113 fail_if(w != test_alpha.w);
1114 fail_if(h != test_alpha.h);
1115 fail_if(alpha != test_alpha.alpha);
1116 fail_if(compress != 9);
1117 fail_if(lossy != 0);
1119 data = eet_data_image_read(ef, EET_TEST_FILE_IMAGE "7", &w, &h, &alpha, &compress, &quality, &lossy);
1120 fail_if(data == NULL);
1121 fail_if(w != test_alpha.w);
1122 fail_if(h != test_alpha.h);
1123 fail_if(alpha != test_alpha.alpha);
1124 fail_if(compress != 9);
1125 fail_if(lossy != 0);
1126 fail_if(data[0] != test_alpha.color[0]);
1129 result = eet_data_image_header_read(ef, EET_TEST_FILE_IMAGE "9", &w, &h, &alpha, &compress, &quality, &lossy);
1130 fail_if(result == 0);
1131 fail_if(w != test_alpha.w);
1132 fail_if(h != test_alpha.h);
1133 fail_if(alpha != test_alpha.alpha);
1134 fail_if(lossy != 1);
1136 data = eet_data_image_read(ef, EET_TEST_FILE_IMAGE "9", &w, &h, &alpha, &compress, &quality, &lossy);
1137 fail_if(data == NULL);
1138 fail_if(w != test_alpha.w);
1139 fail_if(h != test_alpha.h);
1140 fail_if(alpha != test_alpha.alpha);
1141 fail_if(lossy != 1);
1150 #define IM0 0x00112233
1151 #define IM1 0x44556677
1152 #define IM2 0x8899aabb
1153 #define IM3 0xccddeeff
1155 START_TEST(eet_small_image)
1157 char *file = strdup("/tmp/eet_suite_testXXXXXX");
1158 unsigned int image[4];
1178 ef = eet_open(file, EET_FILE_MODE_WRITE);
1181 result = eet_data_image_write(ef, "/images/test", image, 2, 2, 1, 9, 100, 0);
1182 fail_if(result == 0);
1186 ef = eet_open(file, EET_FILE_MODE_READ);
1189 data = (unsigned int*) eet_data_image_read(ef, "/images/test", &w, &h, &alpha, &compression, &quality, &lossy);
1190 fail_if(data == NULL);
1194 fail_if(data[0] != IM0);
1195 fail_if(data[1] != IM1);
1196 fail_if(data[2] != IM2);
1197 fail_if(data[3] != IM3);
1205 START_TEST(eet_identity_simple)
1207 const char *buffer = "Here is a string of data to save !";
1212 char *file = strdup("/tmp/eet_suite_testXXXXXX");
1221 /* Sign an eet file. */
1222 ef = eet_open(file, EET_FILE_MODE_WRITE);
1225 fail_if(!eet_write(ef, "keys/tests", buffer, strlen(buffer) + 1, 0));
1227 k = eet_identity_open("cert.pem", "key.pem", NULL);
1230 fail_if(eet_identity_set(ef, k) != EET_ERROR_NONE);
1234 /* Open a signed file. */
1235 ef = eet_open(file, EET_FILE_MODE_READ);
1238 test = eet_read(ef, "keys/tests", &size);
1240 fail_if(size != (int) strlen(buffer) + 1);
1242 fail_if(memcmp(test, buffer, strlen(buffer) + 1) != 0);
1244 tmp = eet_identity_x509(ef, &size);
1245 fail_if(tmp == NULL);
1249 /* As we are changing file contain in less than 1s, this could get unnoticed
1250 by eet cache system. */
1253 /* Corrupting the file. */
1254 fd = open(file, O_WRONLY);
1257 fail_if(lseek(fd, 200, SEEK_SET) != 200);
1258 fail_if(write(fd, "42", 2) != 2);
1259 fail_if(lseek(fd, 50, SEEK_SET) != 50);
1260 fail_if(write(fd, "42", 2) != 2);
1261 fail_if(lseek(fd, 88, SEEK_SET) != 88);
1262 fail_if(write(fd, "42", 2) != 2);
1266 /* Attempt to open a modified file. */
1267 ef = eet_open(file, EET_FILE_MODE_READ);
1270 fail_if(unlink(file) != 0);
1276 START_TEST(eet_identity_open_simple)
1284 k = eet_identity_open("cert.pem", "key.pem", NULL);
1287 if (k) eet_identity_close(k);
1293 START_TEST(eet_identity_open_pkcs8)
1301 k = eet_identity_open("cert.pem", "key_enc_none.pem", NULL);
1304 if (k) eet_identity_close(k);
1310 static int pass_get(char *pass, int size, __UNUSED__ int rwflags, __UNUSED__ void *u)
1312 memset(pass, 0, size);
1314 if (strlen("password") > size)
1316 snprintf(pass, size, "%s", "password");
1317 return strlen(pass);
1320 static int badpass_get(char *pass, int size, __UNUSED__ int rwflags, __UNUSED__ void *u)
1322 memset(pass, 0, size);
1324 if (strlen("bad password") > size)
1326 snprintf(pass, size, "%s", "bad password");
1327 return strlen(pass);
1331 START_TEST(eet_identity_open_pkcs8_enc)
1339 k = eet_identity_open("cert.pem", "key_enc.pem", NULL);
1342 if (k) eet_identity_close(k);
1344 k = eet_identity_open("cert.pem", "key_enc.pem", &badpass_get);
1347 if (k) eet_identity_close(k);
1349 k = eet_identity_open("cert.pem", "key_enc.pem", &pass_get);
1352 if (k) eet_identity_close(k);
1358 START_TEST(eet_cipher_decipher_simple)
1360 const char *buffer = "Here is a string of data to save !";
1361 const char *key = "This is a crypto key";
1362 const char *key_bad = "This is another crypto key";
1365 char *file = strdup("/tmp/eet_suite_testXXXXXX");
1373 /* Crypt an eet file. */
1374 ef = eet_open(file, EET_FILE_MODE_WRITE);
1377 fail_if(!eet_write_cipher(ef, "keys/tests", buffer, strlen(buffer) + 1, 0, key));
1381 /* Decrypt an eet file. */
1382 ef = eet_open(file, EET_FILE_MODE_READ);
1385 test = eet_read_cipher(ef, "keys/tests", &size, key);
1387 fail_if(size != (int) strlen(buffer) + 1);
1389 fail_if(memcmp(test, buffer, strlen(buffer) + 1) != 0);
1393 /* Decrypt an eet file. */
1394 ef = eet_open(file, EET_FILE_MODE_READ);
1397 test = eet_read_cipher(ef, "keys/tests", &size, key_bad);
1399 if (size == (int) strlen(buffer) + 1)
1400 fail_if(memcmp(test, buffer, strlen(buffer) + 1) == 0);
1404 fail_if(unlink(file) != 0);
1417 s = suite_create("Eet");
1419 tc = tcase_create("Eet_Init");
1420 tcase_add_test(tc, eet_test_init);
1421 suite_add_tcase(s, tc);
1423 tc = tcase_create("Eet Data Encoding/Decoding");
1424 tcase_add_test(tc, eet_test_basic_data_type_encoding_decoding);
1425 tcase_add_test(tc, eet_test_data_type_encoding_decoding);
1426 tcase_add_test(tc, eet_test_data_type_dump_undump);
1427 suite_add_tcase(s, tc);
1429 tc = tcase_create("Eet File");
1430 tcase_add_test(tc, eet_file_simple_write);
1431 tcase_add_test(tc, eet_file_data_test);
1432 tcase_add_test(tc, eet_file_data_dump_test);
1433 suite_add_tcase(s, tc);
1435 tc = tcase_create("Eet Image");
1436 tcase_add_test(tc, eet_image);
1437 tcase_add_test(tc, eet_small_image);
1438 suite_add_tcase(s, tc);
1440 #ifdef HAVE_SIGNATURE
1441 tc = tcase_create("Eet Identity");
1442 tcase_add_test(tc, eet_identity_simple);
1443 tcase_add_test(tc, eet_identity_open_simple);
1444 tcase_add_test(tc, eet_identity_open_pkcs8);
1445 tcase_add_test(tc, eet_identity_open_pkcs8_enc);
1446 suite_add_tcase(s, tc);
1450 tc = tcase_create("Eet Cipher");
1451 tcase_add_test(tc, eet_cipher_decipher_simple);
1452 suite_add_tcase(s, tc);
1466 sr = srunner_create(s);
1467 srunner_run_all(sr, CK_NORMAL);
1468 failed_count = srunner_ntests_failed(sr);
1471 return (failed_count == 0) ? EXIT_SUCCESS : EXIT_FAILURE;