3 #endif /* ifdef HAVE_CONFIG_H */
16 #ifdef EINA_HAVE_THREADS
17 #if ((!defined(_WIN32_WCE)) && (!defined(_WIN32)))
19 # define _EET_INCLUDED_PTHREAD
21 #endif /* ifdef EINA_HAVE_THREADS */
25 #include "eet_suite.h"
27 START_TEST(eet_test_init)
39 typedef struct _Eet_Test_Basic_Type Eet_Test_Basic_Type;
40 struct _Eet_Test_Basic_Type
54 unsigned long long ul;
55 Eet_Test_Basic_Type *empty;
56 Eet_Test_Basic_Type *with;
59 #define EET_TEST_CHAR 0x42
60 #define EET_TEST_SHORT 0x4224
61 #define EET_TEST_INT 0x42211224
62 #define EET_TEST_LONG_LONG 0x84CB42211224BC48
63 #define EET_TEST_STRING "my little test with escape \\\""
64 #define EET_TEST_KEY1 "key1"
65 #define EET_TEST_KEY2 "key2"
66 #define EET_TEST_FLOAT 123.45689
67 #define EET_TEST_FLOAT2 1.0
68 #define EET_TEST_FLOAT3 0.25
69 #define EET_TEST_FLOAT4 0.0001234
70 #define EET_TEST_DOUBLE 123456789.9876543210
71 #define EET_TEST_DOUBLE2 1.0
72 #define EET_TEST_DOUBLE3 0.25
73 #define EET_TEST_FILE_KEY1 "keys/data/1"
74 #define EET_TEST_FILE_KEY2 "keys/data/2"
75 #define EET_TEST_FILE_IMAGE "keys/images/"
77 typedef struct _Eet_Test_Image Eet_Test_Image;
78 struct _Eet_Test_Image
83 unsigned int color[64];
86 static const Eet_Test_Image test_noalpha = {
89 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00,
90 0x000000AA, 0x00110000,
91 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA,
92 0x00110000, 0x00AA0000,
93 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000,
94 0x00AA0000, 0x0000AA00,
95 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000,
96 0x0000AA00, 0x000000AA,
97 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00,
98 0x000000AA, 0x00110000,
99 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA,
100 0x00110000, 0x00AA0000,
101 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000,
102 0x00AA0000, 0x0000AA00,
103 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000,
104 0x0000AA00, 0x000000AA
108 static const Eet_Test_Image test_alpha = {
111 0x0FAA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00,
112 0x000000AA, 0x0F110000,
113 0x0000AA00, 0x0F0000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA,
114 0x0F110000, 0x00AA0000,
115 0x000000AA, 0x00110000, 0x0FAA0000, 0x0000AA00, 0x000000AA, 0x0F110000,
116 0x00AA0000, 0x0000AA00,
117 0x00110000, 0x00AA0000, 0x0000AA00, 0x0F0000AA, 0x0F110000, 0x00AA0000,
118 0x0000AA00, 0x000000AA,
119 0x00AA0000, 0x0000AA00, 0x000000AA, 0x0F110000, 0x0FAA0000, 0x0000AA00,
120 0x000000AA, 0x00110000,
121 0x0000AA00, 0x000000AA, 0x0F110000, 0x00AA0000, 0x0000AA00, 0x0F0000AA,
122 0x00110000, 0x00AA0000,
123 0x000000AA, 0x0F110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000,
124 0x0FAA0000, 0x0000AA00,
125 0x0F110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000,
126 0x0000AA00, 0x0F0000AA
131 _eet_test_basic_set(Eet_Test_Basic_Type *res,
134 res->c = EET_TEST_CHAR;
135 res->s = EET_TEST_SHORT;
136 res->i = EET_TEST_INT + i;
137 res->l = EET_TEST_LONG_LONG;
138 res->str = EET_TEST_STRING;
139 res->istr = EET_TEST_STRING;
140 res->f1 = -EET_TEST_FLOAT;
141 res->d = -EET_TEST_DOUBLE;
142 res->f2 = EET_TEST_FLOAT4;
143 res->uc = EET_TEST_CHAR;
144 res->us = EET_TEST_SHORT;
145 res->ui = EET_TEST_INT;
146 res->ul = EET_TEST_LONG_LONG;
152 Eet_Test_Basic_Type *tmp;
154 tmp = malloc(sizeof (Eet_Test_Basic_Type));
158 tmp->c = EET_TEST_CHAR;
159 tmp->s = EET_TEST_SHORT;
160 tmp->i = EET_TEST_INT + i + 1;
161 tmp->l = EET_TEST_LONG_LONG;
162 tmp->str = EET_TEST_STRING;
163 tmp->istr = EET_TEST_STRING;
164 tmp->f1 = -EET_TEST_FLOAT;
165 tmp->d = -EET_TEST_DOUBLE;
166 tmp->f2 = EET_TEST_FLOAT4;
167 tmp->uc = EET_TEST_CHAR;
168 tmp->us = EET_TEST_SHORT;
169 tmp->ui = EET_TEST_INT;
170 tmp->ul = EET_TEST_LONG_LONG;
174 } /* _eet_test_basic_set */
177 _eet_test_basic_check(Eet_Test_Basic_Type *result,
182 fail_if(result->c != EET_TEST_CHAR);
183 fail_if(result->s != EET_TEST_SHORT);
184 fail_if(result->i != EET_TEST_INT + i);
185 fail_if(result->l != (long long)EET_TEST_LONG_LONG);
186 fail_if(strcmp(result->str, EET_TEST_STRING) != 0);
187 fail_if(strcmp(result->istr, EET_TEST_STRING) != 0);
188 fail_if(result->uc != EET_TEST_CHAR);
189 fail_if(result->us != EET_TEST_SHORT);
190 fail_if(result->ui != EET_TEST_INT);
191 fail_if(result->ul != EET_TEST_LONG_LONG);
193 tmp = (result->f1 + EET_TEST_FLOAT);
197 fail_if(tmp > 0.005);
199 tmp = (result->f2 - EET_TEST_FLOAT4);
203 fail_if(tmp > 0.005);
205 tmp = (result->d + EET_TEST_DOUBLE);
209 fail_if(tmp > 0.00005);
211 fail_if(result->empty != NULL);
214 Eet_Test_Basic_Type *tmp;
217 fail_if(tmp == NULL);
219 fail_if(tmp->c != EET_TEST_CHAR);
220 fail_if(tmp->s != EET_TEST_SHORT);
221 fail_if(tmp->i != EET_TEST_INT + i + 1);
222 fail_if(tmp->l != (long long)EET_TEST_LONG_LONG);
223 fail_if(strcmp(tmp->str, EET_TEST_STRING) != 0);
224 fail_if(strcmp(tmp->istr, EET_TEST_STRING) != 0);
225 fail_if(tmp->uc != EET_TEST_CHAR);
226 fail_if(tmp->us != EET_TEST_SHORT);
227 fail_if(tmp->ui != EET_TEST_INT);
228 fail_if(tmp->ul != EET_TEST_LONG_LONG);
231 fail_if(result->with != NULL);
232 } /* _eet_test_basic_check */
235 _eet_build_basic_descriptor(Eet_Data_Descriptor *edd)
237 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
242 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
247 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
252 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
257 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
262 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
266 EET_T_INLINED_STRING);
267 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
272 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
277 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
282 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
287 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
292 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
297 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
303 EET_DATA_DESCRIPTOR_ADD_SUB(edd, Eet_Test_Basic_Type, "empty", empty, edd);
304 EET_DATA_DESCRIPTOR_ADD_SUB(edd, Eet_Test_Basic_Type, "with", with, edd);
305 } /* _eet_build_basic_descriptor */
307 START_TEST(eet_test_basic_data_type_encoding_decoding)
309 Eet_Data_Descriptor *edd;
310 Eet_Test_Basic_Type *result;
311 Eet_Data_Descriptor_Class eddc;
312 Eet_Test_Basic_Type etbt;
318 _eet_test_basic_set(&etbt, 0);
320 eet_test_setup_eddc(&eddc);
321 eddc.name = "Eet_Test_Basic_Type";
322 eddc.size = sizeof(Eet_Test_Basic_Type);
324 edd = eet_data_descriptor_stream_new(&eddc);
327 _eet_build_basic_descriptor(edd);
329 transfert = eet_data_descriptor_encode(edd, &etbt, &size);
330 fail_if(!transfert || size <= 0);
332 result = eet_data_descriptor_decode(edd, transfert, size);
335 _eet_test_basic_check(result, 0);
340 eet_data_descriptor_free(edd);
346 typedef struct _Eet_Test_Ex_Type Eet_Test_Ex_Type;
347 struct _Eet_Test_Ex_Type
352 unsigned long long l;
369 Eet_Test_Basic_Type sarray1[10];
370 unsigned int sarray2[5];
371 unsigned int varray1_count;
372 unsigned int *varray1;
373 unsigned int varray2_count;
374 Eet_Test_Basic_Type *varray2;
378 unsigned long long ul;
386 _eet_build_ex_descriptor(Eet_Data_Descriptor *edd)
388 Eet_Data_Descriptor_Class eddc;
389 Eet_Test_Ex_Type etbt;
390 Eet_Data_Descriptor *eddb;
392 eet_test_setup_eddc(&eddc);
393 eddc.name = "Eet_Test_Basic_Type";
394 eddc.size = sizeof(Eet_Test_Basic_Type);
395 eddb = eet_data_descriptor_file_new(&eddc);
398 _eet_build_basic_descriptor(eddb);
400 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
405 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
410 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Ex_Type, "i", i, EET_T_INT);
411 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
416 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
421 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
425 EET_T_INLINED_STRING);
426 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
431 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
436 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
441 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
446 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
451 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
456 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
461 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
466 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
471 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
476 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
481 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
486 EET_DATA_DESCRIPTOR_ADD_ARRAY(edd,
491 EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(edd,
496 eet_data_descriptor_element_add(edd,
500 (char *)(&(etbt.varray1)) - (char *)(&(etbt)),
501 (char *)(&(etbt.varray1_count)) -
505 eet_data_descriptor_element_add(edd, "sarray2", EET_T_INT, EET_G_ARRAY,
506 (char *)(&(etbt.sarray2)) - (char *)(&(etbt)),
507 /* 0, */ sizeof(etbt.sarray2) /
508 sizeof(etbt.sarray2[0]), NULL, NULL);
509 eet_data_descriptor_element_add(edd, "charray", EET_T_STRING, EET_G_ARRAY,
510 (char *)(&(etbt.charray)) - (char *)(&(etbt)),
511 /* 0, */ sizeof(etbt.charray) /
512 sizeof(etbt.charray[0]), NULL, NULL);
513 EET_DATA_DESCRIPTOR_ADD_LIST(edd, Eet_Test_Ex_Type, "list", list, edd);
514 EET_DATA_DESCRIPTOR_ADD_HASH(edd, Eet_Test_Ex_Type, "hash", hash, edd);
515 eet_data_descriptor_element_add(edd, "ilist", EET_T_INT, EET_G_LIST,
516 (char *)(&(etbt.ilist)) - (char *)(&(etbt)),
517 0, /* 0, */ NULL, NULL);
518 eet_data_descriptor_element_add(edd, "ihash", EET_T_INT, EET_G_HASH,
519 (char *)(&(etbt.ihash)) - (char *)(&(etbt)),
520 0, /* 0, */ NULL, NULL);
521 eet_data_descriptor_element_add(edd, "slist", EET_T_STRING, EET_G_LIST,
522 (char *)(&(etbt.slist)) - (char *)(&(etbt)),
523 0, /* 0, */ NULL, NULL);
524 eet_data_descriptor_element_add(edd, "shash", EET_T_STRING, EET_G_HASH,
525 (char *)(&(etbt.shash)) - (char *)(&(etbt)),
526 0, /* 0, */ NULL, NULL);
527 } /* _eet_build_ex_descriptor */
529 static Eet_Test_Ex_Type *
530 _eet_test_ex_set(Eet_Test_Ex_Type *res,
536 res = malloc(sizeof(Eet_Test_Ex_Type));
541 res->c = EET_TEST_CHAR + offset;
542 res->s = EET_TEST_SHORT + offset;
543 res->i = EET_TEST_INT + offset;
544 res->l = EET_TEST_LONG_LONG + offset;
545 res->str = EET_TEST_STRING;
546 res->istr = EET_TEST_STRING;
547 res->f1 = EET_TEST_FLOAT + offset;
548 res->f2 = -(EET_TEST_FLOAT2 + offset);
549 res->f3 = EET_TEST_FLOAT3 + offset;
550 res->f4 = EET_TEST_FLOAT2 + offset;
551 res->d1 = EET_TEST_DOUBLE + offset;
552 res->d2 = -(EET_TEST_DOUBLE2 + offset);
553 res->d3 = EET_TEST_DOUBLE3 + offset;
554 res->d4 = EET_TEST_DOUBLE2 + offset;
561 for (i = 0; i < sizeof(res->charray) / sizeof(res->charray[0]); ++i)
562 res->charray[i] = NULL;
564 res->varray2 = malloc(sizeof (Eet_Test_Basic_Type) * 10);
565 res->varray1 = malloc(sizeof (int) * 5);
566 fail_if(!res->varray1 || !res->varray2);
567 for (i = 0; i < 10; ++i)
569 _eet_test_basic_set(res->sarray1 + i, i);
570 _eet_test_basic_set(res->varray2 + i, i);
572 res->varray2_count = 10;
573 for (i = 0; i < 5; ++i)
575 res->sarray2[i] = i * 42 + 1;
576 res->varray1[i] = i * 42 + 1;
578 res->varray1_count = 5;
580 res->uc = EET_TEST_CHAR + offset;
581 res->us = EET_TEST_SHORT + offset;
582 res->ui = EET_TEST_INT + offset;
583 res->ul = EET_TEST_LONG_LONG + offset;
586 } /* _eet_test_ex_set */
589 _eet_test_ex_check(Eet_Test_Ex_Type *stuff,
598 if (stuff->c != EET_TEST_CHAR + offset)
601 if (stuff->s != EET_TEST_SHORT + offset)
604 if (stuff->i != EET_TEST_INT + offset)
607 if (stuff->l != EET_TEST_LONG_LONG + offset)
610 if (strcmp(stuff->str, EET_TEST_STRING) != 0)
613 if (strcmp(stuff->istr, EET_TEST_STRING) != 0)
616 tmp = stuff->f1 - (EET_TEST_FLOAT + offset);
623 tmp = stuff->d1 - (EET_TEST_DOUBLE + offset);
630 if (stuff->f2 != -(EET_TEST_FLOAT2 + offset))
633 if (stuff->d2 != -(EET_TEST_DOUBLE2 + offset))
636 if (stuff->f3 != EET_TEST_FLOAT3 + offset)
639 if (stuff->d3 != EET_TEST_DOUBLE3 + offset)
642 if (stuff->f4 != EET_TEST_FLOAT2 + offset)
645 if (stuff->d4 != EET_TEST_DOUBLE2 + offset)
648 if (stuff->uc != EET_TEST_CHAR + offset)
651 if (stuff->us != EET_TEST_SHORT + offset)
654 if (stuff->ui != (unsigned int)EET_TEST_INT + offset)
657 if (stuff->ul != EET_TEST_LONG_LONG + offset)
660 if (stuff->varray1_count != 5)
663 if (stuff->varray2_count != 10)
666 for (i = 0; i < 5; ++i)
667 if (stuff->sarray2[i] != i * 42 + 1 && stuff->varray1[i] != i * 42 + 1)
670 for (i = 0; i < 10; ++i)
672 _eet_test_basic_check(stuff->sarray1 + i, i);
673 _eet_test_basic_check(stuff->varray2 + i, i);
677 } /* _eet_test_ex_check */
680 func(__UNUSED__ const Eina_Hash *hash,
687 if (strcmp(key, EET_TEST_KEY1) != 0
688 && strcmp(key, EET_TEST_KEY2) != 0)
691 if (_eet_test_ex_check(data, 2))
698 func7(__UNUSED__ const Eina_Hash *hash,
699 __UNUSED__ const void *key,
716 START_TEST(eet_test_data_type_encoding_decoding)
718 Eet_Data_Descriptor *edd;
719 Eet_Test_Ex_Type *result;
721 Eet_Data_Descriptor_Class eddc;
722 Eet_Test_Ex_Type etbt;
728 _eet_test_ex_set(&etbt, 0);
729 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
730 etbt.hash = eina_hash_string_superfast_new(NULL);
731 eina_hash_add(etbt.hash, EET_TEST_KEY1, _eet_test_ex_set(NULL, 2));
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.slist = eina_list_prepend(NULL, "test");
736 etbt.shash = eina_hash_string_superfast_new(NULL);
737 eina_hash_add(etbt.shash, EET_TEST_KEY1, "test");
738 memset(&etbt.charray, 0, sizeof(etbt.charray));
739 etbt.charray[0] = "test";
740 etbt.charray[5] = "plouf";
742 eet_test_setup_eddc(&eddc);
743 eddc.name = "Eet_Test_Ex_Type";
744 eddc.size = sizeof(Eet_Test_Ex_Type);
746 edd = eet_data_descriptor_file_new(&eddc);
749 _eet_build_ex_descriptor(edd);
751 transfert = eet_data_descriptor_encode(edd, &etbt, &size);
752 fail_if(!transfert || size <= 0);
754 result = eet_data_descriptor_decode(edd, transfert, size);
757 fail_if(_eet_test_ex_check(result, 0) != 0);
758 fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
759 fail_if(eina_list_data_get(result->ilist) == NULL);
760 fail_if(*((int *)eina_list_data_get(result->ilist)) != 42);
761 fail_if(eina_list_data_get(result->slist) == NULL);
762 fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
763 fail_if(eina_hash_find(result->shash, EET_TEST_KEY1) == NULL);
764 fail_if(strcmp(eina_hash_find(result->shash, EET_TEST_KEY1), "test") != 0);
765 fail_if(strcmp(result->charray[0], "test") != 0);
766 fail_if(strcmp(result->charray[5], "plouf") != 0);
770 eina_hash_foreach(result->hash, func, &test);
774 eina_hash_foreach(result->ihash, func7, &test);
783 append_string(void *data,
786 char **string = data;
792 length = *string ? strlen(*string) : 0;
793 *string = realloc(*string, strlen(str) + length + 1);
795 memcpy((*string) + length, str, strlen(str) + 1);
796 } /* append_string */
798 START_TEST(eet_test_data_type_dump_undump)
800 Eet_Data_Descriptor *edd;
801 Eet_Test_Ex_Type *result;
802 Eet_Data_Descriptor_Class eddc;
803 Eet_Test_Ex_Type etbt;
814 _eet_test_ex_set(&etbt, 0);
815 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
816 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
817 etbt.hash = eina_hash_string_superfast_new(NULL);
818 eina_hash_add(etbt.hash, EET_TEST_KEY1, _eet_test_ex_set(NULL, 2));
819 etbt.hash = eina_hash_string_superfast_new(NULL);
820 eina_hash_add(etbt.hash, EET_TEST_KEY2, _eet_test_ex_set(NULL, 2));
821 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
822 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
823 etbt.ihash = eina_hash_string_superfast_new(NULL);
824 eina_hash_add(etbt.ihash, EET_TEST_KEY1, &i7);
825 etbt.ihash = eina_hash_string_superfast_new(NULL);
826 eina_hash_add(etbt.ihash, EET_TEST_KEY2, &i7);
827 etbt.slist = eina_list_prepend(NULL, "test");
828 etbt.shash = eina_hash_string_superfast_new(NULL);
829 eina_hash_add(etbt.shash, EET_TEST_KEY1, "test");
830 memset(&etbt.charray, 0, sizeof(etbt.charray));
831 etbt.charray[0] = "test";
833 eet_test_setup_eddc(&eddc);
834 eddc.name = "Eet_Test_Ex_Type";
835 eddc.size = sizeof(Eet_Test_Ex_Type);
837 edd = eet_data_descriptor_file_new(&eddc);
840 _eet_build_ex_descriptor(edd);
842 transfert1 = eet_data_descriptor_encode(edd, &etbt, &size1);
843 fail_if(!transfert1 || size1 <= 0);
846 eet_data_text_dump(transfert1, size1, append_string, &string1);
849 transfert2 = eet_data_text_undump(string1, string1 ? strlen(
850 string1) : 0, &size2);
851 fail_if(!transfert2 && size2 <= 0);
854 eet_data_text_dump(transfert2, size2, append_string, &string2);
857 fail_if(strlen(string2) != strlen(string1));
859 result = eet_data_descriptor_decode(edd, transfert2, size2);
862 fail_if(_eet_test_ex_check(result, 0) != 0);
863 fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
864 fail_if(eina_list_data_get(result->ilist) == NULL);
865 fail_if(*((int *)eina_list_data_get(result->ilist)) != 42);
866 fail_if(eina_list_data_get(result->slist) == NULL);
867 fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
868 fail_if(eina_hash_find(result->shash, EET_TEST_KEY1) == NULL);
869 fail_if(strcmp(eina_hash_find(result->shash, EET_TEST_KEY1), "test") != 0);
870 fail_if(strcmp(result->charray[0], "test") != 0);
874 eina_hash_foreach(result->hash, func, &test);
878 eina_hash_foreach(result->ihash, func7, &test);
885 START_TEST(eet_file_simple_write)
887 const char *buffer = "Here is a string of data to save !";
890 char *file = strdup("/tmp/eet_suite_testXXXXXX");
895 fail_if(!(file = tmpnam(file)));
897 fail_if(eet_mode_get(NULL) != EET_FILE_MODE_INVALID);
899 ef = eet_open(file, EET_FILE_MODE_WRITE);
902 fail_if(!eet_write(ef, "keys/tests", buffer, strlen(buffer) + 1, 1));
903 fail_if(!eet_alias(ef, "keys/alias", "keys/tests", 0));
904 fail_if(!eet_alias(ef, "keys/alias2", "keys/alias", 1));
906 fail_if(eet_mode_get(ef) != EET_FILE_MODE_WRITE);
908 fail_if(eet_list(ef, "*", &size) != NULL);
909 fail_if(eet_num_entries(ef) != -1);
913 /* Test read of simple file */
914 ef = eet_open(file, EET_FILE_MODE_READ);
917 test = eet_read(ef, "keys/tests", &size);
919 fail_if(size != (int)strlen(buffer) + 1);
921 fail_if(memcmp(test, buffer, strlen(buffer) + 1) != 0);
923 test = eet_read(ef, "keys/alias2", &size);
925 fail_if(size != (int)strlen(buffer) + 1);
927 fail_if(eet_read_direct(ef, "key/alias2", &size));
929 fail_if(eet_mode_get(ef) != EET_FILE_MODE_READ);
930 fail_if(eet_num_entries(ef) != 3);
934 /* Test eet cache system */
935 ef = eet_open(file, EET_FILE_MODE_READ);
938 test = eet_read(ef, "keys/tests", &size);
940 fail_if(size != (int)strlen(buffer) + 1);
942 fail_if(memcmp(test, buffer, strlen(buffer) + 1) != 0);
946 fail_if(unlink(file) != 0);
952 START_TEST(eet_file_data_test)
954 Eet_Data_Descriptor *edd;
955 Eet_Test_Ex_Type *result;
959 char *file = strdup("/tmp/eet_suite_testXXXXXX");
960 Eet_Data_Descriptor_Class eddc;
961 Eet_Test_Ex_Type etbt;
967 _eet_test_ex_set(&etbt, 0);
968 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
969 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
970 etbt.hash = eina_hash_string_superfast_new(NULL);
971 eina_hash_add(etbt.hash, EET_TEST_KEY1, _eet_test_ex_set(NULL, 2));
972 etbt.hash = eina_hash_string_superfast_new(NULL);
973 eina_hash_add(etbt.hash, EET_TEST_KEY2, _eet_test_ex_set(NULL, 2));
974 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
975 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
976 etbt.ihash = eina_hash_string_superfast_new(NULL);
977 eina_hash_add(etbt.ihash, EET_TEST_KEY1, &i7);
978 etbt.ihash = eina_hash_string_superfast_new(NULL);
979 eina_hash_add(etbt.ihash, EET_TEST_KEY2, &i7);
980 etbt.slist = eina_list_prepend(NULL, "test");
981 etbt.shash = eina_hash_string_superfast_new(NULL);
982 eina_hash_add(etbt.shash, EET_TEST_KEY1, "test");
983 memset(&etbt.charray, 0, sizeof(etbt.charray));
984 etbt.charray[0] = "test";
986 eet_test_setup_eddc(&eddc);
987 eddc.name = "Eet_Test_Ex_Type";
988 eddc.size = sizeof(Eet_Test_Ex_Type);
990 edd = eet_data_descriptor_file_new(&eddc);
993 _eet_build_ex_descriptor(edd);
995 fail_if(!(file = tmpnam(file)));
997 /* Insert an error in etbt. */
1000 /* Save the encoded data in a file. */
1001 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
1004 fail_if(!eet_data_write(ef, edd, EET_TEST_FILE_KEY1, &etbt, 0));
1006 result = eet_data_read(ef, edd, EET_TEST_FILE_KEY1);
1009 fail_if(eet_mode_get(ef) != EET_FILE_MODE_READ_WRITE);
1011 /* Test string space. */
1012 ed = eet_dictionary_get(ef);
1014 fail_if(!eet_dictionary_string_check(ed, result->str));
1015 fail_if(eet_dictionary_string_check(ed, result->istr));
1019 /* Attempt to replace etbt by the correct one. */
1020 etbt.i = EET_TEST_INT;
1022 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
1025 fail_if(!eet_data_write(ef, edd, EET_TEST_FILE_KEY1, &etbt, 0));
1027 result = eet_data_read(ef, edd, EET_TEST_FILE_KEY1);
1030 /* Test the resulting data. */
1031 fail_if(_eet_test_ex_check(result, 0) != 0);
1035 /* Read back the data. */
1036 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
1039 fail_if(!eet_data_write(ef, edd, EET_TEST_FILE_KEY2, &etbt, 0));
1041 result = eet_data_read(ef, edd, EET_TEST_FILE_KEY1);
1044 /* Test string space. */
1045 ed = eet_dictionary_get(ef);
1048 fail_if(!eet_dictionary_string_check(ed, result->str));
1049 fail_if(eet_dictionary_string_check(ed, result->istr));
1051 /* Test the resulting data. */
1052 fail_if(_eet_test_ex_check(result, 0) != 0);
1053 fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
1054 fail_if(eina_list_data_get(result->ilist) == NULL);
1055 fail_if(*((int *)eina_list_data_get(result->ilist)) != 42);
1056 fail_if(eina_list_data_get(result->slist) == NULL);
1057 fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
1058 fail_if(eina_hash_find(result->shash, EET_TEST_KEY1) == NULL);
1059 fail_if(strcmp(eina_hash_find(result->shash, EET_TEST_KEY1), "test") != 0);
1060 fail_if(strcmp(result->charray[0], "test") != 0);
1064 eina_hash_foreach(result->hash, func, &test);
1068 eina_hash_foreach(result->ihash, func7, &test);
1072 list = eet_list(ef, "keys/*", &size);
1073 fail_if(eet_num_entries(ef) != 2);
1075 fail_if(!(strcmp(list[0],
1076 EET_TEST_FILE_KEY1) == 0 &&
1077 strcmp(list[1], EET_TEST_FILE_KEY2) == 0)
1078 && !(strcmp(list[0],
1079 EET_TEST_FILE_KEY2) == 0 &&
1080 strcmp(list[1], EET_TEST_FILE_KEY1) == 0));
1083 fail_if(eet_delete(ef, NULL) != 0);
1084 fail_if(eet_delete(NULL, EET_TEST_FILE_KEY1) != 0);
1085 fail_if(eet_delete(ef, EET_TEST_FILE_KEY1) == 0);
1087 list = eet_list(ef, "keys/*", &size);
1089 fail_if(eet_num_entries(ef) != 1);
1091 /* Test some more wrong case */
1092 fail_if(eet_data_read(ef, edd, "plop") != NULL);
1093 fail_if(eet_data_read(ef, edd, EET_TEST_FILE_KEY1) != NULL);
1095 /* Reinsert and reread data */
1096 fail_if(!eet_data_write(ef, edd, EET_TEST_FILE_KEY1, &etbt, 0));
1097 fail_if(eet_data_read(ef, edd, EET_TEST_FILE_KEY1) == NULL);
1098 fail_if(eet_read_direct(ef, EET_TEST_FILE_KEY1, &size) == NULL);
1102 fail_if(unlink(file) != 0);
1108 START_TEST(eet_file_data_dump_test)
1110 Eet_Data_Descriptor *edd;
1111 Eet_Test_Ex_Type *result;
1112 Eet_Data_Descriptor_Class eddc;
1113 Eet_Test_Ex_Type etbt;
1116 char *file = strdup("/tmp/eet_suite_testXXXXXX");
1121 _eet_test_ex_set(&etbt, 0);
1122 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
1123 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
1124 etbt.hash = eina_hash_string_superfast_new(NULL);
1125 eina_hash_add(etbt.hash, EET_TEST_KEY1, _eet_test_ex_set(NULL, 2));
1126 eina_hash_add(etbt.hash, EET_TEST_KEY2, _eet_test_ex_set(NULL, 2));
1127 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
1128 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
1129 etbt.ihash = eina_hash_string_superfast_new(NULL);
1130 eina_hash_add(etbt.ihash, EET_TEST_KEY1, &i7);
1131 eina_hash_add(etbt.ihash, EET_TEST_KEY2, &i7);
1132 etbt.slist = eina_list_prepend(NULL, "test");
1133 etbt.shash = eina_hash_string_superfast_new(NULL);
1134 eina_hash_add(etbt.shash, EET_TEST_KEY1, "test");
1135 memset(&etbt.charray, 0, sizeof(etbt.charray));
1136 etbt.charray[0] = "test";
1138 eet_eina_file_data_descriptor_class_set(&eddc, sizeof (eddc),
1140 sizeof(Eet_Test_Ex_Type));
1142 edd = eet_data_descriptor_file_new(&eddc);
1145 _eet_build_ex_descriptor(edd);
1147 fail_if(!(file = tmpnam(file)));
1149 /* Save the encoded data in a file. */
1150 ef = eet_open(file, EET_FILE_MODE_WRITE);
1153 fail_if(!eet_data_write(ef, edd, EET_TEST_FILE_KEY1, &etbt, 0));
1157 /* Use dump/undump in the middle */
1158 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
1162 fail_if(eet_data_dump(ef, EET_TEST_FILE_KEY1, append_string, &string1) != 1);
1163 fail_if(eet_delete(ef, EET_TEST_FILE_KEY1) == 0);
1164 fail_if(!eet_data_undump(ef, EET_TEST_FILE_KEY1, string1, strlen(string1), 1));
1168 /* Test the correctness of the reinsertion. */
1169 ef = eet_open(file, EET_FILE_MODE_READ);
1172 result = eet_data_read(ef, edd, EET_TEST_FILE_KEY1);
1177 /* Test the resulting data. */
1178 fail_if(_eet_test_ex_check(result, 0) != 0);
1179 fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
1180 fail_if(eina_list_data_get(result->ilist) == NULL);
1181 fail_if(*((int *)eina_list_data_get(result->ilist)) != 42);
1182 fail_if(eina_list_data_get(result->slist) == NULL);
1183 fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
1184 fail_if(eina_hash_find(result->shash, EET_TEST_KEY1) == NULL);
1185 fail_if(strcmp(eina_hash_find(result->shash, EET_TEST_KEY1), "test") != 0);
1186 fail_if(strcmp(result->charray[0], "test") != 0);
1190 eina_hash_foreach(result->hash, func, &test);
1194 eina_hash_foreach(result->ihash, func7, &test);
1198 fail_if(unlink(file) != 0);
1204 START_TEST(eet_image)
1207 char *file = strdup("/tmp/eet_suite_testXXXXXX");
1219 fail_if(!(file = tmpnam(file)));
1221 /* Save the encoded data in a file. */
1222 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
1225 result = eet_data_image_write(ef,
1226 EET_TEST_FILE_IMAGE "0",
1234 fail_if(result == 0);
1236 result = eet_data_image_write(ef,
1237 EET_TEST_FILE_IMAGE "1",
1245 fail_if(result == 0);
1247 result = eet_data_image_write(ef,
1248 EET_TEST_FILE_IMAGE "2",
1256 fail_if(result == 0);
1258 result = eet_data_image_write(ef,
1259 EET_TEST_FILE_IMAGE "3",
1267 fail_if(result == 0);
1269 result = eet_data_image_write(ef,
1270 EET_TEST_FILE_IMAGE "4",
1278 fail_if(result == 0);
1280 result = eet_data_image_write(ef,
1281 EET_TEST_FILE_IMAGE "5",
1289 fail_if(result == 0);
1291 result = eet_data_image_write(ef,
1292 EET_TEST_FILE_IMAGE "6",
1300 fail_if(result == 0);
1302 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "7", test_alpha.color,
1303 test_alpha.w, test_alpha.h, test_alpha.alpha,
1305 fail_if(result == 0);
1307 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "8", test_alpha.color,
1308 test_alpha.w, test_alpha.h, test_alpha.alpha,
1310 fail_if(result == 0);
1312 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "9", test_alpha.color,
1313 test_alpha.w, test_alpha.h, test_alpha.alpha,
1315 fail_if(result == 0);
1317 data = eet_data_image_read(ef,
1318 EET_TEST_FILE_IMAGE "2",
1325 fail_if(data == NULL);
1326 fail_if(w != test_noalpha.w);
1327 fail_if(h != test_noalpha.h);
1328 fail_if(alpha != test_noalpha.alpha);
1329 fail_if(compress != 9);
1330 fail_if(lossy != 0);
1331 fail_if(data[0] != test_noalpha.color[0]);
1334 result = eet_data_image_header_read(ef,
1335 EET_TEST_FILE_IMAGE "2",
1342 fail_if(result == 0);
1343 fail_if(w != test_noalpha.w);
1344 fail_if(h != test_noalpha.h);
1345 fail_if(alpha != test_noalpha.alpha);
1346 fail_if(compress != 9);
1347 fail_if(lossy != 0);
1351 /* Test read of image */
1352 ef = eet_open(file, EET_FILE_MODE_READ);
1355 result = eet_data_image_header_read(ef,
1356 EET_TEST_FILE_IMAGE "0",
1363 fail_if(result == 0);
1364 fail_if(w != test_noalpha.w);
1365 fail_if(h != test_noalpha.h);
1366 fail_if(alpha != test_noalpha.alpha);
1367 fail_if(compress != 0);
1368 fail_if(lossy != 0);
1370 data = malloc(w * h * 4);
1371 fail_if(data == NULL);
1372 result = eet_data_image_read_to_surface(ef,
1373 EET_TEST_FILE_IMAGE "0",
1384 fail_if(result != 1);
1385 fail_if(alpha != test_noalpha.alpha);
1386 fail_if(compress != 0);
1387 fail_if(quality != 100);
1388 fail_if(lossy != 0);
1389 fail_if(data[0] != test_noalpha.color[4 + 4 * w]);
1392 data = malloc(w * h * 4);
1393 fail_if(data == NULL);
1394 result = eet_data_image_read_to_surface(ef,
1395 EET_TEST_FILE_IMAGE "0",
1406 fail_if(result != 1);
1407 fail_if(alpha != test_noalpha.alpha);
1408 fail_if(compress != 0);
1409 fail_if(quality != 100);
1410 fail_if(lossy != 0);
1411 fail_if(data[0] != test_noalpha.color[0]);
1414 data = eet_data_image_read(ef,
1415 EET_TEST_FILE_IMAGE "1",
1422 fail_if(data == NULL);
1423 fail_if(w != test_noalpha.w);
1424 fail_if(h != test_noalpha.h);
1425 fail_if(alpha != test_noalpha.alpha);
1426 fail_if(compress != 5);
1427 fail_if(quality != 100);
1428 fail_if(lossy != 0);
1429 fail_if(data[0] != test_noalpha.color[0]);
1432 data = eet_data_image_read(ef,
1433 EET_TEST_FILE_IMAGE "2",
1440 fail_if(data == NULL);
1441 fail_if(w != test_noalpha.w);
1442 fail_if(h != test_noalpha.h);
1443 fail_if(alpha != test_noalpha.alpha);
1444 fail_if(compress != 9);
1445 fail_if(lossy != 0);
1446 fail_if(data[0] != test_noalpha.color[0]);
1449 data = eet_data_image_read(ef,
1450 EET_TEST_FILE_IMAGE "3",
1457 fail_if(data == NULL);
1458 fail_if(w != test_noalpha.w);
1459 fail_if(h != test_noalpha.h);
1460 fail_if(alpha != test_noalpha.alpha);
1461 fail_if(lossy != 1);
1464 data = eet_data_image_read(ef,
1465 EET_TEST_FILE_IMAGE "5",
1472 fail_if(data == NULL);
1473 fail_if(w != test_noalpha.w);
1474 fail_if(h != test_noalpha.h);
1475 fail_if(alpha != test_noalpha.alpha);
1476 fail_if(lossy != 1);
1479 data = eet_data_image_read(ef,
1480 EET_TEST_FILE_IMAGE "6",
1487 fail_if(data == NULL);
1488 fail_if(w != test_noalpha.w);
1489 fail_if(h != test_noalpha.h);
1490 fail_if(alpha != test_noalpha.alpha);
1491 fail_if(lossy != 1);
1494 result = eet_data_image_header_read(ef,
1495 EET_TEST_FILE_IMAGE "7",
1502 fail_if(result == 0);
1503 fail_if(w != test_alpha.w);
1504 fail_if(h != test_alpha.h);
1505 fail_if(alpha != test_alpha.alpha);
1506 fail_if(compress != 9);
1507 fail_if(lossy != 0);
1509 data = eet_data_image_read(ef,
1510 EET_TEST_FILE_IMAGE "7",
1517 fail_if(data == NULL);
1518 fail_if(w != test_alpha.w);
1519 fail_if(h != test_alpha.h);
1520 fail_if(alpha != test_alpha.alpha);
1521 fail_if(compress != 9);
1522 fail_if(lossy != 0);
1523 fail_if(data[0] != test_alpha.color[0]);
1526 result = eet_data_image_header_read(ef,
1527 EET_TEST_FILE_IMAGE "9",
1534 fail_if(result == 0);
1535 fail_if(w != test_alpha.w);
1536 fail_if(h != test_alpha.h);
1537 fail_if(alpha != test_alpha.alpha);
1538 fail_if(lossy != 1);
1540 data = eet_data_image_read(ef,
1541 EET_TEST_FILE_IMAGE "9",
1548 fail_if(data == NULL);
1549 fail_if(w != test_alpha.w);
1550 fail_if(h != test_alpha.h);
1551 fail_if(alpha != test_alpha.alpha);
1552 fail_if(lossy != 1);
1557 fail_if(unlink(file) != 0);
1564 #define IM0 0x00112233
1565 #define IM1 0x44556677
1566 #define IM2 0x8899aabb
1567 #define IM3 0xccddeeff
1569 START_TEST(eet_small_image)
1571 char *file = strdup("/tmp/eet_suite_testXXXXXX");
1572 unsigned int image[4];
1590 fail_if(!(file = tmpnam(file)));
1592 ef = eet_open(file, EET_FILE_MODE_WRITE);
1595 result = eet_data_image_write(ef, "/images/test", image, 2, 2, 1, 9, 100, 0);
1596 fail_if(result == 0);
1600 ef = eet_open(file, EET_FILE_MODE_READ);
1603 data = (unsigned int *)eet_data_image_read(ef,
1611 fail_if(data == NULL);
1615 fail_if(unlink(file) != 0);
1617 fail_if(data[0] != IM0);
1618 fail_if(data[1] != IM1);
1619 fail_if(data[2] != IM2);
1620 fail_if(data[3] != IM3);
1628 START_TEST(eet_identity_simple)
1630 const char *buffer = "Here is a string of data to save !";
1636 char *file = strdup("/tmp/eet_suite_testXXXXXX");
1642 fail_if(!(file = tmpnam(file)));
1643 fail_if(chdir("src/tests"));
1644 fail_if(!(noread = fopen("/dev/null", "w")));
1646 /* Sign an eet file. */
1647 ef = eet_open(file, EET_FILE_MODE_WRITE);
1650 fail_if(!eet_write(ef, "keys/tests", buffer, strlen(buffer) + 1, 0));
1652 k = eet_identity_open("cert.pem", "key.pem", NULL);
1655 fail_if(eet_identity_set(ef, k) != EET_ERROR_NONE);
1656 eet_identity_print(k, noread);
1660 /* Open a signed file. */
1661 ef = eet_open(file, EET_FILE_MODE_READ);
1664 test = eet_read(ef, "keys/tests", &size);
1666 fail_if(size != (int)strlen(buffer) + 1);
1668 fail_if(memcmp(test, buffer, strlen(buffer) + 1) != 0);
1670 tmp = eet_identity_x509(ef, &size);
1671 fail_if(tmp == NULL);
1673 eet_identity_certificate_print(tmp, size, noread);
1677 /* As we are changing file contain in less than 1s, this could get unnoticed
1678 by eet cache system. */
1681 /* Corrupting the file. */
1682 fd = open(file, O_WRONLY);
1685 fail_if(lseek(fd, 200, SEEK_SET) != 200);
1686 fail_if(write(fd, "42", 2) != 2);
1687 fail_if(lseek(fd, 50, SEEK_SET) != 50);
1688 fail_if(write(fd, "42", 2) != 2);
1689 fail_if(lseek(fd, 88, SEEK_SET) != 88);
1690 fail_if(write(fd, "42", 2) != 2);
1694 /* Attempt to open a modified file. */
1695 ef = eet_open(file, EET_FILE_MODE_READ);
1698 fail_if(unlink(file) != 0);
1704 START_TEST(eet_identity_open_simple)
1710 fail_if(chdir("src/tests"));
1712 k = eet_identity_open("cert.pem", "key.pem", NULL);
1716 eet_identity_close(k);
1722 START_TEST(eet_identity_open_pkcs8)
1728 fail_if(chdir("src/tests"));
1730 k = eet_identity_open("cert.pem", "key_enc_none.pem", NULL);
1734 eet_identity_close(k);
1742 pass_get(char *pass,
1744 __UNUSED__ int rwflags,
1747 memset(pass, 0, size);
1749 if ((int)strlen("password") > size)
1752 snprintf(pass, size, "%s", "password");
1753 return strlen(pass);
1757 badpass_get(char *pass,
1759 __UNUSED__ int rwflags,
1762 memset(pass, 0, size);
1764 if ((int)strlen("bad password") > size)
1767 snprintf(pass, size, "%s", "bad password");
1768 return strlen(pass);
1771 START_TEST(eet_identity_open_pkcs8_enc)
1777 fail_if(chdir("src/tests"));
1779 k = eet_identity_open("cert.pem", "key_enc.pem", NULL);
1783 eet_identity_close(k);
1785 k = eet_identity_open("cert.pem", "key_enc.pem", &badpass_get);
1789 eet_identity_close(k);
1791 k = eet_identity_open("cert.pem", "key_enc.pem", &pass_get);
1795 eet_identity_close(k);
1800 START_TEST(eet_cipher_decipher_simple)
1802 const char *buffer = "Here is a string of data to save !";
1803 const char *key = "This is a crypto key";
1804 const char *key_bad = "This is another crypto key";
1807 char *file = strdup("/tmp/eet_suite_testXXXXXX");
1812 fail_if(!(file = tmpnam(file)));
1813 fail_if(chdir("src/tests"));
1815 /* Crypt an eet file. */
1816 ef = eet_open(file, EET_FILE_MODE_WRITE);
1819 fail_if(!eet_write_cipher(ef, "keys/tests", buffer, strlen(buffer) + 1, 0,
1824 /* Decrypt an eet file. */
1825 ef = eet_open(file, EET_FILE_MODE_READ);
1828 test = eet_read_cipher(ef, "keys/tests", &size, key);
1830 fail_if(size != (int)strlen(buffer) + 1);
1832 fail_if(memcmp(test, buffer, strlen(buffer) + 1) != 0);
1836 /* Decrypt an eet file. */
1837 ef = eet_open(file, EET_FILE_MODE_READ);
1840 test = eet_read_cipher(ef, "keys/tests", &size, key_bad);
1842 if (size == (int)strlen(buffer) + 1)
1843 fail_if(memcmp(test, buffer, strlen(buffer) + 1) == 0);
1847 fail_if(unlink(file) != 0);
1854 #ifdef EINA_HAVE_THREADS
1856 static Eina_Bool open_worker_stop;
1858 # ifdef _EET_INCLUDED_PTHREAD
1861 open_close_worker(void *path)
1863 while (!open_worker_stop)
1865 Eet_File *ef = eet_open((char const *)path, EET_FILE_MODE_READ);
1867 pthread_exit("eet_open() failed");
1870 Eet_Error err_code = eet_close(ef);
1871 if (err_code != EET_ERROR_NONE)
1872 pthread_exit("eet_close() failed");
1877 } /* open_close_worker */
1879 # else /* ifdef _EET_INCLUDED_PTHREAD */
1881 static unsigned int __stdcall
1882 open_close_worker(void *path)
1884 while (!open_worker_stop)
1886 Eet_File *ef = eet_open((char const *)path, EET_FILE_MODE_READ);
1891 Eet_Error err_code = eet_close(ef);
1892 if (err_code != EET_ERROR_NONE)
1898 } /* open_close_worker */
1900 # endif /* ifdef _EET_INCLUDED_PTHREAD */
1902 START_TEST(eet_cache_concurrency)
1904 char *file = strdup("/tmp/eet_suite_testXXXXXX");
1905 const char *buffer = "test data";
1909 # ifdef _EET_INCLUDED_PTHREAD
1911 # else /* ifdef _EET_INCLUDED_PTHREAD */
1913 unsigned int thread_id;
1915 # endif /* ifdef _EET_INCLUDED_PTHREAD */
1918 eina_threads_init();
1920 /* create a file to test with */
1921 fail_if(!(file = tmpnam(file)));
1922 ef = eet_open(file, EET_FILE_MODE_WRITE);
1924 fail_if(!eet_write(ef, "keys/tests", buffer, strlen(buffer) + 1, 0));
1926 /* start a thread that repeatedly opens and closes a file */
1927 open_worker_stop = 0;
1928 # ifdef _EET_INCLUDED_PTHREAD
1929 pthread_create(&thread, NULL, open_close_worker, file);
1930 # else /* ifdef _EET_INCLUDED_PTHREAD */
1931 thread = _beginthreadex(NULL, 0, open_close_worker, file, 0, &thread_id);
1932 # endif /* ifdef _EET_INCLUDED_PTHREAD */
1933 /* clear the cache repeatedly in this thread */
1934 for (n = 0; n < 50000; ++n)
1939 /* join the other thread, and fail if it returned an error message */
1940 open_worker_stop = 1;
1941 # ifdef _EET_INCLUDED_PTHREAD
1942 fail_if(pthread_join(thread, &thread_ret) != 0);
1943 fail_unless(thread_ret == NULL, (char const *)thread_ret);
1944 # else /* ifdef _EET_INCLUDED_PTHREAD */
1945 ret = WaitForSingleObject((HANDLE)thread, INFINITE);
1946 fail_if(ret != WAIT_OBJECT_0);
1947 fail_if(GetExitCodeThread((HANDLE)thread, &ret) == FALSE);
1949 # endif /* ifdef _EET_INCLUDED_PTHREAD */
1951 fail_if(unlink(file) != 0);
1953 eina_threads_shutdown();
1958 #endif /* EINA_HAVE_THREADS */
1960 typedef struct _Eet_Connection_Data Eet_Connection_Data;
1961 struct _Eet_Connection_Data
1963 Eet_Connection *conn;
1964 Eet_Data_Descriptor *edd;
1969 _eet_connection_read(const void *eet_data,
1973 Eet_Connection_Data *dt = user_data;
1974 Eet_Test_Ex_Type *result;
1978 result = eet_data_descriptor_decode(dt->edd, eet_data, size);
1979 node = eet_data_node_decode_cipher(eet_data, NULL, size);
1981 /* Test the resulting data. */
1983 fail_if(_eet_test_ex_check(result, 0) != 0);
1984 fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
1985 fail_if(eina_list_data_get(result->ilist) == NULL);
1986 fail_if(*((int *)eina_list_data_get(result->ilist)) != 42);
1987 fail_if(eina_list_data_get(result->slist) == NULL);
1988 fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
1989 fail_if(eina_hash_find(result->shash, EET_TEST_KEY1) == NULL);
1990 fail_if(strcmp(eina_hash_find(result->shash, EET_TEST_KEY1), "test") != 0);
1991 fail_if(strcmp(result->charray[0], "test") != 0);
1995 eina_hash_foreach(result->hash, func, &test);
1999 eina_hash_foreach(result->ihash, func7, &test);
2005 dt->test = EINA_TRUE;
2006 fail_if(!eet_connection_node_send(dt->conn, node, NULL));
2010 } /* _eet_connection_read */
2013 _eet_connection_write(const void *data,
2017 Eet_Connection_Data *dt = user_data;
2022 int step = size / 3;
2024 eet_connection_received(dt->conn, data, step);
2025 eet_connection_received(dt->conn, (char *)data + step, step);
2027 still = eet_connection_received(dt->conn, (char *)data + 2 * step, size);
2030 still = eet_connection_received(dt->conn, data, size);
2035 } /* _eet_connection_write */
2037 START_TEST(eet_connection_check)
2039 Eet_Connection *conn;
2040 Eet_Data_Descriptor *edd;
2041 Eet_Data_Descriptor_Class eddc;
2042 Eet_Connection_Data ecd;
2043 Eet_Test_Ex_Type etbt;
2048 _eet_test_ex_set(&etbt, 0);
2049 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
2050 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
2051 etbt.hash = eina_hash_string_superfast_new(NULL);
2052 eina_hash_add(etbt.hash, EET_TEST_KEY1, _eet_test_ex_set(NULL, 2));
2053 eina_hash_add(etbt.hash, EET_TEST_KEY2, _eet_test_ex_set(NULL, 2));
2054 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
2055 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
2056 etbt.ihash = eina_hash_string_superfast_new(NULL);
2057 eina_hash_add(etbt.ihash, EET_TEST_KEY1, &i7);
2058 eina_hash_add(etbt.ihash, EET_TEST_KEY2, &i7);
2059 etbt.slist = eina_list_prepend(NULL, "test");
2060 etbt.shash = eina_hash_string_superfast_new(NULL);
2061 eina_hash_add(etbt.shash, EET_TEST_KEY1, "test");
2062 memset(&etbt.charray, 0, sizeof(etbt.charray));
2063 etbt.charray[0] = "test";
2065 eet_eina_file_data_descriptor_class_set(&eddc, sizeof (eddc),
2067 sizeof(Eet_Test_Ex_Type));
2069 edd = eet_data_descriptor_file_new(&eddc);
2072 _eet_build_ex_descriptor(edd);
2074 /* Create a connection. */
2075 conn = eet_connection_new(_eet_connection_read, _eet_connection_write, &ecd);
2079 ecd.test = EINA_FALSE;
2083 /* Test the connection. */
2084 fail_if(!eet_connection_send(conn, edd, &etbt, NULL));
2088 fail_if(!eet_connection_close(conn, &on_going));
2104 typedef struct _Eet_5FP Eet_5FP;
2114 typedef struct _Eet_5DBL Eet_5DBL;
2118 Eet_Data_Descriptor_Class eddc;
2119 Eet_Data_Descriptor *edd_5FP;
2120 Eet_Data_Descriptor *edd_5DBL;
2129 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_5FP);
2130 edd_5FP = eet_data_descriptor_stream_new(&eddc);
2132 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "fp32", fp32, EET_T_F32P32);
2133 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "fp16", fp16, EET_T_F16P16);
2134 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "fp8", fp8, EET_T_F8P24);
2135 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "f1", f1, EET_T_F32P32);
2136 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "f0", f0, EET_T_F32P32);
2138 eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), "Eet_5FP", sizeof (Eet_5DBL));
2139 edd_5DBL = eet_data_descriptor_stream_new(&eddc);
2141 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "fp32", fp32, EET_T_DOUBLE);
2142 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "fp16", fp16, EET_T_DOUBLE);
2143 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "fp8", fp8, EET_T_FLOAT);
2144 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "f1", f1, EET_T_DOUBLE);
2145 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "f0", f0, EET_T_DOUBLE);
2147 origin.fp32 = eina_f32p32_double_from(1.125);
2148 origin.fp16 = eina_f16p16_int_from(2000);
2149 origin.fp8 = eina_f8p24_int_from(125);
2150 origin.f1 = eina_f32p32_int_from(1);
2153 blob = eet_data_descriptor_encode(edd_5FP, &origin, &size);
2154 fail_if(!blob || size <= 0);
2156 build = eet_data_descriptor_decode(edd_5FP, blob, size);
2159 convert = eet_data_descriptor_decode(edd_5DBL, blob, size);
2162 fail_if(build->fp32 != eina_f32p32_double_from(1.125));
2163 fail_if(build->fp16 != eina_f16p16_int_from(2000));
2164 fail_if(build->fp8 != eina_f8p24_int_from(125));
2165 fail_if(build->f1 != eina_f32p32_int_from(1));
2166 fail_if(build->f0 != 0);
2168 fail_if(convert->fp32 != 1.125);
2169 fail_if(convert->fp16 != 2000);
2170 fail_if(convert->fp8 != 125);
2171 fail_if(convert->f1 != 1);
2172 fail_if(convert->f0 != 0);
2177 START_TEST(eet_file_fp)
2179 char *file = strdup("/tmp/eet_suite_testXXXXXX");
2180 Eet_Data_Descriptor_Class eddc;
2181 Eet_Data_Descriptor *edd_5FP;
2182 Eet_Data_Descriptor *edd_5DBL;
2190 EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_5FP);
2191 edd_5FP = eet_data_descriptor_file_new(&eddc);
2193 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "fp32", fp32, EET_T_F32P32);
2194 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "fp16", fp16, EET_T_F16P16);
2195 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "fp8", fp8, EET_T_F8P24);
2196 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "f1", f1, EET_T_F32P32);
2197 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "f0", f0, EET_T_F32P32);
2199 eet_eina_file_data_descriptor_class_set(&eddc, sizeof (eddc), "Eet_5FP", sizeof (Eet_5DBL));
2200 edd_5DBL = eet_data_descriptor_file_new(&eddc);
2202 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "fp32", fp32, EET_T_DOUBLE);
2203 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "fp16", fp16, EET_T_DOUBLE);
2204 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "fp8", fp8, EET_T_FLOAT);
2205 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "f1", f1, EET_T_DOUBLE);
2206 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "f0", f0, EET_T_DOUBLE);
2208 origin.fp32 = eina_f32p32_double_from(1.125);
2209 origin.fp16 = eina_f16p16_int_from(2000);
2210 origin.fp8 = eina_f8p24_int_from(125);
2211 origin.f1 = eina_f32p32_int_from(1);
2214 fail_if(!(file = tmpnam(file)));
2216 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
2219 fail_if(!eet_data_write(ef, edd_5FP, EET_TEST_FILE_KEY1, &origin, 1));
2221 build = eet_data_read(ef, edd_5FP, EET_TEST_FILE_KEY1);
2224 convert = eet_data_read(ef, edd_5DBL, EET_TEST_FILE_KEY1);
2227 fail_if(build->fp32 != eina_f32p32_double_from(1.125));
2228 fail_if(build->fp16 != eina_f16p16_int_from(2000));
2229 fail_if(build->fp8 != eina_f8p24_int_from(125));
2230 fail_if(build->f1 != eina_f32p32_int_from(1));
2231 fail_if(build->f0 != 0);
2233 fail_if(convert->fp32 != 1.125);
2234 fail_if(convert->fp16 != 2000);
2235 fail_if(convert->fp8 != 125);
2236 fail_if(convert->f1 != 1);
2237 fail_if(convert->f0 != 0);
2241 fail_if(unlink(file) != 0);
2248 typedef struct _Eet_Union_Test Eet_Union_Test;
2249 typedef struct _Eet_Variant_Test Eet_Variant_Test;
2250 typedef struct _Eet_Variant_Type Eet_Variant_Type;
2251 typedef struct _Eet_Inherit_Test1 Eet_Inherit_Test1;
2252 typedef struct _Eet_Inherit_Test2 Eet_Inherit_Test2;
2253 typedef struct _Eet_Inherit_Test3 Eet_Inherit_Test3;
2254 typedef struct _Eet_St1 Eet_St1;
2255 typedef struct _Eet_St2 Eet_St2;
2256 typedef struct _Eet_St3 Eet_St3;
2257 typedef struct _Eet_List Eet_List;
2259 typedef enum _Eet_Union
2275 { EET_UNKNOWN, NULL }
2288 unsigned long long v1;
2296 struct _Eet_Union_Test
2307 struct _Eet_Variant_Type
2310 Eina_Bool unknow : 1;
2313 struct _Eet_Variant_Test
2318 Eina_List *data_list;
2321 struct _Eet_Inherit_Test1
2326 struct _Eet_Inherit_Test2
2331 struct _Eet_Inherit_Test3
2343 _eet_union_type_get(const void *data,
2346 const Eet_Union *u = data;
2350 *unknow = EINA_FALSE;
2352 for (i = 0; eet_mapping[i].name != NULL; ++i)
2353 if (*u == eet_mapping[i].u)
2354 return eet_mapping[i].name;
2357 *unknow = EINA_TRUE;
2360 } /* _eet_union_type_get */
2363 _eet_union_type_set(const char *type,
2367 Eet_Union *u = data;
2373 for (i = 0; eet_mapping[i].name != NULL; ++i)
2374 if (strcmp(eet_mapping[i].name, type) == 0)
2376 *u = eet_mapping[i].u;
2381 } /* _eet_union_type_set */
2384 _eet_variant_type_get(const void *data,
2387 const Eet_Variant_Type *type = data;
2391 *unknow = type->unknow;
2393 for (i = 0; eet_mapping[i].name != NULL; ++i)
2394 if (strcmp(type->type, eet_mapping[i].name) == 0)
2395 return eet_mapping[i].name;
2398 *unknow = EINA_FALSE;
2401 } /* _eet_variant_type_get */
2404 _eet_variant_type_set(const char *type,
2408 Eet_Variant_Type *vt = data;
2411 vt->unknow = unknow;
2413 } /* _eet_variant_type_set */
2415 static Eet_Data_Descriptor *
2418 Eet_Data_Descriptor_Class eddc;
2419 Eet_Data_Descriptor *res;
2421 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_St1);
2422 res = eet_data_descriptor_stream_new(&eddc);
2423 EET_DATA_DESCRIPTOR_ADD_BASIC(res, Eet_St1, "val1", val1, EET_T_DOUBLE);
2424 EET_DATA_DESCRIPTOR_ADD_BASIC(res, Eet_St1, "stuff", stuff, EET_T_INT);
2425 EET_DATA_DESCRIPTOR_ADD_BASIC(res, Eet_St1, "s1", s1, EET_T_STRING);
2431 _eet_st1_set(Eet_St1 *st1,
2434 st1->val1 = EET_TEST_DOUBLE;
2435 st1->stuff = EET_TEST_INT + i;
2436 st1->s1 = EET_TEST_STRING;
2437 } /* _eet_st1_set */
2440 _eet_st1_cmp(Eet_St1 *st1,
2447 tmp = st1->val1 - EET_TEST_DOUBLE;
2451 fail_if(tmp > 0.005);
2452 fail_if(st1->stuff != EET_TEST_INT + i);
2453 fail_if(strcmp(st1->s1, EET_TEST_STRING));
2454 } /* _eet_st1_cmp */
2456 static Eet_Data_Descriptor *
2459 Eet_Data_Descriptor_Class eddc;
2460 Eet_Data_Descriptor *res;
2462 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_St2);
2463 res = eet_data_descriptor_stream_new(&eddc);
2464 EET_DATA_DESCRIPTOR_ADD_BASIC(res, Eet_St2, "b1", b1, EET_T_UCHAR);
2465 EET_DATA_DESCRIPTOR_ADD_BASIC(res, Eet_St2, "v1", v1, EET_T_ULONG_LONG);
2471 _eet_st2_set(Eet_St2 *st2,
2474 st2->b1 = EINA_TRUE;
2475 st2->v1 = EET_TEST_LONG_LONG + i;
2476 } /* _eet_st2_set */
2479 _eet_st2_cmp(Eet_St2 *st2,
2483 fail_if(st2->v1 != EET_TEST_LONG_LONG + i);
2484 } /* _eet_st2_cmp */
2486 static Eet_Data_Descriptor *
2489 Eet_Data_Descriptor_Class eddc;
2490 Eet_Data_Descriptor *res;
2492 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_St3);
2493 res = eet_data_descriptor_stream_new(&eddc);
2494 EET_DATA_DESCRIPTOR_ADD_BASIC(res, Eet_St3, "boby", boby, EET_T_INT);
2500 _eet_st3_set(Eet_St3 *st3,
2503 st3->boby = EET_TEST_INT + i;
2504 } /* _eet_st3_set */
2507 _eet_st3_cmp(Eet_St3 *st3,
2510 fail_if(st3->boby != EET_TEST_INT + i);
2511 } /* _eet_st3_cmp */
2513 START_TEST(eet_test_union)
2515 Eet_Union_Test *eut;
2517 Eet_Data_Descriptor_Class eddc;
2518 Eet_Data_Descriptor *edd;
2519 Eet_Data_Descriptor *unified;
2520 Eet_Data_Descriptor *m;
2528 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_Union_Test);
2529 edd = eet_data_descriptor_stream_new(&eddc);
2531 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_Union_Test);
2532 m = eet_data_descriptor_stream_new(&eddc);
2534 eddc.version = EET_DATA_DESCRIPTOR_CLASS_VERSION;
2535 eddc.func.type_get = _eet_union_type_get;
2536 eddc.func.type_set = _eet_union_type_set;
2537 unified = eet_data_descriptor_stream_new(&eddc);
2539 EET_DATA_DESCRIPTOR_ADD_MAPPING(unified, "ST1", _eet_st1_dd());
2540 EET_DATA_DESCRIPTOR_ADD_MAPPING(unified, "ST2", _eet_st2_dd());
2541 EET_DATA_DESCRIPTOR_ADD_MAPPING(unified, "ST3", _eet_st3_dd());
2543 EET_DATA_DESCRIPTOR_ADD_UNION(edd, Eet_Union_Test, "u", u, type, unified);
2545 EET_DATA_DESCRIPTOR_ADD_LIST(m, Eet_List, "list", list, edd);
2547 l = calloc(1, sizeof (Eet_List));
2549 #define EUT_NEW(Type_Index) \
2550 eut = calloc(1, sizeof (Eet_Union_Test)); \
2551 eut->type = EET_ST ## Type_Index; \
2552 _eet_st ## Type_Index ## _set(&(eut->u.st ## Type_Index), i);
2554 for (i = 0; i < 3; ++i)
2557 l->list = eina_list_append(l->list, eut);
2560 l->list = eina_list_append(l->list, eut);
2563 l->list = eina_list_append(l->list, eut);
2566 blob = eet_data_descriptor_encode(m, l, &size);
2567 fail_if(!blob || size <= 0);
2569 l = eet_data_descriptor_decode(m, blob, size);
2572 fail_if(eina_list_count(l->list) != 9);
2574 #define EUT_CMP(Type_Index) \
2575 eut = eina_list_nth(l->list, i * 3 + Type_Index - 1); \
2576 fail_if(eut->type != EET_ST ## Type_Index); \
2577 _eet_st ## Type_Index ## _cmp(&(eut->u.st ## Type_Index), i);
2579 for (i = 0; i < 3; ++i)
2590 START_TEST(eet_test_variant)
2592 Eet_Variant_Test *evt;
2597 Eet_Data_Descriptor_Class eddc;
2598 Eet_Data_Descriptor *edd;
2599 Eet_Data_Descriptor *unified;
2600 Eet_Data_Descriptor *m;
2608 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_Variant_Test);
2609 edd = eet_data_descriptor_stream_new(&eddc);
2611 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_Variant_Test);
2612 m = eet_data_descriptor_stream_new(&eddc);
2614 eddc.version = EET_DATA_DESCRIPTOR_CLASS_VERSION;
2615 eddc.func.type_get = _eet_variant_type_get;
2616 eddc.func.type_set = _eet_variant_type_set;
2617 unified = eet_data_descriptor_stream_new(&eddc);
2619 EET_DATA_DESCRIPTOR_ADD_MAPPING(unified, "ST1", _eet_st1_dd());
2620 EET_DATA_DESCRIPTOR_ADD_MAPPING(unified, "ST2", _eet_st2_dd());
2621 EET_DATA_DESCRIPTOR_ADD_MAPPING(unified, "ST3", _eet_st3_dd());
2623 EET_DATA_DESCRIPTOR_ADD_VARIANT(edd,
2630 unified = eet_data_descriptor_stream_new(&eddc);
2631 eet_data_descriptor_element_add(unified, "ST1",
2632 EET_T_UNKNOW, EET_G_LIST,
2633 0, 0, NULL, _eet_st1_dd());
2634 eet_data_descriptor_element_add(unified, "ST2",
2635 EET_T_UNKNOW, EET_G_LIST,
2636 0, 0, NULL, _eet_st2_dd());
2638 EET_DATA_DESCRIPTOR_ADD_VARIANT(edd, Eet_Variant_Test,
2639 "data_list", data_list, t, unified);
2641 EET_DATA_DESCRIPTOR_ADD_LIST(m, Eet_List, "list", list, edd);
2643 l = calloc(1, sizeof (Eet_List));
2645 #define EVT_NEW(Type_Index) \
2646 evt = calloc(1, sizeof (Eet_Variant_Test)); \
2647 evt->t.type = eet_mapping[Type_Index - 1].name; \
2648 st ## Type_Index = calloc(1, sizeof (Eet_St ## Type_Index)); \
2649 _eet_st ## Type_Index ## _set(st ## Type_Index, i); \
2650 evt->data = st ## Type_Index;
2652 for (i = 0; i < 3; ++i)
2655 l->list = eina_list_append(l->list, evt);
2657 st1 = calloc(1, sizeof (Eet_St1));
2658 _eet_st1_set(st1, i);
2659 evt->data_list = eina_list_append(evt->data_list, st1);
2662 l->list = eina_list_append(l->list, evt);
2665 l->list = eina_list_append(l->list, evt);
2668 blob = eet_data_descriptor_encode(m, l, &size);
2669 fail_if(!blob || size <= 0);
2671 l = eet_data_descriptor_decode(m, blob, size);
2674 fail_if(eina_list_count(l->list) != 9);
2676 #define EVT_CMP(Type_Index) \
2677 evt = eina_list_nth(l->list, i * 3 + Type_Index - 1); \
2678 fail_if(strcmp(evt->t.type, eet_mapping[Type_Index - 1].name) != 0); \
2679 _eet_st ## Type_Index ## _cmp(evt->data, i);
2681 for (i = 0; i < 3; ++i)
2685 fail_if(!evt->data_list);
2686 fail_if(eina_list_count(evt->data_list) != 1);
2688 st1 = eina_list_data_get(evt->data_list);
2689 _eet_st1_cmp(st1, i);
2707 s = suite_create("Eet");
2709 tc = tcase_create("Eet_Init");
2710 tcase_add_test(tc, eet_test_init);
2711 suite_add_tcase(s, tc);
2713 tc = tcase_create("Eet Data Encoding/Decoding");
2714 tcase_add_test(tc, eet_test_basic_data_type_encoding_decoding);
2715 tcase_add_test(tc, eet_test_data_type_encoding_decoding);
2716 tcase_add_test(tc, eet_test_data_type_dump_undump);
2717 tcase_add_test(tc, eet_fp);
2718 tcase_add_test(tc, eet_test_union);
2719 tcase_add_test(tc, eet_test_variant);
2720 suite_add_tcase(s, tc);
2722 tc = tcase_create("Eet File");
2723 tcase_add_test(tc, eet_file_simple_write);
2724 tcase_add_test(tc, eet_file_data_test);
2725 tcase_add_test(tc, eet_file_data_dump_test);
2726 tcase_add_test(tc, eet_file_fp);
2727 suite_add_tcase(s, tc);
2729 tc = tcase_create("Eet Image");
2730 tcase_add_test(tc, eet_image);
2731 tcase_add_test(tc, eet_small_image);
2732 suite_add_tcase(s, tc);
2734 #ifdef HAVE_SIGNATURE
2735 tc = tcase_create("Eet Identity");
2736 tcase_add_test(tc, eet_identity_simple);
2737 tcase_add_test(tc, eet_identity_open_simple);
2738 tcase_add_test(tc, eet_identity_open_pkcs8);
2739 tcase_add_test(tc, eet_identity_open_pkcs8_enc);
2740 suite_add_tcase(s, tc);
2741 #endif /* ifdef HAVE_SIGNATURE */
2744 tc = tcase_create("Eet Cipher");
2745 tcase_add_test(tc, eet_cipher_decipher_simple);
2746 suite_add_tcase(s, tc);
2747 #endif /* ifdef HAVE_CIPHER */
2749 #ifdef EINA_HAVE_THREADS
2750 tc = tcase_create("Eet Cache");
2751 tcase_add_test(tc, eet_cache_concurrency);
2752 suite_add_tcase(s, tc);
2753 #endif /* ifdef EFL_HAVE_THREADS */
2755 tc = tcase_create("Eet Connection");
2756 tcase_add_test(tc, eet_connection_check);
2757 suite_add_tcase(s, tc);
2770 sr = srunner_create(s);
2771 srunner_run_all(sr, CK_ENV);
2772 failed_count = srunner_ntests_failed(sr);
2775 return (failed_count == 0) ? EXIT_SUCCESS : EXIT_FAILURE;