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 #define CERT_DIR ((*TESTS_SRC_DIR == '/') ? TESTS_SRC_DIR : "src/tests/" TESTS_SRC_DIR)
29 START_TEST(eet_test_init)
41 typedef struct _Eet_Test_Basic_Type Eet_Test_Basic_Type;
42 struct _Eet_Test_Basic_Type
56 unsigned long long ul;
57 Eet_Test_Basic_Type *empty;
58 Eet_Test_Basic_Type *with;
61 #define EET_TEST_CHAR 0x42
62 #define EET_TEST_SHORT 0x4224
63 #define EET_TEST_INT 0x42211224
64 #define EET_TEST_LONG_LONG 0x84CB42211224BC48
65 #define EET_TEST_STRING "my little test with escape \\\""
66 #define EET_TEST_KEY1 "key1"
67 #define EET_TEST_KEY2 "key2"
68 #define EET_TEST_FLOAT 123.45689
69 #define EET_TEST_FLOAT2 1.0
70 #define EET_TEST_FLOAT3 0.25
71 #define EET_TEST_FLOAT4 0.0001234
72 #define EET_TEST_DOUBLE 123456789.9876543210
73 #define EET_TEST_DOUBLE2 1.0
74 #define EET_TEST_DOUBLE3 0.25
75 #define EET_TEST_FILE_KEY1 "keys/data/1"
76 #define EET_TEST_FILE_KEY2 "keys/data/2"
77 #define EET_TEST_FILE_IMAGE "keys/images/"
79 typedef struct _Eet_Test_Image Eet_Test_Image;
80 struct _Eet_Test_Image
85 unsigned int color[64];
88 static const Eet_Test_Image test_noalpha = {
91 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00,
92 0x000000AA, 0x00110000,
93 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA,
94 0x00110000, 0x00AA0000,
95 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000,
96 0x00AA0000, 0x0000AA00,
97 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000,
98 0x0000AA00, 0x000000AA,
99 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00,
100 0x000000AA, 0x00110000,
101 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA,
102 0x00110000, 0x00AA0000,
103 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000,
104 0x00AA0000, 0x0000AA00,
105 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000,
106 0x0000AA00, 0x000000AA
110 static const Eet_Test_Image test_alpha = {
113 0x0FAA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00,
114 0x000000AA, 0x0F110000,
115 0x0000AA00, 0x0F0000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA,
116 0x0F110000, 0x00AA0000,
117 0x000000AA, 0x00110000, 0x0FAA0000, 0x0000AA00, 0x000000AA, 0x0F110000,
118 0x00AA0000, 0x0000AA00,
119 0x00110000, 0x00AA0000, 0x0000AA00, 0x0F0000AA, 0x0F110000, 0x00AA0000,
120 0x0000AA00, 0x000000AA,
121 0x00AA0000, 0x0000AA00, 0x000000AA, 0x0F110000, 0x0FAA0000, 0x0000AA00,
122 0x000000AA, 0x00110000,
123 0x0000AA00, 0x000000AA, 0x0F110000, 0x00AA0000, 0x0000AA00, 0x0F0000AA,
124 0x00110000, 0x00AA0000,
125 0x000000AA, 0x0F110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000,
126 0x0FAA0000, 0x0000AA00,
127 0x0F110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000,
128 0x0000AA00, 0x0F0000AA
133 _eet_test_basic_set(Eet_Test_Basic_Type *res,
136 res->c = EET_TEST_CHAR;
137 res->s = EET_TEST_SHORT;
138 res->i = EET_TEST_INT + i;
139 res->l = EET_TEST_LONG_LONG;
140 res->str = EET_TEST_STRING;
141 res->istr = EET_TEST_STRING;
142 res->f1 = -EET_TEST_FLOAT;
143 res->d = -EET_TEST_DOUBLE;
144 res->f2 = EET_TEST_FLOAT4;
145 res->uc = EET_TEST_CHAR;
146 res->us = EET_TEST_SHORT;
147 res->ui = EET_TEST_INT;
148 res->ul = EET_TEST_LONG_LONG;
154 Eet_Test_Basic_Type *tmp;
156 tmp = malloc(sizeof (Eet_Test_Basic_Type));
160 tmp->c = EET_TEST_CHAR;
161 tmp->s = EET_TEST_SHORT;
162 tmp->i = EET_TEST_INT + i + 1;
163 tmp->l = EET_TEST_LONG_LONG;
164 tmp->str = EET_TEST_STRING;
165 tmp->istr = EET_TEST_STRING;
166 tmp->f1 = -EET_TEST_FLOAT;
167 tmp->d = -EET_TEST_DOUBLE;
168 tmp->f2 = EET_TEST_FLOAT4;
169 tmp->uc = EET_TEST_CHAR;
170 tmp->us = EET_TEST_SHORT;
171 tmp->ui = EET_TEST_INT;
172 tmp->ul = EET_TEST_LONG_LONG;
176 } /* _eet_test_basic_set */
179 _eet_test_basic_check(Eet_Test_Basic_Type *result,
184 fail_if(result->c != EET_TEST_CHAR);
185 fail_if(result->s != EET_TEST_SHORT);
186 fail_if(result->i != EET_TEST_INT + i);
187 fail_if(result->l != (long long)EET_TEST_LONG_LONG);
188 fail_if(strcmp(result->str, EET_TEST_STRING) != 0);
189 fail_if(strcmp(result->istr, EET_TEST_STRING) != 0);
190 fail_if(result->uc != EET_TEST_CHAR);
191 fail_if(result->us != EET_TEST_SHORT);
192 fail_if(result->ui != EET_TEST_INT);
193 fail_if(result->ul != EET_TEST_LONG_LONG);
195 tmp = (result->f1 + EET_TEST_FLOAT);
199 fail_if(tmp > 0.005);
201 tmp = (result->f2 - EET_TEST_FLOAT4);
205 fail_if(tmp > 0.005);
207 tmp = (result->d + EET_TEST_DOUBLE);
211 fail_if(tmp > 0.00005);
213 fail_if(result->empty != NULL);
216 Eet_Test_Basic_Type *tmp2;
219 fail_if(tmp2 == NULL);
221 fail_if(tmp2->c != EET_TEST_CHAR);
222 fail_if(tmp2->s != EET_TEST_SHORT);
223 fail_if(tmp2->i != EET_TEST_INT + i + 1);
224 fail_if(tmp2->l != (long long)EET_TEST_LONG_LONG);
225 fail_if(strcmp(tmp2->str, EET_TEST_STRING) != 0);
226 fail_if(strcmp(tmp2->istr, EET_TEST_STRING) != 0);
227 fail_if(tmp2->uc != EET_TEST_CHAR);
228 fail_if(tmp2->us != EET_TEST_SHORT);
229 fail_if(tmp2->ui != EET_TEST_INT);
230 fail_if(tmp2->ul != EET_TEST_LONG_LONG);
233 fail_if(result->with != NULL);
234 } /* _eet_test_basic_check */
237 _eet_build_basic_descriptor(Eet_Data_Descriptor *edd)
239 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
244 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
249 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
254 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
259 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
264 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
268 EET_T_INLINED_STRING);
269 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
274 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
279 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
284 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
289 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
294 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
299 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
305 EET_DATA_DESCRIPTOR_ADD_SUB(edd, Eet_Test_Basic_Type, "empty", empty, edd);
306 EET_DATA_DESCRIPTOR_ADD_SUB(edd, Eet_Test_Basic_Type, "with", with, edd);
307 } /* _eet_build_basic_descriptor */
309 START_TEST(eet_test_basic_data_type_encoding_decoding)
311 Eet_Data_Descriptor *edd;
312 Eet_Test_Basic_Type *result;
313 Eet_Data_Descriptor_Class eddc;
314 Eet_Test_Basic_Type etbt;
320 _eet_test_basic_set(&etbt, 0);
322 eet_test_setup_eddc(&eddc);
323 eddc.name = "Eet_Test_Basic_Type";
324 eddc.size = sizeof(Eet_Test_Basic_Type);
326 edd = eet_data_descriptor_stream_new(&eddc);
329 _eet_build_basic_descriptor(edd);
331 transfert = eet_data_descriptor_encode(edd, &etbt, &size);
332 fail_if(!transfert || size <= 0);
334 result = eet_data_descriptor_decode(edd, transfert, size);
337 _eet_test_basic_check(result, 0);
342 eet_data_descriptor_free(edd);
348 typedef struct _Eet_Test_Ex_Type Eet_Test_Ex_Type;
349 struct _Eet_Test_Ex_Type
354 unsigned long long l;
371 Eet_Test_Basic_Type sarray1[10];
372 unsigned int sarray2[5];
373 unsigned int varray1_count;
374 unsigned int *varray1;
375 unsigned int varray2_count;
376 Eet_Test_Basic_Type *varray2;
380 unsigned long long ul;
388 _eet_build_ex_descriptor(Eet_Data_Descriptor *edd)
390 Eet_Data_Descriptor_Class eddc;
391 Eet_Test_Ex_Type etbt;
392 Eet_Data_Descriptor *eddb;
394 eet_test_setup_eddc(&eddc);
395 eddc.name = "Eet_Test_Basic_Type";
396 eddc.size = sizeof(Eet_Test_Basic_Type);
397 eddb = eet_data_descriptor_file_new(&eddc);
400 _eet_build_basic_descriptor(eddb);
402 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
407 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
412 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Ex_Type, "i", i, EET_T_INT);
413 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
418 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
423 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
427 EET_T_INLINED_STRING);
428 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
433 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
438 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
443 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
448 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
453 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
458 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
463 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
468 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
473 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
478 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
483 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
488 EET_DATA_DESCRIPTOR_ADD_ARRAY(edd,
493 EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(edd,
498 eet_data_descriptor_element_add(edd,
502 (char *)(&(etbt.varray1)) - (char *)(&(etbt)),
503 (char *)(&(etbt.varray1_count)) -
507 eet_data_descriptor_element_add(edd, "sarray2", EET_T_INT, EET_G_ARRAY,
508 (char *)(&(etbt.sarray2)) - (char *)(&(etbt)),
509 /* 0, */ sizeof(etbt.sarray2) /
510 sizeof(etbt.sarray2[0]), NULL, NULL);
511 eet_data_descriptor_element_add(edd, "charray", EET_T_STRING, EET_G_ARRAY,
512 (char *)(&(etbt.charray)) - (char *)(&(etbt)),
513 /* 0, */ sizeof(etbt.charray) /
514 sizeof(etbt.charray[0]), NULL, NULL);
515 EET_DATA_DESCRIPTOR_ADD_LIST(edd, Eet_Test_Ex_Type, "list", list, edd);
516 EET_DATA_DESCRIPTOR_ADD_HASH(edd, Eet_Test_Ex_Type, "hash", hash, edd);
517 eet_data_descriptor_element_add(edd, "ilist", EET_T_INT, EET_G_LIST,
518 (char *)(&(etbt.ilist)) - (char *)(&(etbt)),
519 0, /* 0, */ NULL, NULL);
520 eet_data_descriptor_element_add(edd, "ihash", EET_T_INT, EET_G_HASH,
521 (char *)(&(etbt.ihash)) - (char *)(&(etbt)),
522 0, /* 0, */ NULL, NULL);
523 eet_data_descriptor_element_add(edd, "slist", EET_T_STRING, EET_G_LIST,
524 (char *)(&(etbt.slist)) - (char *)(&(etbt)),
525 0, /* 0, */ NULL, NULL);
526 eet_data_descriptor_element_add(edd, "shash", EET_T_STRING, EET_G_HASH,
527 (char *)(&(etbt.shash)) - (char *)(&(etbt)),
528 0, /* 0, */ NULL, NULL);
529 } /* _eet_build_ex_descriptor */
531 static Eet_Test_Ex_Type *
532 _eet_test_ex_set(Eet_Test_Ex_Type *res,
538 res = malloc(sizeof(Eet_Test_Ex_Type));
543 res->c = EET_TEST_CHAR + offset;
544 res->s = EET_TEST_SHORT + offset;
545 res->i = EET_TEST_INT + offset;
546 res->l = EET_TEST_LONG_LONG + offset;
547 res->str = EET_TEST_STRING;
548 res->istr = EET_TEST_STRING;
549 res->f1 = EET_TEST_FLOAT + offset;
550 res->f2 = -(EET_TEST_FLOAT2 + offset);
551 res->f3 = EET_TEST_FLOAT3 + offset;
552 res->f4 = EET_TEST_FLOAT2 + offset;
553 res->d1 = EET_TEST_DOUBLE + offset;
554 res->d2 = -(EET_TEST_DOUBLE2 + offset);
555 res->d3 = EET_TEST_DOUBLE3 + offset;
556 res->d4 = EET_TEST_DOUBLE2 + offset;
563 for (i = 0; i < sizeof(res->charray) / sizeof(res->charray[0]); ++i)
564 res->charray[i] = NULL;
566 res->varray2 = malloc(sizeof (Eet_Test_Basic_Type) * 10);
567 res->varray1 = malloc(sizeof (int) * 5);
568 fail_if(!res->varray1 || !res->varray2);
569 for (i = 0; i < 10; ++i)
571 _eet_test_basic_set(res->sarray1 + i, i);
572 _eet_test_basic_set(res->varray2 + i, i);
574 res->varray2_count = 10;
575 for (i = 0; i < 5; ++i)
577 res->sarray2[i] = i * 42 + 1;
578 res->varray1[i] = i * 42 + 1;
580 res->varray1_count = 5;
582 res->uc = EET_TEST_CHAR + offset;
583 res->us = EET_TEST_SHORT + offset;
584 res->ui = EET_TEST_INT + offset;
585 res->ul = EET_TEST_LONG_LONG + offset;
588 } /* _eet_test_ex_set */
591 _eet_test_ex_check(Eet_Test_Ex_Type *stuff,
600 if (stuff->c != EET_TEST_CHAR + offset)
603 if (stuff->s != EET_TEST_SHORT + offset)
606 if (stuff->i != EET_TEST_INT + offset)
609 if (stuff->l != EET_TEST_LONG_LONG + offset)
612 if (strcmp(stuff->str, EET_TEST_STRING) != 0)
615 if (strcmp(stuff->istr, EET_TEST_STRING) != 0)
618 tmp = stuff->f1 - (EET_TEST_FLOAT + offset);
625 tmp = stuff->d1 - (EET_TEST_DOUBLE + offset);
632 if (stuff->f2 != -(EET_TEST_FLOAT2 + offset))
635 if (stuff->d2 != -(EET_TEST_DOUBLE2 + offset))
638 if (stuff->f3 != EET_TEST_FLOAT3 + offset)
641 if (stuff->d3 != EET_TEST_DOUBLE3 + offset)
644 if (stuff->f4 != EET_TEST_FLOAT2 + offset)
647 if (stuff->d4 != EET_TEST_DOUBLE2 + offset)
650 if (stuff->uc != EET_TEST_CHAR + offset)
653 if (stuff->us != EET_TEST_SHORT + offset)
656 if (stuff->ui != (unsigned int)EET_TEST_INT + offset)
659 if (stuff->ul != EET_TEST_LONG_LONG + offset)
662 if (stuff->varray1_count != 5)
665 if (stuff->varray2_count != 10)
668 for (i = 0; i < 5; ++i)
669 if (stuff->sarray2[i] != i * 42 + 1 && stuff->varray1[i] != i * 42 + 1)
672 for (i = 0; i < 10; ++i)
674 _eet_test_basic_check(stuff->sarray1 + i, i);
675 _eet_test_basic_check(stuff->varray2 + i, i);
679 } /* _eet_test_ex_check */
682 func(__UNUSED__ const Eina_Hash *hash,
689 if (strcmp(key, EET_TEST_KEY1) != 0
690 && strcmp(key, EET_TEST_KEY2) != 0)
693 if (_eet_test_ex_check(data, 2))
700 func7(__UNUSED__ const Eina_Hash *hash,
701 __UNUSED__ const void *key,
718 START_TEST(eet_test_data_type_encoding_decoding)
720 Eet_Data_Descriptor *edd;
721 Eet_Test_Ex_Type *result;
723 Eet_Data_Descriptor_Class eddc;
724 Eet_Test_Ex_Type etbt;
730 _eet_test_ex_set(&etbt, 0);
731 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
732 etbt.hash = eina_hash_string_superfast_new(NULL);
733 eina_hash_add(etbt.hash, EET_TEST_KEY1, _eet_test_ex_set(NULL, 2));
734 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
735 etbt.ihash = eina_hash_string_superfast_new(NULL);
736 eina_hash_add(etbt.ihash, EET_TEST_KEY1, &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";
742 etbt.charray[5] = "plouf";
744 eet_test_setup_eddc(&eddc);
745 eddc.name = "Eet_Test_Ex_Type";
746 eddc.size = sizeof(Eet_Test_Ex_Type);
748 edd = eet_data_descriptor_file_new(&eddc);
751 _eet_build_ex_descriptor(edd);
753 transfert = eet_data_descriptor_encode(edd, &etbt, &size);
754 fail_if(!transfert || size <= 0);
756 result = eet_data_descriptor_decode(edd, transfert, size);
759 fail_if(_eet_test_ex_check(result, 0) != 0);
760 fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
761 fail_if(eina_list_data_get(result->ilist) == NULL);
762 fail_if(*((int *)eina_list_data_get(result->ilist)) != 42);
763 fail_if(eina_list_data_get(result->slist) == NULL);
764 fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
765 fail_if(eina_hash_find(result->shash, EET_TEST_KEY1) == NULL);
766 fail_if(strcmp(eina_hash_find(result->shash, EET_TEST_KEY1), "test") != 0);
767 fail_if(strcmp(result->charray[0], "test") != 0);
768 fail_if(strcmp(result->charray[5], "plouf") != 0);
772 eina_hash_foreach(result->hash, func, &test);
776 eina_hash_foreach(result->ihash, func7, &test);
785 append_string(void *data,
788 char **string = data;
794 length = *string ? strlen(*string) : 0;
795 *string = realloc(*string, strlen(str) + length + 1);
797 memcpy((*string) + length, str, strlen(str) + 1);
798 } /* append_string */
800 START_TEST(eet_test_data_type_dump_undump)
802 Eet_Data_Descriptor *edd;
803 Eet_Test_Ex_Type *result;
804 Eet_Data_Descriptor_Class eddc;
805 Eet_Test_Ex_Type etbt;
816 _eet_test_ex_set(&etbt, 0);
817 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
818 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
819 etbt.hash = eina_hash_string_superfast_new(NULL);
820 eina_hash_add(etbt.hash, EET_TEST_KEY1, _eet_test_ex_set(NULL, 2));
821 etbt.hash = eina_hash_string_superfast_new(NULL);
822 eina_hash_add(etbt.hash, EET_TEST_KEY2, _eet_test_ex_set(NULL, 2));
823 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
824 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
825 etbt.ihash = eina_hash_string_superfast_new(NULL);
826 eina_hash_add(etbt.ihash, EET_TEST_KEY1, &i7);
827 etbt.ihash = eina_hash_string_superfast_new(NULL);
828 eina_hash_add(etbt.ihash, EET_TEST_KEY2, &i7);
829 etbt.slist = eina_list_prepend(NULL, "test");
830 etbt.shash = eina_hash_string_superfast_new(NULL);
831 eina_hash_add(etbt.shash, EET_TEST_KEY1, "test");
832 memset(&etbt.charray, 0, sizeof(etbt.charray));
833 etbt.charray[0] = "test";
835 eet_test_setup_eddc(&eddc);
836 eddc.name = "Eet_Test_Ex_Type";
837 eddc.size = sizeof(Eet_Test_Ex_Type);
839 edd = eet_data_descriptor_file_new(&eddc);
842 _eet_build_ex_descriptor(edd);
844 transfert1 = eet_data_descriptor_encode(edd, &etbt, &size1);
845 fail_if(!transfert1 || size1 <= 0);
848 eet_data_text_dump(transfert1, size1, append_string, &string1);
851 transfert2 = eet_data_text_undump(string1, string1 ? strlen(
852 string1) : 0, &size2);
853 fail_if(!transfert2 && size2 <= 0);
856 eet_data_text_dump(transfert2, size2, append_string, &string2);
859 fail_if(strlen(string2) != strlen(string1));
861 result = eet_data_descriptor_decode(edd, transfert2, size2);
864 fail_if(_eet_test_ex_check(result, 0) != 0);
865 fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
866 fail_if(eina_list_data_get(result->ilist) == NULL);
867 fail_if(*((int *)eina_list_data_get(result->ilist)) != 42);
868 fail_if(eina_list_data_get(result->slist) == NULL);
869 fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
870 fail_if(eina_hash_find(result->shash, EET_TEST_KEY1) == NULL);
871 fail_if(strcmp(eina_hash_find(result->shash, EET_TEST_KEY1), "test") != 0);
872 fail_if(strcmp(result->charray[0], "test") != 0);
876 eina_hash_foreach(result->hash, func, &test);
880 eina_hash_foreach(result->ihash, func7, &test);
887 START_TEST(eet_file_simple_write)
889 const char *buffer = "Here is a string of data to save !";
892 char *file = strdup("/tmp/eet_suite_testXXXXXX");
897 fail_if(!(file = tmpnam(file)));
899 fail_if(eet_mode_get(NULL) != EET_FILE_MODE_INVALID);
901 ef = eet_open(file, EET_FILE_MODE_WRITE);
904 fail_if(!eet_write(ef, "keys/tests", buffer, strlen(buffer) + 1, 1));
905 fail_if(!eet_alias(ef, "keys/alias", "keys/tests", 0));
906 fail_if(!eet_alias(ef, "keys/alias2", "keys/alias", 1));
908 fail_if(eet_mode_get(ef) != EET_FILE_MODE_WRITE);
910 fail_if(eet_list(ef, "*", &size) != NULL);
911 fail_if(eet_num_entries(ef) != -1);
915 /* Test read of simple file */
916 ef = eet_open(file, EET_FILE_MODE_READ);
919 test = eet_read(ef, "keys/tests", &size);
921 fail_if(size != (int)strlen(buffer) + 1);
923 fail_if(memcmp(test, buffer, strlen(buffer) + 1) != 0);
925 test = eet_read(ef, "keys/alias2", &size);
927 fail_if(size != (int)strlen(buffer) + 1);
929 fail_if(eet_read_direct(ef, "key/alias2", &size));
931 fail_if(eet_mode_get(ef) != EET_FILE_MODE_READ);
932 fail_if(eet_num_entries(ef) != 3);
936 /* Test eet cache system */
937 ef = eet_open(file, EET_FILE_MODE_READ);
940 test = eet_read(ef, "keys/tests", &size);
942 fail_if(size != (int)strlen(buffer) + 1);
944 fail_if(memcmp(test, buffer, strlen(buffer) + 1) != 0);
948 fail_if(unlink(file) != 0);
954 START_TEST(eet_file_data_test)
956 Eet_Data_Descriptor *edd;
957 Eet_Test_Ex_Type *result;
961 char *file = strdup("/tmp/eet_suite_testXXXXXX");
962 Eet_Data_Descriptor_Class eddc;
963 Eet_Test_Ex_Type etbt;
969 _eet_test_ex_set(&etbt, 0);
970 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
971 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
972 etbt.hash = eina_hash_string_superfast_new(NULL);
973 eina_hash_add(etbt.hash, EET_TEST_KEY1, _eet_test_ex_set(NULL, 2));
974 etbt.hash = eina_hash_string_superfast_new(NULL);
975 eina_hash_add(etbt.hash, EET_TEST_KEY2, _eet_test_ex_set(NULL, 2));
976 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
977 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
978 etbt.ihash = eina_hash_string_superfast_new(NULL);
979 eina_hash_add(etbt.ihash, EET_TEST_KEY1, &i7);
980 etbt.ihash = eina_hash_string_superfast_new(NULL);
981 eina_hash_add(etbt.ihash, EET_TEST_KEY2, &i7);
982 etbt.slist = eina_list_prepend(NULL, "test");
983 etbt.shash = eina_hash_string_superfast_new(NULL);
984 eina_hash_add(etbt.shash, EET_TEST_KEY1, "test");
985 memset(&etbt.charray, 0, sizeof(etbt.charray));
986 etbt.charray[0] = "test";
988 eet_test_setup_eddc(&eddc);
989 eddc.name = "Eet_Test_Ex_Type";
990 eddc.size = sizeof(Eet_Test_Ex_Type);
992 edd = eet_data_descriptor_file_new(&eddc);
995 _eet_build_ex_descriptor(edd);
997 fail_if(!(file = tmpnam(file)));
999 /* Insert an error in etbt. */
1002 /* Save the encoded data in a file. */
1003 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
1006 fail_if(!eet_data_write(ef, edd, EET_TEST_FILE_KEY1, &etbt, 0));
1008 result = eet_data_read(ef, edd, EET_TEST_FILE_KEY1);
1011 fail_if(eet_mode_get(ef) != EET_FILE_MODE_READ_WRITE);
1013 /* Test string space. */
1014 ed = eet_dictionary_get(ef);
1016 fail_if(!eet_dictionary_string_check(ed, result->str));
1017 fail_if(eet_dictionary_string_check(ed, result->istr));
1021 /* Attempt to replace etbt by the correct one. */
1022 etbt.i = EET_TEST_INT;
1024 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
1027 fail_if(!eet_data_write(ef, edd, EET_TEST_FILE_KEY1, &etbt, 0));
1029 result = eet_data_read(ef, edd, EET_TEST_FILE_KEY1);
1032 /* Test the resulting data. */
1033 fail_if(_eet_test_ex_check(result, 0) != 0);
1037 /* Read back the data. */
1038 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
1041 fail_if(!eet_data_write(ef, edd, EET_TEST_FILE_KEY2, &etbt, 0));
1043 result = eet_data_read(ef, edd, EET_TEST_FILE_KEY1);
1046 /* Test string space. */
1047 ed = eet_dictionary_get(ef);
1050 fail_if(!eet_dictionary_string_check(ed, result->str));
1051 fail_if(eet_dictionary_string_check(ed, result->istr));
1053 /* Test the resulting data. */
1054 fail_if(_eet_test_ex_check(result, 0) != 0);
1055 fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
1056 fail_if(eina_list_data_get(result->ilist) == NULL);
1057 fail_if(*((int *)eina_list_data_get(result->ilist)) != 42);
1058 fail_if(eina_list_data_get(result->slist) == NULL);
1059 fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
1060 fail_if(eina_hash_find(result->shash, EET_TEST_KEY1) == NULL);
1061 fail_if(strcmp(eina_hash_find(result->shash, EET_TEST_KEY1), "test") != 0);
1062 fail_if(strcmp(result->charray[0], "test") != 0);
1066 eina_hash_foreach(result->hash, func, &test);
1070 eina_hash_foreach(result->ihash, func7, &test);
1074 list = eet_list(ef, "keys/*", &size);
1075 fail_if(eet_num_entries(ef) != 2);
1077 fail_if(!(strcmp(list[0],
1078 EET_TEST_FILE_KEY1) == 0 &&
1079 strcmp(list[1], EET_TEST_FILE_KEY2) == 0)
1080 && !(strcmp(list[0],
1081 EET_TEST_FILE_KEY2) == 0 &&
1082 strcmp(list[1], EET_TEST_FILE_KEY1) == 0));
1085 fail_if(eet_delete(ef, NULL) != 0);
1086 fail_if(eet_delete(NULL, EET_TEST_FILE_KEY1) != 0);
1087 fail_if(eet_delete(ef, EET_TEST_FILE_KEY1) == 0);
1089 list = eet_list(ef, "keys/*", &size);
1091 fail_if(eet_num_entries(ef) != 1);
1093 /* Test some more wrong case */
1094 fail_if(eet_data_read(ef, edd, "plop") != NULL);
1095 fail_if(eet_data_read(ef, edd, EET_TEST_FILE_KEY1) != NULL);
1097 /* Reinsert and reread data */
1098 fail_if(!eet_data_write(ef, edd, EET_TEST_FILE_KEY1, &etbt, 0));
1099 fail_if(eet_data_read(ef, edd, EET_TEST_FILE_KEY1) == NULL);
1100 fail_if(eet_read_direct(ef, EET_TEST_FILE_KEY1, &size) == NULL);
1104 fail_if(unlink(file) != 0);
1110 START_TEST(eet_file_data_dump_test)
1112 Eet_Data_Descriptor *edd;
1113 Eet_Test_Ex_Type *result;
1114 Eet_Data_Descriptor_Class eddc;
1115 Eet_Test_Ex_Type etbt;
1118 char *file = strdup("/tmp/eet_suite_testXXXXXX");
1123 _eet_test_ex_set(&etbt, 0);
1124 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
1125 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
1126 etbt.hash = eina_hash_string_superfast_new(NULL);
1127 eina_hash_add(etbt.hash, EET_TEST_KEY1, _eet_test_ex_set(NULL, 2));
1128 eina_hash_add(etbt.hash, EET_TEST_KEY2, _eet_test_ex_set(NULL, 2));
1129 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
1130 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
1131 etbt.ihash = eina_hash_string_superfast_new(NULL);
1132 eina_hash_add(etbt.ihash, EET_TEST_KEY1, &i7);
1133 eina_hash_add(etbt.ihash, EET_TEST_KEY2, &i7);
1134 etbt.slist = eina_list_prepend(NULL, "test");
1135 etbt.shash = eina_hash_string_superfast_new(NULL);
1136 eina_hash_add(etbt.shash, EET_TEST_KEY1, "test");
1137 memset(&etbt.charray, 0, sizeof(etbt.charray));
1138 etbt.charray[0] = "test";
1140 eet_eina_file_data_descriptor_class_set(&eddc, sizeof (eddc),
1142 sizeof(Eet_Test_Ex_Type));
1144 edd = eet_data_descriptor_file_new(&eddc);
1147 _eet_build_ex_descriptor(edd);
1149 fail_if(!(file = tmpnam(file)));
1151 /* Save the encoded data in a file. */
1152 ef = eet_open(file, EET_FILE_MODE_WRITE);
1155 fail_if(!eet_data_write(ef, edd, EET_TEST_FILE_KEY1, &etbt, 0));
1159 /* Use dump/undump in the middle */
1160 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
1164 fail_if(eet_data_dump(ef, EET_TEST_FILE_KEY1, append_string, &string1) != 1);
1165 fail_if(eet_delete(ef, EET_TEST_FILE_KEY1) == 0);
1166 fail_if(!eet_data_undump(ef, EET_TEST_FILE_KEY1, string1, strlen(string1), 1));
1170 /* Test the correctness of the reinsertion. */
1171 ef = eet_open(file, EET_FILE_MODE_READ);
1174 result = eet_data_read(ef, edd, EET_TEST_FILE_KEY1);
1179 /* Test the resulting data. */
1180 fail_if(_eet_test_ex_check(result, 0) != 0);
1181 fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
1182 fail_if(eina_list_data_get(result->ilist) == NULL);
1183 fail_if(*((int *)eina_list_data_get(result->ilist)) != 42);
1184 fail_if(eina_list_data_get(result->slist) == NULL);
1185 fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
1186 fail_if(eina_hash_find(result->shash, EET_TEST_KEY1) == NULL);
1187 fail_if(strcmp(eina_hash_find(result->shash, EET_TEST_KEY1), "test") != 0);
1188 fail_if(strcmp(result->charray[0], "test") != 0);
1192 eina_hash_foreach(result->hash, func, &test);
1196 eina_hash_foreach(result->ihash, func7, &test);
1200 fail_if(unlink(file) != 0);
1206 START_TEST(eet_image)
1209 char *file = strdup("/tmp/eet_suite_testXXXXXX");
1221 fail_if(!(file = tmpnam(file)));
1223 /* Save the encoded data in a file. */
1224 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
1227 result = eet_data_image_write(ef,
1228 EET_TEST_FILE_IMAGE "0",
1236 fail_if(result == 0);
1238 result = eet_data_image_write(ef,
1239 EET_TEST_FILE_IMAGE "1",
1247 fail_if(result == 0);
1249 result = eet_data_image_write(ef,
1250 EET_TEST_FILE_IMAGE "2",
1258 fail_if(result == 0);
1260 result = eet_data_image_write(ef,
1261 EET_TEST_FILE_IMAGE "3",
1269 fail_if(result == 0);
1271 result = eet_data_image_write(ef,
1272 EET_TEST_FILE_IMAGE "4",
1280 fail_if(result == 0);
1282 result = eet_data_image_write(ef,
1283 EET_TEST_FILE_IMAGE "5",
1291 fail_if(result == 0);
1293 result = eet_data_image_write(ef,
1294 EET_TEST_FILE_IMAGE "6",
1302 fail_if(result == 0);
1304 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "7", test_alpha.color,
1305 test_alpha.w, test_alpha.h, test_alpha.alpha,
1307 fail_if(result == 0);
1309 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "8", test_alpha.color,
1310 test_alpha.w, test_alpha.h, test_alpha.alpha,
1312 fail_if(result == 0);
1314 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "9", test_alpha.color,
1315 test_alpha.w, test_alpha.h, test_alpha.alpha,
1317 fail_if(result == 0);
1319 data = eet_data_image_read(ef,
1320 EET_TEST_FILE_IMAGE "2",
1327 fail_if(data == NULL);
1328 fail_if(w != test_noalpha.w);
1329 fail_if(h != test_noalpha.h);
1330 fail_if(alpha != test_noalpha.alpha);
1331 fail_if(compress != 9);
1332 fail_if(lossy != 0);
1333 fail_if(data[0] != test_noalpha.color[0]);
1336 result = eet_data_image_header_read(ef,
1337 EET_TEST_FILE_IMAGE "2",
1344 fail_if(result == 0);
1345 fail_if(w != test_noalpha.w);
1346 fail_if(h != test_noalpha.h);
1347 fail_if(alpha != test_noalpha.alpha);
1348 fail_if(compress != 9);
1349 fail_if(lossy != 0);
1353 /* Test read of image */
1354 ef = eet_open(file, EET_FILE_MODE_READ);
1357 result = eet_data_image_header_read(ef,
1358 EET_TEST_FILE_IMAGE "0",
1365 fail_if(result == 0);
1366 fail_if(w != test_noalpha.w);
1367 fail_if(h != test_noalpha.h);
1368 fail_if(alpha != test_noalpha.alpha);
1369 fail_if(compress != 0);
1370 fail_if(lossy != 0);
1372 data = malloc(w * h * 4);
1373 fail_if(data == NULL);
1374 result = eet_data_image_read_to_surface(ef,
1375 EET_TEST_FILE_IMAGE "0",
1386 fail_if(result != 1);
1387 fail_if(alpha != test_noalpha.alpha);
1388 fail_if(compress != 0);
1389 fail_if(quality != 100);
1390 fail_if(lossy != 0);
1391 fail_if(data[0] != test_noalpha.color[4 + 4 * w]);
1394 data = malloc(w * h * 4);
1395 fail_if(data == NULL);
1396 result = eet_data_image_read_to_surface(ef,
1397 EET_TEST_FILE_IMAGE "0",
1408 fail_if(result != 1);
1409 fail_if(alpha != test_noalpha.alpha);
1410 fail_if(compress != 0);
1411 fail_if(quality != 100);
1412 fail_if(lossy != 0);
1413 fail_if(data[0] != test_noalpha.color[0]);
1416 data = eet_data_image_read(ef,
1417 EET_TEST_FILE_IMAGE "1",
1424 fail_if(data == NULL);
1425 fail_if(w != test_noalpha.w);
1426 fail_if(h != test_noalpha.h);
1427 fail_if(alpha != test_noalpha.alpha);
1428 fail_if(compress != 5);
1429 fail_if(quality != 100);
1430 fail_if(lossy != 0);
1431 fail_if(data[0] != test_noalpha.color[0]);
1434 data = eet_data_image_read(ef,
1435 EET_TEST_FILE_IMAGE "2",
1442 fail_if(data == NULL);
1443 fail_if(w != test_noalpha.w);
1444 fail_if(h != test_noalpha.h);
1445 fail_if(alpha != test_noalpha.alpha);
1446 fail_if(compress != 9);
1447 fail_if(lossy != 0);
1448 fail_if(data[0] != test_noalpha.color[0]);
1451 data = eet_data_image_read(ef,
1452 EET_TEST_FILE_IMAGE "3",
1459 fail_if(data == NULL);
1460 fail_if(w != test_noalpha.w);
1461 fail_if(h != test_noalpha.h);
1462 fail_if(alpha != test_noalpha.alpha);
1463 fail_if(lossy != 1);
1466 data = eet_data_image_read(ef,
1467 EET_TEST_FILE_IMAGE "5",
1474 fail_if(data == NULL);
1475 fail_if(w != test_noalpha.w);
1476 fail_if(h != test_noalpha.h);
1477 fail_if(alpha != test_noalpha.alpha);
1478 fail_if(lossy != 1);
1481 data = eet_data_image_read(ef,
1482 EET_TEST_FILE_IMAGE "6",
1489 fail_if(data == NULL);
1490 fail_if(w != test_noalpha.w);
1491 fail_if(h != test_noalpha.h);
1492 fail_if(alpha != test_noalpha.alpha);
1493 fail_if(lossy != 1);
1496 result = eet_data_image_header_read(ef,
1497 EET_TEST_FILE_IMAGE "7",
1504 fail_if(result == 0);
1505 fail_if(w != test_alpha.w);
1506 fail_if(h != test_alpha.h);
1507 fail_if(alpha != test_alpha.alpha);
1508 fail_if(compress != 9);
1509 fail_if(lossy != 0);
1511 data = eet_data_image_read(ef,
1512 EET_TEST_FILE_IMAGE "7",
1519 fail_if(data == NULL);
1520 fail_if(w != test_alpha.w);
1521 fail_if(h != test_alpha.h);
1522 fail_if(alpha != test_alpha.alpha);
1523 fail_if(compress != 9);
1524 fail_if(lossy != 0);
1525 fail_if(data[0] != test_alpha.color[0]);
1528 result = eet_data_image_header_read(ef,
1529 EET_TEST_FILE_IMAGE "9",
1536 fail_if(result == 0);
1537 fail_if(w != test_alpha.w);
1538 fail_if(h != test_alpha.h);
1539 fail_if(alpha != test_alpha.alpha);
1540 fail_if(lossy != 1);
1542 data = eet_data_image_read(ef,
1543 EET_TEST_FILE_IMAGE "9",
1550 fail_if(data == NULL);
1551 fail_if(w != test_alpha.w);
1552 fail_if(h != test_alpha.h);
1553 fail_if(alpha != test_alpha.alpha);
1554 fail_if(lossy != 1);
1559 fail_if(unlink(file) != 0);
1566 #define IM0 0x00112233
1567 #define IM1 0x44556677
1568 #define IM2 0x8899aabb
1569 #define IM3 0xccddeeff
1571 START_TEST(eet_small_image)
1573 char *file = strdup("/tmp/eet_suite_testXXXXXX");
1574 unsigned int image[4];
1592 fail_if(!(file = tmpnam(file)));
1594 ef = eet_open(file, EET_FILE_MODE_WRITE);
1597 result = eet_data_image_write(ef, "/images/test", image, 2, 2, 1, 9, 100, 0);
1598 fail_if(result == 0);
1602 ef = eet_open(file, EET_FILE_MODE_READ);
1605 data = (unsigned int *)eet_data_image_read(ef,
1613 fail_if(data == NULL);
1617 fail_if(unlink(file) != 0);
1619 fail_if(data[0] != IM0);
1620 fail_if(data[1] != IM1);
1621 fail_if(data[2] != IM2);
1622 fail_if(data[3] != IM3);
1630 START_TEST(eet_identity_simple)
1632 const char *buffer = "Here is a string of data to save !";
1638 char *file = strdup("/tmp/eet_suite_testXXXXXX");
1644 fail_if(!(file = tmpnam(file)));
1645 fail_if(chdir(CERT_DIR));
1646 fail_if(!(noread = fopen("/dev/null", "w")));
1648 /* Sign an eet file. */
1649 ef = eet_open(file, EET_FILE_MODE_WRITE);
1652 fail_if(!eet_write(ef, "keys/tests", buffer, strlen(buffer) + 1, 0));
1654 k = eet_identity_open("cert.pem", "key.pem", NULL);
1657 fail_if(eet_identity_set(ef, k) != EET_ERROR_NONE);
1658 eet_identity_print(k, noread);
1662 /* Open a signed file. */
1663 ef = eet_open(file, EET_FILE_MODE_READ);
1666 test = eet_read(ef, "keys/tests", &size);
1668 fail_if(size != (int)strlen(buffer) + 1);
1670 fail_if(memcmp(test, buffer, strlen(buffer) + 1) != 0);
1672 tmp = eet_identity_x509(ef, &size);
1673 fail_if(tmp == NULL);
1675 eet_identity_certificate_print(tmp, size, noread);
1679 /* As we are changing file contain in less than 1s, this could get unnoticed
1680 by eet cache system. */
1683 /* Corrupting the file. */
1684 fd = open(file, O_WRONLY);
1687 fail_if(lseek(fd, 200, SEEK_SET) != 200);
1688 fail_if(write(fd, "42", 2) != 2);
1689 fail_if(lseek(fd, 50, SEEK_SET) != 50);
1690 fail_if(write(fd, "42", 2) != 2);
1691 fail_if(lseek(fd, 88, SEEK_SET) != 88);
1692 fail_if(write(fd, "42", 2) != 2);
1696 /* Attempt to open a modified file. */
1697 ef = eet_open(file, EET_FILE_MODE_READ);
1700 fail_if(unlink(file) != 0);
1706 START_TEST(eet_identity_open_simple)
1712 fail_if(chdir(CERT_DIR));
1714 k = eet_identity_open("cert.pem", "key.pem", NULL);
1718 eet_identity_close(k);
1724 START_TEST(eet_identity_open_pkcs8)
1730 fail_if(chdir(CERT_DIR));
1732 k = eet_identity_open("cert.pem", "key_enc_none.pem", NULL);
1736 eet_identity_close(k);
1744 pass_get(char *pass,
1746 __UNUSED__ int rwflags,
1749 memset(pass, 0, size);
1751 if ((int)strlen("password") > size)
1754 snprintf(pass, size, "%s", "password");
1755 return strlen(pass);
1759 badpass_get(char *pass,
1761 __UNUSED__ int rwflags,
1764 memset(pass, 0, size);
1766 if ((int)strlen("bad password") > size)
1769 snprintf(pass, size, "%s", "bad password");
1770 return strlen(pass);
1773 START_TEST(eet_identity_open_pkcs8_enc)
1779 fail_if(chdir(CERT_DIR));
1781 k = eet_identity_open("cert.pem", "key_enc.pem", NULL);
1785 eet_identity_close(k);
1787 k = eet_identity_open("cert.pem", "key_enc.pem", &badpass_get);
1791 eet_identity_close(k);
1793 k = eet_identity_open("cert.pem", "key_enc.pem", &pass_get);
1797 eet_identity_close(k);
1802 START_TEST(eet_cipher_decipher_simple)
1804 const char *buffer = "Here is a string of data to save !";
1805 const char *key = "This is a crypto key";
1806 const char *key_bad = "This is another crypto key";
1809 char *file = strdup("/tmp/eet_suite_testXXXXXX");
1814 fail_if(!(file = tmpnam(file)));
1815 fail_if(chdir(CERT_DIR));
1817 /* Crypt an eet file. */
1818 ef = eet_open(file, EET_FILE_MODE_WRITE);
1821 fail_if(!eet_write_cipher(ef, "keys/tests", buffer, strlen(buffer) + 1, 0,
1826 /* Decrypt an eet file. */
1827 ef = eet_open(file, EET_FILE_MODE_READ);
1830 test = eet_read_cipher(ef, "keys/tests", &size, key);
1832 fail_if(size != (int)strlen(buffer) + 1);
1834 fail_if(memcmp(test, buffer, strlen(buffer) + 1) != 0);
1838 /* Decrypt an eet file. */
1839 ef = eet_open(file, EET_FILE_MODE_READ);
1842 test = eet_read_cipher(ef, "keys/tests", &size, key_bad);
1844 if (size == (int)strlen(buffer) + 1)
1845 fail_if(memcmp(test, buffer, strlen(buffer) + 1) == 0);
1849 fail_if(unlink(file) != 0);
1856 #ifdef EINA_HAVE_THREADS
1858 static Eina_Bool open_worker_stop;
1860 # ifdef _EET_INCLUDED_PTHREAD
1863 open_close_worker(void *path)
1865 while (!open_worker_stop)
1867 Eet_File *ef = eet_open((char const *)path, EET_FILE_MODE_READ);
1869 pthread_exit("eet_open() failed");
1872 Eet_Error err_code = eet_close(ef);
1873 if (err_code != EET_ERROR_NONE)
1874 pthread_exit("eet_close() failed");
1879 } /* open_close_worker */
1881 # else /* ifdef _EET_INCLUDED_PTHREAD */
1883 static unsigned int __stdcall
1884 open_close_worker(void *path)
1886 while (!open_worker_stop)
1888 Eet_File *ef = eet_open((char const *)path, EET_FILE_MODE_READ);
1893 Eet_Error err_code = eet_close(ef);
1894 if (err_code != EET_ERROR_NONE)
1900 } /* open_close_worker */
1902 # endif /* ifdef _EET_INCLUDED_PTHREAD */
1904 START_TEST(eet_cache_concurrency)
1906 char *file = strdup("/tmp/eet_suite_testXXXXXX");
1907 const char *buffer = "test data";
1911 # ifdef _EET_INCLUDED_PTHREAD
1913 # else /* ifdef _EET_INCLUDED_PTHREAD */
1915 unsigned int thread_id;
1917 # endif /* ifdef _EET_INCLUDED_PTHREAD */
1920 eina_threads_init();
1922 /* create a file to test with */
1923 fail_if(!(file = tmpnam(file)));
1924 ef = eet_open(file, EET_FILE_MODE_WRITE);
1926 fail_if(!eet_write(ef, "keys/tests", buffer, strlen(buffer) + 1, 0));
1928 /* start a thread that repeatedly opens and closes a file */
1929 open_worker_stop = 0;
1930 # ifdef _EET_INCLUDED_PTHREAD
1931 pthread_create(&thread, NULL, open_close_worker, file);
1932 # else /* ifdef _EET_INCLUDED_PTHREAD */
1933 thread = _beginthreadex(NULL, 0, open_close_worker, file, 0, &thread_id);
1934 # endif /* ifdef _EET_INCLUDED_PTHREAD */
1935 /* clear the cache repeatedly in this thread */
1936 for (n = 0; n < 20000; ++n)
1941 /* join the other thread, and fail if it returned an error message */
1942 open_worker_stop = 1;
1943 # ifdef _EET_INCLUDED_PTHREAD
1944 fail_if(pthread_join(thread, &thread_ret) != 0);
1945 fail_unless(thread_ret == NULL, (char const *)thread_ret);
1946 # else /* ifdef _EET_INCLUDED_PTHREAD */
1947 ret = WaitForSingleObject((HANDLE)thread, INFINITE);
1948 fail_if(ret != WAIT_OBJECT_0);
1949 fail_if(GetExitCodeThread((HANDLE)thread, &ret) == FALSE);
1951 # endif /* ifdef _EET_INCLUDED_PTHREAD */
1953 fail_if(unlink(file) != 0);
1955 eina_threads_shutdown();
1960 #endif /* EINA_HAVE_THREADS */
1962 typedef struct _Eet_Connection_Data Eet_Connection_Data;
1963 struct _Eet_Connection_Data
1965 Eet_Connection *conn;
1966 Eet_Data_Descriptor *edd;
1971 _eet_connection_read(const void *eet_data,
1975 Eet_Connection_Data *dt = user_data;
1976 Eet_Test_Ex_Type *result;
1980 result = eet_data_descriptor_decode(dt->edd, eet_data, size);
1981 node = eet_data_node_decode_cipher(eet_data, NULL, size);
1983 /* Test the resulting data. */
1985 fail_if(_eet_test_ex_check(result, 0) != 0);
1986 fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
1987 fail_if(eina_list_data_get(result->ilist) == NULL);
1988 fail_if(*((int *)eina_list_data_get(result->ilist)) != 42);
1989 fail_if(eina_list_data_get(result->slist) == NULL);
1990 fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
1991 fail_if(eina_hash_find(result->shash, EET_TEST_KEY1) == NULL);
1992 fail_if(strcmp(eina_hash_find(result->shash, EET_TEST_KEY1), "test") != 0);
1993 fail_if(strcmp(result->charray[0], "test") != 0);
1997 eina_hash_foreach(result->hash, func, &test);
2001 eina_hash_foreach(result->ihash, func7, &test);
2007 dt->test = EINA_TRUE;
2008 fail_if(!eet_connection_node_send(dt->conn, node, NULL));
2012 } /* _eet_connection_read */
2015 _eet_connection_write(const void *data,
2019 Eet_Connection_Data *dt = user_data;
2024 int step = size / 3;
2026 eet_connection_received(dt->conn, data, step);
2027 eet_connection_received(dt->conn, (char *)data + step, step);
2029 still = eet_connection_received(dt->conn, (char *)data + 2 * step, size);
2032 still = eet_connection_received(dt->conn, data, size);
2037 } /* _eet_connection_write */
2039 START_TEST(eet_connection_check)
2041 Eet_Connection *conn;
2042 Eet_Data_Descriptor *edd;
2043 Eet_Data_Descriptor_Class eddc;
2044 Eet_Connection_Data ecd;
2045 Eet_Test_Ex_Type etbt;
2050 _eet_test_ex_set(&etbt, 0);
2051 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
2052 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
2053 etbt.hash = eina_hash_string_superfast_new(NULL);
2054 eina_hash_add(etbt.hash, EET_TEST_KEY1, _eet_test_ex_set(NULL, 2));
2055 eina_hash_add(etbt.hash, EET_TEST_KEY2, _eet_test_ex_set(NULL, 2));
2056 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
2057 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
2058 etbt.ihash = eina_hash_string_superfast_new(NULL);
2059 eina_hash_add(etbt.ihash, EET_TEST_KEY1, &i7);
2060 eina_hash_add(etbt.ihash, EET_TEST_KEY2, &i7);
2061 etbt.slist = eina_list_prepend(NULL, "test");
2062 etbt.shash = eina_hash_string_superfast_new(NULL);
2063 eina_hash_add(etbt.shash, EET_TEST_KEY1, "test");
2064 memset(&etbt.charray, 0, sizeof(etbt.charray));
2065 etbt.charray[0] = "test";
2067 eet_eina_file_data_descriptor_class_set(&eddc, sizeof (eddc),
2069 sizeof(Eet_Test_Ex_Type));
2071 edd = eet_data_descriptor_file_new(&eddc);
2074 _eet_build_ex_descriptor(edd);
2076 /* Create a connection. */
2077 conn = eet_connection_new(_eet_connection_read, _eet_connection_write, &ecd);
2081 ecd.test = EINA_FALSE;
2085 /* Test the connection. */
2086 fail_if(!eet_connection_send(conn, edd, &etbt, NULL));
2090 fail_if(!eet_connection_close(conn, &on_going));
2106 typedef struct _Eet_5FP Eet_5FP;
2116 typedef struct _Eet_5DBL Eet_5DBL;
2120 Eet_Data_Descriptor_Class eddc;
2121 Eet_Data_Descriptor *edd_5FP;
2122 Eet_Data_Descriptor *edd_5DBL;
2131 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_5FP);
2132 edd_5FP = eet_data_descriptor_stream_new(&eddc);
2134 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "fp32", fp32, EET_T_F32P32);
2135 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "fp16", fp16, EET_T_F16P16);
2136 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "fp8", fp8, EET_T_F8P24);
2137 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "f1", f1, EET_T_F32P32);
2138 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "f0", f0, EET_T_F32P32);
2140 eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), "Eet_5FP", sizeof (Eet_5DBL));
2141 edd_5DBL = eet_data_descriptor_stream_new(&eddc);
2143 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "fp32", fp32, EET_T_DOUBLE);
2144 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "fp16", fp16, EET_T_DOUBLE);
2145 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "fp8", fp8, EET_T_FLOAT);
2146 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "f1", f1, EET_T_DOUBLE);
2147 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "f0", f0, EET_T_DOUBLE);
2149 origin.fp32 = eina_f32p32_double_from(1.125);
2150 origin.fp16 = eina_f16p16_int_from(2000);
2151 origin.fp8 = eina_f8p24_int_from(125);
2152 origin.f1 = eina_f32p32_int_from(1);
2155 blob = eet_data_descriptor_encode(edd_5FP, &origin, &size);
2156 fail_if(!blob || size <= 0);
2158 build = eet_data_descriptor_decode(edd_5FP, blob, size);
2161 convert = eet_data_descriptor_decode(edd_5DBL, blob, size);
2164 fail_if(build->fp32 != eina_f32p32_double_from(1.125));
2165 fail_if(build->fp16 != eina_f16p16_int_from(2000));
2166 fail_if(build->fp8 != eina_f8p24_int_from(125));
2167 fail_if(build->f1 != eina_f32p32_int_from(1));
2168 fail_if(build->f0 != 0);
2170 fail_if(convert->fp32 != 1.125);
2171 fail_if(convert->fp16 != 2000);
2172 fail_if(convert->fp8 != 125);
2173 fail_if(convert->f1 != 1);
2174 fail_if(convert->f0 != 0);
2179 START_TEST(eet_file_fp)
2181 char *file = strdup("/tmp/eet_suite_testXXXXXX");
2182 Eet_Data_Descriptor_Class eddc;
2183 Eet_Data_Descriptor *edd_5FP;
2184 Eet_Data_Descriptor *edd_5DBL;
2192 EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_5FP);
2193 edd_5FP = eet_data_descriptor_file_new(&eddc);
2195 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "fp32", fp32, EET_T_F32P32);
2196 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "fp16", fp16, EET_T_F16P16);
2197 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "fp8", fp8, EET_T_F8P24);
2198 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "f1", f1, EET_T_F32P32);
2199 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "f0", f0, EET_T_F32P32);
2201 eet_eina_file_data_descriptor_class_set(&eddc, sizeof (eddc), "Eet_5FP", sizeof (Eet_5DBL));
2202 edd_5DBL = eet_data_descriptor_file_new(&eddc);
2204 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "fp32", fp32, EET_T_DOUBLE);
2205 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "fp16", fp16, EET_T_DOUBLE);
2206 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "fp8", fp8, EET_T_FLOAT);
2207 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "f1", f1, EET_T_DOUBLE);
2208 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "f0", f0, EET_T_DOUBLE);
2210 origin.fp32 = eina_f32p32_double_from(1.125);
2211 origin.fp16 = eina_f16p16_int_from(2000);
2212 origin.fp8 = eina_f8p24_int_from(125);
2213 origin.f1 = eina_f32p32_int_from(1);
2216 fail_if(!(file = tmpnam(file)));
2218 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
2221 fail_if(!eet_data_write(ef, edd_5FP, EET_TEST_FILE_KEY1, &origin, 1));
2223 build = eet_data_read(ef, edd_5FP, EET_TEST_FILE_KEY1);
2226 convert = eet_data_read(ef, edd_5DBL, EET_TEST_FILE_KEY1);
2229 fail_if(build->fp32 != eina_f32p32_double_from(1.125));
2230 fail_if(build->fp16 != eina_f16p16_int_from(2000));
2231 fail_if(build->fp8 != eina_f8p24_int_from(125));
2232 fail_if(build->f1 != eina_f32p32_int_from(1));
2233 fail_if(build->f0 != 0);
2235 fail_if(convert->fp32 != 1.125);
2236 fail_if(convert->fp16 != 2000);
2237 fail_if(convert->fp8 != 125);
2238 fail_if(convert->f1 != 1);
2239 fail_if(convert->f0 != 0);
2243 fail_if(unlink(file) != 0);
2250 typedef struct _Eet_Union_Test Eet_Union_Test;
2251 typedef struct _Eet_Variant_Test Eet_Variant_Test;
2252 typedef struct _Eet_Variant_Type Eet_Variant_Type;
2253 typedef struct _Eet_Inherit_Test1 Eet_Inherit_Test1;
2254 typedef struct _Eet_Inherit_Test2 Eet_Inherit_Test2;
2255 typedef struct _Eet_Inherit_Test3 Eet_Inherit_Test3;
2256 typedef struct _Eet_St1 Eet_St1;
2257 typedef struct _Eet_St2 Eet_St2;
2258 typedef struct _Eet_St3 Eet_St3;
2259 typedef struct _Eet_List Eet_List;
2261 typedef enum _Eet_Union
2277 { EET_UNKNOWN, NULL }
2290 unsigned long long v1;
2298 struct _Eet_Union_Test
2309 struct _Eet_Variant_Type
2312 Eina_Bool unknow : 1;
2315 struct _Eet_Variant_Test
2320 Eina_List *data_list;
2323 struct _Eet_Inherit_Test1
2328 struct _Eet_Inherit_Test2
2333 struct _Eet_Inherit_Test3
2345 _eet_union_type_get(const void *data,
2348 const Eet_Union *u = data;
2352 *unknow = EINA_FALSE;
2354 for (i = 0; eet_mapping[i].name != NULL; ++i)
2355 if (*u == eet_mapping[i].u)
2356 return eet_mapping[i].name;
2359 *unknow = EINA_TRUE;
2362 } /* _eet_union_type_get */
2365 _eet_union_type_set(const char *type,
2369 Eet_Union *u = data;
2375 for (i = 0; eet_mapping[i].name != NULL; ++i)
2376 if (strcmp(eet_mapping[i].name, type) == 0)
2378 *u = eet_mapping[i].u;
2383 } /* _eet_union_type_set */
2386 _eet_variant_type_get(const void *data,
2389 const Eet_Variant_Type *type = data;
2393 *unknow = type->unknow;
2395 for (i = 0; eet_mapping[i].name != NULL; ++i)
2396 if (strcmp(type->type, eet_mapping[i].name) == 0)
2397 return eet_mapping[i].name;
2400 *unknow = EINA_FALSE;
2403 } /* _eet_variant_type_get */
2406 _eet_variant_type_set(const char *type,
2410 Eet_Variant_Type *vt = data;
2413 vt->unknow = unknow;
2415 } /* _eet_variant_type_set */
2417 static Eet_Data_Descriptor *
2420 Eet_Data_Descriptor_Class eddc;
2421 Eet_Data_Descriptor *res;
2423 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_St1);
2424 res = eet_data_descriptor_stream_new(&eddc);
2425 EET_DATA_DESCRIPTOR_ADD_BASIC(res, Eet_St1, "val1", val1, EET_T_DOUBLE);
2426 EET_DATA_DESCRIPTOR_ADD_BASIC(res, Eet_St1, "stuff", stuff, EET_T_INT);
2427 EET_DATA_DESCRIPTOR_ADD_BASIC(res, Eet_St1, "s1", s1, EET_T_STRING);
2433 _eet_st1_set(Eet_St1 *st1,
2436 st1->val1 = EET_TEST_DOUBLE;
2437 st1->stuff = EET_TEST_INT + i;
2438 st1->s1 = EET_TEST_STRING;
2439 } /* _eet_st1_set */
2442 _eet_st1_cmp(Eet_St1 *st1,
2449 tmp = st1->val1 - EET_TEST_DOUBLE;
2453 fail_if(tmp > 0.005);
2454 fail_if(st1->stuff != EET_TEST_INT + i);
2455 fail_if(strcmp(st1->s1, EET_TEST_STRING));
2456 } /* _eet_st1_cmp */
2458 static Eet_Data_Descriptor *
2461 Eet_Data_Descriptor_Class eddc;
2462 Eet_Data_Descriptor *res;
2464 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_St2);
2465 res = eet_data_descriptor_stream_new(&eddc);
2466 EET_DATA_DESCRIPTOR_ADD_BASIC(res, Eet_St2, "b1", b1, EET_T_UCHAR);
2467 EET_DATA_DESCRIPTOR_ADD_BASIC(res, Eet_St2, "v1", v1, EET_T_ULONG_LONG);
2473 _eet_st2_set(Eet_St2 *st2,
2476 st2->b1 = EINA_TRUE;
2477 st2->v1 = EET_TEST_LONG_LONG + i;
2478 } /* _eet_st2_set */
2481 _eet_st2_cmp(Eet_St2 *st2,
2485 fail_if(st2->v1 != EET_TEST_LONG_LONG + i);
2486 } /* _eet_st2_cmp */
2488 static Eet_Data_Descriptor *
2491 Eet_Data_Descriptor_Class eddc;
2492 Eet_Data_Descriptor *res;
2494 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_St3);
2495 res = eet_data_descriptor_stream_new(&eddc);
2496 EET_DATA_DESCRIPTOR_ADD_BASIC(res, Eet_St3, "boby", boby, EET_T_INT);
2502 _eet_st3_set(Eet_St3 *st3,
2505 st3->boby = EET_TEST_INT + i;
2506 } /* _eet_st3_set */
2509 _eet_st3_cmp(Eet_St3 *st3,
2512 fail_if(st3->boby != EET_TEST_INT + i);
2513 } /* _eet_st3_cmp */
2515 START_TEST(eet_test_union)
2517 Eet_Union_Test *eut;
2519 Eet_Data_Descriptor_Class eddc;
2520 Eet_Data_Descriptor *edd;
2521 Eet_Data_Descriptor *unified;
2522 Eet_Data_Descriptor *m;
2530 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_Union_Test);
2531 edd = eet_data_descriptor_stream_new(&eddc);
2533 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_Union_Test);
2534 m = eet_data_descriptor_stream_new(&eddc);
2536 eddc.version = EET_DATA_DESCRIPTOR_CLASS_VERSION;
2537 eddc.func.type_get = _eet_union_type_get;
2538 eddc.func.type_set = _eet_union_type_set;
2539 unified = eet_data_descriptor_stream_new(&eddc);
2541 EET_DATA_DESCRIPTOR_ADD_MAPPING(unified, "ST1", _eet_st1_dd());
2542 EET_DATA_DESCRIPTOR_ADD_MAPPING(unified, "ST2", _eet_st2_dd());
2543 EET_DATA_DESCRIPTOR_ADD_MAPPING(unified, "ST3", _eet_st3_dd());
2545 EET_DATA_DESCRIPTOR_ADD_UNION(edd, Eet_Union_Test, "u", u, type, unified);
2547 EET_DATA_DESCRIPTOR_ADD_LIST(m, Eet_List, "list", list, edd);
2549 l = calloc(1, sizeof (Eet_List));
2551 #define EUT_NEW(Type_Index) \
2552 eut = calloc(1, sizeof (Eet_Union_Test)); \
2553 eut->type = EET_ST ## Type_Index; \
2554 _eet_st ## Type_Index ## _set(&(eut->u.st ## Type_Index), i);
2556 for (i = 0; i < 3; ++i)
2559 l->list = eina_list_append(l->list, eut);
2562 l->list = eina_list_append(l->list, eut);
2565 l->list = eina_list_append(l->list, eut);
2568 blob = eet_data_descriptor_encode(m, l, &size);
2569 fail_if(!blob || size <= 0);
2571 l = eet_data_descriptor_decode(m, blob, size);
2574 fail_if(eina_list_count(l->list) != 9);
2576 #define EUT_CMP(Type_Index) \
2577 eut = eina_list_nth(l->list, i * 3 + Type_Index - 1); \
2578 fail_if(eut->type != EET_ST ## Type_Index); \
2579 _eet_st ## Type_Index ## _cmp(&(eut->u.st ## Type_Index), i);
2581 for (i = 0; i < 3; ++i)
2592 START_TEST(eet_test_variant)
2594 Eet_Variant_Test *evt;
2599 Eet_Data_Descriptor_Class eddc;
2600 Eet_Data_Descriptor *edd;
2601 Eet_Data_Descriptor *unified;
2602 Eet_Data_Descriptor *m;
2610 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_Variant_Test);
2611 edd = eet_data_descriptor_stream_new(&eddc);
2613 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_Variant_Test);
2614 m = eet_data_descriptor_stream_new(&eddc);
2616 eddc.version = EET_DATA_DESCRIPTOR_CLASS_VERSION;
2617 eddc.func.type_get = _eet_variant_type_get;
2618 eddc.func.type_set = _eet_variant_type_set;
2619 unified = eet_data_descriptor_stream_new(&eddc);
2621 EET_DATA_DESCRIPTOR_ADD_MAPPING(unified, "ST1", _eet_st1_dd());
2622 EET_DATA_DESCRIPTOR_ADD_MAPPING(unified, "ST2", _eet_st2_dd());
2623 EET_DATA_DESCRIPTOR_ADD_MAPPING(unified, "ST3", _eet_st3_dd());
2625 EET_DATA_DESCRIPTOR_ADD_VARIANT(edd,
2632 unified = eet_data_descriptor_stream_new(&eddc);
2633 eet_data_descriptor_element_add(unified, "ST1",
2634 EET_T_UNKNOW, EET_G_LIST,
2635 0, 0, NULL, _eet_st1_dd());
2636 eet_data_descriptor_element_add(unified, "ST2",
2637 EET_T_UNKNOW, EET_G_LIST,
2638 0, 0, NULL, _eet_st2_dd());
2640 EET_DATA_DESCRIPTOR_ADD_VARIANT(edd, Eet_Variant_Test,
2641 "data_list", data_list, t, unified);
2643 EET_DATA_DESCRIPTOR_ADD_LIST(m, Eet_List, "list", list, edd);
2645 l = calloc(1, sizeof (Eet_List));
2647 #define EVT_NEW(Type_Index) \
2648 evt = calloc(1, sizeof (Eet_Variant_Test)); \
2649 evt->t.type = eet_mapping[Type_Index - 1].name; \
2650 st ## Type_Index = calloc(1, sizeof (Eet_St ## Type_Index)); \
2651 _eet_st ## Type_Index ## _set(st ## Type_Index, i); \
2652 evt->data = st ## Type_Index;
2654 for (i = 0; i < 3; ++i)
2657 l->list = eina_list_append(l->list, evt);
2659 st1 = calloc(1, sizeof (Eet_St1));
2660 _eet_st1_set(st1, i);
2661 evt->data_list = eina_list_append(evt->data_list, st1);
2664 l->list = eina_list_append(l->list, evt);
2667 l->list = eina_list_append(l->list, evt);
2670 blob = eet_data_descriptor_encode(m, l, &size);
2671 fail_if(!blob || size <= 0);
2673 l = eet_data_descriptor_decode(m, blob, size);
2676 fail_if(eina_list_count(l->list) != 9);
2678 #define EVT_CMP(Type_Index) \
2679 evt = eina_list_nth(l->list, i * 3 + Type_Index - 1); \
2680 fail_if(strcmp(evt->t.type, eet_mapping[Type_Index - 1].name) != 0); \
2681 _eet_st ## Type_Index ## _cmp(evt->data, i);
2683 for (i = 0; i < 3; ++i)
2687 fail_if(!evt->data_list);
2688 fail_if(eina_list_count(evt->data_list) != 1);
2690 st1 = eina_list_data_get(evt->data_list);
2691 _eet_st1_cmp(st1, i);
2709 s = suite_create("Eet");
2711 tc = tcase_create("Eet_Init");
2712 tcase_add_test(tc, eet_test_init);
2713 suite_add_tcase(s, tc);
2715 tc = tcase_create("Eet Data Encoding/Decoding");
2716 tcase_add_test(tc, eet_test_basic_data_type_encoding_decoding);
2717 tcase_add_test(tc, eet_test_data_type_encoding_decoding);
2718 tcase_add_test(tc, eet_test_data_type_dump_undump);
2719 tcase_add_test(tc, eet_fp);
2720 tcase_add_test(tc, eet_test_union);
2721 tcase_add_test(tc, eet_test_variant);
2722 suite_add_tcase(s, tc);
2724 tc = tcase_create("Eet File");
2725 tcase_add_test(tc, eet_file_simple_write);
2726 tcase_add_test(tc, eet_file_data_test);
2727 tcase_add_test(tc, eet_file_data_dump_test);
2728 tcase_add_test(tc, eet_file_fp);
2729 suite_add_tcase(s, tc);
2731 tc = tcase_create("Eet Image");
2732 tcase_add_test(tc, eet_image);
2733 tcase_add_test(tc, eet_small_image);
2734 suite_add_tcase(s, tc);
2736 #ifdef HAVE_SIGNATURE
2737 tc = tcase_create("Eet Identity");
2738 tcase_add_test(tc, eet_identity_simple);
2739 tcase_add_test(tc, eet_identity_open_simple);
2740 tcase_add_test(tc, eet_identity_open_pkcs8);
2741 tcase_add_test(tc, eet_identity_open_pkcs8_enc);
2742 suite_add_tcase(s, tc);
2743 #endif /* ifdef HAVE_SIGNATURE */
2746 tc = tcase_create("Eet Cipher");
2747 tcase_add_test(tc, eet_cipher_decipher_simple);
2748 suite_add_tcase(s, tc);
2749 #endif /* ifdef HAVE_CIPHER */
2751 #ifdef EINA_HAVE_THREADS
2752 tc = tcase_create("Eet Cache");
2753 tcase_add_test(tc, eet_cache_concurrency);
2754 suite_add_tcase(s, tc);
2755 #endif /* ifdef EFL_HAVE_THREADS */
2757 tc = tcase_create("Eet Connection");
2758 tcase_add_test(tc, eet_connection_check);
2759 suite_add_tcase(s, tc);
2772 sr = srunner_create(s);
2773 srunner_run_all(sr, CK_ENV);
2774 failed_count = srunner_ntests_failed(sr);
2777 return (failed_count == 0) ? EXIT_SUCCESS : EXIT_FAILURE;