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 "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 /* Hack to fix issue in buildbot. */
1646 int chret = chdir(CERT_DIR);
1649 static char CWD[1024];
1652 printf("TAsn: '%s' '%s'\n", CWD, CERT_DIR);
1655 fail_if(!(noread = fopen("/dev/null", "w")));
1657 /* Sign an eet file. */
1658 ef = eet_open(file, EET_FILE_MODE_WRITE);
1661 fail_if(!eet_write(ef, "keys/tests", buffer, strlen(buffer) + 1, 0));
1663 k = eet_identity_open("cert.pem", "key.pem", NULL);
1666 fail_if(eet_identity_set(ef, k) != EET_ERROR_NONE);
1667 eet_identity_print(k, noread);
1671 /* Open a signed file. */
1672 ef = eet_open(file, EET_FILE_MODE_READ);
1675 test = eet_read(ef, "keys/tests", &size);
1677 fail_if(size != (int)strlen(buffer) + 1);
1679 fail_if(memcmp(test, buffer, strlen(buffer) + 1) != 0);
1681 tmp = eet_identity_x509(ef, &size);
1682 fail_if(tmp == NULL);
1684 eet_identity_certificate_print(tmp, size, noread);
1688 /* As we are changing file contain in less than 1s, this could get unnoticed
1689 by eet cache system. */
1692 /* Corrupting the file. */
1693 fd = open(file, O_WRONLY);
1696 fail_if(lseek(fd, 200, SEEK_SET) != 200);
1697 fail_if(write(fd, "42", 2) != 2);
1698 fail_if(lseek(fd, 50, SEEK_SET) != 50);
1699 fail_if(write(fd, "42", 2) != 2);
1700 fail_if(lseek(fd, 88, SEEK_SET) != 88);
1701 fail_if(write(fd, "42", 2) != 2);
1705 /* Attempt to open a modified file. */
1706 ef = eet_open(file, EET_FILE_MODE_READ);
1709 fail_if(unlink(file) != 0);
1715 START_TEST(eet_identity_open_simple)
1721 fail_if(chdir(CERT_DIR));
1723 k = eet_identity_open("cert.pem", "key.pem", NULL);
1727 eet_identity_close(k);
1733 START_TEST(eet_identity_open_pkcs8)
1739 fail_if(chdir(CERT_DIR));
1741 k = eet_identity_open("cert.pem", "key_enc_none.pem", NULL);
1745 eet_identity_close(k);
1753 pass_get(char *pass,
1755 __UNUSED__ int rwflags,
1758 memset(pass, 0, size);
1760 if ((int)strlen("password") > size)
1763 snprintf(pass, size, "%s", "password");
1764 return strlen(pass);
1768 badpass_get(char *pass,
1770 __UNUSED__ int rwflags,
1773 memset(pass, 0, size);
1775 if ((int)strlen("bad password") > size)
1778 snprintf(pass, size, "%s", "bad password");
1779 return strlen(pass);
1782 START_TEST(eet_identity_open_pkcs8_enc)
1788 fail_if(chdir(CERT_DIR));
1790 k = eet_identity_open("cert.pem", "key_enc.pem", NULL);
1794 eet_identity_close(k);
1796 k = eet_identity_open("cert.pem", "key_enc.pem", &badpass_get);
1800 eet_identity_close(k);
1802 k = eet_identity_open("cert.pem", "key_enc.pem", &pass_get);
1806 eet_identity_close(k);
1811 START_TEST(eet_cipher_decipher_simple)
1813 const char *buffer = "Here is a string of data to save !";
1814 const char *key = "This is a crypto key";
1815 const char *key_bad = "This is another crypto key";
1818 char *file = strdup("/tmp/eet_suite_testXXXXXX");
1823 fail_if(!(file = tmpnam(file)));
1824 fail_if(chdir(CERT_DIR));
1826 /* Crypt an eet file. */
1827 ef = eet_open(file, EET_FILE_MODE_WRITE);
1830 fail_if(!eet_write_cipher(ef, "keys/tests", buffer, strlen(buffer) + 1, 0,
1835 /* Decrypt an eet file. */
1836 ef = eet_open(file, EET_FILE_MODE_READ);
1839 test = eet_read_cipher(ef, "keys/tests", &size, key);
1841 fail_if(size != (int)strlen(buffer) + 1);
1843 fail_if(memcmp(test, buffer, strlen(buffer) + 1) != 0);
1847 /* Decrypt an eet file. */
1848 ef = eet_open(file, EET_FILE_MODE_READ);
1851 test = eet_read_cipher(ef, "keys/tests", &size, key_bad);
1853 if (size == (int)strlen(buffer) + 1)
1854 fail_if(memcmp(test, buffer, strlen(buffer) + 1) == 0);
1858 fail_if(unlink(file) != 0);
1865 #ifdef EINA_HAVE_THREADS
1867 static Eina_Bool open_worker_stop;
1869 # ifdef _EET_INCLUDED_PTHREAD
1872 open_close_worker(void *path)
1874 while (!open_worker_stop)
1876 Eet_File *ef = eet_open((char const *)path, EET_FILE_MODE_READ);
1878 pthread_exit("eet_open() failed");
1881 Eet_Error err_code = eet_close(ef);
1882 if (err_code != EET_ERROR_NONE)
1883 pthread_exit("eet_close() failed");
1888 } /* open_close_worker */
1890 # else /* ifdef _EET_INCLUDED_PTHREAD */
1892 static unsigned int __stdcall
1893 open_close_worker(void *path)
1895 while (!open_worker_stop)
1897 Eet_File *ef = eet_open((char const *)path, EET_FILE_MODE_READ);
1902 Eet_Error err_code = eet_close(ef);
1903 if (err_code != EET_ERROR_NONE)
1909 } /* open_close_worker */
1911 # endif /* ifdef _EET_INCLUDED_PTHREAD */
1913 START_TEST(eet_cache_concurrency)
1915 char *file = strdup("/tmp/eet_suite_testXXXXXX");
1916 const char *buffer = "test data";
1920 # ifdef _EET_INCLUDED_PTHREAD
1922 # else /* ifdef _EET_INCLUDED_PTHREAD */
1924 unsigned int thread_id;
1926 # endif /* ifdef _EET_INCLUDED_PTHREAD */
1929 eina_threads_init();
1931 /* create a file to test with */
1932 fail_if(!(file = tmpnam(file)));
1933 ef = eet_open(file, EET_FILE_MODE_WRITE);
1935 fail_if(!eet_write(ef, "keys/tests", buffer, strlen(buffer) + 1, 0));
1937 /* start a thread that repeatedly opens and closes a file */
1938 open_worker_stop = 0;
1939 # ifdef _EET_INCLUDED_PTHREAD
1940 pthread_create(&thread, NULL, open_close_worker, file);
1941 # else /* ifdef _EET_INCLUDED_PTHREAD */
1942 thread = _beginthreadex(NULL, 0, open_close_worker, file, 0, &thread_id);
1943 # endif /* ifdef _EET_INCLUDED_PTHREAD */
1944 /* clear the cache repeatedly in this thread */
1945 for (n = 0; n < 50000; ++n)
1950 /* join the other thread, and fail if it returned an error message */
1951 open_worker_stop = 1;
1952 # ifdef _EET_INCLUDED_PTHREAD
1953 fail_if(pthread_join(thread, &thread_ret) != 0);
1954 fail_unless(thread_ret == NULL, (char const *)thread_ret);
1955 # else /* ifdef _EET_INCLUDED_PTHREAD */
1956 ret = WaitForSingleObject((HANDLE)thread, INFINITE);
1957 fail_if(ret != WAIT_OBJECT_0);
1958 fail_if(GetExitCodeThread((HANDLE)thread, &ret) == FALSE);
1960 # endif /* ifdef _EET_INCLUDED_PTHREAD */
1962 fail_if(unlink(file) != 0);
1964 eina_threads_shutdown();
1969 #endif /* EINA_HAVE_THREADS */
1971 typedef struct _Eet_Connection_Data Eet_Connection_Data;
1972 struct _Eet_Connection_Data
1974 Eet_Connection *conn;
1975 Eet_Data_Descriptor *edd;
1980 _eet_connection_read(const void *eet_data,
1984 Eet_Connection_Data *dt = user_data;
1985 Eet_Test_Ex_Type *result;
1989 result = eet_data_descriptor_decode(dt->edd, eet_data, size);
1990 node = eet_data_node_decode_cipher(eet_data, NULL, size);
1992 /* Test the resulting data. */
1994 fail_if(_eet_test_ex_check(result, 0) != 0);
1995 fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
1996 fail_if(eina_list_data_get(result->ilist) == NULL);
1997 fail_if(*((int *)eina_list_data_get(result->ilist)) != 42);
1998 fail_if(eina_list_data_get(result->slist) == NULL);
1999 fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
2000 fail_if(eina_hash_find(result->shash, EET_TEST_KEY1) == NULL);
2001 fail_if(strcmp(eina_hash_find(result->shash, EET_TEST_KEY1), "test") != 0);
2002 fail_if(strcmp(result->charray[0], "test") != 0);
2006 eina_hash_foreach(result->hash, func, &test);
2010 eina_hash_foreach(result->ihash, func7, &test);
2016 dt->test = EINA_TRUE;
2017 fail_if(!eet_connection_node_send(dt->conn, node, NULL));
2021 } /* _eet_connection_read */
2024 _eet_connection_write(const void *data,
2028 Eet_Connection_Data *dt = user_data;
2033 int step = size / 3;
2035 eet_connection_received(dt->conn, data, step);
2036 eet_connection_received(dt->conn, (char *)data + step, step);
2038 still = eet_connection_received(dt->conn, (char *)data + 2 * step, size);
2041 still = eet_connection_received(dt->conn, data, size);
2046 } /* _eet_connection_write */
2048 START_TEST(eet_connection_check)
2050 Eet_Connection *conn;
2051 Eet_Data_Descriptor *edd;
2052 Eet_Data_Descriptor_Class eddc;
2053 Eet_Connection_Data ecd;
2054 Eet_Test_Ex_Type etbt;
2059 _eet_test_ex_set(&etbt, 0);
2060 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
2061 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
2062 etbt.hash = eina_hash_string_superfast_new(NULL);
2063 eina_hash_add(etbt.hash, EET_TEST_KEY1, _eet_test_ex_set(NULL, 2));
2064 eina_hash_add(etbt.hash, EET_TEST_KEY2, _eet_test_ex_set(NULL, 2));
2065 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
2066 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
2067 etbt.ihash = eina_hash_string_superfast_new(NULL);
2068 eina_hash_add(etbt.ihash, EET_TEST_KEY1, &i7);
2069 eina_hash_add(etbt.ihash, EET_TEST_KEY2, &i7);
2070 etbt.slist = eina_list_prepend(NULL, "test");
2071 etbt.shash = eina_hash_string_superfast_new(NULL);
2072 eina_hash_add(etbt.shash, EET_TEST_KEY1, "test");
2073 memset(&etbt.charray, 0, sizeof(etbt.charray));
2074 etbt.charray[0] = "test";
2076 eet_eina_file_data_descriptor_class_set(&eddc, sizeof (eddc),
2078 sizeof(Eet_Test_Ex_Type));
2080 edd = eet_data_descriptor_file_new(&eddc);
2083 _eet_build_ex_descriptor(edd);
2085 /* Create a connection. */
2086 conn = eet_connection_new(_eet_connection_read, _eet_connection_write, &ecd);
2090 ecd.test = EINA_FALSE;
2094 /* Test the connection. */
2095 fail_if(!eet_connection_send(conn, edd, &etbt, NULL));
2099 fail_if(!eet_connection_close(conn, &on_going));
2115 typedef struct _Eet_5FP Eet_5FP;
2125 typedef struct _Eet_5DBL Eet_5DBL;
2129 Eet_Data_Descriptor_Class eddc;
2130 Eet_Data_Descriptor *edd_5FP;
2131 Eet_Data_Descriptor *edd_5DBL;
2140 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_5FP);
2141 edd_5FP = eet_data_descriptor_stream_new(&eddc);
2143 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "fp32", fp32, EET_T_F32P32);
2144 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "fp16", fp16, EET_T_F16P16);
2145 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "fp8", fp8, EET_T_F8P24);
2146 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "f1", f1, EET_T_F32P32);
2147 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "f0", f0, EET_T_F32P32);
2149 eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), "Eet_5FP", sizeof (Eet_5DBL));
2150 edd_5DBL = eet_data_descriptor_stream_new(&eddc);
2152 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "fp32", fp32, EET_T_DOUBLE);
2153 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "fp16", fp16, EET_T_DOUBLE);
2154 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "fp8", fp8, EET_T_FLOAT);
2155 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "f1", f1, EET_T_DOUBLE);
2156 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "f0", f0, EET_T_DOUBLE);
2158 origin.fp32 = eina_f32p32_double_from(1.125);
2159 origin.fp16 = eina_f16p16_int_from(2000);
2160 origin.fp8 = eina_f8p24_int_from(125);
2161 origin.f1 = eina_f32p32_int_from(1);
2164 blob = eet_data_descriptor_encode(edd_5FP, &origin, &size);
2165 fail_if(!blob || size <= 0);
2167 build = eet_data_descriptor_decode(edd_5FP, blob, size);
2170 convert = eet_data_descriptor_decode(edd_5DBL, blob, size);
2173 fail_if(build->fp32 != eina_f32p32_double_from(1.125));
2174 fail_if(build->fp16 != eina_f16p16_int_from(2000));
2175 fail_if(build->fp8 != eina_f8p24_int_from(125));
2176 fail_if(build->f1 != eina_f32p32_int_from(1));
2177 fail_if(build->f0 != 0);
2179 fail_if(convert->fp32 != 1.125);
2180 fail_if(convert->fp16 != 2000);
2181 fail_if(convert->fp8 != 125);
2182 fail_if(convert->f1 != 1);
2183 fail_if(convert->f0 != 0);
2188 START_TEST(eet_file_fp)
2190 char *file = strdup("/tmp/eet_suite_testXXXXXX");
2191 Eet_Data_Descriptor_Class eddc;
2192 Eet_Data_Descriptor *edd_5FP;
2193 Eet_Data_Descriptor *edd_5DBL;
2201 EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_5FP);
2202 edd_5FP = eet_data_descriptor_file_new(&eddc);
2204 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "fp32", fp32, EET_T_F32P32);
2205 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "fp16", fp16, EET_T_F16P16);
2206 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "fp8", fp8, EET_T_F8P24);
2207 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "f1", f1, EET_T_F32P32);
2208 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "f0", f0, EET_T_F32P32);
2210 eet_eina_file_data_descriptor_class_set(&eddc, sizeof (eddc), "Eet_5FP", sizeof (Eet_5DBL));
2211 edd_5DBL = eet_data_descriptor_file_new(&eddc);
2213 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "fp32", fp32, EET_T_DOUBLE);
2214 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "fp16", fp16, EET_T_DOUBLE);
2215 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "fp8", fp8, EET_T_FLOAT);
2216 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "f1", f1, EET_T_DOUBLE);
2217 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "f0", f0, EET_T_DOUBLE);
2219 origin.fp32 = eina_f32p32_double_from(1.125);
2220 origin.fp16 = eina_f16p16_int_from(2000);
2221 origin.fp8 = eina_f8p24_int_from(125);
2222 origin.f1 = eina_f32p32_int_from(1);
2225 fail_if(!(file = tmpnam(file)));
2227 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
2230 fail_if(!eet_data_write(ef, edd_5FP, EET_TEST_FILE_KEY1, &origin, 1));
2232 build = eet_data_read(ef, edd_5FP, EET_TEST_FILE_KEY1);
2235 convert = eet_data_read(ef, edd_5DBL, EET_TEST_FILE_KEY1);
2238 fail_if(build->fp32 != eina_f32p32_double_from(1.125));
2239 fail_if(build->fp16 != eina_f16p16_int_from(2000));
2240 fail_if(build->fp8 != eina_f8p24_int_from(125));
2241 fail_if(build->f1 != eina_f32p32_int_from(1));
2242 fail_if(build->f0 != 0);
2244 fail_if(convert->fp32 != 1.125);
2245 fail_if(convert->fp16 != 2000);
2246 fail_if(convert->fp8 != 125);
2247 fail_if(convert->f1 != 1);
2248 fail_if(convert->f0 != 0);
2252 fail_if(unlink(file) != 0);
2259 typedef struct _Eet_Union_Test Eet_Union_Test;
2260 typedef struct _Eet_Variant_Test Eet_Variant_Test;
2261 typedef struct _Eet_Variant_Type Eet_Variant_Type;
2262 typedef struct _Eet_Inherit_Test1 Eet_Inherit_Test1;
2263 typedef struct _Eet_Inherit_Test2 Eet_Inherit_Test2;
2264 typedef struct _Eet_Inherit_Test3 Eet_Inherit_Test3;
2265 typedef struct _Eet_St1 Eet_St1;
2266 typedef struct _Eet_St2 Eet_St2;
2267 typedef struct _Eet_St3 Eet_St3;
2268 typedef struct _Eet_List Eet_List;
2270 typedef enum _Eet_Union
2286 { EET_UNKNOWN, NULL }
2299 unsigned long long v1;
2307 struct _Eet_Union_Test
2318 struct _Eet_Variant_Type
2321 Eina_Bool unknow : 1;
2324 struct _Eet_Variant_Test
2329 Eina_List *data_list;
2332 struct _Eet_Inherit_Test1
2337 struct _Eet_Inherit_Test2
2342 struct _Eet_Inherit_Test3
2354 _eet_union_type_get(const void *data,
2357 const Eet_Union *u = data;
2361 *unknow = EINA_FALSE;
2363 for (i = 0; eet_mapping[i].name != NULL; ++i)
2364 if (*u == eet_mapping[i].u)
2365 return eet_mapping[i].name;
2368 *unknow = EINA_TRUE;
2371 } /* _eet_union_type_get */
2374 _eet_union_type_set(const char *type,
2378 Eet_Union *u = data;
2384 for (i = 0; eet_mapping[i].name != NULL; ++i)
2385 if (strcmp(eet_mapping[i].name, type) == 0)
2387 *u = eet_mapping[i].u;
2392 } /* _eet_union_type_set */
2395 _eet_variant_type_get(const void *data,
2398 const Eet_Variant_Type *type = data;
2402 *unknow = type->unknow;
2404 for (i = 0; eet_mapping[i].name != NULL; ++i)
2405 if (strcmp(type->type, eet_mapping[i].name) == 0)
2406 return eet_mapping[i].name;
2409 *unknow = EINA_FALSE;
2412 } /* _eet_variant_type_get */
2415 _eet_variant_type_set(const char *type,
2419 Eet_Variant_Type *vt = data;
2422 vt->unknow = unknow;
2424 } /* _eet_variant_type_set */
2426 static Eet_Data_Descriptor *
2429 Eet_Data_Descriptor_Class eddc;
2430 Eet_Data_Descriptor *res;
2432 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_St1);
2433 res = eet_data_descriptor_stream_new(&eddc);
2434 EET_DATA_DESCRIPTOR_ADD_BASIC(res, Eet_St1, "val1", val1, EET_T_DOUBLE);
2435 EET_DATA_DESCRIPTOR_ADD_BASIC(res, Eet_St1, "stuff", stuff, EET_T_INT);
2436 EET_DATA_DESCRIPTOR_ADD_BASIC(res, Eet_St1, "s1", s1, EET_T_STRING);
2442 _eet_st1_set(Eet_St1 *st1,
2445 st1->val1 = EET_TEST_DOUBLE;
2446 st1->stuff = EET_TEST_INT + i;
2447 st1->s1 = EET_TEST_STRING;
2448 } /* _eet_st1_set */
2451 _eet_st1_cmp(Eet_St1 *st1,
2458 tmp = st1->val1 - EET_TEST_DOUBLE;
2462 fail_if(tmp > 0.005);
2463 fail_if(st1->stuff != EET_TEST_INT + i);
2464 fail_if(strcmp(st1->s1, EET_TEST_STRING));
2465 } /* _eet_st1_cmp */
2467 static Eet_Data_Descriptor *
2470 Eet_Data_Descriptor_Class eddc;
2471 Eet_Data_Descriptor *res;
2473 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_St2);
2474 res = eet_data_descriptor_stream_new(&eddc);
2475 EET_DATA_DESCRIPTOR_ADD_BASIC(res, Eet_St2, "b1", b1, EET_T_UCHAR);
2476 EET_DATA_DESCRIPTOR_ADD_BASIC(res, Eet_St2, "v1", v1, EET_T_ULONG_LONG);
2482 _eet_st2_set(Eet_St2 *st2,
2485 st2->b1 = EINA_TRUE;
2486 st2->v1 = EET_TEST_LONG_LONG + i;
2487 } /* _eet_st2_set */
2490 _eet_st2_cmp(Eet_St2 *st2,
2494 fail_if(st2->v1 != EET_TEST_LONG_LONG + i);
2495 } /* _eet_st2_cmp */
2497 static Eet_Data_Descriptor *
2500 Eet_Data_Descriptor_Class eddc;
2501 Eet_Data_Descriptor *res;
2503 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_St3);
2504 res = eet_data_descriptor_stream_new(&eddc);
2505 EET_DATA_DESCRIPTOR_ADD_BASIC(res, Eet_St3, "boby", boby, EET_T_INT);
2511 _eet_st3_set(Eet_St3 *st3,
2514 st3->boby = EET_TEST_INT + i;
2515 } /* _eet_st3_set */
2518 _eet_st3_cmp(Eet_St3 *st3,
2521 fail_if(st3->boby != EET_TEST_INT + i);
2522 } /* _eet_st3_cmp */
2524 START_TEST(eet_test_union)
2526 Eet_Union_Test *eut;
2528 Eet_Data_Descriptor_Class eddc;
2529 Eet_Data_Descriptor *edd;
2530 Eet_Data_Descriptor *unified;
2531 Eet_Data_Descriptor *m;
2539 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_Union_Test);
2540 edd = eet_data_descriptor_stream_new(&eddc);
2542 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_Union_Test);
2543 m = eet_data_descriptor_stream_new(&eddc);
2545 eddc.version = EET_DATA_DESCRIPTOR_CLASS_VERSION;
2546 eddc.func.type_get = _eet_union_type_get;
2547 eddc.func.type_set = _eet_union_type_set;
2548 unified = eet_data_descriptor_stream_new(&eddc);
2550 EET_DATA_DESCRIPTOR_ADD_MAPPING(unified, "ST1", _eet_st1_dd());
2551 EET_DATA_DESCRIPTOR_ADD_MAPPING(unified, "ST2", _eet_st2_dd());
2552 EET_DATA_DESCRIPTOR_ADD_MAPPING(unified, "ST3", _eet_st3_dd());
2554 EET_DATA_DESCRIPTOR_ADD_UNION(edd, Eet_Union_Test, "u", u, type, unified);
2556 EET_DATA_DESCRIPTOR_ADD_LIST(m, Eet_List, "list", list, edd);
2558 l = calloc(1, sizeof (Eet_List));
2560 #define EUT_NEW(Type_Index) \
2561 eut = calloc(1, sizeof (Eet_Union_Test)); \
2562 eut->type = EET_ST ## Type_Index; \
2563 _eet_st ## Type_Index ## _set(&(eut->u.st ## Type_Index), i);
2565 for (i = 0; i < 3; ++i)
2568 l->list = eina_list_append(l->list, eut);
2571 l->list = eina_list_append(l->list, eut);
2574 l->list = eina_list_append(l->list, eut);
2577 blob = eet_data_descriptor_encode(m, l, &size);
2578 fail_if(!blob || size <= 0);
2580 l = eet_data_descriptor_decode(m, blob, size);
2583 fail_if(eina_list_count(l->list) != 9);
2585 #define EUT_CMP(Type_Index) \
2586 eut = eina_list_nth(l->list, i * 3 + Type_Index - 1); \
2587 fail_if(eut->type != EET_ST ## Type_Index); \
2588 _eet_st ## Type_Index ## _cmp(&(eut->u.st ## Type_Index), i);
2590 for (i = 0; i < 3; ++i)
2601 START_TEST(eet_test_variant)
2603 Eet_Variant_Test *evt;
2608 Eet_Data_Descriptor_Class eddc;
2609 Eet_Data_Descriptor *edd;
2610 Eet_Data_Descriptor *unified;
2611 Eet_Data_Descriptor *m;
2619 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_Variant_Test);
2620 edd = eet_data_descriptor_stream_new(&eddc);
2622 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_Variant_Test);
2623 m = eet_data_descriptor_stream_new(&eddc);
2625 eddc.version = EET_DATA_DESCRIPTOR_CLASS_VERSION;
2626 eddc.func.type_get = _eet_variant_type_get;
2627 eddc.func.type_set = _eet_variant_type_set;
2628 unified = eet_data_descriptor_stream_new(&eddc);
2630 EET_DATA_DESCRIPTOR_ADD_MAPPING(unified, "ST1", _eet_st1_dd());
2631 EET_DATA_DESCRIPTOR_ADD_MAPPING(unified, "ST2", _eet_st2_dd());
2632 EET_DATA_DESCRIPTOR_ADD_MAPPING(unified, "ST3", _eet_st3_dd());
2634 EET_DATA_DESCRIPTOR_ADD_VARIANT(edd,
2641 unified = eet_data_descriptor_stream_new(&eddc);
2642 eet_data_descriptor_element_add(unified, "ST1",
2643 EET_T_UNKNOW, EET_G_LIST,
2644 0, 0, NULL, _eet_st1_dd());
2645 eet_data_descriptor_element_add(unified, "ST2",
2646 EET_T_UNKNOW, EET_G_LIST,
2647 0, 0, NULL, _eet_st2_dd());
2649 EET_DATA_DESCRIPTOR_ADD_VARIANT(edd, Eet_Variant_Test,
2650 "data_list", data_list, t, unified);
2652 EET_DATA_DESCRIPTOR_ADD_LIST(m, Eet_List, "list", list, edd);
2654 l = calloc(1, sizeof (Eet_List));
2656 #define EVT_NEW(Type_Index) \
2657 evt = calloc(1, sizeof (Eet_Variant_Test)); \
2658 evt->t.type = eet_mapping[Type_Index - 1].name; \
2659 st ## Type_Index = calloc(1, sizeof (Eet_St ## Type_Index)); \
2660 _eet_st ## Type_Index ## _set(st ## Type_Index, i); \
2661 evt->data = st ## Type_Index;
2663 for (i = 0; i < 3; ++i)
2666 l->list = eina_list_append(l->list, evt);
2668 st1 = calloc(1, sizeof (Eet_St1));
2669 _eet_st1_set(st1, i);
2670 evt->data_list = eina_list_append(evt->data_list, st1);
2673 l->list = eina_list_append(l->list, evt);
2676 l->list = eina_list_append(l->list, evt);
2679 blob = eet_data_descriptor_encode(m, l, &size);
2680 fail_if(!blob || size <= 0);
2682 l = eet_data_descriptor_decode(m, blob, size);
2685 fail_if(eina_list_count(l->list) != 9);
2687 #define EVT_CMP(Type_Index) \
2688 evt = eina_list_nth(l->list, i * 3 + Type_Index - 1); \
2689 fail_if(strcmp(evt->t.type, eet_mapping[Type_Index - 1].name) != 0); \
2690 _eet_st ## Type_Index ## _cmp(evt->data, i);
2692 for (i = 0; i < 3; ++i)
2696 fail_if(!evt->data_list);
2697 fail_if(eina_list_count(evt->data_list) != 1);
2699 st1 = eina_list_data_get(evt->data_list);
2700 _eet_st1_cmp(st1, i);
2718 s = suite_create("Eet");
2720 tc = tcase_create("Eet_Init");
2721 tcase_add_test(tc, eet_test_init);
2722 suite_add_tcase(s, tc);
2724 tc = tcase_create("Eet Data Encoding/Decoding");
2725 tcase_add_test(tc, eet_test_basic_data_type_encoding_decoding);
2726 tcase_add_test(tc, eet_test_data_type_encoding_decoding);
2727 tcase_add_test(tc, eet_test_data_type_dump_undump);
2728 tcase_add_test(tc, eet_fp);
2729 tcase_add_test(tc, eet_test_union);
2730 tcase_add_test(tc, eet_test_variant);
2731 suite_add_tcase(s, tc);
2733 tc = tcase_create("Eet File");
2734 tcase_add_test(tc, eet_file_simple_write);
2735 tcase_add_test(tc, eet_file_data_test);
2736 tcase_add_test(tc, eet_file_data_dump_test);
2737 tcase_add_test(tc, eet_file_fp);
2738 suite_add_tcase(s, tc);
2740 tc = tcase_create("Eet Image");
2741 tcase_add_test(tc, eet_image);
2742 tcase_add_test(tc, eet_small_image);
2743 suite_add_tcase(s, tc);
2745 #ifdef HAVE_SIGNATURE
2746 tc = tcase_create("Eet Identity");
2747 tcase_add_test(tc, eet_identity_simple);
2748 tcase_add_test(tc, eet_identity_open_simple);
2749 tcase_add_test(tc, eet_identity_open_pkcs8);
2750 tcase_add_test(tc, eet_identity_open_pkcs8_enc);
2751 suite_add_tcase(s, tc);
2752 #endif /* ifdef HAVE_SIGNATURE */
2755 tc = tcase_create("Eet Cipher");
2756 tcase_add_test(tc, eet_cipher_decipher_simple);
2757 suite_add_tcase(s, tc);
2758 #endif /* ifdef HAVE_CIPHER */
2760 #ifdef EINA_HAVE_THREADS
2761 tc = tcase_create("Eet Cache");
2762 tcase_add_test(tc, eet_cache_concurrency);
2763 suite_add_tcase(s, tc);
2764 #endif /* ifdef EFL_HAVE_THREADS */
2766 tc = tcase_create("Eet Connection");
2767 tcase_add_test(tc, eet_connection_check);
2768 suite_add_tcase(s, tc);
2781 sr = srunner_create(s);
2782 srunner_run_all(sr, CK_ENV);
2783 failed_count = srunner_ntests_failed(sr);
2786 return (failed_count == 0) ? EXIT_SUCCESS : EXIT_FAILURE;