3 #endif /* ifdef HAVE_CONFIG_H */
14 #ifdef EFL_HAVE_POSIX_THREADS
16 #endif /* ifdef EFL_HAVE_POSIX_THREADS */
22 #include "eet_suite.h"
24 START_TEST(eet_test_init)
36 typedef struct _Eet_Test_Basic_Type Eet_Test_Basic_Type;
37 struct _Eet_Test_Basic_Type
51 unsigned long long ul;
52 Eet_Test_Basic_Type * empty;
53 Eet_Test_Basic_Type * with;
56 #define EET_TEST_CHAR 0x42
57 #define EET_TEST_SHORT 0x4224
58 #define EET_TEST_INT 0x42211224
59 #define EET_TEST_LONG_LONG 0x84CB42211224BC48
60 #define EET_TEST_STRING "my little test with escape \\\""
61 #define EET_TEST_KEY1 "key1"
62 #define EET_TEST_KEY2 "key2"
63 #define EET_TEST_FLOAT 123.45689
64 #define EET_TEST_FLOAT2 1.0
65 #define EET_TEST_FLOAT3 0.25
66 #define EET_TEST_FLOAT4 0.0001234
67 #define EET_TEST_DOUBLE 123456789.9876543210
68 #define EET_TEST_DOUBLE2 1.0
69 #define EET_TEST_DOUBLE3 0.25
70 #define EET_TEST_FILE_KEY1 "keys/data/1"
71 #define EET_TEST_FILE_KEY2 "keys/data/2"
72 #define EET_TEST_FILE_IMAGE "keys/images/"
74 typedef struct _Eet_Test_Image Eet_Test_Image;
75 struct _Eet_Test_Image
80 unsigned int color[64];
83 static const Eet_Test_Image test_noalpha = {
86 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00,
87 0x000000AA, 0x00110000,
88 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA,
89 0x00110000, 0x00AA0000,
90 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000,
91 0x00AA0000, 0x0000AA00,
92 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000,
93 0x0000AA00, 0x000000AA,
94 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00,
95 0x000000AA, 0x00110000,
96 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA,
97 0x00110000, 0x00AA0000,
98 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000,
99 0x00AA0000, 0x0000AA00,
100 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000,
101 0x0000AA00, 0x000000AA
105 static const Eet_Test_Image test_alpha = {
108 0x0FAA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000, 0x0000AA00,
109 0x000000AA, 0x0F110000,
110 0x0000AA00, 0x0F0000AA, 0x00110000, 0x00AA0000, 0x0000AA00, 0x000000AA,
111 0x0F110000, 0x00AA0000,
112 0x000000AA, 0x00110000, 0x0FAA0000, 0x0000AA00, 0x000000AA, 0x0F110000,
113 0x00AA0000, 0x0000AA00,
114 0x00110000, 0x00AA0000, 0x0000AA00, 0x0F0000AA, 0x0F110000, 0x00AA0000,
115 0x0000AA00, 0x000000AA,
116 0x00AA0000, 0x0000AA00, 0x000000AA, 0x0F110000, 0x0FAA0000, 0x0000AA00,
117 0x000000AA, 0x00110000,
118 0x0000AA00, 0x000000AA, 0x0F110000, 0x00AA0000, 0x0000AA00, 0x0F0000AA,
119 0x00110000, 0x00AA0000,
120 0x000000AA, 0x0F110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000,
121 0x0FAA0000, 0x0000AA00,
122 0x0F110000, 0x00AA0000, 0x0000AA00, 0x000000AA, 0x00110000, 0x00AA0000,
123 0x0000AA00, 0x0F0000AA
128 _eet_test_basic_set(Eet_Test_Basic_Type * res, int i)
130 res->c = EET_TEST_CHAR;
131 res->s = EET_TEST_SHORT;
132 res->i = EET_TEST_INT + i;
133 res->l = EET_TEST_LONG_LONG;
134 res->str = EET_TEST_STRING;
135 res->istr = EET_TEST_STRING;
136 res->f1 = -EET_TEST_FLOAT;
137 res->d = -EET_TEST_DOUBLE;
138 res->f2 = EET_TEST_FLOAT4;
139 res->uc = EET_TEST_CHAR;
140 res->us = EET_TEST_SHORT;
141 res->ui = EET_TEST_INT;
142 res->ul = EET_TEST_LONG_LONG;
148 Eet_Test_Basic_Type * tmp;
150 tmp = malloc(sizeof (Eet_Test_Basic_Type));
154 tmp->c = EET_TEST_CHAR;
155 tmp->s = EET_TEST_SHORT;
156 tmp->i = EET_TEST_INT + i + 1;
157 tmp->l = EET_TEST_LONG_LONG;
158 tmp->str = EET_TEST_STRING;
159 tmp->istr = EET_TEST_STRING;
160 tmp->f1 = -EET_TEST_FLOAT;
161 tmp->d = -EET_TEST_DOUBLE;
162 tmp->f2 = EET_TEST_FLOAT4;
163 tmp->uc = EET_TEST_CHAR;
164 tmp->us = EET_TEST_SHORT;
165 tmp->ui = EET_TEST_INT;
166 tmp->ul = EET_TEST_LONG_LONG;
170 } /* _eet_test_basic_set */
173 _eet_test_basic_check(Eet_Test_Basic_Type * result, int i)
177 fail_if(result->c != EET_TEST_CHAR);
178 fail_if(result->s != EET_TEST_SHORT);
179 fail_if(result->i != EET_TEST_INT + i);
180 fail_if(result->l != (long long)EET_TEST_LONG_LONG);
181 fail_if(strcmp(result->str, EET_TEST_STRING) != 0);
182 fail_if(strcmp(result->istr, EET_TEST_STRING) != 0);
183 fail_if(result->uc != EET_TEST_CHAR);
184 fail_if(result->us != EET_TEST_SHORT);
185 fail_if(result->ui != EET_TEST_INT);
186 fail_if(result->ul != EET_TEST_LONG_LONG);
188 tmp = (result->f1 + EET_TEST_FLOAT);
192 fail_if(tmp > 0.005);
194 tmp = (result->f2 - EET_TEST_FLOAT4);
198 fail_if(tmp > 0.005);
200 tmp = (result->d + EET_TEST_DOUBLE);
204 fail_if(tmp > 0.00005);
206 fail_if(result->empty != NULL);
209 Eet_Test_Basic_Type * tmp;
212 fail_if(tmp == NULL);
214 fail_if(tmp->c != EET_TEST_CHAR);
215 fail_if(tmp->s != EET_TEST_SHORT);
216 fail_if(tmp->i != EET_TEST_INT + i + 1);
217 fail_if(tmp->l != (long long)EET_TEST_LONG_LONG);
218 fail_if(strcmp(tmp->str, EET_TEST_STRING) != 0);
219 fail_if(strcmp(tmp->istr, EET_TEST_STRING) != 0);
220 fail_if(tmp->uc != EET_TEST_CHAR);
221 fail_if(tmp->us != EET_TEST_SHORT);
222 fail_if(tmp->ui != EET_TEST_INT);
223 fail_if(tmp->ul != EET_TEST_LONG_LONG);
226 fail_if(result->with != NULL);
227 } /* _eet_test_basic_check */
230 _eet_build_basic_descriptor(Eet_Data_Descriptor * edd)
232 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
237 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
242 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
247 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
252 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
257 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
261 EET_T_INLINED_STRING);
262 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
267 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
272 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
277 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
282 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
287 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
292 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
298 EET_DATA_DESCRIPTOR_ADD_SUB(edd, Eet_Test_Basic_Type, "empty", empty, edd);
299 EET_DATA_DESCRIPTOR_ADD_SUB(edd, Eet_Test_Basic_Type, "with", with, edd);
300 } /* _eet_build_basic_descriptor */
302 START_TEST(eet_test_basic_data_type_encoding_decoding)
304 Eet_Data_Descriptor * edd;
305 Eet_Test_Basic_Type * result;
306 Eet_Data_Descriptor_Class eddc;
307 Eet_Test_Basic_Type etbt;
313 _eet_test_basic_set(&etbt, 0);
315 eet_test_setup_eddc(&eddc);
316 eddc.name = "Eet_Test_Basic_Type";
317 eddc.size = sizeof(Eet_Test_Basic_Type);
319 edd = eet_data_descriptor_stream_new(&eddc);
322 _eet_build_basic_descriptor(edd);
324 transfert = eet_data_descriptor_encode(edd, &etbt, &size);
325 fail_if(!transfert || size <= 0);
327 result = eet_data_descriptor_decode(edd, transfert, size);
330 _eet_test_basic_check(result, 0);
335 eet_data_descriptor_free(edd);
341 typedef struct _Eet_Test_Ex_Type Eet_Test_Ex_Type;
342 struct _Eet_Test_Ex_Type
347 unsigned long long l;
364 Eet_Test_Basic_Type sarray1[10];
365 unsigned int sarray2[5];
366 unsigned int varray1_count;
367 unsigned int * varray1;
368 unsigned int varray2_count;
369 Eet_Test_Basic_Type * varray2;
373 unsigned long long ul;
381 _eet_build_ex_descriptor(Eet_Data_Descriptor * edd)
383 Eet_Data_Descriptor_Class eddc;
384 Eet_Test_Ex_Type etbt;
385 Eet_Data_Descriptor * eddb;
387 eet_test_setup_eddc(&eddc);
388 eddc.name = "Eet_Test_Basic_Type";
389 eddc.size = sizeof(Eet_Test_Basic_Type);
390 eddb = eet_data_descriptor_file_new(&eddc);
393 _eet_build_basic_descriptor(eddb);
395 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
400 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
405 EET_DATA_DESCRIPTOR_ADD_BASIC(edd, Eet_Test_Ex_Type, "i", i, EET_T_INT);
406 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
411 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
416 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
420 EET_T_INLINED_STRING);
421 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
426 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
431 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
436 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
441 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
446 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
451 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
456 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
461 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
466 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
471 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
476 EET_DATA_DESCRIPTOR_ADD_BASIC(edd,
481 EET_DATA_DESCRIPTOR_ADD_ARRAY(edd,
486 EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(edd,
491 eet_data_descriptor_element_add(edd,
495 (char *)(&(etbt.varray1)) - (char *)(&(etbt)),
496 (char *)(&(etbt.varray1_count)) -
500 eet_data_descriptor_element_add(edd, "sarray2", EET_T_INT, EET_G_ARRAY,
501 (char *)(&(etbt.sarray2)) - (char *)(&(etbt)),
502 /* 0, */ sizeof(etbt.sarray2) /
503 sizeof(etbt.sarray2[0]), NULL, NULL);
504 eet_data_descriptor_element_add(edd, "charray", EET_T_STRING, EET_G_ARRAY,
505 (char *)(&(etbt.charray)) - (char *)(&(etbt)),
506 /* 0, */ sizeof(etbt.charray) /
507 sizeof(etbt.charray[0]), NULL, NULL);
508 EET_DATA_DESCRIPTOR_ADD_LIST(edd, Eet_Test_Ex_Type, "list", list, edd);
509 EET_DATA_DESCRIPTOR_ADD_HASH(edd, Eet_Test_Ex_Type, "hash", hash, edd);
510 eet_data_descriptor_element_add(edd, "ilist", EET_T_INT, EET_G_LIST,
511 (char *)(&(etbt.ilist)) - (char *)(&(etbt)),
512 0, /* 0, */ NULL, NULL);
513 eet_data_descriptor_element_add(edd, "ihash", EET_T_INT, EET_G_HASH,
514 (char *)(&(etbt.ihash)) - (char *)(&(etbt)),
515 0, /* 0, */ NULL, NULL);
516 eet_data_descriptor_element_add(edd, "slist", EET_T_STRING, EET_G_LIST,
517 (char *)(&(etbt.slist)) - (char *)(&(etbt)),
518 0, /* 0, */ NULL, NULL);
519 eet_data_descriptor_element_add(edd, "shash", EET_T_STRING, EET_G_HASH,
520 (char *)(&(etbt.shash)) - (char *)(&(etbt)),
521 0, /* 0, */ NULL, NULL);
522 } /* _eet_build_ex_descriptor */
524 static Eet_Test_Ex_Type *
525 _eet_test_ex_set(Eet_Test_Ex_Type * res, int offset)
530 res = malloc( sizeof(Eet_Test_Ex_Type));
535 res->c = EET_TEST_CHAR + offset;
536 res->s = EET_TEST_SHORT + offset;
537 res->i = EET_TEST_INT + offset;
538 res->l = EET_TEST_LONG_LONG + offset;
539 res->str = EET_TEST_STRING;
540 res->istr = EET_TEST_STRING;
541 res->f1 = EET_TEST_FLOAT + offset;
542 res->f2 = -(EET_TEST_FLOAT2 + offset);
543 res->f3 = EET_TEST_FLOAT3 + offset;
544 res->f4 = EET_TEST_FLOAT2 + offset;
545 res->d1 = EET_TEST_DOUBLE + offset;
546 res->d2 = -(EET_TEST_DOUBLE2 + offset);
547 res->d3 = EET_TEST_DOUBLE3 + offset;
548 res->d4 = EET_TEST_DOUBLE2 + offset;
555 for (i = 0; i < sizeof(res->charray) / sizeof(res->charray[0]); ++i)
556 res->charray[i] = NULL;
558 res->varray2 = malloc(sizeof (Eet_Test_Basic_Type) * 10);
559 res->varray1 = malloc(sizeof (int) * 5);
560 fail_if(!res->varray1 || !res->varray2);
561 for (i = 0; i < 10; ++i)
563 _eet_test_basic_set(res->sarray1 + i, i);
564 _eet_test_basic_set(res->varray2 + i, i);
566 res->varray2_count = 10;
567 for (i = 0; i < 5; ++i)
569 res->sarray2[i] = i * 42 + 1;
570 res->varray1[i] = i * 42 + 1;
572 res->varray1_count = 5;
574 res->uc = EET_TEST_CHAR + offset;
575 res->us = EET_TEST_SHORT + offset;
576 res->ui = EET_TEST_INT + offset;
577 res->ul = EET_TEST_LONG_LONG + offset;
580 } /* _eet_test_ex_set */
583 _eet_test_ex_check(Eet_Test_Ex_Type * stuff, int offset)
591 if (stuff->c != EET_TEST_CHAR + offset)
594 if (stuff->s != EET_TEST_SHORT + offset)
597 if (stuff->i != EET_TEST_INT + offset)
600 if (stuff->l != EET_TEST_LONG_LONG + offset)
603 if (strcmp(stuff->str, EET_TEST_STRING) != 0)
606 if (strcmp(stuff->istr, EET_TEST_STRING) != 0)
609 tmp = stuff->f1 - (EET_TEST_FLOAT + offset);
616 tmp = stuff->d1 - (EET_TEST_DOUBLE + offset);
623 if (stuff->f2 != -(EET_TEST_FLOAT2 + offset))
626 if (stuff->d2 != -(EET_TEST_DOUBLE2 + offset))
629 if (stuff->f3 != EET_TEST_FLOAT3 + offset)
632 if (stuff->d3 != EET_TEST_DOUBLE3 + offset)
635 if (stuff->f4 != EET_TEST_FLOAT2 + offset)
638 if (stuff->d4 != EET_TEST_DOUBLE2 + offset)
641 if (stuff->uc != EET_TEST_CHAR + offset)
644 if (stuff->us != EET_TEST_SHORT + offset)
647 if (stuff->ui != (unsigned int)EET_TEST_INT + offset)
650 if (stuff->ul != EET_TEST_LONG_LONG + offset)
653 if (stuff->varray1_count != 5)
656 if (stuff->varray2_count != 10)
659 for (i = 0; i < 5; ++i)
660 if (stuff->sarray2[i] != i * 42 + 1 && stuff->varray1[i] != i * 42 + 1)
663 for (i = 0; i < 10; ++i)
665 _eet_test_basic_check(stuff->sarray1 + i, i);
666 _eet_test_basic_check(stuff->varray2 + i, i);
670 } /* _eet_test_ex_check */
673 func(__UNUSED__ const Eina_Hash * hash, const void * key, void * data, void * fdata)
677 if (strcmp(key, EET_TEST_KEY1) != 0
678 && strcmp(key, EET_TEST_KEY2) != 0)
681 if (_eet_test_ex_check(data, 2))
688 func7(__UNUSED__ const Eina_Hash * hash,
689 __UNUSED__ const void * key,
706 START_TEST(eet_test_data_type_encoding_decoding)
708 Eet_Data_Descriptor * edd;
709 Eet_Test_Ex_Type * result;
711 Eet_Data_Descriptor_Class eddc;
712 Eet_Test_Ex_Type etbt;
718 _eet_test_ex_set(&etbt, 0);
719 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
720 etbt.hash = eina_hash_string_superfast_new(NULL);
721 eina_hash_add(etbt.hash, EET_TEST_KEY1, _eet_test_ex_set(NULL, 2));
722 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
723 etbt.ihash = eina_hash_string_superfast_new(NULL);
724 eina_hash_add(etbt.ihash, EET_TEST_KEY1, &i7);
725 etbt.slist = eina_list_prepend(NULL, "test");
726 etbt.shash = eina_hash_string_superfast_new(NULL);
727 eina_hash_add(etbt.shash, EET_TEST_KEY1, "test");
728 memset(&etbt.charray, 0, sizeof(etbt.charray));
729 etbt.charray[0] = "test";
730 etbt.charray[5] = "plouf";
732 eet_test_setup_eddc(&eddc);
733 eddc.name = "Eet_Test_Ex_Type";
734 eddc.size = sizeof(Eet_Test_Ex_Type);
736 edd = eet_data_descriptor_file_new(&eddc);
739 _eet_build_ex_descriptor(edd);
741 transfert = eet_data_descriptor_encode(edd, &etbt, &size);
742 fail_if(!transfert || size <= 0);
744 result = eet_data_descriptor_decode(edd, transfert, size);
747 fail_if(_eet_test_ex_check(result, 0) != 0);
748 fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
749 fail_if(eina_list_data_get(result->ilist) == NULL);
750 fail_if(*((int *)eina_list_data_get(result->ilist)) != 42);
751 fail_if(eina_list_data_get(result->slist) == NULL);
752 fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
753 fail_if(eina_hash_find(result->shash, EET_TEST_KEY1) == NULL);
754 fail_if(strcmp(eina_hash_find(result->shash, EET_TEST_KEY1), "test") != 0);
755 fail_if(strcmp(result->charray[0], "test") != 0);
756 fail_if(strcmp(result->charray[5], "plouf") != 0);
760 eina_hash_foreach(result->hash, func, &test);
764 eina_hash_foreach(result->ihash, func7, &test);
773 append_string(void * data, const char * str)
775 char ** string = data;
781 length = *string ? strlen(*string) : 0;
782 *string = realloc(*string, strlen(str) + length + 1);
784 memcpy((*string) + length, str, strlen(str) + 1);
785 } /* append_string */
787 START_TEST(eet_test_data_type_dump_undump)
789 Eet_Data_Descriptor * edd;
790 Eet_Test_Ex_Type * result;
791 Eet_Data_Descriptor_Class eddc;
792 Eet_Test_Ex_Type etbt;
803 _eet_test_ex_set(&etbt, 0);
804 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
805 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
806 etbt.hash = eina_hash_string_superfast_new(NULL);
807 eina_hash_add(etbt.hash, EET_TEST_KEY1, _eet_test_ex_set(NULL, 2));
808 etbt.hash = eina_hash_string_superfast_new(NULL);
809 eina_hash_add(etbt.hash, EET_TEST_KEY2, _eet_test_ex_set(NULL, 2));
810 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
811 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
812 etbt.ihash = eina_hash_string_superfast_new(NULL);
813 eina_hash_add(etbt.ihash, EET_TEST_KEY1, &i7);
814 etbt.ihash = eina_hash_string_superfast_new(NULL);
815 eina_hash_add(etbt.ihash, EET_TEST_KEY2, &i7);
816 etbt.slist = eina_list_prepend(NULL, "test");
817 etbt.shash = eina_hash_string_superfast_new(NULL);
818 eina_hash_add(etbt.shash, EET_TEST_KEY1, "test");
819 memset(&etbt.charray, 0, sizeof(etbt.charray));
820 etbt.charray[0] = "test";
822 eet_test_setup_eddc(&eddc);
823 eddc.name = "Eet_Test_Ex_Type";
824 eddc.size = sizeof(Eet_Test_Ex_Type);
826 edd = eet_data_descriptor_file_new(&eddc);
829 _eet_build_ex_descriptor(edd);
831 transfert1 = eet_data_descriptor_encode(edd, &etbt, &size1);
832 fail_if(!transfert1 || size1 <= 0);
835 eet_data_text_dump(transfert1, size1, append_string, &string1);
838 transfert2 = eet_data_text_undump(string1, string1 ? strlen(
839 string1) : 0, &size2);
840 fail_if(!transfert2 && size2 <= 0);
843 eet_data_text_dump(transfert2, size2, append_string, &string2);
846 fail_if(strlen(string2) != strlen(string1));
848 result = eet_data_descriptor_decode(edd, transfert2, size2);
851 fail_if(_eet_test_ex_check(result, 0) != 0);
852 fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
853 fail_if(eina_list_data_get(result->ilist) == NULL);
854 fail_if(*((int *)eina_list_data_get(result->ilist)) != 42);
855 fail_if(eina_list_data_get(result->slist) == NULL);
856 fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
857 fail_if(eina_hash_find(result->shash, EET_TEST_KEY1) == NULL);
858 fail_if(strcmp(eina_hash_find(result->shash, EET_TEST_KEY1), "test") != 0);
859 fail_if(strcmp(result->charray[0], "test") != 0);
863 eina_hash_foreach(result->hash, func, &test);
867 eina_hash_foreach(result->ihash, func7, &test);
875 START_TEST(eet_file_simple_write)
877 const char * buffer = "Here is a string of data to save !";
880 char * file = strdup("/tmp/eet_suite_testXXXXXX");
885 fail_if(!(file = tmpnam(file)));
887 fail_if(eet_mode_get(NULL) != EET_FILE_MODE_INVALID);
889 ef = eet_open(file, EET_FILE_MODE_WRITE);
892 fail_if(!eet_write(ef, "keys/tests", buffer, strlen(buffer) + 1, 1));
893 fail_if(!eet_alias(ef, "keys/alias", "keys/tests", 0));
894 fail_if(!eet_alias(ef, "keys/alias2", "keys/alias", 1));
896 fail_if(eet_mode_get(ef) != EET_FILE_MODE_WRITE);
898 fail_if(eet_list(ef, "*", &size) != NULL);
899 fail_if(eet_num_entries(ef) != -1);
903 /* Test read of simple file */
904 ef = eet_open(file, EET_FILE_MODE_READ);
907 test = eet_read(ef, "keys/tests", &size);
909 fail_if(size != (int)strlen(buffer) + 1);
911 fail_if(memcmp(test, buffer, strlen(buffer) + 1) != 0);
913 test = eet_read(ef, "keys/alias2", &size);
915 fail_if(size != (int)strlen(buffer) + 1);
917 fail_if(eet_read_direct(ef, "key/alias2", &size));
919 fail_if(eet_mode_get(ef) != EET_FILE_MODE_READ);
920 fail_if(eet_num_entries(ef) != 3);
924 /* Test eet cache system */
925 ef = eet_open(file, EET_FILE_MODE_READ);
928 test = eet_read(ef, "keys/tests", &size);
930 fail_if(size != (int)strlen(buffer) + 1);
932 fail_if(memcmp(test, buffer, strlen(buffer) + 1) != 0);
936 fail_if(unlink(file) != 0);
943 START_TEST(eet_file_data_test)
945 Eet_Data_Descriptor * edd;
946 Eet_Test_Ex_Type * result;
950 char * file = strdup("/tmp/eet_suite_testXXXXXX");
951 Eet_Data_Descriptor_Class eddc;
952 Eet_Test_Ex_Type etbt;
958 _eet_test_ex_set(&etbt, 0);
959 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
960 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
961 etbt.hash = eina_hash_string_superfast_new(NULL);
962 eina_hash_add(etbt.hash, EET_TEST_KEY1, _eet_test_ex_set(NULL, 2));
963 etbt.hash = eina_hash_string_superfast_new(NULL);
964 eina_hash_add(etbt.hash, EET_TEST_KEY2, _eet_test_ex_set(NULL, 2));
965 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
966 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
967 etbt.ihash = eina_hash_string_superfast_new(NULL);
968 eina_hash_add(etbt.ihash, EET_TEST_KEY1, &i7);
969 etbt.ihash = eina_hash_string_superfast_new(NULL);
970 eina_hash_add(etbt.ihash, EET_TEST_KEY2, &i7);
971 etbt.slist = eina_list_prepend(NULL, "test");
972 etbt.shash = eina_hash_string_superfast_new(NULL);
973 eina_hash_add(etbt.shash, EET_TEST_KEY1, "test");
974 memset(&etbt.charray, 0, sizeof(etbt.charray));
975 etbt.charray[0] = "test";
977 eet_test_setup_eddc(&eddc);
978 eddc.name = "Eet_Test_Ex_Type";
979 eddc.size = sizeof(Eet_Test_Ex_Type);
981 edd = eet_data_descriptor_file_new(&eddc);
984 _eet_build_ex_descriptor(edd);
986 fail_if(!(file = tmpnam(file)));
988 /* Insert an error in etbt. */
991 /* Save the encoded data in a file. */
992 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
995 fail_if(!eet_data_write(ef, edd, EET_TEST_FILE_KEY1, &etbt, 0));
997 result = eet_data_read(ef, edd, EET_TEST_FILE_KEY1);
1000 fail_if(eet_mode_get(ef) != EET_FILE_MODE_READ_WRITE);
1002 /* Test string space. */
1003 ed = eet_dictionary_get(ef);
1005 fail_if(!eet_dictionary_string_check(ed, result->str));
1006 fail_if(eet_dictionary_string_check(ed, result->istr));
1010 /* Attempt to replace etbt by the correct one. */
1011 etbt.i = EET_TEST_INT;
1013 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
1016 fail_if(!eet_data_write(ef, edd, EET_TEST_FILE_KEY1, &etbt, 0));
1020 /* Read back the data. */
1021 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
1024 fail_if(!eet_data_write(ef, edd, EET_TEST_FILE_KEY2, &etbt, 0));
1026 result = eet_data_read(ef, edd, EET_TEST_FILE_KEY1);
1029 /* Test string space. */
1030 ed = eet_dictionary_get(ef);
1033 fail_if(!eet_dictionary_string_check(ed, result->str));
1034 fail_if(eet_dictionary_string_check(ed, result->istr));
1036 /* Test the resulting data. */
1037 fail_if(_eet_test_ex_check(result, 0) != 0);
1038 fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
1039 fail_if(eina_list_data_get(result->ilist) == NULL);
1040 fail_if(*((int *)eina_list_data_get(result->ilist)) != 42);
1041 fail_if(eina_list_data_get(result->slist) == NULL);
1042 fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
1043 fail_if(eina_hash_find(result->shash, EET_TEST_KEY1) == NULL);
1044 fail_if(strcmp(eina_hash_find(result->shash, EET_TEST_KEY1), "test") != 0);
1045 fail_if(strcmp(result->charray[0], "test") != 0);
1049 eina_hash_foreach(result->hash, func, &test);
1053 eina_hash_foreach(result->ihash, func7, &test);
1057 list = eet_list(ef, "keys/*", &size);
1058 fail_if(eet_num_entries(ef) != 2);
1060 fail_if(!(strcmp(list[0],
1061 EET_TEST_FILE_KEY1) == 0 &&
1062 strcmp(list[1], EET_TEST_FILE_KEY2) == 0)
1063 && !(strcmp(list[0],
1064 EET_TEST_FILE_KEY2) == 0 &&
1065 strcmp(list[1], EET_TEST_FILE_KEY1) == 0));
1068 fail_if(eet_delete(ef, NULL) != 0);
1069 fail_if(eet_delete(NULL, EET_TEST_FILE_KEY1) != 0);
1070 fail_if(eet_delete(ef, EET_TEST_FILE_KEY1) == 0);
1072 list = eet_list(ef, "keys/*", &size);
1074 fail_if(eet_num_entries(ef) != 1);
1076 /* Test some more wrong case */
1077 fail_if(eet_data_read(ef, edd, "plop") != NULL);
1078 fail_if(eet_data_read(ef, edd, EET_TEST_FILE_KEY1) != NULL);
1080 /* Reinsert and reread data */
1081 fail_if(!eet_data_write(ef, edd, EET_TEST_FILE_KEY1, &etbt, 0));
1082 fail_if(eet_data_read(ef, edd, EET_TEST_FILE_KEY1) == NULL);
1083 fail_if(eet_read_direct(ef, EET_TEST_FILE_KEY1, &size) == NULL);
1087 fail_if(unlink(file) != 0);
1094 START_TEST(eet_file_data_dump_test)
1096 Eet_Data_Descriptor * edd;
1097 Eet_Test_Ex_Type * result;
1098 Eet_Data_Descriptor_Class eddc;
1099 Eet_Test_Ex_Type etbt;
1102 char * file = strdup("/tmp/eet_suite_testXXXXXX");
1107 _eet_test_ex_set(&etbt, 0);
1108 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
1109 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
1110 etbt.hash = eina_hash_string_superfast_new(NULL);
1111 eina_hash_add(etbt.hash, EET_TEST_KEY1, _eet_test_ex_set(NULL, 2));
1112 eina_hash_add(etbt.hash, EET_TEST_KEY2, _eet_test_ex_set(NULL, 2));
1113 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
1114 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
1115 etbt.ihash = eina_hash_string_superfast_new(NULL);
1116 eina_hash_add(etbt.ihash, EET_TEST_KEY1, &i7);
1117 eina_hash_add(etbt.ihash, EET_TEST_KEY2, &i7);
1118 etbt.slist = eina_list_prepend(NULL, "test");
1119 etbt.shash = eina_hash_string_superfast_new(NULL);
1120 eina_hash_add(etbt.shash, EET_TEST_KEY1, "test");
1121 memset(&etbt.charray, 0, sizeof(etbt.charray));
1122 etbt.charray[0] = "test";
1124 eet_eina_file_data_descriptor_class_set(&eddc, sizeof (eddc),
1126 sizeof(Eet_Test_Ex_Type));
1128 edd = eet_data_descriptor_file_new(&eddc);
1131 _eet_build_ex_descriptor(edd);
1133 fail_if(!(file = tmpnam(file)));
1135 /* Save the encoded data in a file. */
1136 ef = eet_open(file, EET_FILE_MODE_WRITE);
1139 fail_if(!eet_data_write(ef, edd, EET_TEST_FILE_KEY1, &etbt, 0));
1143 /* Use dump/undump in the middle */
1144 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
1148 fail_if(eet_data_dump(ef, EET_TEST_FILE_KEY1, append_string, &string1) != 1);
1149 fail_if(eet_delete(ef, EET_TEST_FILE_KEY1) == 0);
1150 fail_if(!eet_data_undump(ef, EET_TEST_FILE_KEY1, string1, strlen(string1), 1));
1154 /* Test the correctness of the reinsertion. */
1155 ef = eet_open(file, EET_FILE_MODE_READ);
1158 result = eet_data_read(ef, edd, EET_TEST_FILE_KEY1);
1163 /* Test the resulting data. */
1164 fail_if(_eet_test_ex_check(result, 0) != 0);
1165 fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
1166 fail_if(eina_list_data_get(result->ilist) == NULL);
1167 fail_if(*((int *)eina_list_data_get(result->ilist)) != 42);
1168 fail_if(eina_list_data_get(result->slist) == NULL);
1169 fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
1170 fail_if(eina_hash_find(result->shash, EET_TEST_KEY1) == NULL);
1171 fail_if(strcmp(eina_hash_find(result->shash, EET_TEST_KEY1), "test") != 0);
1172 fail_if(strcmp(result->charray[0], "test") != 0);
1176 eina_hash_foreach(result->hash, func, &test);
1180 eina_hash_foreach(result->ihash, func7, &test);
1184 fail_if(unlink(file) != 0);
1191 START_TEST(eet_image)
1194 char * file = strdup("/tmp/eet_suite_testXXXXXX");
1195 unsigned int * data;
1204 fail_if(!(file = tmpnam(file)));
1206 /* Save the encoded data in a file. */
1207 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
1210 result = eet_data_image_write(ef,
1211 EET_TEST_FILE_IMAGE "0",
1219 fail_if(result == 0);
1221 result = eet_data_image_write(ef,
1222 EET_TEST_FILE_IMAGE "1",
1230 fail_if(result == 0);
1232 result = eet_data_image_write(ef,
1233 EET_TEST_FILE_IMAGE "2",
1241 fail_if(result == 0);
1243 result = eet_data_image_write(ef,
1244 EET_TEST_FILE_IMAGE "3",
1252 fail_if(result == 0);
1254 result = eet_data_image_write(ef,
1255 EET_TEST_FILE_IMAGE "4",
1263 fail_if(result == 0);
1265 result = eet_data_image_write(ef,
1266 EET_TEST_FILE_IMAGE "5",
1274 fail_if(result == 0);
1276 result = eet_data_image_write(ef,
1277 EET_TEST_FILE_IMAGE "6",
1285 fail_if(result == 0);
1287 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "7", test_alpha.color,
1288 test_alpha.w, test_alpha.h, test_alpha.alpha,
1290 fail_if(result == 0);
1292 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "8", test_alpha.color,
1293 test_alpha.w, test_alpha.h, test_alpha.alpha,
1295 fail_if(result == 0);
1297 result = eet_data_image_write(ef, EET_TEST_FILE_IMAGE "9", test_alpha.color,
1298 test_alpha.w, test_alpha.h, test_alpha.alpha,
1300 fail_if(result == 0);
1302 data = eet_data_image_read(ef,
1303 EET_TEST_FILE_IMAGE "2",
1310 fail_if(data == NULL);
1311 fail_if(w != test_noalpha.w);
1312 fail_if(h != test_noalpha.h);
1313 fail_if(alpha != test_noalpha.alpha);
1314 fail_if(compress != 9);
1315 fail_if(lossy != 0);
1316 fail_if(data[0] != test_noalpha.color[0]);
1319 result = eet_data_image_header_read(ef,
1320 EET_TEST_FILE_IMAGE "2",
1327 fail_if(result == 0);
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);
1336 /* Test read of image */
1337 ef = eet_open(file, EET_FILE_MODE_READ);
1340 result = eet_data_image_header_read(ef,
1341 EET_TEST_FILE_IMAGE "0",
1348 fail_if(result == 0);
1349 fail_if(w != test_noalpha.w);
1350 fail_if(h != test_noalpha.h);
1351 fail_if(alpha != test_noalpha.alpha);
1352 fail_if(compress != 0);
1353 fail_if(lossy != 0);
1355 data = malloc(w * h * 4);
1356 fail_if(data == NULL);
1357 result = eet_data_image_read_to_surface(ef,
1358 EET_TEST_FILE_IMAGE "0",
1369 fail_if(result != 1);
1370 fail_if(alpha != test_noalpha.alpha);
1371 fail_if(compress != 0);
1372 fail_if(quality != 100);
1373 fail_if(lossy != 0);
1374 fail_if(data[0] != test_noalpha.color[4 + 4 * w]);
1377 data = malloc(w * h * 4);
1378 fail_if(data == NULL);
1379 result = eet_data_image_read_to_surface(ef,
1380 EET_TEST_FILE_IMAGE "0",
1391 fail_if(result != 1);
1392 fail_if(alpha != test_noalpha.alpha);
1393 fail_if(compress != 0);
1394 fail_if(quality != 100);
1395 fail_if(lossy != 0);
1396 fail_if(data[0] != test_noalpha.color[0]);
1399 data = eet_data_image_read(ef,
1400 EET_TEST_FILE_IMAGE "1",
1407 fail_if(data == NULL);
1408 fail_if(w != test_noalpha.w);
1409 fail_if(h != test_noalpha.h);
1410 fail_if(alpha != test_noalpha.alpha);
1411 fail_if(compress != 5);
1412 fail_if(quality != 100);
1413 fail_if(lossy != 0);
1414 fail_if(data[0] != test_noalpha.color[0]);
1417 data = eet_data_image_read(ef,
1418 EET_TEST_FILE_IMAGE "2",
1425 fail_if(data == NULL);
1426 fail_if(w != test_noalpha.w);
1427 fail_if(h != test_noalpha.h);
1428 fail_if(alpha != test_noalpha.alpha);
1429 fail_if(compress != 9);
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 "3",
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(lossy != 1);
1449 data = eet_data_image_read(ef,
1450 EET_TEST_FILE_IMAGE "5",
1457 fail_if(data == NULL);
1458 fail_if(w != test_noalpha.w);
1459 fail_if(h != test_noalpha.h);
1460 fail_if(alpha != test_noalpha.alpha);
1461 fail_if(lossy != 1);
1464 data = eet_data_image_read(ef,
1465 EET_TEST_FILE_IMAGE "6",
1472 fail_if(data == NULL);
1473 fail_if(w != test_noalpha.w);
1474 fail_if(h != test_noalpha.h);
1475 fail_if(alpha != test_noalpha.alpha);
1476 fail_if(lossy != 1);
1479 result = eet_data_image_header_read(ef,
1480 EET_TEST_FILE_IMAGE "7",
1487 fail_if(result == 0);
1488 fail_if(w != test_alpha.w);
1489 fail_if(h != test_alpha.h);
1490 fail_if(alpha != test_alpha.alpha);
1491 fail_if(compress != 9);
1492 fail_if(lossy != 0);
1494 data = eet_data_image_read(ef,
1495 EET_TEST_FILE_IMAGE "7",
1502 fail_if(data == NULL);
1503 fail_if(w != test_alpha.w);
1504 fail_if(h != test_alpha.h);
1505 fail_if(alpha != test_alpha.alpha);
1506 fail_if(compress != 9);
1507 fail_if(lossy != 0);
1508 fail_if(data[0] != test_alpha.color[0]);
1511 result = eet_data_image_header_read(ef,
1512 EET_TEST_FILE_IMAGE "9",
1519 fail_if(result == 0);
1520 fail_if(w != test_alpha.w);
1521 fail_if(h != test_alpha.h);
1522 fail_if(alpha != test_alpha.alpha);
1523 fail_if(lossy != 1);
1525 data = eet_data_image_read(ef,
1526 EET_TEST_FILE_IMAGE "9",
1533 fail_if(data == NULL);
1534 fail_if(w != test_alpha.w);
1535 fail_if(h != test_alpha.h);
1536 fail_if(alpha != test_alpha.alpha);
1537 fail_if(lossy != 1);
1542 fail_if(unlink(file) != 0);
1549 #define IM0 0x00112233
1550 #define IM1 0x44556677
1551 #define IM2 0x8899aabb
1552 #define IM3 0xccddeeff
1554 START_TEST(eet_small_image)
1556 char * file = strdup("/tmp/eet_suite_testXXXXXX");
1557 unsigned int image[4];
1558 unsigned int * data;
1575 fail_if(!(file = tmpnam(file)));
1577 ef = eet_open(file, EET_FILE_MODE_WRITE);
1580 result = eet_data_image_write(ef, "/images/test", image, 2, 2, 1, 9, 100, 0);
1581 fail_if(result == 0);
1585 ef = eet_open(file, EET_FILE_MODE_READ);
1588 data = (unsigned int *)eet_data_image_read(ef,
1596 fail_if(data == NULL);
1600 fail_if(unlink(file) != 0);
1602 fail_if(data[0] != IM0);
1603 fail_if(data[1] != IM1);
1604 fail_if(data[2] != IM2);
1605 fail_if(data[3] != IM3);
1614 START_TEST(eet_identity_simple)
1616 const char * buffer = "Here is a string of data to save !";
1622 char * file = strdup("/tmp/eet_suite_testXXXXXX");
1628 fail_if(!(file = tmpnam(file)));
1629 fail_if(chdir("src/tests"));
1630 fail_if(!(noread = fopen("/dev/null", "w")));
1632 /* Sign an eet file. */
1633 ef = eet_open(file, EET_FILE_MODE_WRITE);
1636 fail_if(!eet_write(ef, "keys/tests", buffer, strlen(buffer) + 1, 0));
1638 k = eet_identity_open("cert.pem", "key.pem", NULL);
1641 fail_if(eet_identity_set(ef, k) != EET_ERROR_NONE);
1642 eet_identity_print(k, noread);
1646 /* Open a signed file. */
1647 ef = eet_open(file, EET_FILE_MODE_READ);
1650 test = eet_read(ef, "keys/tests", &size);
1652 fail_if(size != (int)strlen(buffer) + 1);
1654 fail_if(memcmp(test, buffer, strlen(buffer) + 1) != 0);
1656 tmp = eet_identity_x509(ef, &size);
1657 fail_if(tmp == NULL);
1659 eet_identity_certificate_print(tmp, size, noread);
1663 /* As we are changing file contain in less than 1s, this could get unnoticed
1664 by eet cache system. */
1667 /* Corrupting the file. */
1668 fd = open(file, O_WRONLY);
1671 fail_if(lseek(fd, 200, SEEK_SET) != 200);
1672 fail_if(write(fd, "42", 2) != 2);
1673 fail_if(lseek(fd, 50, SEEK_SET) != 50);
1674 fail_if(write(fd, "42", 2) != 2);
1675 fail_if(lseek(fd, 88, SEEK_SET) != 88);
1676 fail_if(write(fd, "42", 2) != 2);
1680 /* Attempt to open a modified file. */
1681 ef = eet_open(file, EET_FILE_MODE_READ);
1684 fail_if(unlink(file) != 0);
1691 START_TEST(eet_identity_open_simple)
1697 fail_if(chdir("src/tests"));
1699 k = eet_identity_open("cert.pem", "key.pem", NULL);
1703 eet_identity_close(k);
1710 START_TEST(eet_identity_open_pkcs8)
1716 fail_if(chdir("src/tests"));
1718 k = eet_identity_open("cert.pem", "key_enc_none.pem", NULL);
1722 eet_identity_close(k);
1729 static int pass_get(char * pass,
1731 __UNUSED__ int rwflags,
1732 __UNUSED__ void * u)
1734 memset(pass, 0, size);
1736 if ((int)strlen("password") > size)
1739 snprintf(pass, size, "%s", "password");
1740 return strlen(pass);
1743 static int badpass_get(char * pass,
1745 __UNUSED__ int rwflags,
1746 __UNUSED__ void * u)
1748 memset(pass, 0, size);
1750 if ((int)strlen("bad password") > size)
1753 snprintf(pass, size, "%s", "bad password");
1754 return strlen(pass);
1757 START_TEST(eet_identity_open_pkcs8_enc)
1763 fail_if(chdir("src/tests"));
1765 k = eet_identity_open("cert.pem", "key_enc.pem", NULL);
1769 eet_identity_close(k);
1771 k = eet_identity_open("cert.pem", "key_enc.pem", &badpass_get);
1775 eet_identity_close(k);
1777 k = eet_identity_open("cert.pem", "key_enc.pem", &pass_get);
1781 eet_identity_close(k);
1787 START_TEST(eet_cipher_decipher_simple)
1789 const char * buffer = "Here is a string of data to save !";
1790 const char * key = "This is a crypto key";
1791 const char * key_bad = "This is another crypto key";
1794 char * file = strdup("/tmp/eet_suite_testXXXXXX");
1799 fail_if(!(file = tmpnam(file)));
1800 fail_if(chdir("src/tests"));
1802 /* Crypt an eet file. */
1803 ef = eet_open(file, EET_FILE_MODE_WRITE);
1806 fail_if(!eet_write_cipher(ef, "keys/tests", buffer, strlen(buffer) + 1, 0,
1811 /* Decrypt an eet file. */
1812 ef = eet_open(file, EET_FILE_MODE_READ);
1815 test = eet_read_cipher(ef, "keys/tests", &size, key);
1817 fail_if(size != (int)strlen(buffer) + 1);
1819 fail_if(memcmp(test, buffer, strlen(buffer) + 1) != 0);
1823 /* Decrypt an eet file. */
1824 ef = eet_open(file, EET_FILE_MODE_READ);
1827 test = eet_read_cipher(ef, "keys/tests", &size, key_bad);
1829 if (size == (int)strlen(buffer) + 1)
1830 fail_if(memcmp(test, buffer, strlen(buffer) + 1) == 0);
1834 fail_if(unlink(file) != 0);
1841 #ifdef EFL_HAVE_THREADS
1843 static Eina_Bool open_worker_stop;
1845 # ifdef EFL_HAVE_POSIX_THREADS
1848 open_close_worker(void * path)
1850 while (!open_worker_stop)
1852 Eet_File * ef = eet_open((char const *)path, EET_FILE_MODE_READ);
1854 pthread_exit("eet_open() failed");
1857 Eet_Error err_code = eet_close(ef);
1858 if (err_code != EET_ERROR_NONE)
1859 pthread_exit("eet_close() failed");
1864 } /* open_close_worker */
1866 # else /* ifdef EFL_HAVE_POSIX_THREADS */
1868 static unsigned int __stdcall
1869 open_close_worker(void * path)
1871 while (!open_worker_stop)
1873 Eet_File * ef = eet_open((char const *)path, EET_FILE_MODE_READ);
1878 Eet_Error err_code = eet_close(ef);
1879 if (err_code != EET_ERROR_NONE)
1885 } /* open_close_worker */
1887 # endif /* ifdef EFL_HAVE_POSIX_THREADS */
1889 START_TEST(eet_cache_concurrency)
1891 char * file = strdup("/tmp/eet_suite_testXXXXXX");
1892 const char * buffer = "test data";
1896 # ifdef EFL_HAVE_POSIX_THREADS
1898 # else /* ifdef EFL_HAVE_POSIX_THREADS */
1900 unsigned int thread_id;
1902 # endif /* ifdef EFL_HAVE_POSIX_THREADS */
1906 /* create a file to test with */
1907 fail_if(!(file = tmpnam(file)));
1908 ef = eet_open(file, EET_FILE_MODE_WRITE);
1910 fail_if(!eet_write(ef, "keys/tests", buffer, strlen(buffer) + 1, 0));
1912 /* start a thread that repeatedly opens and closes a file */
1913 open_worker_stop = 0;
1914 # ifdef EFL_HAVE_POSIX_THREADS
1915 pthread_create(&thread, NULL, open_close_worker, file);
1916 # else /* ifdef EFL_HAVE_POSIX_THREADS */
1917 thread = _beginthreadex(NULL, 0, open_close_worker, file, 0, &thread_id);
1918 # endif /* ifdef EFL_HAVE_POSIX_THREADS */
1919 /* clear the cache repeatedly in this thread */
1920 for (n = 0; n < 50000; ++n)
1925 /* join the other thread, and fail if it returned an error message */
1926 open_worker_stop = 1;
1927 # ifdef EFL_HAVE_POSIX_THREADS
1928 fail_if(pthread_join(thread, &thread_ret) != 0);
1929 fail_unless(thread_ret == NULL, (char const *)thread_ret);
1930 # else /* ifdef EFL_HAVE_POSIX_THREADS */
1931 ret = WaitForSingleObject((HANDLE)thread, INFINITE);
1932 fail_if(ret != WAIT_OBJECT_0);
1933 fail_if(GetExitCodeThread((HANDLE)thread, &ret) == FALSE);
1935 # endif /* ifdef EFL_HAVE_POSIX_THREADS */
1937 fail_if(unlink(file) != 0);
1942 #endif /* EFL_HAVE_THREADS */
1944 typedef struct _Eet_Connection_Data Eet_Connection_Data;
1945 struct _Eet_Connection_Data
1947 Eet_Connection * conn;
1948 Eet_Data_Descriptor * edd;
1953 _eet_connection_read(const void * eet_data, size_t size, void * user_data)
1955 Eet_Connection_Data * dt = user_data;
1956 Eet_Test_Ex_Type * result;
1960 result = eet_data_descriptor_decode(dt->edd, eet_data, size);
1961 node = eet_data_node_decode_cipher(eet_data, NULL, size);
1963 /* Test the resulting data. */
1965 fail_if(_eet_test_ex_check(result, 0) != 0);
1966 fail_if(_eet_test_ex_check(eina_list_data_get(result->list), 1) != 0);
1967 fail_if(eina_list_data_get(result->ilist) == NULL);
1968 fail_if(*((int *)eina_list_data_get(result->ilist)) != 42);
1969 fail_if(eina_list_data_get(result->slist) == NULL);
1970 fail_if(strcmp(eina_list_data_get(result->slist), "test") != 0);
1971 fail_if(eina_hash_find(result->shash, EET_TEST_KEY1) == NULL);
1972 fail_if(strcmp(eina_hash_find(result->shash, EET_TEST_KEY1), "test") != 0);
1973 fail_if(strcmp(result->charray[0], "test") != 0);
1977 eina_hash_foreach(result->hash, func, &test);
1981 eina_hash_foreach(result->ihash, func7, &test);
1987 dt->test = EINA_TRUE;
1988 fail_if(!eet_connection_node_send(dt->conn, node, NULL));
1992 } /* _eet_connection_read */
1995 _eet_connection_write(const void * data, size_t size, void * user_data)
1997 Eet_Connection_Data * dt = user_data;
2002 int step = size / 3;
2004 eet_connection_received(dt->conn, data, step);
2005 eet_connection_received(dt->conn, (char *)data + step, step);
2007 still = eet_connection_received(dt->conn, (char *)data + 2 * step, size);
2010 still = eet_connection_received(dt->conn, data, size);
2015 } /* _eet_connection_write */
2017 START_TEST(eet_connection_check)
2019 Eet_Connection * conn;
2020 Eet_Data_Descriptor * edd;
2021 Eet_Data_Descriptor_Class eddc;
2022 Eet_Connection_Data ecd;
2023 Eet_Test_Ex_Type etbt;
2028 _eet_test_ex_set(&etbt, 0);
2029 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
2030 etbt.list = eina_list_prepend(etbt.list, _eet_test_ex_set(NULL, 1));
2031 etbt.hash = eina_hash_string_superfast_new(NULL);
2032 eina_hash_add(etbt.hash, EET_TEST_KEY1, _eet_test_ex_set(NULL, 2));
2033 eina_hash_add(etbt.hash, EET_TEST_KEY2, _eet_test_ex_set(NULL, 2));
2034 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
2035 etbt.ilist = eina_list_prepend(etbt.ilist, &i42);
2036 etbt.ihash = eina_hash_string_superfast_new(NULL);
2037 eina_hash_add(etbt.ihash, EET_TEST_KEY1, &i7);
2038 eina_hash_add(etbt.ihash, EET_TEST_KEY2, &i7);
2039 etbt.slist = eina_list_prepend(NULL, "test");
2040 etbt.shash = eina_hash_string_superfast_new(NULL);
2041 eina_hash_add(etbt.shash, EET_TEST_KEY1, "test");
2042 memset(&etbt.charray, 0, sizeof(etbt.charray));
2043 etbt.charray[0] = "test";
2045 eet_eina_file_data_descriptor_class_set(&eddc, sizeof (eddc),
2047 sizeof(Eet_Test_Ex_Type));
2049 edd = eet_data_descriptor_file_new(&eddc);
2052 _eet_build_ex_descriptor(edd);
2054 /* Create a connection. */
2055 conn = eet_connection_new(_eet_connection_read, _eet_connection_write, &ecd);
2059 ecd.test = EINA_FALSE;
2063 /* Test the connection. */
2064 fail_if(!eet_connection_send(conn, edd, &etbt, NULL));
2068 fail_if(!eet_connection_close(conn, &on_going));
2084 typedef struct _Eet_5FP Eet_5FP;
2094 typedef struct _Eet_5DBL Eet_5DBL;
2098 Eet_Data_Descriptor_Class eddc;
2099 Eet_Data_Descriptor * edd_5FP;
2100 Eet_Data_Descriptor * edd_5DBL;
2109 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_5FP);
2110 edd_5FP = eet_data_descriptor_stream_new(&eddc);
2112 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "fp32", fp32, EET_T_F32P32);
2113 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "fp16", fp16, EET_T_F16P16);
2114 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "fp8", fp8, EET_T_F8P24);
2115 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "f1", f1, EET_T_F32P32);
2116 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "f0", f0, EET_T_F32P32);
2118 eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), "Eet_5FP", sizeof (Eet_5DBL));
2119 edd_5DBL = eet_data_descriptor_stream_new(&eddc);
2121 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "fp32", fp32, EET_T_DOUBLE);
2122 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "fp16", fp16, EET_T_DOUBLE);
2123 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "fp8", fp8, EET_T_FLOAT);
2124 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "f1", f1, EET_T_DOUBLE);
2125 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "f0", f0, EET_T_DOUBLE);
2127 origin.fp32 = eina_f32p32_double_from(1.125);
2128 origin.fp16 = eina_f16p16_int_from(2000);
2129 origin.fp8 = eina_f8p24_int_from(125);
2130 origin.f1 = eina_f32p32_int_from(1);
2133 blob = eet_data_descriptor_encode(edd_5FP, &origin, &size);
2134 fail_if(!blob || size <= 0);
2136 build = eet_data_descriptor_decode(edd_5FP, blob, size);
2139 convert = eet_data_descriptor_decode(edd_5DBL, blob, size);
2142 fail_if(build->fp32 != eina_f32p32_double_from(1.125));
2143 fail_if(build->fp16 != eina_f16p16_int_from(2000));
2144 fail_if(build->fp8 != eina_f8p24_int_from(125));
2145 fail_if(build->f1 != eina_f32p32_int_from(1));
2146 fail_if(build->f0 != 0);
2148 fail_if(convert->fp32 != 1.125);
2149 fail_if(convert->fp16 != 2000);
2150 fail_if(convert->fp8 != 125);
2151 fail_if(convert->f1 != 1);
2152 fail_if(convert->f0 != 0);
2158 START_TEST(eet_file_fp)
2160 char * file = strdup("/tmp/eet_suite_testXXXXXX");
2161 Eet_Data_Descriptor_Class eddc;
2162 Eet_Data_Descriptor * edd_5FP;
2163 Eet_Data_Descriptor * edd_5DBL;
2171 EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_5FP);
2172 edd_5FP = eet_data_descriptor_file_new(&eddc);
2174 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "fp32", fp32, EET_T_F32P32);
2175 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "fp16", fp16, EET_T_F16P16);
2176 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "fp8", fp8, EET_T_F8P24);
2177 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "f1", f1, EET_T_F32P32);
2178 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5FP, Eet_5FP, "f0", f0, EET_T_F32P32);
2180 eet_eina_file_data_descriptor_class_set(&eddc, sizeof (eddc), "Eet_5FP", sizeof (Eet_5DBL));
2181 edd_5DBL = eet_data_descriptor_file_new(&eddc);
2183 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "fp32", fp32, EET_T_DOUBLE);
2184 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "fp16", fp16, EET_T_DOUBLE);
2185 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "fp8", fp8, EET_T_FLOAT);
2186 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "f1", f1, EET_T_DOUBLE);
2187 EET_DATA_DESCRIPTOR_ADD_BASIC(edd_5DBL, Eet_5DBL, "f0", f0, EET_T_DOUBLE);
2189 origin.fp32 = eina_f32p32_double_from(1.125);
2190 origin.fp16 = eina_f16p16_int_from(2000);
2191 origin.fp8 = eina_f8p24_int_from(125);
2192 origin.f1 = eina_f32p32_int_from(1);
2195 fail_if(!(file = tmpnam(file)));
2197 ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
2200 fail_if(!eet_data_write(ef, edd_5FP, EET_TEST_FILE_KEY1, &origin, 1));
2202 build = eet_data_read(ef, edd_5FP, EET_TEST_FILE_KEY1);
2205 convert = eet_data_read(ef, edd_5DBL, EET_TEST_FILE_KEY1);
2208 fail_if(build->fp32 != eina_f32p32_double_from(1.125));
2209 fail_if(build->fp16 != eina_f16p16_int_from(2000));
2210 fail_if(build->fp8 != eina_f8p24_int_from(125));
2211 fail_if(build->f1 != eina_f32p32_int_from(1));
2212 fail_if(build->f0 != 0);
2214 fail_if(convert->fp32 != 1.125);
2215 fail_if(convert->fp16 != 2000);
2216 fail_if(convert->fp8 != 125);
2217 fail_if(convert->f1 != 1);
2218 fail_if(convert->f0 != 0);
2222 fail_if(unlink(file) != 0);
2229 typedef struct _Eet_Union_Test Eet_Union_Test;
2230 typedef struct _Eet_Variant_Test Eet_Variant_Test;
2231 typedef struct _Eet_Variant_Type Eet_Variant_Type;
2232 typedef struct _Eet_Inherit_Test1 Eet_Inherit_Test1;
2233 typedef struct _Eet_Inherit_Test2 Eet_Inherit_Test2;
2234 typedef struct _Eet_Inherit_Test3 Eet_Inherit_Test3;
2235 typedef struct _Eet_St1 Eet_St1;
2236 typedef struct _Eet_St2 Eet_St2;
2237 typedef struct _Eet_St3 Eet_St3;
2238 typedef struct _Eet_List Eet_List;
2240 typedef enum _Eet_Union
2256 { EET_UNKNOWN, NULL }
2269 unsigned long long v1;
2277 struct _Eet_Union_Test
2288 struct _Eet_Variant_Type
2291 Eina_Bool unknow : 1;
2294 struct _Eet_Variant_Test
2299 Eina_List * data_list;
2302 struct _Eet_Inherit_Test1
2307 struct _Eet_Inherit_Test2
2312 struct _Eet_Inherit_Test3
2324 _eet_union_type_get(const void * data, Eina_Bool * unknow)
2326 const Eet_Union * u = data;
2330 *unknow = EINA_FALSE;
2332 for (i = 0; eet_mapping[i].name != NULL; ++i)
2333 if (*u == eet_mapping[i].u)
2334 return eet_mapping[i].name;
2337 *unknow = EINA_TRUE;
2340 } /* _eet_union_type_get */
2343 _eet_union_type_set(const char * type, void * data, Eina_Bool unknow)
2345 Eet_Union * u = data;
2351 for (i = 0; eet_mapping[i].name != NULL; ++i)
2352 if (strcmp(eet_mapping[i].name, type) == 0)
2354 *u = eet_mapping[i].u;
2359 } /* _eet_union_type_set */
2362 _eet_variant_type_get(const void * data, Eina_Bool * unknow)
2364 const Eet_Variant_Type * type = data;
2368 *unknow = type->unknow;
2370 for (i = 0; eet_mapping[i].name != NULL; ++i)
2371 if (strcmp(type->type, eet_mapping[i].name) == 0)
2372 return eet_mapping[i].name;
2375 *unknow = EINA_FALSE;
2378 } /* _eet_variant_type_get */
2381 _eet_variant_type_set(const char * type, void * data, Eina_Bool unknow)
2383 Eet_Variant_Type * vt = data;
2386 vt->unknow = unknow;
2388 } /* _eet_variant_type_set */
2390 static Eet_Data_Descriptor *
2393 Eet_Data_Descriptor_Class eddc;
2394 Eet_Data_Descriptor * res;
2396 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_St1);
2397 res = eet_data_descriptor_stream_new(&eddc);
2398 EET_DATA_DESCRIPTOR_ADD_BASIC(res, Eet_St1, "val1", val1, EET_T_DOUBLE);
2399 EET_DATA_DESCRIPTOR_ADD_BASIC(res, Eet_St1, "stuff", stuff, EET_T_INT);
2400 EET_DATA_DESCRIPTOR_ADD_BASIC(res, Eet_St1, "s1", s1, EET_T_STRING);
2406 _eet_st1_set(Eet_St1 * st1, int i)
2408 st1->val1 = EET_TEST_DOUBLE;
2409 st1->stuff = EET_TEST_INT + i;
2410 st1->s1 = EET_TEST_STRING;
2411 } /* _eet_st1_set */
2414 _eet_st1_cmp(Eet_St1 * st1, int i)
2420 tmp = st1->val1 - EET_TEST_DOUBLE;
2424 fail_if(tmp > 0.005);
2425 fail_if(st1->stuff != EET_TEST_INT + i);
2426 fail_if(strcmp(st1->s1, EET_TEST_STRING));
2427 } /* _eet_st1_cmp */
2429 static Eet_Data_Descriptor *
2432 Eet_Data_Descriptor_Class eddc;
2433 Eet_Data_Descriptor * res;
2435 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_St2);
2436 res = eet_data_descriptor_stream_new(&eddc);
2437 EET_DATA_DESCRIPTOR_ADD_BASIC(res, Eet_St2, "b1", b1, EET_T_UCHAR);
2438 EET_DATA_DESCRIPTOR_ADD_BASIC(res, Eet_St2, "v1", v1, EET_T_ULONG_LONG);
2444 _eet_st2_set(Eet_St2 * st2, int i)
2446 st2->b1 = EINA_TRUE;
2447 st2->v1 = EET_TEST_LONG_LONG + i;
2448 } /* _eet_st2_set */
2451 _eet_st2_cmp(Eet_St2 * st2, int i)
2454 fail_if(st2->v1 != EET_TEST_LONG_LONG + i);
2455 } /* _eet_st2_cmp */
2457 static Eet_Data_Descriptor *
2460 Eet_Data_Descriptor_Class eddc;
2461 Eet_Data_Descriptor * res;
2463 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_St3);
2464 res = eet_data_descriptor_stream_new(&eddc);
2465 EET_DATA_DESCRIPTOR_ADD_BASIC(res, Eet_St3, "boby", boby, EET_T_INT);
2471 _eet_st3_set(Eet_St3 * st3, int i)
2473 st3->boby = EET_TEST_INT + i;
2474 } /* _eet_st3_set */
2477 _eet_st3_cmp(Eet_St3 * st3, int i)
2479 fail_if(st3->boby != EET_TEST_INT + i);
2480 } /* _eet_st3_cmp */
2482 START_TEST(eet_test_union)
2484 Eet_Union_Test * eut;
2486 Eet_Data_Descriptor_Class eddc;
2487 Eet_Data_Descriptor * edd;
2488 Eet_Data_Descriptor * unified;
2489 Eet_Data_Descriptor * m;
2497 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_Union_Test);
2498 edd = eet_data_descriptor_stream_new(&eddc);
2500 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_Union_Test);
2501 m = eet_data_descriptor_stream_new(&eddc);
2503 eddc.version = EET_DATA_DESCRIPTOR_CLASS_VERSION;
2504 eddc.func.type_get = _eet_union_type_get;
2505 eddc.func.type_set = _eet_union_type_set;
2506 unified = eet_data_descriptor_stream_new(&eddc);
2508 EET_DATA_DESCRIPTOR_ADD_MAPPING(unified, "ST1", _eet_st1_dd());
2509 EET_DATA_DESCRIPTOR_ADD_MAPPING(unified, "ST2", _eet_st2_dd());
2510 EET_DATA_DESCRIPTOR_ADD_MAPPING(unified, "ST3", _eet_st3_dd());
2512 EET_DATA_DESCRIPTOR_ADD_UNION(edd, Eet_Union_Test, "u", u, type, unified);
2514 EET_DATA_DESCRIPTOR_ADD_LIST(m, Eet_List, "list", list, edd);
2516 l = calloc(1, sizeof (Eet_List));
2518 #define EUT_NEW(Type_Index)\
2519 eut = calloc(1, sizeof (Eet_Union_Test));\
2520 eut->type = EET_ST ## Type_Index;\
2521 _eet_st ## Type_Index ## _set(&(eut->u.st ## Type_Index), i);
2523 for (i = 0; i < 3; ++i)
2526 l->list = eina_list_append(l->list, eut);
2529 l->list = eina_list_append(l->list, eut);
2532 l->list = eina_list_append(l->list, eut);
2535 blob = eet_data_descriptor_encode(m, l, &size);
2536 fail_if(!blob || size <= 0);
2538 l = eet_data_descriptor_decode(m, blob, size);
2541 fail_if(eina_list_count(l->list) != 9);
2543 #define EUT_CMP(Type_Index)\
2544 eut = eina_list_nth(l->list, i * 3 + Type_Index - 1);\
2545 fail_if(eut->type != EET_ST ## Type_Index);\
2546 _eet_st ## Type_Index ## _cmp(&(eut->u.st ## Type_Index), i);
2548 for (i = 0; i < 3; ++i)
2560 START_TEST(eet_test_variant)
2562 Eet_Variant_Test * evt;
2567 Eet_Data_Descriptor_Class eddc;
2568 Eet_Data_Descriptor * edd;
2569 Eet_Data_Descriptor * unified;
2570 Eet_Data_Descriptor * m;
2578 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_Variant_Test);
2579 edd = eet_data_descriptor_stream_new(&eddc);
2581 EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Eet_Variant_Test);
2582 m = eet_data_descriptor_stream_new(&eddc);
2584 eddc.version = EET_DATA_DESCRIPTOR_CLASS_VERSION;
2585 eddc.func.type_get = _eet_variant_type_get;
2586 eddc.func.type_set = _eet_variant_type_set;
2587 unified = eet_data_descriptor_stream_new(&eddc);
2589 EET_DATA_DESCRIPTOR_ADD_MAPPING(unified, "ST1", _eet_st1_dd());
2590 EET_DATA_DESCRIPTOR_ADD_MAPPING(unified, "ST2", _eet_st2_dd());
2591 EET_DATA_DESCRIPTOR_ADD_MAPPING(unified, "ST3", _eet_st3_dd());
2593 EET_DATA_DESCRIPTOR_ADD_VARIANT(edd,
2600 unified = eet_data_descriptor_stream_new(&eddc);
2601 eet_data_descriptor_element_add(unified, "ST1",
2602 EET_T_UNKNOW, EET_G_LIST,
2603 0, 0, NULL, _eet_st1_dd());
2604 eet_data_descriptor_element_add(unified, "ST2",
2605 EET_T_UNKNOW, EET_G_LIST,
2606 0, 0, NULL, _eet_st2_dd());
2608 EET_DATA_DESCRIPTOR_ADD_VARIANT(edd, Eet_Variant_Test,
2609 "data_list", data_list, t, unified);
2611 EET_DATA_DESCRIPTOR_ADD_LIST(m, Eet_List, "list", list, edd);
2613 l = calloc(1, sizeof (Eet_List));
2615 #define EVT_NEW(Type_Index)\
2616 evt = calloc(1, sizeof (Eet_Variant_Test));\
2617 evt->t.type = eet_mapping[Type_Index - 1].name;\
2618 st ## Type_Index = calloc(1, sizeof (Eet_St ## Type_Index));\
2619 _eet_st ## Type_Index ## _set(st ## Type_Index, i);\
2620 evt->data = st ## Type_Index;
2622 for (i = 0; i < 3; ++i)
2625 l->list = eina_list_append(l->list, evt);
2627 st1 = calloc(1, sizeof (Eet_St1));
2628 _eet_st1_set(st1, i);
2629 evt->data_list = eina_list_append(evt->data_list, st1);
2632 l->list = eina_list_append(l->list, evt);
2635 l->list = eina_list_append(l->list, evt);
2638 blob = eet_data_descriptor_encode(m, l, &size);
2639 fail_if(!blob || size <= 0);
2641 l = eet_data_descriptor_decode(m, blob, size);
2644 fail_if(eina_list_count(l->list) != 9);
2646 #define EVT_CMP(Type_Index)\
2647 evt = eina_list_nth(l->list, i * 3 + Type_Index - 1);\
2648 fail_if(strcmp(evt->t.type, eet_mapping[Type_Index - 1].name) != 0);\
2649 _eet_st ## Type_Index ## _cmp(evt->data, i);
2651 for (i = 0; i < 3; ++i)
2655 fail_if(!evt->data_list);
2656 fail_if(eina_list_count(evt->data_list) != 1);
2658 st1 = eina_list_data_get(evt->data_list);
2659 _eet_st1_cmp(st1, i);
2677 s = suite_create("Eet");
2679 tc = tcase_create("Eet_Init");
2680 tcase_add_test(tc, eet_test_init);
2681 suite_add_tcase(s, tc);
2683 tc = tcase_create("Eet Data Encoding/Decoding");
2684 tcase_add_test(tc, eet_test_basic_data_type_encoding_decoding);
2685 tcase_add_test(tc, eet_test_data_type_encoding_decoding);
2686 tcase_add_test(tc, eet_test_data_type_dump_undump);
2687 tcase_add_test(tc, eet_fp);
2688 tcase_add_test(tc, eet_test_union);
2689 tcase_add_test(tc, eet_test_variant);
2690 suite_add_tcase(s, tc);
2692 tc = tcase_create("Eet File");
2693 tcase_add_test(tc, eet_file_simple_write);
2694 tcase_add_test(tc, eet_file_data_test);
2695 tcase_add_test(tc, eet_file_data_dump_test);
2696 tcase_add_test(tc, eet_file_fp);
2697 suite_add_tcase(s, tc);
2699 tc = tcase_create("Eet Image");
2700 tcase_add_test(tc, eet_image);
2701 tcase_add_test(tc, eet_small_image);
2702 suite_add_tcase(s, tc);
2704 #ifdef HAVE_SIGNATURE
2705 tc = tcase_create("Eet Identity");
2706 tcase_add_test(tc, eet_identity_simple);
2707 tcase_add_test(tc, eet_identity_open_simple);
2708 tcase_add_test(tc, eet_identity_open_pkcs8);
2709 tcase_add_test(tc, eet_identity_open_pkcs8_enc);
2710 suite_add_tcase(s, tc);
2711 #endif /* ifdef HAVE_SIGNATURE */
2714 tc = tcase_create("Eet Cipher");
2715 tcase_add_test(tc, eet_cipher_decipher_simple);
2716 suite_add_tcase(s, tc);
2717 #endif /* ifdef HAVE_CIPHER */
2719 #ifdef EFL_HAVE_THREADS
2720 tc = tcase_create("Eet Cache");
2721 tcase_add_test(tc, eet_cache_concurrency);
2722 suite_add_tcase(s, tc);
2723 #endif /* ifdef EFL_HAVE_THREADS */
2725 tc = tcase_create("Eet Connection");
2726 tcase_add_test(tc, eet_connection_check);
2727 suite_add_tcase(s, tc);
2740 sr = srunner_create(s);
2741 srunner_run_all(sr, CK_ENV);
2742 failed_count = srunner_ntests_failed(sr);
2745 return (failed_count == 0) ? EXIT_SUCCESS : EXIT_FAILURE;