3 #include <opensync/opensync-format.h>
4 #include "opensync/format/opensync_filter_internals.h"
5 #include "opensync/format/opensync_format_env_internals.h"
7 START_TEST (conv_env_create
)
9 char *testbed
= setup_testbed(NULL
);
11 OSyncError
*error
= NULL
;
12 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
13 fail_unless(env
!= NULL
, NULL
);
14 fail_unless(error
== NULL
, NULL
);
16 osync_format_env_unref(env
);
18 destroy_testbed(testbed
);
22 START_TEST (conv_env_register_objformat
)
24 char *testbed
= setup_testbed(NULL
);
26 OSyncError
*error
= NULL
;
27 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
28 fail_unless(env
!= NULL
, NULL
);
29 fail_unless(error
== NULL
, NULL
);
31 OSyncObjFormat
*format
= osync_objformat_new("format", "objtype", &error
);
32 fail_unless(format
!= NULL
, NULL
);
33 fail_unless(error
== NULL
, NULL
);
35 osync_format_env_register_objformat(env
, format
);
37 osync_objformat_unref(format
);
39 osync_format_env_unref(env
);
41 destroy_testbed(testbed
);
45 START_TEST (conv_env_register_objformat_count
)
47 char *testbed
= setup_testbed(NULL
);
49 OSyncError
*error
= NULL
;
50 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
51 fail_unless(env
!= NULL
, NULL
);
52 fail_unless(error
== NULL
, NULL
);
54 OSyncObjFormat
*format
= osync_objformat_new("format", "objtype", &error
);
55 fail_unless(format
!= NULL
, NULL
);
56 fail_unless(error
== NULL
, NULL
);
58 fail_unless(osync_format_env_num_objformats(env
) == 0, NULL
);
60 osync_format_env_register_objformat(env
, format
);
61 osync_objformat_unref(format
);
63 fail_unless(osync_format_env_num_objformats(env
) == 1, NULL
);
64 fail_unless(osync_format_env_nth_objformat(env
, 0) == format
, NULL
);
66 osync_format_env_unref(env
);
68 destroy_testbed(testbed
);
72 START_TEST (conv_env_objformat_find
)
74 char *testbed
= setup_testbed(NULL
);
76 OSyncError
*error
= NULL
;
77 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
78 fail_unless(env
!= NULL
, NULL
);
79 fail_unless(error
== NULL
, NULL
);
81 OSyncObjFormat
*format
= osync_objformat_new("format", "objtype", &error
);
82 fail_unless(format
!= NULL
, NULL
);
83 fail_unless(error
== NULL
, NULL
);
85 osync_format_env_register_objformat(env
, format
);
86 osync_objformat_unref(format
);
88 fail_unless(osync_format_env_find_objformat(env
, "format") == format
, NULL
);
90 osync_format_env_unref(env
);
92 destroy_testbed(testbed
);
96 START_TEST (conv_env_objformat_find_false
)
98 char *testbed
= setup_testbed(NULL
);
100 OSyncError
*error
= NULL
;
101 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
102 fail_unless(env
!= NULL
, NULL
);
103 fail_unless(error
== NULL
, NULL
);
105 OSyncObjFormat
*format
= osync_objformat_new("format", "objtype", &error
);
106 fail_unless(format
!= NULL
, NULL
);
107 fail_unless(error
== NULL
, NULL
);
109 osync_format_env_register_objformat(env
, format
);
110 osync_objformat_unref(format
);
112 fail_unless(osync_format_env_find_objformat(env
, "format2") == NULL
, NULL
);
114 osync_format_env_unref(env
);
116 destroy_testbed(testbed
);
120 osync_bool
convert_func(char *input
, unsigned int inpsize
, char **output
, unsigned int *outpsize
, osync_bool
*free_input
, const char *config
, void* user_data
, OSyncError
**error
)
123 *output
= g_strdup("test");
128 START_TEST (conv_env_register_converter
)
130 char *testbed
= setup_testbed(NULL
);
132 OSyncError
*error
= NULL
;
133 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
134 fail_unless(env
!= NULL
, NULL
);
135 fail_unless(error
== NULL
, NULL
);
137 OSyncObjFormat
*format1
= osync_objformat_new("format1", "objtype", &error
);
138 fail_unless(format1
!= NULL
, NULL
);
139 fail_unless(error
== NULL
, NULL
);
140 osync_format_env_register_objformat(env
, format1
);
142 OSyncObjFormat
*format2
= osync_objformat_new("format2", "objtype", &error
);
143 fail_unless(format2
!= NULL
, NULL
);
144 fail_unless(error
== NULL
, NULL
);
145 osync_format_env_register_objformat(env
, format2
);
147 OSyncFormatConverter
*converter
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format2
, convert_func
, &error
);
148 fail_unless(converter
!= NULL
, NULL
);
149 fail_unless(error
== NULL
, NULL
);
151 osync_format_env_register_converter(env
, converter
);
153 osync_converter_unref(converter
);
155 osync_format_env_unref(env
);
157 osync_objformat_unref(format1
);
158 osync_objformat_unref(format2
);
160 destroy_testbed(testbed
);
164 START_TEST (conv_env_register_converter_count
)
166 char *testbed
= setup_testbed(NULL
);
168 OSyncError
*error
= NULL
;
169 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
170 fail_unless(env
!= NULL
, NULL
);
171 fail_unless(error
== NULL
, NULL
);
173 OSyncObjFormat
*format1
= osync_objformat_new("format1", "objtype", &error
);
174 fail_unless(format1
!= NULL
, NULL
);
175 fail_unless(error
== NULL
, NULL
);
176 osync_format_env_register_objformat(env
, format1
);
178 OSyncObjFormat
*format2
= osync_objformat_new("format2", "objtype", &error
);
179 fail_unless(format2
!= NULL
, NULL
);
180 fail_unless(error
== NULL
, NULL
);
181 osync_format_env_register_objformat(env
, format2
);
183 OSyncFormatConverter
*converter
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format2
, convert_func
, &error
);
184 fail_unless(converter
!= NULL
, NULL
);
185 fail_unless(error
== NULL
, NULL
);
187 fail_unless(osync_format_env_num_converters(env
) == 0, NULL
);
189 osync_format_env_register_converter(env
, converter
);
191 fail_unless(osync_format_env_num_converters(env
) == 1, NULL
);
192 fail_unless(osync_format_env_nth_converter(env
, 0) == converter
, NULL
);
194 osync_converter_unref(converter
);
196 osync_format_env_unref(env
);
198 osync_objformat_unref(format1
);
199 osync_objformat_unref(format2
);
201 destroy_testbed(testbed
);
205 START_TEST (conv_env_converter_find
)
207 char *testbed
= setup_testbed(NULL
);
209 OSyncError
*error
= NULL
;
210 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
211 fail_unless(env
!= NULL
, NULL
);
212 fail_unless(error
== NULL
, NULL
);
214 OSyncObjFormat
*format1
= osync_objformat_new("format1", "objtype", &error
);
215 fail_unless(format1
!= NULL
, NULL
);
216 fail_unless(error
== NULL
, NULL
);
217 osync_format_env_register_objformat(env
, format1
);
219 OSyncObjFormat
*format2
= osync_objformat_new("format2", "objtype", &error
);
220 fail_unless(format2
!= NULL
, NULL
);
221 fail_unless(error
== NULL
, NULL
);
222 osync_format_env_register_objformat(env
, format2
);
224 OSyncFormatConverter
*converter
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format2
, convert_func
, &error
);
225 fail_unless(converter
!= NULL
, NULL
);
226 fail_unless(error
== NULL
, NULL
);
228 osync_format_env_register_converter(env
, converter
);
229 osync_converter_unref(converter
);
231 fail_unless(osync_format_env_find_converter(env
, format1
, format2
) == converter
, NULL
);
233 osync_format_env_unref(env
);
235 osync_objformat_unref(format1
);
236 osync_objformat_unref(format2
);
238 destroy_testbed(testbed
);
242 START_TEST (conv_env_converter_find_false
)
244 char *testbed
= setup_testbed(NULL
);
246 OSyncError
*error
= NULL
;
247 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
248 fail_unless(env
!= NULL
, NULL
);
249 fail_unless(error
== NULL
, NULL
);
251 OSyncObjFormat
*format1
= osync_objformat_new("format1", "objtype", &error
);
252 fail_unless(format1
!= NULL
, NULL
);
253 fail_unless(error
== NULL
, NULL
);
254 osync_format_env_register_objformat(env
, format1
);
256 OSyncObjFormat
*format2
= osync_objformat_new("format2", "objtype", &error
);
257 fail_unless(format2
!= NULL
, NULL
);
258 fail_unless(error
== NULL
, NULL
);
259 osync_format_env_register_objformat(env
, format2
);
261 OSyncObjFormat
*format3
= osync_objformat_new("format3", "objtype", &error
);
262 fail_unless(format3
!= NULL
, NULL
);
263 fail_unless(error
== NULL
, NULL
);
264 osync_format_env_register_objformat(env
, format3
);
266 OSyncFormatConverter
*converter
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format2
, convert_func
, &error
);
267 fail_unless(converter
!= NULL
, NULL
);
268 fail_unless(error
== NULL
, NULL
);
270 osync_format_env_register_converter(env
, converter
);
271 osync_converter_unref(converter
);
273 fail_unless(osync_format_env_find_converter(env
, format1
, format3
) == NULL
, NULL
);
274 fail_unless(osync_format_env_find_converter(env
, format2
, format1
) == NULL
, NULL
);
276 osync_format_env_unref(env
);
278 osync_objformat_unref(format1
);
279 osync_objformat_unref(format2
);
280 osync_objformat_unref(format3
);
282 destroy_testbed(testbed
);
286 osync_bool
filter_hook(OSyncData
*data
, const char *config
)
291 START_TEST (conv_env_register_filter
)
293 char *testbed
= setup_testbed(NULL
);
295 OSyncError
*error
= NULL
;
296 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
297 fail_unless(env
!= NULL
, NULL
);
298 fail_unless(error
== NULL
, NULL
);
300 OSyncCustomFilter
*filter
= osync_custom_filter_new("format", "objtype", "name", filter_hook
, &error
);
301 fail_unless(filter
!= NULL
, NULL
);
302 fail_unless(error
== NULL
, NULL
);
304 osync_format_env_register_filter(env
, filter
);
306 osync_custom_filter_unref(filter
);
308 osync_format_env_unref(env
);
310 destroy_testbed(testbed
);
314 START_TEST (conv_env_register_filter_count
)
316 char *testbed
= setup_testbed(NULL
);
318 OSyncError
*error
= NULL
;
319 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
320 fail_unless(env
!= NULL
, NULL
);
321 fail_unless(error
== NULL
, NULL
);
323 OSyncCustomFilter
*filter
= osync_custom_filter_new("format", "objtype", "name", filter_hook
, &error
);
324 fail_unless(filter
!= NULL
, NULL
);
325 fail_unless(error
== NULL
, NULL
);
327 fail_unless(osync_format_env_num_filters(env
) == 0, NULL
);
329 osync_format_env_register_filter(env
, filter
);
331 fail_unless(osync_format_env_num_filters(env
) == 1, NULL
);
332 fail_unless(osync_format_env_nth_filter(env
, 0) == filter
, NULL
);
334 osync_custom_filter_unref(filter
);
336 osync_format_env_unref(env
);
338 destroy_testbed(testbed
);
344 static osync_bool
dummyconvert(void *user_data
, char *input
, int inpsize
, char **output
, int *outpsize
, osync_bool
*free_input
, OSyncError
**error
)
347 *output
= g_strdup("test");
352 static char dummy_data
[1] = { 0 };
354 static OSyncChange
*create_change(OSyncObjFormat
*fmt
, char *data
, size_t datasize
)
356 OSyncChange
*chg
= osync_change_new();
357 osync_change_set_objformat(chg
, fmt
);
358 osync_change_set_data(chg
, data
, datasize
, TRUE
);
363 static void format_simple_destroy(char *data
, unsigned int size
, void *user_data
)
371 START_TEST (conv_find_path
)
373 char *testbed
= setup_testbed(NULL
);
375 OSyncError
*error
= NULL
;
376 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
377 fail_unless(env
!= NULL
, NULL
);
378 fail_unless(error
== NULL
, NULL
);
380 OSyncObjFormat
*format1
= osync_objformat_new("format1", "objtype", &error
);
381 fail_unless(format1
!= NULL
, NULL
);
382 fail_unless(error
== NULL
, NULL
);
383 osync_format_env_register_objformat(env
, format1
);
384 osync_objformat_set_destroy_func(format1
, format_simple_destroy
);
386 OSyncObjFormat
*format2
= osync_objformat_new("format2", "objtype", &error
);
387 fail_unless(format2
!= NULL
, NULL
);
388 fail_unless(error
== NULL
, NULL
);
389 osync_format_env_register_objformat(env
, format2
);
390 osync_objformat_set_destroy_func(format2
, format_simple_destroy
);
392 OSyncFormatConverter
*converter
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format2
, convert_func
, &error
);
393 fail_unless(converter
!= NULL
, NULL
);
394 fail_unless(error
== NULL
, NULL
);
395 osync_format_env_register_converter(env
, converter
);
396 osync_converter_unref(converter
);
398 OSyncData
*data1
= osync_data_new(g_strdup("data"), 5, format1
, &error
);
399 fail_unless(data1
!= NULL
, NULL
);
400 fail_unless(error
== NULL
, NULL
);
402 OSyncData
*data2
= osync_data_new(g_strdup("data"), 5, format2
, &error
);
403 fail_unless(data2
!= NULL
, NULL
);
404 fail_unless(error
== NULL
, NULL
);
407 OSyncFormatConverterPath
*path
= osync_format_env_find_path_with_detectors(env
, data1
, format2
, NULL
, &error
);
408 fail_unless(path
!= NULL
, NULL
);
409 fail_unless(error
== NULL
, NULL
);
411 fail_unless(osync_converter_path_num_edges(path
) == 1, NULL
);
412 fail_unless(osync_converter_path_nth_edge(path
, 0) == converter
, NULL
);
414 osync_converter_path_unref(path
);
417 path
= osync_format_env_find_path_with_detectors(env
, data2
, format1
, NULL
, &error
);
418 fail_unless(path
== NULL
, NULL
);
419 fail_unless(error
!= NULL
, NULL
);
420 osync_error_unref(&error
);
422 osync_format_env_unref(env
);
424 osync_data_unref(data1
);
425 osync_data_unref(data2
);
426 osync_objformat_unref(format1
);
427 osync_objformat_unref(format2
);
429 destroy_testbed(testbed
);
433 START_TEST (conv_find_path2
)
435 char *testbed
= setup_testbed(NULL
);
437 OSyncError
*error
= NULL
;
438 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
439 fail_unless(env
!= NULL
, NULL
);
440 fail_unless(error
== NULL
, NULL
);
442 OSyncObjFormat
*format1
= osync_objformat_new("format1", "objtype", &error
);
443 fail_unless(format1
!= NULL
, NULL
);
444 fail_unless(error
== NULL
, NULL
);
445 osync_objformat_set_destroy_func(format1
, format_simple_destroy
);
446 osync_format_env_register_objformat(env
, format1
);
448 OSyncObjFormat
*format2
= osync_objformat_new("format2", "objtype", &error
);
449 fail_unless(format2
!= NULL
, NULL
);
450 fail_unless(error
== NULL
, NULL
);
451 osync_objformat_set_destroy_func(format2
, format_simple_destroy
);
452 osync_format_env_register_objformat(env
, format2
);
454 OSyncObjFormat
*format3
= osync_objformat_new("format3", "objtype", &error
);
455 fail_unless(format3
!= NULL
, NULL
);
456 fail_unless(error
== NULL
, NULL
);
457 osync_objformat_set_destroy_func(format3
, format_simple_destroy
);
458 osync_format_env_register_objformat(env
, format3
);
460 OSyncFormatConverter
*converter1
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format2
, convert_func
, &error
);
461 fail_unless(converter1
!= NULL
, NULL
);
462 fail_unless(error
== NULL
, NULL
);
463 osync_format_env_register_converter(env
, converter1
);
464 osync_converter_unref(converter1
);
466 OSyncFormatConverter
*converter2
= osync_converter_new(OSYNC_CONVERTER_CONV
, format2
, format3
, convert_func
, &error
);
467 fail_unless(converter2
!= NULL
, NULL
);
468 fail_unless(error
== NULL
, NULL
);
469 osync_format_env_register_converter(env
, converter2
);
470 osync_converter_unref(converter2
);
472 OSyncData
*data1
= osync_data_new(g_strdup("data"), 5, format1
, &error
);
473 fail_unless(data1
!= NULL
, NULL
);
474 fail_unless(error
== NULL
, NULL
);
477 OSyncFormatConverterPath
*path
= osync_format_env_find_path_with_detectors(env
, data1
, format3
, NULL
, &error
);
478 fail_unless(path
!= NULL
, NULL
);
479 fail_unless(error
== NULL
, NULL
);
481 fail_unless(osync_converter_path_num_edges(path
) == 2, NULL
);
482 fail_unless(osync_converter_path_nth_edge(path
, 0) == converter1
, NULL
);
483 fail_unless(osync_converter_path_nth_edge(path
, 1) == converter2
, NULL
);
485 osync_converter_path_unref(path
);
487 osync_format_env_unref(env
);
489 osync_data_unref(data1
);
490 osync_objformat_unref(format1
);
491 osync_objformat_unref(format2
);
492 osync_objformat_unref(format3
);
494 destroy_testbed(testbed
);
498 START_TEST (conv_find_path_false
)
500 char *testbed
= setup_testbed(NULL
);
502 OSyncError
*error
= NULL
;
503 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
504 fail_unless(env
!= NULL
, NULL
);
505 fail_unless(error
== NULL
, NULL
);
507 OSyncObjFormat
*format1
= osync_objformat_new("format1", "objtype", &error
);
508 fail_unless(format1
!= NULL
, NULL
);
509 fail_unless(error
== NULL
, NULL
);
510 osync_format_env_register_objformat(env
, format1
);
512 OSyncObjFormat
*format2
= osync_objformat_new("format2", "objtype", &error
);
513 fail_unless(format2
!= NULL
, NULL
);
514 fail_unless(error
== NULL
, NULL
);
515 osync_format_env_register_objformat(env
, format2
);
517 OSyncObjFormat
*format3
= osync_objformat_new("format3", "objtype", &error
);
518 fail_unless(format3
!= NULL
, NULL
);
519 fail_unless(error
== NULL
, NULL
);
520 osync_format_env_register_objformat(env
, format3
);
522 OSyncFormatConverter
*converter1
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format2
, convert_func
, &error
);
523 fail_unless(converter1
!= NULL
, NULL
);
524 fail_unless(error
== NULL
, NULL
);
525 osync_format_env_register_converter(env
, converter1
);
526 osync_converter_unref(converter1
);
528 OSyncFormatConverter
*converter2
= osync_converter_new(OSYNC_CONVERTER_CONV
, format3
, format2
, convert_func
, &error
);
529 fail_unless(converter2
!= NULL
, NULL
);
530 fail_unless(error
== NULL
, NULL
);
531 osync_format_env_register_converter(env
, converter2
);
532 osync_converter_unref(converter2
);
534 OSyncData
*data1
= osync_data_new("data", 5, format1
, &error
);
535 fail_unless(data1
!= NULL
, NULL
);
536 fail_unless(error
== NULL
, NULL
);
539 OSyncFormatConverterPath
*path
= osync_format_env_find_path_with_detectors(env
, data1
, format3
, NULL
, &error
);
540 fail_unless(path
== NULL
, NULL
);
541 fail_unless(error
!= NULL
, NULL
);
542 osync_error_unref(&error
);
544 osync_format_env_unref(env
);
546 osync_data_unref(data1
);
547 osync_objformat_unref(format1
);
548 osync_objformat_unref(format2
);
549 osync_objformat_unref(format3
);
551 destroy_testbed(testbed
);
555 START_TEST (conv_find_multi_path
)
557 char *testbed
= setup_testbed(NULL
);
559 OSyncError
*error
= NULL
;
560 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
561 fail_unless(env
!= NULL
, NULL
);
562 fail_unless(error
== NULL
, NULL
);
564 OSyncObjFormat
*format1
= osync_objformat_new("format1", "objtype", &error
);
565 fail_unless(format1
!= NULL
, NULL
);
566 fail_unless(error
== NULL
, NULL
);
567 osync_objformat_set_destroy_func(format1
, format_simple_destroy
);
568 osync_format_env_register_objformat(env
, format1
);
570 OSyncObjFormat
*format2
= osync_objformat_new("format2", "objtype", &error
);
571 fail_unless(format2
!= NULL
, NULL
);
572 fail_unless(error
== NULL
, NULL
);
573 osync_objformat_set_destroy_func(format2
, format_simple_destroy
);
574 osync_format_env_register_objformat(env
, format2
);
576 OSyncObjFormat
*format3
= osync_objformat_new("format3", "objtype", &error
);
577 fail_unless(format3
!= NULL
, NULL
);
578 fail_unless(error
== NULL
, NULL
);
579 osync_objformat_set_destroy_func(format3
, format_simple_destroy
);
580 osync_format_env_register_objformat(env
, format3
);
582 OSyncObjFormat
*format4
= osync_objformat_new("format4", "objtype", &error
);
583 fail_unless(format4
!= NULL
, NULL
);
584 fail_unless(error
== NULL
, NULL
);
585 osync_objformat_set_destroy_func(format4
, format_simple_destroy
);
586 osync_format_env_register_objformat(env
, format4
);
588 OSyncFormatConverter
*converter1
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format2
, convert_func
, &error
);
589 fail_unless(converter1
!= NULL
, NULL
);
590 fail_unless(error
== NULL
, NULL
);
591 osync_format_env_register_converter(env
, converter1
);
592 osync_converter_unref(converter1
);
594 OSyncFormatConverter
*converter2
= osync_converter_new(OSYNC_CONVERTER_CONV
, format2
, format4
, convert_func
, &error
);
595 fail_unless(converter2
!= NULL
, NULL
);
596 fail_unless(error
== NULL
, NULL
);
597 osync_format_env_register_converter(env
, converter2
);
598 osync_converter_unref(converter2
);
600 OSyncFormatConverter
*converter3
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format3
, convert_func
, &error
);
601 fail_unless(converter3
!= NULL
, NULL
);
602 fail_unless(error
== NULL
, NULL
);
603 osync_format_env_register_converter(env
, converter3
);
604 osync_converter_unref(converter3
);
606 OSyncFormatConverter
*converter4
= osync_converter_new(OSYNC_CONVERTER_CONV
, format3
, format4
, convert_func
, &error
);
607 fail_unless(converter4
!= NULL
, NULL
);
608 fail_unless(error
== NULL
, NULL
);
609 osync_format_env_register_converter(env
, converter4
);
610 osync_converter_unref(converter4
);
612 OSyncData
*data1
= osync_data_new(g_strdup("data"), 5, format1
, &error
);
613 fail_unless(data1
!= NULL
, NULL
);
614 fail_unless(error
== NULL
, NULL
);
616 OSyncFormatConverterPath
*path
= osync_format_env_find_path_with_detectors(env
, data1
, format4
, NULL
, &error
);
617 fail_unless(path
!= NULL
, NULL
);
618 fail_unless(error
== NULL
, NULL
);
620 fail_unless(osync_converter_path_num_edges(path
) == 2, NULL
);
621 fail_unless(osync_converter_path_nth_edge(path
, 0) == converter1
, NULL
);
622 fail_unless(osync_converter_path_nth_edge(path
, 1) == converter2
, NULL
);
624 osync_converter_path_unref(path
);
626 osync_format_env_unref(env
);
628 osync_data_unref(data1
);
629 osync_objformat_unref(format1
);
630 osync_objformat_unref(format2
);
631 osync_objformat_unref(format3
);
632 osync_objformat_unref(format4
);
634 destroy_testbed(testbed
);
638 START_TEST (conv_find_multi_path_with_preferred
)
640 char *testbed
= setup_testbed(NULL
);
642 OSyncError
*error
= NULL
;
643 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
644 fail_unless(env
!= NULL
, NULL
);
645 fail_unless(error
== NULL
, NULL
);
647 OSyncObjFormat
*format1
= osync_objformat_new("format1", "objtype", &error
);
648 fail_unless(format1
!= NULL
, NULL
);
649 fail_unless(error
== NULL
, NULL
);
650 osync_objformat_set_destroy_func(format1
, format_simple_destroy
);
651 osync_format_env_register_objformat(env
, format1
);
653 OSyncObjFormat
*format2
= osync_objformat_new("format2", "objtype", &error
);
654 fail_unless(format2
!= NULL
, NULL
);
655 fail_unless(error
== NULL
, NULL
);
656 osync_objformat_set_destroy_func(format2
, format_simple_destroy
);
657 osync_format_env_register_objformat(env
, format2
);
659 OSyncObjFormat
*format3
= osync_objformat_new("format3", "objtype", &error
);
660 fail_unless(format3
!= NULL
, NULL
);
661 fail_unless(error
== NULL
, NULL
);
662 osync_objformat_set_destroy_func(format3
, format_simple_destroy
);
663 osync_format_env_register_objformat(env
, format3
);
665 OSyncObjFormat
*format4
= osync_objformat_new("format4", "objtype", &error
);
666 fail_unless(format4
!= NULL
, NULL
);
667 fail_unless(error
== NULL
, NULL
);
668 osync_objformat_set_destroy_func(format4
, format_simple_destroy
);
669 osync_format_env_register_objformat(env
, format4
);
671 OSyncFormatConverter
*converter1
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format2
, convert_func
, &error
);
672 fail_unless(converter1
!= NULL
, NULL
);
673 fail_unless(error
== NULL
, NULL
);
674 osync_format_env_register_converter(env
, converter1
);
675 osync_converter_unref(converter1
);
677 OSyncFormatConverter
*converter2
= osync_converter_new(OSYNC_CONVERTER_CONV
, format2
, format4
, convert_func
, &error
);
678 fail_unless(converter2
!= NULL
, NULL
);
679 fail_unless(error
== NULL
, NULL
);
680 osync_format_env_register_converter(env
, converter2
);
681 osync_converter_unref(converter2
);
683 OSyncFormatConverter
*converter3
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format3
, convert_func
, &error
);
684 fail_unless(converter3
!= NULL
, NULL
);
685 fail_unless(error
== NULL
, NULL
);
686 osync_format_env_register_converter(env
, converter3
);
687 osync_converter_unref(converter3
);
689 OSyncFormatConverter
*converter4
= osync_converter_new(OSYNC_CONVERTER_CONV
, format3
, format4
, convert_func
, &error
);
690 fail_unless(converter4
!= NULL
, NULL
);
691 fail_unless(error
== NULL
, NULL
);
692 osync_format_env_register_converter(env
, converter4
);
693 osync_converter_unref(converter4
);
695 OSyncData
*data1
= osync_data_new(g_strdup("data"), 5, format1
, &error
);
696 fail_unless(data1
!= NULL
, NULL
);
697 fail_unless(error
== NULL
, NULL
);
699 OSyncFormatConverterPath
*path
= osync_format_env_find_path_with_detectors(env
, data1
, format4
, "format3", &error
);
700 fail_unless(path
!= NULL
, NULL
);
701 fail_unless(error
== NULL
, NULL
);
703 fail_unless(osync_converter_path_num_edges(path
) == 2, NULL
);
704 fail_unless(osync_converter_path_nth_edge(path
, 0) == converter3
, NULL
);
705 fail_unless(osync_converter_path_nth_edge(path
, 1) == converter4
, NULL
);
707 osync_converter_path_unref(path
);
709 osync_format_env_unref(env
);
711 osync_data_unref(data1
);
712 osync_objformat_unref(format1
);
713 osync_objformat_unref(format2
);
714 osync_objformat_unref(format3
);
715 osync_objformat_unref(format4
);
717 destroy_testbed(testbed
);
721 START_TEST (conv_find_circular_false
)
723 char *testbed
= setup_testbed(NULL
);
725 OSyncError
*error
= NULL
;
726 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
727 fail_unless(env
!= NULL
, NULL
);
728 fail_unless(error
== NULL
, NULL
);
730 OSyncObjFormat
*format1
= osync_objformat_new("format1", "objtype", &error
);
731 fail_unless(format1
!= NULL
, NULL
);
732 fail_unless(error
== NULL
, NULL
);
733 osync_format_env_register_objformat(env
, format1
);
735 OSyncObjFormat
*format2
= osync_objformat_new("format2", "objtype", &error
);
736 fail_unless(format2
!= NULL
, NULL
);
737 fail_unless(error
== NULL
, NULL
);
738 osync_format_env_register_objformat(env
, format2
);
740 OSyncObjFormat
*format3
= osync_objformat_new("format3", "objtype", &error
);
741 fail_unless(format3
!= NULL
, NULL
);
742 fail_unless(error
== NULL
, NULL
);
743 osync_format_env_register_objformat(env
, format3
);
745 OSyncObjFormat
*format4
= osync_objformat_new("format4", "objtype", &error
);
746 fail_unless(format4
!= NULL
, NULL
);
747 fail_unless(error
== NULL
, NULL
);
748 osync_format_env_register_objformat(env
, format4
);
750 OSyncFormatConverter
*converter1
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format2
, convert_func
, &error
);
751 fail_unless(converter1
!= NULL
, NULL
);
752 fail_unless(error
== NULL
, NULL
);
753 osync_format_env_register_converter(env
, converter1
);
754 osync_converter_unref(converter1
);
756 OSyncFormatConverter
*converter2
= osync_converter_new(OSYNC_CONVERTER_CONV
, format2
, format3
, convert_func
, &error
);
757 fail_unless(converter2
!= NULL
, NULL
);
758 fail_unless(error
== NULL
, NULL
);
759 osync_format_env_register_converter(env
, converter2
);
760 osync_converter_unref(converter2
);
762 OSyncFormatConverter
*converter3
= osync_converter_new(OSYNC_CONVERTER_CONV
, format3
, format1
, convert_func
, &error
);
763 fail_unless(converter3
!= NULL
, NULL
);
764 fail_unless(error
== NULL
, NULL
);
765 osync_format_env_register_converter(env
, converter3
);
766 osync_converter_unref(converter3
);
768 OSyncData
*data1
= osync_data_new("data", 5, format1
, &error
);
769 fail_unless(data1
!= NULL
, NULL
);
770 fail_unless(error
== NULL
, NULL
);
773 OSyncFormatConverterPath
*path
= osync_format_env_find_path_with_detectors(env
, data1
, format4
, NULL
, &error
);
774 fail_unless(path
== NULL
, NULL
);
775 fail_unless(error
!= NULL
, NULL
);
776 osync_error_unref(&error
);
778 osync_format_env_unref(env
);
780 osync_data_unref(data1
);
781 osync_objformat_unref(format1
);
782 osync_objformat_unref(format2
);
783 osync_objformat_unref(format3
);
784 osync_objformat_unref(format4
);
786 destroy_testbed(testbed
);
790 START_TEST (conv_find_complex
)
792 char *testbed
= setup_testbed(NULL
);
794 OSyncError
*error
= NULL
;
795 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
796 fail_unless(env
!= NULL
, NULL
);
797 fail_unless(error
== NULL
, NULL
);
799 OSyncObjFormat
*format1
= osync_objformat_new("format1", "objtype", &error
);
800 fail_unless(format1
!= NULL
, NULL
);
801 fail_unless(error
== NULL
, NULL
);
802 osync_objformat_set_destroy_func(format1
, format_simple_destroy
);
803 osync_format_env_register_objformat(env
, format1
);
805 OSyncObjFormat
*format2
= osync_objformat_new("format2", "objtype", &error
);
806 fail_unless(format2
!= NULL
, NULL
);
807 fail_unless(error
== NULL
, NULL
);
808 osync_objformat_set_destroy_func(format2
, format_simple_destroy
);
809 osync_format_env_register_objformat(env
, format2
);
811 OSyncObjFormat
*format3
= osync_objformat_new("format3", "objtype", &error
);
812 fail_unless(format3
!= NULL
, NULL
);
813 fail_unless(error
== NULL
, NULL
);
814 osync_objformat_set_destroy_func(format3
, format_simple_destroy
);
815 osync_format_env_register_objformat(env
, format3
);
817 OSyncObjFormat
*format4
= osync_objformat_new("format4", "objtype", &error
);
818 fail_unless(format4
!= NULL
, NULL
);
819 fail_unless(error
== NULL
, NULL
);
820 osync_objformat_set_destroy_func(format4
, format_simple_destroy
);
821 osync_format_env_register_objformat(env
, format4
);
823 OSyncObjFormat
*format5
= osync_objformat_new("format5", "objtype", &error
);
824 fail_unless(format5
!= NULL
, NULL
);
825 fail_unless(error
== NULL
, NULL
);
826 osync_objformat_set_destroy_func(format5
, format_simple_destroy
);
827 osync_format_env_register_objformat(env
, format5
);
829 OSyncObjFormat
*format6
= osync_objformat_new("format6", "objtype", &error
);
830 fail_unless(format6
!= NULL
, NULL
);
831 fail_unless(error
== NULL
, NULL
);
832 osync_objformat_set_destroy_func(format6
, format_simple_destroy
);
833 osync_format_env_register_objformat(env
, format6
);
835 OSyncObjFormat
*format7
= osync_objformat_new("format7", "objtype", &error
);
836 fail_unless(format7
!= NULL
, NULL
);
837 fail_unless(error
== NULL
, NULL
);
838 osync_objformat_set_destroy_func(format7
, format_simple_destroy
);
839 osync_format_env_register_objformat(env
, format7
);
841 OSyncObjFormat
*format8
= osync_objformat_new("format8", "objtype", &error
);
842 fail_unless(format8
!= NULL
, NULL
);
843 fail_unless(error
== NULL
, NULL
);
844 osync_objformat_set_destroy_func(format8
, format_simple_destroy
);
845 osync_format_env_register_objformat(env
, format8
);
847 OSyncFormatConverter
*converter1
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format2
, convert_func
, &error
);
848 fail_unless(converter1
!= NULL
, NULL
);
849 fail_unless(error
== NULL
, NULL
);
850 osync_format_env_register_converter(env
, converter1
);
851 osync_converter_unref(converter1
);
853 OSyncFormatConverter
*converter2
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format3
, convert_func
, &error
);
854 fail_unless(converter2
!= NULL
, NULL
);
855 fail_unless(error
== NULL
, NULL
);
856 osync_format_env_register_converter(env
, converter2
);
857 osync_converter_unref(converter2
);
859 OSyncFormatConverter
*converter3
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format4
, convert_func
, &error
);
860 fail_unless(converter3
!= NULL
, NULL
);
861 fail_unless(error
== NULL
, NULL
);
862 osync_format_env_register_converter(env
, converter3
);
863 osync_converter_unref(converter3
);
865 OSyncFormatConverter
*converter4
= osync_converter_new(OSYNC_CONVERTER_CONV
, format3
, format5
, convert_func
, &error
);
866 fail_unless(converter4
!= NULL
, NULL
);
867 fail_unless(error
== NULL
, NULL
);
868 osync_format_env_register_converter(env
, converter4
);
869 osync_converter_unref(converter4
);
871 OSyncFormatConverter
*converter5
= osync_converter_new(OSYNC_CONVERTER_CONV
, format4
, format7
, convert_func
, &error
);
872 fail_unless(converter5
!= NULL
, NULL
);
873 fail_unless(error
== NULL
, NULL
);
874 osync_format_env_register_converter(env
, converter5
);
875 osync_converter_unref(converter5
);
877 OSyncFormatConverter
*converter6
= osync_converter_new(OSYNC_CONVERTER_CONV
, format5
, format7
, convert_func
, &error
);
878 fail_unless(converter6
!= NULL
, NULL
);
879 fail_unless(error
== NULL
, NULL
);
880 osync_format_env_register_converter(env
, converter6
);
881 osync_converter_unref(converter6
);
883 OSyncFormatConverter
*converter7
= osync_converter_new(OSYNC_CONVERTER_CONV
, format7
, format8
, convert_func
, &error
);
884 fail_unless(converter7
!= NULL
, NULL
);
885 fail_unless(error
== NULL
, NULL
);
886 osync_format_env_register_converter(env
, converter7
);
887 osync_converter_unref(converter7
);
889 OSyncFormatConverter
*converter8
= osync_converter_new(OSYNC_CONVERTER_CONV
, format8
, format6
, convert_func
, &error
);
890 fail_unless(converter8
!= NULL
, NULL
);
891 fail_unless(error
== NULL
, NULL
);
892 osync_format_env_register_converter(env
, converter8
);
893 osync_converter_unref(converter8
);
895 OSyncFormatConverter
*converter9
= osync_converter_new(OSYNC_CONVERTER_CONV
, format5
, format6
, convert_func
, &error
);
896 fail_unless(converter9
!= NULL
, NULL
);
897 fail_unless(error
== NULL
, NULL
);
898 osync_format_env_register_converter(env
, converter9
);
899 osync_converter_unref(converter9
);
901 OSyncData
*data1
= osync_data_new(g_strdup("data"), 5, format1
, &error
);
902 fail_unless(data1
!= NULL
, NULL
);
903 fail_unless(error
== NULL
, NULL
);
905 OSyncFormatConverterPath
*path
= osync_format_env_find_path_with_detectors(env
, data1
, format6
, NULL
, &error
);
906 fail_unless(path
!= NULL
, NULL
);
907 fail_unless(error
== NULL
, NULL
);
909 fail_unless(osync_converter_path_num_edges(path
) == 3, NULL
);
910 fail_unless(osync_converter_path_nth_edge(path
, 0) == converter2
, NULL
);
911 fail_unless(osync_converter_path_nth_edge(path
, 1) == converter4
, NULL
);
912 fail_unless(osync_converter_path_nth_edge(path
, 2) == converter9
, NULL
);
914 osync_converter_path_unref(path
);
916 osync_format_env_unref(env
);
918 osync_data_unref(data1
);
919 osync_objformat_unref(format1
);
920 osync_objformat_unref(format2
);
921 osync_objformat_unref(format3
);
922 osync_objformat_unref(format4
);
923 osync_objformat_unref(format5
);
924 osync_objformat_unref(format6
);
925 osync_objformat_unref(format7
);
926 osync_objformat_unref(format8
);
928 destroy_testbed(testbed
);
932 START_TEST (conv_find_multi_target
)
934 char *testbed
= setup_testbed(NULL
);
936 OSyncError
*error
= NULL
;
937 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
938 fail_unless(env
!= NULL
, NULL
);
939 fail_unless(error
== NULL
, NULL
);
941 OSyncObjFormat
*format1
= osync_objformat_new("format1", "objtype", &error
);
942 fail_unless(format1
!= NULL
, NULL
);
943 fail_unless(error
== NULL
, NULL
);
944 osync_format_env_register_objformat(env
, format1
);
946 OSyncObjFormat
*format2
= osync_objformat_new("format2", "objtype", &error
);
947 fail_unless(format2
!= NULL
, NULL
);
948 fail_unless(error
== NULL
, NULL
);
949 osync_format_env_register_objformat(env
, format2
);
951 OSyncObjFormat
*format3
= osync_objformat_new("format3", "objtype", &error
);
952 fail_unless(format3
!= NULL
, NULL
);
953 fail_unless(error
== NULL
, NULL
);
954 osync_format_env_register_objformat(env
, format3
);
956 OSyncFormatConverter
*converter1
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format2
, convert_func
, &error
);
957 fail_unless(converter1
!= NULL
, NULL
);
958 fail_unless(error
== NULL
, NULL
);
959 osync_format_env_register_converter(env
, converter1
);
960 osync_converter_unref(converter1
);
962 OSyncFormatConverter
*converter2
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format3
, convert_func
, &error
);
963 fail_unless(converter2
!= NULL
, NULL
);
964 fail_unless(error
== NULL
, NULL
);
965 osync_format_env_register_converter(env
, converter2
);
966 osync_converter_unref(converter2
);
968 OSyncList
*targets
= NULL
;
969 targets
= osync_list_prepend(targets
, format2
);
970 targets
= osync_list_prepend(targets
, format3
);
972 OSyncData
*data1
= osync_data_new("data", 5, format1
, &error
);
973 fail_unless(data1
!= NULL
, NULL
);
974 fail_unless(error
== NULL
, NULL
);
976 OSyncFormatConverterPath
*path
= osync_format_env_find_path_formats_with_detectors(env
, data1
, targets
, NULL
, &error
);
977 fail_unless(path
!= NULL
, NULL
);
978 fail_unless(error
== NULL
, NULL
);
980 fail_unless(osync_converter_path_num_edges(path
) == 1, NULL
);
981 fail_unless(osync_converter_path_nth_edge(path
, 0) == converter1
, NULL
);
983 osync_converter_path_unref(path
);
985 osync_format_env_unref(env
);
987 osync_data_unref(data1
);
988 osync_objformat_unref(format1
);
989 osync_objformat_unref(format2
);
990 osync_objformat_unref(format3
);
992 destroy_testbed(testbed
);
996 START_TEST (conv_find_multi_target2
)
998 char *testbed
= setup_testbed(NULL
);
1000 OSyncError
*error
= NULL
;
1001 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
1002 fail_unless(env
!= NULL
, NULL
);
1003 fail_unless(error
== NULL
, NULL
);
1005 OSyncObjFormat
*format1
= osync_objformat_new("format1", "objtype", &error
);
1006 fail_unless(format1
!= NULL
, NULL
);
1007 fail_unless(error
== NULL
, NULL
);
1008 osync_format_env_register_objformat(env
, format1
);
1010 OSyncObjFormat
*format2
= osync_objformat_new("format2", "objtype", &error
);
1011 fail_unless(format2
!= NULL
, NULL
);
1012 fail_unless(error
== NULL
, NULL
);
1013 osync_format_env_register_objformat(env
, format2
);
1015 OSyncObjFormat
*format3
= osync_objformat_new("format3", "objtype", &error
);
1016 fail_unless(format3
!= NULL
, NULL
);
1017 fail_unless(error
== NULL
, NULL
);
1018 osync_format_env_register_objformat(env
, format3
);
1020 OSyncObjFormat
*format4
= osync_objformat_new("format4", "objtype", &error
);
1021 fail_unless(format4
!= NULL
, NULL
);
1022 fail_unless(error
== NULL
, NULL
);
1023 osync_format_env_register_objformat(env
, format4
);
1025 OSyncFormatConverter
*converter1
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format2
, convert_func
, &error
);
1026 fail_unless(converter1
!= NULL
, NULL
);
1027 fail_unless(error
== NULL
, NULL
);
1028 osync_format_env_register_converter(env
, converter1
);
1029 osync_converter_unref(converter1
);
1031 OSyncFormatConverter
*converter2
= osync_converter_new(OSYNC_CONVERTER_CONV
, format2
, format4
, convert_func
, &error
);
1032 fail_unless(converter2
!= NULL
, NULL
);
1033 fail_unless(error
== NULL
, NULL
);
1034 osync_format_env_register_converter(env
, converter2
);
1035 osync_converter_unref(converter2
);
1037 OSyncFormatConverter
*converter3
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format3
, convert_func
, &error
);
1038 fail_unless(converter3
!= NULL
, NULL
);
1039 fail_unless(error
== NULL
, NULL
);
1040 osync_format_env_register_converter(env
, converter3
);
1041 osync_converter_unref(converter3
);
1043 OSyncList
*targets
= NULL
;
1044 targets
= osync_list_prepend(targets
, format4
);
1045 targets
= osync_list_prepend(targets
, format3
);
1047 OSyncData
*data1
= osync_data_new("data", 5, format1
, &error
);
1048 fail_unless(data1
!= NULL
, NULL
);
1049 fail_unless(error
== NULL
, NULL
);
1051 OSyncFormatConverterPath
*path
= osync_format_env_find_path_formats_with_detectors(env
, data1
, targets
, NULL
, &error
);
1052 fail_unless(path
!= NULL
, NULL
);
1053 fail_unless(error
== NULL
, NULL
);
1055 fail_unless(osync_converter_path_num_edges(path
) == 1, NULL
);
1056 fail_unless(osync_converter_path_nth_edge(path
, 0) == converter3
, NULL
);
1058 osync_converter_path_unref(path
);
1060 osync_format_env_unref(env
);
1062 osync_data_unref(data1
);
1063 osync_objformat_unref(format1
);
1064 osync_objformat_unref(format2
);
1065 osync_objformat_unref(format3
);
1066 osync_objformat_unref(format4
);
1068 destroy_testbed(testbed
);
1072 START_TEST (conv_find_multi_path_multi_target
)
1074 char *testbed
= setup_testbed(NULL
);
1076 OSyncError
*error
= NULL
;
1077 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
1078 fail_unless(env
!= NULL
, NULL
);
1079 fail_unless(error
== NULL
, NULL
);
1081 OSyncObjFormat
*format1
= osync_objformat_new("format1", "objtype", &error
);
1082 fail_unless(format1
!= NULL
, NULL
);
1083 fail_unless(error
== NULL
, NULL
);
1084 osync_objformat_set_destroy_func(format1
, format_simple_destroy
);
1085 osync_format_env_register_objformat(env
, format1
);
1087 OSyncObjFormat
*format2
= osync_objformat_new("format2", "objtype", &error
);
1088 fail_unless(format2
!= NULL
, NULL
);
1089 fail_unless(error
== NULL
, NULL
);
1090 osync_objformat_set_destroy_func(format2
, format_simple_destroy
);
1091 osync_format_env_register_objformat(env
, format2
);
1093 OSyncObjFormat
*format3
= osync_objformat_new("format3", "objtype", &error
);
1094 fail_unless(format3
!= NULL
, NULL
);
1095 fail_unless(error
== NULL
, NULL
);
1096 osync_objformat_set_destroy_func(format3
, format_simple_destroy
);
1097 osync_format_env_register_objformat(env
, format3
);
1099 OSyncObjFormat
*format4
= osync_objformat_new("format4", "objtype", &error
);
1100 fail_unless(format4
!= NULL
, NULL
);
1101 fail_unless(error
== NULL
, NULL
);
1102 osync_objformat_set_destroy_func(format4
, format_simple_destroy
);
1103 osync_format_env_register_objformat(env
, format4
);
1105 OSyncObjFormat
*format5
= osync_objformat_new("format5", "objtype", &error
);
1106 fail_unless(format5
!= NULL
, NULL
);
1107 fail_unless(error
== NULL
, NULL
);
1108 osync_objformat_set_destroy_func(format5
, format_simple_destroy
);
1109 osync_format_env_register_objformat(env
, format5
);
1111 OSyncFormatConverter
*converter1
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format2
, convert_func
, &error
);
1112 fail_unless(converter1
!= NULL
, NULL
);
1113 fail_unless(error
== NULL
, NULL
);
1114 osync_format_env_register_converter(env
, converter1
);
1115 osync_converter_unref(converter1
);
1117 OSyncFormatConverter
*converter2
= osync_converter_new(OSYNC_CONVERTER_CONV
, format2
, format4
, convert_func
, &error
);
1118 fail_unless(converter2
!= NULL
, NULL
);
1119 fail_unless(error
== NULL
, NULL
);
1120 osync_format_env_register_converter(env
, converter2
);
1121 osync_converter_unref(converter2
);
1123 OSyncFormatConverter
*converter3
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format3
, convert_func
, &error
);
1124 fail_unless(converter3
!= NULL
, NULL
);
1125 fail_unless(error
== NULL
, NULL
);
1126 osync_format_env_register_converter(env
, converter3
);
1127 osync_converter_unref(converter3
);
1129 OSyncFormatConverter
*converter4
= osync_converter_new(OSYNC_CONVERTER_CONV
, format3
, format4
, convert_func
, &error
);
1130 fail_unless(converter4
!= NULL
, NULL
);
1131 fail_unless(error
== NULL
, NULL
);
1132 osync_format_env_register_converter(env
, converter4
);
1133 osync_converter_unref(converter4
);
1135 OSyncFormatConverter
*converter5
= osync_converter_new(OSYNC_CONVERTER_CONV
, format3
, format5
, convert_func
, &error
);
1136 fail_unless(converter5
!= NULL
, NULL
);
1137 fail_unless(error
== NULL
, NULL
);
1138 osync_format_env_register_converter(env
, converter5
);
1139 osync_converter_unref(converter5
);
1141 OSyncList
*targets
= NULL
;
1142 targets
= osync_list_prepend(targets
, format4
);
1143 targets
= osync_list_prepend(targets
, format5
);
1145 OSyncData
*data1
= osync_data_new(g_strdup("data"), 5, format1
, &error
);
1146 fail_unless(data1
!= NULL
, NULL
);
1147 fail_unless(error
== NULL
, NULL
);
1149 OSyncFormatConverterPath
*path
= osync_format_env_find_path_formats_with_detectors(env
, data1
, targets
, NULL
, &error
);
1150 fail_unless(path
!= NULL
, NULL
);
1151 fail_unless(error
== NULL
, NULL
);
1153 fail_unless(osync_converter_path_num_edges(path
) == 2, NULL
);
1154 fail_unless(osync_converter_path_nth_edge(path
, 0) == converter1
, NULL
);
1155 fail_unless(osync_converter_path_nth_edge(path
, 1) == converter2
, NULL
);
1157 osync_converter_path_unref(path
);
1159 osync_format_env_unref(env
);
1161 osync_data_unref(data1
);
1162 osync_objformat_unref(format1
);
1163 osync_objformat_unref(format2
);
1164 osync_objformat_unref(format3
);
1165 osync_objformat_unref(format4
);
1166 osync_objformat_unref(format5
);
1168 destroy_testbed(testbed
);
1172 START_TEST (conv_find_multi_path_multi_target_with_preferred
)
1174 char *testbed
= setup_testbed(NULL
);
1176 OSyncError
*error
= NULL
;
1177 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
1178 fail_unless(env
!= NULL
, NULL
);
1179 fail_unless(error
== NULL
, NULL
);
1181 OSyncObjFormat
*format1
= osync_objformat_new("format1", "objtype", &error
);
1182 fail_unless(format1
!= NULL
, NULL
);
1183 fail_unless(error
== NULL
, NULL
);
1184 osync_objformat_set_destroy_func(format1
, format_simple_destroy
);
1185 osync_format_env_register_objformat(env
, format1
);
1187 OSyncObjFormat
*format2
= osync_objformat_new("format2", "objtype", &error
);
1188 fail_unless(format2
!= NULL
, NULL
);
1189 fail_unless(error
== NULL
, NULL
);
1190 osync_objformat_set_destroy_func(format2
, format_simple_destroy
);
1191 osync_format_env_register_objformat(env
, format2
);
1193 OSyncObjFormat
*format3
= osync_objformat_new("format3", "objtype", &error
);
1194 fail_unless(format3
!= NULL
, NULL
);
1195 fail_unless(error
== NULL
, NULL
);
1196 osync_objformat_set_destroy_func(format3
, format_simple_destroy
);
1197 osync_format_env_register_objformat(env
, format3
);
1199 OSyncObjFormat
*format4
= osync_objformat_new("format4", "objtype", &error
);
1200 fail_unless(format4
!= NULL
, NULL
);
1201 fail_unless(error
== NULL
, NULL
);
1202 osync_objformat_set_destroy_func(format4
, format_simple_destroy
);
1203 osync_format_env_register_objformat(env
, format4
);
1205 OSyncObjFormat
*format5
= osync_objformat_new("format5", "objtype", &error
);
1206 fail_unless(format5
!= NULL
, NULL
);
1207 fail_unless(error
== NULL
, NULL
);
1208 osync_objformat_set_destroy_func(format5
, format_simple_destroy
);
1209 osync_format_env_register_objformat(env
, format5
);
1211 OSyncFormatConverter
*converter1
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format2
, convert_func
, &error
);
1212 fail_unless(converter1
!= NULL
, NULL
);
1213 fail_unless(error
== NULL
, NULL
);
1214 osync_format_env_register_converter(env
, converter1
);
1215 osync_converter_unref(converter1
);
1217 OSyncFormatConverter
*converter2
= osync_converter_new(OSYNC_CONVERTER_CONV
, format2
, format4
, convert_func
, &error
);
1218 fail_unless(converter2
!= NULL
, NULL
);
1219 fail_unless(error
== NULL
, NULL
);
1220 osync_format_env_register_converter(env
, converter2
);
1221 osync_converter_unref(converter2
);
1223 OSyncFormatConverter
*converter3
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format3
, convert_func
, &error
);
1224 fail_unless(converter3
!= NULL
, NULL
);
1225 fail_unless(error
== NULL
, NULL
);
1226 osync_format_env_register_converter(env
, converter3
);
1227 osync_converter_unref(converter3
);
1229 OSyncFormatConverter
*converter4
= osync_converter_new(OSYNC_CONVERTER_CONV
, format3
, format4
, convert_func
, &error
);
1230 fail_unless(converter4
!= NULL
, NULL
);
1231 fail_unless(error
== NULL
, NULL
);
1232 osync_format_env_register_converter(env
, converter4
);
1233 osync_converter_unref(converter4
);
1235 OSyncFormatConverter
*converter5
= osync_converter_new(OSYNC_CONVERTER_CONV
, format3
, format5
, convert_func
, &error
);
1236 fail_unless(converter5
!= NULL
, NULL
);
1237 fail_unless(error
== NULL
, NULL
);
1238 osync_format_env_register_converter(env
, converter5
);
1239 osync_converter_unref(converter5
);
1241 OSyncList
*targets
= NULL
;
1242 targets
= osync_list_prepend(targets
, format4
);
1243 targets
= osync_list_prepend(targets
, format5
);
1245 OSyncData
*data1
= osync_data_new(g_strdup("data"), 5, format1
, &error
);
1246 fail_unless(data1
!= NULL
, NULL
);
1247 fail_unless(error
== NULL
, NULL
);
1249 OSyncFormatConverterPath
*path
= osync_format_env_find_path_formats_with_detectors(env
, data1
, targets
, "format5", &error
);
1250 fail_unless(path
!= NULL
, NULL
);
1251 fail_unless(error
== NULL
, NULL
);
1253 fail_unless(osync_converter_path_num_edges(path
) == 2, NULL
);
1254 fail_unless(osync_converter_path_nth_edge(path
, 0) == converter3
, NULL
);
1255 fail_unless(osync_converter_path_nth_edge(path
, 1) == converter5
, NULL
);
1257 osync_converter_path_unref(path
);
1259 osync_format_env_unref(env
);
1261 osync_data_unref(data1
);
1262 osync_objformat_unref(format1
);
1263 osync_objformat_unref(format2
);
1264 osync_objformat_unref(format3
);
1265 osync_objformat_unref(format4
);
1266 osync_objformat_unref(format5
);
1268 destroy_testbed(testbed
);
1272 static osync_bool
convert_addtest(char *input
, unsigned int inpsize
, char **output
, unsigned int *outpsize
, osync_bool
*free_input
, const char *config
, void *userdata
, OSyncError
**error
)
1275 *output
= g_strdup_printf("%stest", input
);
1276 *outpsize
= inpsize
+ 4;
1280 static osync_bool
convert_remtest(char *input
, unsigned int inpsize
, char **output
, unsigned int *outpsize
, osync_bool
*free_input
, const char *config
, void *userdata
, OSyncError
**error
)
1283 *output
= strdup(input
);
1284 char *test
= g_strrstr(*output
, "test");
1288 *outpsize
= inpsize
- 4;
1296 static osync_bool
convert_addtest2(char *input
, unsigned int inpsize
, char **output
, unsigned int *outpsize
, osync_bool
*free_input
, const char *config
, void *userdata
, OSyncError
**error
)
1298 *output
= g_strdup_printf("%stest2", input
);
1299 *outpsize
= inpsize
+ 5;
1304 static osync_bool
convert_remtest2(char *input
, unsigned int inpsize
, char **output
, unsigned int *outpsize
, osync_bool
*free_input
, const char *config
, void *userdata
, OSyncError
**error
)
1307 *output
= strdup(input
);
1308 char *test
= g_strrstr(*output
, "test2");
1312 *outpsize
= inpsize
- 4;
1320 START_TEST (conv_env_convert1
)
1322 OSyncError
*error
= NULL
;
1323 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
1324 fail_unless(env
!= NULL
, NULL
);
1325 fail_unless(error
== NULL
, NULL
);
1327 OSyncObjFormat
*format1
= osync_objformat_new("F1", "O1", &error
);
1328 fail_unless(format1
!= NULL
, NULL
);
1329 fail_unless(error
== NULL
, NULL
);
1330 osync_format_env_register_objformat(env
, format1
);
1331 osync_objformat_set_destroy_func(format1
, format_simple_destroy
);
1333 OSyncObjFormat
*format2
= osync_objformat_new("F2", "O1", &error
);
1334 fail_unless(format2
!= NULL
, NULL
);
1335 fail_unless(error
== NULL
, NULL
);
1336 osync_format_env_register_objformat(env
, format2
);
1337 osync_objformat_set_destroy_func(format2
, format_simple_destroy
);
1339 OSyncObjFormat
*format3
= osync_objformat_new("F3", "O1", &error
);
1340 fail_unless(format3
!= NULL
, NULL
);
1341 fail_unless(error
== NULL
, NULL
);
1342 osync_format_env_register_objformat(env
, format3
);
1343 osync_objformat_set_destroy_func(format3
, format_simple_destroy
);
1345 OSyncFormatConverter
*converter1
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format2
, convert_addtest
, &error
);
1346 fail_unless(converter1
!= NULL
, NULL
);
1347 fail_unless(error
== NULL
, NULL
);
1348 osync_format_env_register_converter(env
, converter1
);
1349 osync_converter_unref(converter1
);
1351 OSyncFormatConverter
*converter2
= osync_converter_new(OSYNC_CONVERTER_CONV
, format2
, format3
, convert_addtest2
, &error
);
1352 fail_unless(converter2
!= NULL
, NULL
);
1353 fail_unless(error
== NULL
, NULL
);
1354 osync_format_env_register_converter(env
, converter2
);
1355 osync_converter_unref(converter2
);
1359 OSyncData
*data
= osync_data_new(g_strdup("data"), 5, format1
, &error
);
1360 fail_unless(data
!= NULL
, NULL
);
1361 fail_unless(error
== NULL
, NULL
);
1365 OSyncFormatConverterPath
*path
= NULL
;
1366 path
= osync_format_env_find_path_with_detectors(env
, data
, format3
, NULL
, &error
);
1367 osync_format_env_convert(env
, path
, data
, &error
);
1368 fail_unless(error
== NULL
, NULL
);
1372 osync_data_get_data(data
, &buf
, &size
);
1374 fail_unless(buf
!= NULL
, NULL
);
1375 fail_unless(!strcmp(buf
, "datatesttest2"), NULL
);
1376 OSyncObjFormat
*format
= osync_data_get_objformat(data
);
1377 fail_unless(format
== format3
, NULL
);
1381 START_TEST (conv_env_convert_back
)
1383 OSyncError
*error
= NULL
;
1384 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
1385 fail_unless(env
!= NULL
, NULL
);
1386 fail_unless(error
== NULL
, NULL
);
1388 OSyncObjFormat
*format1
= osync_objformat_new("F1", "O1", &error
);
1389 fail_unless(format1
!= NULL
, NULL
);
1390 fail_unless(error
== NULL
, NULL
);
1391 osync_objformat_set_destroy_func(format1
, format_simple_destroy
);
1392 osync_format_env_register_objformat(env
, format1
);
1394 OSyncObjFormat
*format2
= osync_objformat_new("F2", "O1", &error
);
1395 fail_unless(format2
!= NULL
, NULL
);
1396 fail_unless(error
== NULL
, NULL
);
1397 osync_objformat_set_destroy_func(format2
, format_simple_destroy
);
1398 osync_format_env_register_objformat(env
, format2
);
1400 OSyncObjFormat
*format3
= osync_objformat_new("F3", "O1", &error
);
1401 fail_unless(format3
!= NULL
, NULL
);
1402 fail_unless(error
== NULL
, NULL
);
1403 osync_objformat_set_destroy_func(format3
, format_simple_destroy
);
1404 osync_format_env_register_objformat(env
, format3
);
1406 OSyncFormatConverter
*converter1
= osync_converter_new(OSYNC_CONVERTER_CONV
, format1
, format2
, convert_addtest
, &error
);
1407 fail_unless(converter1
!= NULL
, NULL
);
1408 fail_unless(error
== NULL
, NULL
);
1409 osync_format_env_register_converter(env
, converter1
);
1410 osync_converter_unref(converter1
);
1412 OSyncFormatConverter
*converter1_back
= osync_converter_new(OSYNC_CONVERTER_CONV
, format2
, format1
, convert_remtest
, &error
);
1413 fail_unless(converter1_back
!= NULL
, NULL
);
1414 fail_unless(error
== NULL
, NULL
);
1415 osync_format_env_register_converter(env
, converter1_back
);
1416 osync_converter_unref(converter1_back
);
1418 OSyncFormatConverter
*converter2
= osync_converter_new(OSYNC_CONVERTER_CONV
, format2
, format3
, convert_addtest2
, &error
);
1419 fail_unless(converter2
!= NULL
, NULL
);
1420 fail_unless(error
== NULL
, NULL
);
1421 osync_format_env_register_converter(env
, converter2
);
1422 osync_converter_unref(converter2
);
1424 OSyncFormatConverter
*converter2_back
= osync_converter_new(OSYNC_CONVERTER_CONV
, format3
, format2
, convert_remtest2
, &error
);
1425 fail_unless(converter2_back
!= NULL
, NULL
);
1426 fail_unless(error
== NULL
, NULL
);
1427 osync_format_env_register_converter(env
, converter2_back
);
1428 osync_converter_unref(converter2_back
);
1432 OSyncData
*data
= osync_data_new(g_strdup("data"), 5, format1
, &error
);
1433 fail_unless(data
!= NULL
, NULL
);
1434 fail_unless(error
== NULL
, NULL
);
1438 OSyncFormatConverterPath
*path
= NULL
;
1439 path
= osync_format_env_find_path_with_detectors(env
, data
, format3
, NULL
, &error
);
1440 osync_format_env_convert(env
, path
, data
, &error
);
1441 fail_unless(error
== NULL
, NULL
);
1445 osync_data_get_data(data
, &buf
, &size
);
1447 fail_unless(buf
!= NULL
, NULL
);
1448 fail_unless(!strcmp(buf
, "datatesttest2"), NULL
);
1449 OSyncObjFormat
*format
= osync_data_get_objformat(data
);
1450 fail_unless(format
== format3
, NULL
);
1451 fail_unless(path
!= NULL
, NULL
);
1456 path
= osync_format_env_find_path_with_detectors(env
, data
, format1
, NULL
, &error
);
1457 osync_format_env_convert(env
, path
, data
, &error
);
1458 fail_unless(error
== NULL
, NULL
);
1459 fail_unless(path
!= NULL
, NULL
);
1461 osync_data_get_data(data
, &buf
, &size
);
1463 fail_unless(buf
!= NULL
, NULL
);
1464 fail_unless(!strcmp(buf
, "data"), NULL
);
1465 format
= osync_data_get_objformat(data
);
1466 fail_unless(format
== format1
, NULL
);
1471 START_TEST (conv_env_convert_desenc
)
1473 OSyncError
*error
= NULL
;
1474 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
1475 fail_unless(env
!= NULL
, NULL
);
1476 fail_unless(error
== NULL
, NULL
);
1478 OSyncObjFormat
*format1
= osync_objformat_new("F1", "O1", &error
);
1479 fail_unless(format1
!= NULL
, NULL
);
1480 fail_unless(error
== NULL
, NULL
);
1481 osync_objformat_set_destroy_func(format1
, format_simple_destroy
);
1482 osync_format_env_register_objformat(env
, format1
);
1484 OSyncObjFormat
*format2
= osync_objformat_new("F2", "O1", &error
);
1485 fail_unless(format2
!= NULL
, NULL
);
1486 fail_unless(error
== NULL
, NULL
);
1487 osync_objformat_set_destroy_func(format2
, format_simple_destroy
);
1488 osync_format_env_register_objformat(env
, format2
);
1490 OSyncObjFormat
*format3
= osync_objformat_new("F3", "O1", &error
);
1491 fail_unless(format3
!= NULL
, NULL
);
1492 fail_unless(error
== NULL
, NULL
);
1493 osync_objformat_set_destroy_func(format3
, format_simple_destroy
);
1494 osync_format_env_register_objformat(env
, format3
);
1496 OSyncFormatConverter
*converter1
= osync_converter_new(OSYNC_CONVERTER_DECAP
, format1
, format2
, convert_addtest
, &error
);
1497 fail_unless(converter1
!= NULL
, NULL
);
1498 fail_unless(error
== NULL
, NULL
);
1499 osync_format_env_register_converter(env
, converter1
);
1500 osync_converter_unref(converter1
);
1502 OSyncFormatConverter
*converter1_back
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format2
, format1
, convert_remtest
, &error
);
1503 fail_unless(converter1_back
!= NULL
, NULL
);
1504 fail_unless(error
== NULL
, NULL
);
1505 osync_format_env_register_converter(env
, converter1_back
);
1506 osync_converter_unref(converter1_back
);
1508 OSyncFormatConverter
*converter2
= osync_converter_new(OSYNC_CONVERTER_DECAP
, format2
, format3
, convert_addtest2
, &error
);
1509 fail_unless(converter2
!= NULL
, NULL
);
1510 fail_unless(error
== NULL
, NULL
);
1511 osync_format_env_register_converter(env
, converter2
);
1512 osync_converter_unref(converter2
);
1514 OSyncFormatConverter
*converter2_back
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format3
, format2
, convert_remtest2
, &error
);
1515 fail_unless(converter2_back
!= NULL
, NULL
);
1516 fail_unless(error
== NULL
, NULL
);
1517 osync_format_env_register_converter(env
, converter2_back
);
1518 osync_converter_unref(converter2_back
);
1522 OSyncData
*data
= osync_data_new(g_strdup("data"), 5, format1
, &error
);
1523 fail_unless(data
!= NULL
, NULL
);
1524 fail_unless(error
== NULL
, NULL
);
1528 OSyncFormatConverterPath
*path
= NULL
;
1529 path
= osync_format_env_find_path_with_detectors(env
, data
, format3
, NULL
, &error
);
1530 osync_format_env_convert(env
, path
, data
, &error
);
1531 fail_unless(error
== NULL
, NULL
);
1535 osync_data_get_data(data
, &buf
, &size
);
1537 fail_unless(buf
!= NULL
, NULL
);
1538 fail_unless(!strcmp(buf
, "datatesttest2"), NULL
);
1539 OSyncObjFormat
*format
= osync_data_get_objformat(data
);
1540 fail_unless(format
== format3
, NULL
);
1541 fail_unless(path
!= NULL
, NULL
);
1546 path
= osync_format_env_find_path_with_detectors(env
, data
, format1
, NULL
, &error
);
1547 osync_format_env_convert(env
, path
, data
, &error
);
1548 fail_unless(error
== NULL
, NULL
);
1549 fail_unless(path
!= NULL
, NULL
);
1551 osync_data_get_data(data
, &buf
, &size
);
1553 fail_unless(buf
!= NULL
, NULL
);
1554 fail_unless(!strcmp(buf
, "data"), NULL
);
1555 format
= osync_data_get_objformat(data
);
1556 fail_unless(format
== format1
, NULL
);
1560 static osync_bool
detect_true(const char *data
, int size
, void *userdata
)
1565 static osync_bool
detect_false(const char *data
, int size
, void *userdata
)
1570 START_TEST (conv_env_convert_desenc_complex
)
1572 /* Test if the converter is going on the righ path, when the data detector
1573 * for the format reports a specific lower format
1576 OSyncError
*error
= NULL
;
1577 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
1578 fail_unless(env
!= NULL
, NULL
);
1579 fail_unless(error
== NULL
, NULL
);
1581 OSyncObjFormat
*format1
= osync_objformat_new("F1", "O1", &error
);
1582 osync_format_env_register_objformat(env
, format1
);
1583 osync_objformat_set_destroy_func(format1
, format_simple_destroy
);
1585 OSyncObjFormat
*format2
= osync_objformat_new("F2", "O1", &error
);
1586 osync_format_env_register_objformat(env
, format2
);
1587 osync_objformat_set_destroy_func(format2
, format_simple_destroy
);
1589 OSyncObjFormat
*format3
= osync_objformat_new("F3", "O1", &error
);
1590 osync_format_env_register_objformat(env
, format3
);
1591 osync_objformat_set_destroy_func(format3
, format_simple_destroy
);
1593 OSyncObjFormat
*format4
= osync_objformat_new("F4", "O1", &error
);
1594 osync_format_env_register_objformat(env
, format4
);
1595 osync_objformat_set_destroy_func(format4
, format_simple_destroy
);
1597 OSyncObjFormat
*format5
= osync_objformat_new("F5", "O1", &error
);
1598 osync_format_env_register_objformat(env
, format5
);
1599 osync_objformat_set_destroy_func(format5
, format_simple_destroy
);
1601 OSyncObjFormat
*format6
= osync_objformat_new("F6", "O1", &error
);
1602 osync_format_env_register_objformat(env
, format6
);
1603 osync_objformat_set_destroy_func(format6
, format_simple_destroy
);
1607 OSyncFormatConverter
*detector1
= osync_converter_new_detector(format2
, format4
, detect_true
, &error
);
1608 fail_unless(detector1
!= NULL
, NULL
);
1609 fail_unless(error
== NULL
, NULL
);
1610 osync_format_env_register_converter(env
, detector1
);
1611 // osync_converter_unref(detector1);
1613 OSyncFormatConverter
*detector2
= osync_converter_new_detector(format2
, format3
, detect_false
, &error
);
1614 fail_unless(detector2
!= NULL
, NULL
);
1615 fail_unless(error
== NULL
, NULL
);
1616 osync_format_env_register_converter(env
, detector2
);
1617 // osync_converter_unref(detector2);
1621 OSyncFormatConverter
*converter1
= osync_converter_new(OSYNC_CONVERTER_DECAP
, format1
, format2
, convert_addtest
, &error
);
1622 osync_format_env_register_converter(env
, converter1
);
1623 osync_converter_unref(converter1
);
1625 OSyncFormatConverter
*converter1_back
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format2
, format1
, convert_remtest
, &error
);
1626 osync_format_env_register_converter(env
, converter1_back
);
1627 osync_converter_unref(converter1_back
);
1629 OSyncFormatConverter
*converter2
= osync_converter_new(OSYNC_CONVERTER_DECAP
, format2
, format3
, convert_addtest2
, &error
);
1630 osync_format_env_register_converter(env
, converter2
);
1631 osync_converter_unref(converter2
);
1633 OSyncFormatConverter
*converter2_back
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format3
, format2
, convert_remtest2
, &error
);
1634 osync_format_env_register_converter(env
, converter2_back
);
1635 osync_converter_unref(converter2_back
);
1637 OSyncFormatConverter
*converter3
= osync_converter_new(OSYNC_CONVERTER_DECAP
, format2
, format4
, convert_addtest2
, &error
);
1638 osync_format_env_register_converter(env
, converter3
);
1639 osync_converter_unref(converter3
);
1641 OSyncFormatConverter
*converter3_back
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format4
, format2
, convert_remtest2
, &error
);
1642 osync_format_env_register_converter(env
, converter3_back
);
1643 osync_converter_unref(converter3_back
);
1645 OSyncFormatConverter
*converter4
= osync_converter_new(OSYNC_CONVERTER_CONV
, format3
, format6
, convert_addtest2
, &error
);
1646 osync_format_env_register_converter(env
, converter4
);
1647 osync_converter_unref(converter4
);
1649 OSyncFormatConverter
*converter5
= osync_converter_new(OSYNC_CONVERTER_CONV
, format4
, format5
, convert_addtest2
, &error
);
1650 osync_format_env_register_converter(env
, converter5
);
1651 osync_converter_unref(converter5
);
1653 OSyncFormatConverter
*converter6
= osync_converter_new(OSYNC_CONVERTER_CONV
, format5
, format4
, convert_remtest2
, &error
);
1654 osync_format_env_register_converter(env
, converter6
);
1655 osync_converter_unref(converter6
);
1657 OSyncFormatConverter
*converter7
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format5
, format6
, convert_addtest2
, &error
);
1658 osync_format_env_register_converter(env
, converter7
);
1659 osync_converter_unref(converter7
);
1661 OSyncFormatConverter
*converter7_back
= osync_converter_new(OSYNC_CONVERTER_DECAP
, format6
, format5
, convert_remtest2
, &error
);
1662 osync_format_env_register_converter(env
, converter7_back
);
1663 osync_converter_unref(converter7_back
);
1667 OSyncData
*data
= osync_data_new(g_strdup("data"), 5, format1
, &error
);
1668 fail_unless(data
!= NULL
, NULL
);
1669 fail_unless(error
== NULL
, NULL
);
1674 OSyncFormatConverterPath
*path
= NULL
;
1675 path
= osync_format_env_find_path_with_detectors(env
, data
, format6
, NULL
, &error
);
1676 fail_unless(path
!= NULL
, NULL
);
1678 osync_format_env_convert(env
, path
, data
, &error
);
1679 fail_unless(error
== NULL
, NULL
);
1683 osync_data_get_data(data
, &buf
, &size
);
1685 fail_unless(buf
!= NULL
, NULL
);
1686 fail_unless(!strcmp(buf
, "datatesttest2test2test2"), NULL
);
1687 OSyncObjFormat
*format
= osync_data_get_objformat(data
);
1688 fail_unless(format
== format6
, NULL
);
1692 path
= osync_format_env_find_path_with_detectors(env
, data
, format1
, NULL
, &error
);
1693 fail_unless(path
!= NULL
, NULL
);
1695 osync_format_env_convert(env
, path
, data
, &error
);
1696 fail_unless(error
== NULL
, NULL
);
1698 osync_data_get_data(data
, &buf
, &size
);
1700 fail_unless(buf
!= NULL
, NULL
);
1701 fail_unless(!strcmp(buf
, "data"), NULL
);
1702 format
= osync_data_get_objformat(data
);
1703 fail_unless(format
== format1
, NULL
);
1707 START_TEST (conv_env_detect_and_convert
)
1709 /* The data will be detected as F3, so the shortest path should
1710 * not be taken because the path searching function should see that
1711 * the encapsulated data * is a F3 object, not a F4 object
1713 OSyncError
*error
= NULL
;
1714 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
1715 fail_unless(env
!= NULL
, NULL
);
1716 fail_unless(error
== NULL
, NULL
);
1718 OSyncObjFormat
*format1
= osync_objformat_new("F1", "O1", &error
);
1719 osync_format_env_register_objformat(env
, format1
);
1720 osync_objformat_set_destroy_func(format1
, format_simple_destroy
);
1722 OSyncObjFormat
*format2
= osync_objformat_new("F2", "O1", &error
);
1723 osync_format_env_register_objformat(env
, format2
);
1724 osync_objformat_set_destroy_func(format2
, format_simple_destroy
);
1726 OSyncObjFormat
*format3
= osync_objformat_new("F3", "O1", &error
);
1727 osync_format_env_register_objformat(env
, format3
);
1728 osync_objformat_set_destroy_func(format3
, format_simple_destroy
);
1730 OSyncObjFormat
*format4
= osync_objformat_new("F4", "O1", &error
);
1731 osync_format_env_register_objformat(env
, format4
);
1732 osync_objformat_set_destroy_func(format4
, format_simple_destroy
);
1736 OSyncFormatConverter
*detector1
= osync_converter_new_detector(format1
, format2
, detect_true
, &error
);
1737 fail_unless(detector1
!= NULL
, NULL
);
1738 fail_unless(error
== NULL
, NULL
);
1739 osync_format_env_register_converter(env
, detector1
);
1740 // osync_converter_unref(detector1);
1742 /* Detect F3, not F4 */
1744 OSyncFormatConverter
*detector2
= osync_converter_new_detector(format2
, format3
, detect_true
, &error
);
1745 fail_unless(detector2
!= NULL
, NULL
);
1746 fail_unless(error
== NULL
, NULL
);
1747 osync_format_env_register_converter(env
, detector2
);
1748 // osync_converter_unref(detector2);
1750 OSyncFormatConverter
*detector3
= osync_converter_new_detector(format2
, format4
, detect_false
, &error
);
1751 fail_unless(detector3
!= NULL
, NULL
);
1752 fail_unless(error
== NULL
, NULL
);
1753 osync_format_env_register_converter(env
, detector3
);
1754 // osync_converter_unref(detector3);
1758 OSyncFormatConverter
*converter1
= osync_converter_new(OSYNC_CONVERTER_DECAP
, format1
, format2
, convert_addtest
, &error
);
1759 osync_format_env_register_converter(env
, converter1
);
1760 osync_converter_unref(converter1
);
1762 OSyncFormatConverter
*converter1_back
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format2
, format1
, convert_remtest
, &error
);
1763 osync_format_env_register_converter(env
, converter1_back
);
1764 osync_converter_unref(converter1_back
);
1766 OSyncFormatConverter
*converter2
= osync_converter_new(OSYNC_CONVERTER_DECAP
, format2
, format3
, convert_addtest2
, &error
);
1767 osync_format_env_register_converter(env
, converter2
);
1768 osync_converter_unref(converter2
);
1770 OSyncFormatConverter
*converter2_back
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format3
, format2
, convert_remtest2
, &error
);
1771 osync_format_env_register_converter(env
, converter2_back
);
1772 osync_converter_unref(converter2_back
);
1774 OSyncFormatConverter
*converter3
= osync_converter_new(OSYNC_CONVERTER_DECAP
, format2
, format4
, convert_addtest2
, &error
);
1775 osync_format_env_register_converter(env
, converter3
);
1776 osync_converter_unref(converter3
);
1778 OSyncFormatConverter
*converter3_back
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format4
, format2
, convert_remtest2
, &error
);
1779 osync_format_env_register_converter(env
, converter3_back
);
1780 osync_converter_unref(converter3_back
);
1782 OSyncFormatConverter
*converter4
= osync_converter_new(OSYNC_CONVERTER_CONV
, format3
, format4
, convert_addtest2
, &error
);
1783 osync_format_env_register_converter(env
, converter4
);
1784 osync_converter_unref(converter4
);
1786 OSyncFormatConverter
*converter5
= osync_converter_new(OSYNC_CONVERTER_CONV
, format4
, format3
, convert_remtest2
, &error
);
1787 osync_format_env_register_converter(env
, converter5
);
1788 osync_converter_unref(converter5
);
1793 OSyncData
*data
= osync_data_new(g_strdup("data"), 5, format1
, &error
);
1794 fail_unless(data
!= NULL
, NULL
);
1795 fail_unless(error
== NULL
, NULL
);
1799 OSyncFormatConverterPath
*path
= NULL
;
1800 path
= osync_format_env_find_path_with_detectors(env
, data
, format4
, NULL
, &error
);
1801 fail_unless(path
!= NULL
, NULL
);
1803 osync_format_env_convert(env
, path
, data
, &error
);
1804 fail_unless(error
== NULL
, NULL
);
1808 osync_data_get_data(data
, &buf
, &size
);
1810 fail_unless(buf
!= NULL
, NULL
);
1811 fail_unless(!strcmp(buf
, "datatesttest2test2"), NULL
);
1812 OSyncObjFormat
*format
= osync_data_get_objformat(data
);
1813 fail_unless(format
== format4
, NULL
);
1817 path
= osync_format_env_find_path_with_detectors(env
, data
, format1
, NULL
, &error
);
1818 fail_unless(path
!= NULL
, NULL
);
1820 osync_format_env_convert(env
, path
, data
, &error
);
1821 fail_unless(error
== NULL
, NULL
);
1823 osync_data_get_data(data
, &buf
, &size
);
1825 fail_unless(buf
!= NULL
, NULL
);
1826 fail_unless(!strcmp(buf
, "datatest"), NULL
);
1827 format
= osync_data_get_objformat(data
);
1828 fail_unless(format
== format1
, NULL
);
1832 START_TEST(conv_prefer_not_desencap
)
1834 /* Test if the converter is getting the path that have no
1837 * F1 -- F2 -- F3 -- F5
1841 * All converters are not lossy, except F1->F4.
1842 * The result path should be: F1 -> F2 -> F3 -> F5
1844 OSyncError
*error
= NULL
;
1845 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
1846 fail_unless(env
!= NULL
, NULL
);
1847 fail_unless(error
== NULL
, NULL
);
1849 OSyncObjFormat
*format1
= osync_objformat_new("F1", "O1", &error
);
1850 osync_format_env_register_objformat(env
, format1
);
1851 osync_objformat_set_destroy_func(format1
, format_simple_destroy
);
1853 OSyncObjFormat
*format2
= osync_objformat_new("F2", "O1", &error
);
1854 osync_format_env_register_objformat(env
, format2
);
1855 osync_objformat_set_destroy_func(format2
, format_simple_destroy
);
1857 OSyncObjFormat
*format3
= osync_objformat_new("F3", "O1", &error
);
1858 osync_format_env_register_objformat(env
, format3
);
1859 osync_objformat_set_destroy_func(format3
, format_simple_destroy
);
1861 OSyncObjFormat
*format4
= osync_objformat_new("F4", "O1", &error
);
1862 osync_format_env_register_objformat(env
, format4
);
1863 osync_objformat_set_destroy_func(format4
, format_simple_destroy
);
1865 OSyncObjFormat
*format5
= osync_objformat_new("F5", "O1", &error
);
1866 osync_format_env_register_objformat(env
, format5
);
1867 osync_objformat_set_destroy_func(format5
, format_simple_destroy
);
1871 OSyncFormatConverter
*detector1
= osync_converter_new_detector(format1
, format2
, detect_true
, &error
);
1872 fail_unless(detector1
!= NULL
, NULL
);
1873 fail_unless(error
== NULL
, NULL
);
1874 osync_format_env_register_converter(env
, detector1
);
1875 // osync_converter_unref(detector1);
1877 /* Detect F3, not F4 */
1879 OSyncFormatConverter
*detector2
= osync_converter_new_detector(format2
, format3
, detect_true
, &error
);
1880 fail_unless(detector2
!= NULL
, NULL
);
1881 fail_unless(error
== NULL
, NULL
);
1882 osync_format_env_register_converter(env
, detector2
);
1883 // osync_converter_unref(detector2);
1885 OSyncFormatConverter
*detector3
= osync_converter_new_detector(format2
, format4
, detect_false
, &error
);
1886 fail_unless(detector3
!= NULL
, NULL
);
1887 fail_unless(error
== NULL
, NULL
);
1888 osync_format_env_register_converter(env
, detector3
);
1889 // osync_converter_unref(detector3);
1893 OSyncFormatConverter
*converter1
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format1
, format2
, convert_addtest
, &error
);
1894 osync_format_env_register_converter(env
, converter1
);
1895 osync_converter_unref(converter1
);
1897 OSyncFormatConverter
*converter1_back
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format2
, format3
, convert_addtest
, &error
);
1898 osync_format_env_register_converter(env
, converter1_back
);
1899 osync_converter_unref(converter1_back
);
1901 OSyncFormatConverter
*converter2
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format3
, format5
, convert_addtest
, &error
);
1902 osync_format_env_register_converter(env
, converter2
);
1903 osync_converter_unref(converter2
);
1905 OSyncFormatConverter
*converter2_back
= osync_converter_new(OSYNC_CONVERTER_DECAP
, format1
, format4
, convert_addtest2
, &error
);
1906 osync_format_env_register_converter(env
, converter2_back
);
1907 osync_converter_unref(converter2_back
);
1909 OSyncFormatConverter
*converter3
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format4
, format5
, convert_addtest2
, &error
);
1910 osync_format_env_register_converter(env
, converter3
);
1911 osync_converter_unref(converter3
);
1915 OSyncData
*data
= osync_data_new(g_strdup("data"), 5, format1
, &error
);
1916 fail_unless(data
!= NULL
, NULL
);
1917 fail_unless(error
== NULL
, NULL
);
1921 OSyncFormatConverterPath
*path
= NULL
;
1922 path
= osync_format_env_find_path_with_detectors(env
, data
, format5
, NULL
, &error
);
1923 fail_unless(path
!= NULL
, NULL
);
1925 osync_format_env_convert(env
, path
, data
, &error
);
1926 fail_unless(error
== NULL
, NULL
);
1932 osync_data_get_data(data
, &buf
, &size
);
1934 fail_unless(buf
!= NULL
, NULL
);
1935 fail_unless(!strcmp(buf
, "datatesttesttest"), NULL
);
1936 OSyncObjFormat
*format
= osync_data_get_objformat(data
);
1937 fail_unless(format
== format5
, NULL
);
1941 START_TEST(conv_prefer_same_objtype
)
1943 /* Test if the converter is getting the path
1944 * that doesn't change the objtype, even
1949 * F1 -- F2 -- F3 -- F5 -- F6
1953 * The target list will be [ F6, G1 ].
1955 * The result should be F6.
1957 OSyncError
*error
= NULL
;
1958 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
1959 fail_unless(env
!= NULL
, NULL
);
1960 fail_unless(error
== NULL
, NULL
);
1962 OSyncObjFormat
*format1
= osync_objformat_new("F1", "F", &error
);
1963 osync_format_env_register_objformat(env
, format1
);
1964 osync_objformat_set_destroy_func(format1
, format_simple_destroy
);
1966 OSyncObjFormat
*format2
= osync_objformat_new("F2", "F", &error
);
1967 osync_format_env_register_objformat(env
, format2
);
1968 osync_objformat_set_destroy_func(format2
, format_simple_destroy
);
1970 OSyncObjFormat
*format3
= osync_objformat_new("F3", "F", &error
);
1971 osync_format_env_register_objformat(env
, format3
);
1972 osync_objformat_set_destroy_func(format3
, format_simple_destroy
);
1974 OSyncObjFormat
*format4
= osync_objformat_new("F4", "F", &error
);
1975 osync_format_env_register_objformat(env
, format4
);
1976 osync_objformat_set_destroy_func(format4
, format_simple_destroy
);
1978 OSyncObjFormat
*format5
= osync_objformat_new("F5", "F", &error
);
1979 osync_format_env_register_objformat(env
, format5
);
1980 osync_objformat_set_destroy_func(format5
, format_simple_destroy
);
1982 OSyncObjFormat
*format6
= osync_objformat_new("F6", "F", &error
);
1983 osync_format_env_register_objformat(env
, format6
);
1984 osync_objformat_set_destroy_func(format6
, format_simple_destroy
);
1986 OSyncObjFormat
*format_g1
= osync_objformat_new("G1", "G", &error
);
1987 osync_format_env_register_objformat(env
, format_g1
);
1988 osync_objformat_set_destroy_func(format_g1
, format_simple_destroy
);
1992 OSyncFormatConverter
*converter1
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format1
, format2
, convert_addtest
, &error
);
1993 osync_format_env_register_converter(env
, converter1
);
1994 osync_converter_unref(converter1
);
1996 OSyncFormatConverter
*converter1_back
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format2
, format3
, convert_addtest
, &error
);
1997 osync_format_env_register_converter(env
, converter1_back
);
1998 osync_converter_unref(converter1_back
);
2000 OSyncFormatConverter
*converter2
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format3
, format4
, convert_addtest
, &error
);
2001 osync_format_env_register_converter(env
, converter2
);
2002 osync_converter_unref(converter2
);
2004 OSyncFormatConverter
*converter3
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format4
, format5
, convert_addtest
, &error
);
2005 osync_format_env_register_converter(env
, converter3
);
2006 osync_converter_unref(converter3
);
2008 OSyncFormatConverter
*converter4
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format5
, format6
, convert_addtest
, &error
);
2009 osync_format_env_register_converter(env
, converter4
);
2010 osync_converter_unref(converter4
);
2012 OSyncFormatConverter
*converter5
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format1
, format_g1
, convert_addtest2
, &error
);
2013 osync_format_env_register_converter(env
, converter5
);
2014 osync_converter_unref(converter5
);
2018 OSyncData
*data
= osync_data_new(g_strdup("data"), 5, format1
, &error
);
2019 fail_unless(data
!= NULL
, NULL
);
2020 fail_unless(error
== NULL
, NULL
);
2024 OSyncList
* fmtlist
= NULL
;
2025 fmtlist
= osync_list_prepend(fmtlist
, format_g1
);
2026 fmtlist
= osync_list_prepend(fmtlist
, format6
);
2028 OSyncFormatConverterPath
*path
= NULL
;
2029 path
= osync_format_env_find_path_formats_with_detectors(env
, data
, fmtlist
, NULL
, &error
);
2030 fail_unless(path
!= NULL
, NULL
);
2032 osync_format_env_convert(env
, path
, data
, &error
);
2033 fail_unless(error
== NULL
, NULL
);
2039 osync_data_get_data(data
, &buf
, &size
);
2041 fail_unless(buf
!= NULL
, NULL
);
2042 fail_unless(!strcmp(buf
, "datatesttesttesttesttest"), NULL
);
2043 OSyncObjFormat
*format
= osync_data_get_objformat(data
);
2044 fail_unless(format
== format6
, NULL
);
2048 START_TEST(conv_prefer_not_lossy_objtype_change
)
2050 /* Test if the converter is getting the path
2051 * that have no lossy converters, even if
2052 * the objtype is being changed.
2056 * F1 -- F2 -- F3 -- F5 -- F6
2060 * The target list will be [ F6, G1 ].
2062 * The converter F2 -> F3 is lossy.
2064 * The result should be G1.
2066 OSyncError
*error
= NULL
;
2067 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
2068 fail_unless(env
!= NULL
, NULL
);
2069 fail_unless(error
== NULL
, NULL
);
2071 OSyncObjFormat
*format1
= osync_objformat_new("F1", "F", &error
);
2072 osync_format_env_register_objformat(env
, format1
);
2073 osync_objformat_set_destroy_func(format1
, format_simple_destroy
);
2075 OSyncObjFormat
*format2
= osync_objformat_new("F2", "F", &error
);
2076 osync_format_env_register_objformat(env
, format2
);
2077 osync_objformat_set_destroy_func(format2
, format_simple_destroy
);
2079 OSyncObjFormat
*format3
= osync_objformat_new("F3", "F", &error
);
2080 osync_format_env_register_objformat(env
, format3
);
2081 osync_objformat_set_destroy_func(format3
, format_simple_destroy
);
2083 OSyncObjFormat
*format4
= osync_objformat_new("F4", "F", &error
);
2084 osync_format_env_register_objformat(env
, format4
);
2085 osync_objformat_set_destroy_func(format4
, format_simple_destroy
);
2087 OSyncObjFormat
*format5
= osync_objformat_new("F5", "F", &error
);
2088 osync_format_env_register_objformat(env
, format5
);
2089 osync_objformat_set_destroy_func(format5
, format_simple_destroy
);
2091 OSyncObjFormat
*format6
= osync_objformat_new("F6", "F", &error
);
2092 osync_format_env_register_objformat(env
, format6
);
2093 osync_objformat_set_destroy_func(format6
, format_simple_destroy
);
2095 OSyncObjFormat
*format_g1
= osync_objformat_new("G1", "G", &error
);
2096 osync_format_env_register_objformat(env
, format_g1
);
2097 osync_objformat_set_destroy_func(format_g1
, format_simple_destroy
);
2101 OSyncFormatConverter
*converter1
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format1
, format2
, convert_addtest
, &error
);
2102 osync_format_env_register_converter(env
, converter1
);
2103 osync_converter_unref(converter1
);
2105 OSyncFormatConverter
*converter1_back
= osync_converter_new(OSYNC_CONVERTER_DECAP
, format2
, format3
, convert_addtest
, &error
); /* Lossy */
2106 osync_format_env_register_converter(env
, converter1_back
);
2107 osync_converter_unref(converter1_back
);
2109 OSyncFormatConverter
*converter2
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format3
, format4
, convert_addtest
, &error
);
2110 osync_format_env_register_converter(env
, converter2
);
2111 osync_converter_unref(converter2
);
2113 OSyncFormatConverter
*converter3
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format4
, format5
, convert_addtest
, &error
);
2114 osync_format_env_register_converter(env
, converter3
);
2115 osync_converter_unref(converter3
);
2117 OSyncFormatConverter
*converter4
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format5
, format6
, convert_addtest
, &error
);
2118 osync_format_env_register_converter(env
, converter4
);
2119 osync_converter_unref(converter4
);
2121 OSyncFormatConverter
*converter5
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format1
, format_g1
, convert_addtest2
, &error
);
2122 osync_format_env_register_converter(env
, converter5
);
2123 osync_converter_unref(converter5
);
2127 OSyncData
*data
= osync_data_new(g_strdup("data"), 5, format1
, &error
);
2128 fail_unless(data
!= NULL
, NULL
);
2129 fail_unless(error
== NULL
, NULL
);
2133 OSyncList
* fmtlist
= NULL
;
2134 fmtlist
= osync_list_prepend(fmtlist
, format_g1
);
2135 fmtlist
= osync_list_prepend(fmtlist
, format6
);
2137 OSyncFormatConverterPath
*path
= NULL
;
2138 path
= osync_format_env_find_path_formats_with_detectors(env
, data
, fmtlist
, NULL
, &error
);
2139 fail_unless(path
!= NULL
, NULL
);
2141 osync_format_env_convert(env
, path
, data
, &error
);
2142 fail_unless(error
== NULL
, NULL
);
2148 osync_data_get_data(data
, &buf
, &size
);
2150 fail_unless(buf
!= NULL
, NULL
);
2151 fail_unless(!strcmp(buf
, "datatest2"), NULL
);
2152 OSyncObjFormat
*format
= osync_data_get_objformat(data
);
2153 fail_unless(format
== format_g1
, NULL
);
2157 START_TEST (conv_env_detect_false
)
2160 OSyncError
*error
= NULL
;
2161 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
2162 fail_unless(env
!= NULL
, NULL
);
2163 fail_unless(error
== NULL
, NULL
);
2165 OSyncObjFormat
*format1
= osync_objformat_new("F1", "O1", &error
);
2166 osync_format_env_register_objformat(env
, format1
);
2167 osync_objformat_set_destroy_func(format1
, format_simple_destroy
);
2169 OSyncObjFormat
*format2
= osync_objformat_new("F2", "O1", &error
);
2170 osync_format_env_register_objformat(env
, format2
);
2171 osync_objformat_set_destroy_func(format2
, format_simple_destroy
);
2173 OSyncObjFormat
*format3
= osync_objformat_new("F3", "O1", &error
);
2174 osync_format_env_register_objformat(env
, format3
);
2175 osync_objformat_set_destroy_func(format3
, format_simple_destroy
);
2179 OSyncFormatConverter
*detector1
= osync_converter_new_detector(format1
, format2
, detect_true
, &error
);
2180 fail_unless(detector1
!= NULL
, NULL
);
2181 fail_unless(error
== NULL
, NULL
);
2182 osync_format_env_register_converter(env
, detector1
);
2183 // osync_converter_unref(detector1);
2185 OSyncFormatConverter
*detector2
= osync_converter_new_detector(format2
, format3
, detect_false
, &error
);
2186 fail_unless(detector2
!= NULL
, NULL
);
2187 fail_unless(error
== NULL
, NULL
);
2188 osync_format_env_register_converter(env
, detector2
);
2189 // osync_converter_unref(detector2);
2193 OSyncFormatConverter
*converter1
= osync_converter_new(OSYNC_CONVERTER_DECAP
, format1
, format2
, convert_addtest
, &error
);
2194 osync_format_env_register_converter(env
, converter1
);
2195 osync_converter_unref(converter1
);
2197 OSyncFormatConverter
*converter1_back
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format2
, format1
, convert_remtest
, &error
);
2198 osync_format_env_register_converter(env
, converter1_back
);
2199 osync_converter_unref(converter1_back
);
2201 OSyncFormatConverter
*converter2
= osync_converter_new(OSYNC_CONVERTER_DECAP
, format2
, format3
, convert_addtest2
, &error
);
2202 osync_format_env_register_converter(env
, converter2
);
2203 osync_converter_unref(converter2
);
2205 OSyncFormatConverter
*converter2_back
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format3
, format2
, convert_remtest2
, &error
);
2206 osync_format_env_register_converter(env
, converter2_back
);
2207 osync_converter_unref(converter2_back
);
2211 OSyncData
*data
= osync_data_new(g_strdup("data"), 5, format1
, &error
);
2212 fail_unless(data
!= NULL
, NULL
);
2213 fail_unless(error
== NULL
, NULL
);
2217 OSyncFormatConverterPath
*path
= NULL
;
2218 path
= osync_format_env_find_path_with_detectors(env
, data
, format3
, NULL
, &error
);
2219 fail_unless(path
== NULL
, NULL
);
2220 /* FIXME: clarify - this is really intended to fail?! If so deref error. */
2221 osync_error_unref(&error
);
2223 //fail_unless(!osync_format_env_convert(env, path, data, &error), NULL); // path is supposed to be null and this function has an assert on path
2227 static osync_bool
detect_plain_as_f2(const char *data
, int size
, void *userdata
)
2232 START_TEST (conv_env_decap_and_detect
)
2234 OSyncError
*error
= NULL
;
2235 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
2236 fail_unless(env
!= NULL
, NULL
);
2237 fail_unless(error
== NULL
, NULL
);
2239 OSyncObjFormat
*format1
= osync_objformat_new("F1", "O1", &error
);
2240 osync_format_env_register_objformat(env
, format1
);
2241 osync_objformat_set_destroy_func(format1
, format_simple_destroy
);
2243 OSyncObjFormat
*format2
= osync_objformat_new("F2", "O1", &error
);
2244 osync_format_env_register_objformat(env
, format2
);
2245 osync_objformat_set_destroy_func(format2
, format_simple_destroy
);
2247 OSyncObjFormat
*format3
= osync_objformat_new("F3", "O1", &error
);
2248 osync_format_env_register_objformat(env
, format3
);
2249 osync_objformat_set_destroy_func(format3
, format_simple_destroy
);
2251 OSyncObjFormat
*format_plain
= osync_objformat_new("plain", "O1", &error
);
2252 osync_format_env_register_objformat(env
, format_plain
);
2253 osync_objformat_set_destroy_func(format_plain
, format_simple_destroy
);
2257 OSyncFormatConverter
*detector1
= osync_converter_new_detector(format_plain
, format2
, detect_plain_as_f2
, &error
);
2258 fail_unless(detector1
!= NULL
, NULL
);
2259 fail_unless(error
== NULL
, NULL
);
2260 osync_format_env_register_converter(env
, detector1
);
2261 // osync_converter_unref(detector1);
2265 OSyncFormatConverter
*converter1
= osync_converter_new(OSYNC_CONVERTER_DECAP
, format1
, format_plain
, convert_addtest
, &error
);
2266 osync_format_env_register_converter(env
, converter1
);
2267 osync_converter_unref(converter1
);
2269 OSyncFormatConverter
*converter1_back
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format_plain
, format1
, convert_remtest
, &error
);
2270 osync_format_env_register_converter(env
, converter1_back
);
2271 osync_converter_unref(converter1_back
);
2273 OSyncFormatConverter
*converter2
= osync_converter_new(OSYNC_CONVERTER_CONV
, format2
, format3
, convert_addtest
, &error
);
2274 osync_format_env_register_converter(env
, converter2
);
2275 osync_converter_unref(converter2
);
2277 OSyncFormatConverter
*converter2_back
= osync_converter_new(OSYNC_CONVERTER_CONV
, format3
, format2
, convert_remtest
, &error
);
2278 osync_format_env_register_converter(env
, converter2_back
);
2279 osync_converter_unref(converter2_back
);
2283 OSyncData
*data
= osync_data_new(g_strdup("data"), 5, format1
, &error
);
2284 fail_unless(data
!= NULL
, NULL
);
2285 fail_unless(error
== NULL
, NULL
);
2289 OSyncFormatConverterPath
*path
= NULL
;
2290 path
= osync_format_env_find_path_with_detectors(env
, data
, format3
, NULL
, &error
);
2291 fail_unless(path
!= NULL
, NULL
);
2298 osync_format_env_convert(env
, path
, data
, &error
);
2299 fail_unless(error
== NULL
, NULL
);
2301 osync_data_get_data(data
, &buf
, &size
);
2303 fail_unless(buf
!= NULL
, NULL
);
2304 fail_unless(!strcmp(buf
, "datatesttest"), NULL
);
2305 OSyncObjFormat
*format
= osync_data_get_objformat(data
);
2306 fail_unless(format
== format3
, NULL
);
2310 path
= osync_format_env_find_path_with_detectors(env
, data
, format1
, NULL
, &error
);
2311 fail_unless(path
!= NULL
, NULL
);
2313 osync_format_env_convert(env
, path
, data
, &error
);
2314 fail_unless(error
== NULL
, NULL
);
2318 osync_data_get_data(data
, &buf
, &size
);
2320 fail_unless(buf
!= NULL
, NULL
);
2321 fail_unless(!strcmp(buf
, "data"), NULL
);
2322 format
= osync_data_get_objformat(data
);
2323 fail_unless(format
== format1
, NULL
);
2327 static osync_bool
detect_f2(const char *data
, int size
, void *userdata
)
2329 if (!strcmp(data
, "F2"))
2334 static osync_bool
convert_f1_to_f2(char *input
, unsigned int inpsize
, char **output
, unsigned int *outpsize
, osync_bool
*free_input
, const char *config
, void *userdata
, OSyncError
**error
)
2336 fail_unless(!strcmp(input
, "F1"), NULL
);
2339 *output
= g_strdup("F2");
2344 static osync_bool
convert_f2_to_f1(char *input
, unsigned int inpsize
, char **output
, unsigned int *outpsize
, osync_bool
*free_input
, const char *config
, void *userdata
, OSyncError
**error
)
2346 fail_unless(!strcmp(input
, "F2"), NULL
);
2349 *output
= g_strdup("F1");
2354 START_TEST (conv_env_decap_and_detect2
)
2356 /*This is a more complicated version. Here we specify some data
2357 * for the change that needs to be converted and which only gets detected
2358 * if it really got converted by the decap */
2359 OSyncError
*error
= NULL
;
2360 OSyncFormatEnv
*env
= osync_format_env_new(&error
);
2361 fail_unless(env
!= NULL
, NULL
);
2362 fail_unless(error
== NULL
, NULL
);
2364 OSyncObjFormat
*format1
= osync_objformat_new("F1", "O1", &error
);
2365 osync_format_env_register_objformat(env
, format1
);
2366 osync_objformat_set_destroy_func(format1
, format_simple_destroy
);
2368 OSyncObjFormat
*format2
= osync_objformat_new("F2", "O1", &error
);
2369 osync_format_env_register_objformat(env
, format2
);
2370 osync_objformat_set_destroy_func(format2
, format_simple_destroy
);
2372 OSyncObjFormat
*format3
= osync_objformat_new("F3", "O1", &error
);
2373 osync_format_env_register_objformat(env
, format3
);
2374 osync_objformat_set_destroy_func(format3
, format_simple_destroy
);
2376 OSyncObjFormat
*format_plain
= osync_objformat_new("plain", "O1", &error
);
2377 osync_format_env_register_objformat(env
, format_plain
);
2378 osync_objformat_set_destroy_func(format_plain
, format_simple_destroy
);
2382 OSyncFormatConverter
*detector1
= osync_converter_new_detector(format_plain
, format2
, detect_f2
, &error
);
2383 fail_unless(detector1
!= NULL
, NULL
);
2384 fail_unless(error
== NULL
, NULL
);
2385 osync_format_env_register_converter(env
, detector1
);
2386 // osync_converter_unref(detector1);
2390 OSyncFormatConverter
*converter1
= osync_converter_new(OSYNC_CONVERTER_DECAP
, format1
, format_plain
, convert_f1_to_f2
, &error
);
2391 osync_format_env_register_converter(env
, converter1
);
2392 osync_converter_unref(converter1
);
2394 OSyncFormatConverter
*converter1_back
= osync_converter_new(OSYNC_CONVERTER_ENCAP
, format_plain
, format1
, convert_f2_to_f1
, &error
);
2395 osync_format_env_register_converter(env
, converter1_back
);
2396 osync_converter_unref(converter1_back
);
2398 OSyncFormatConverter
*converter2
= osync_converter_new(OSYNC_CONVERTER_CONV
, format2
, format3
, convert_addtest
, &error
);
2399 osync_format_env_register_converter(env
, converter2
);
2400 osync_converter_unref(converter2
);
2402 OSyncFormatConverter
*converter2_back
= osync_converter_new(OSYNC_CONVERTER_CONV
, format3
, format2
, convert_remtest
, &error
);
2403 osync_format_env_register_converter(env
, converter2_back
);
2404 osync_converter_unref(converter2_back
);
2408 OSyncData
*data
= osync_data_new(g_strdup("F1"), 3, format1
, &error
);
2409 fail_unless(data
!= NULL
, NULL
);
2410 fail_unless(error
== NULL
, NULL
);
2414 OSyncFormatConverterPath
*path
= NULL
;
2415 path
= osync_format_env_find_path_with_detectors(env
, data
, format3
, NULL
, &error
);
2416 fail_unless(path
!= NULL
, NULL
);
2423 osync_format_env_convert(env
, path
, data
, &error
);
2424 fail_unless(error
== NULL
, NULL
);
2426 osync_data_get_data(data
, &buf
, &size
);
2428 fail_unless(buf
!= NULL
, NULL
);
2429 fail_unless(!strcmp(buf
, "F2test"), NULL
);
2430 OSyncObjFormat
*format
= osync_data_get_objformat(data
);
2431 fail_unless(format
== format3
, NULL
);
2435 path
= osync_format_env_find_path_with_detectors(env
, data
, format1
, NULL
, &error
);
2436 fail_unless(path
!= NULL
, NULL
);
2438 osync_format_env_convert(env
, path
, data
, &error
);
2439 fail_unless(error
== NULL
, NULL
);
2443 osync_data_get_data(data
, &buf
, &size
);
2445 fail_unless(buf
!= NULL
, NULL
);
2446 fail_unless(!strcmp(buf
, "F1"), NULL
);
2447 format
= osync_data_get_objformat(data
);
2448 fail_unless(format
== format1
, NULL
);
2454 //create_case(s, "conv_env_osp_circular_false", conv_env_osp_circular_false);
2455 //create_case(s, "conv_env_osp_complex", conv_env_osp_complex);
2459 * osync_bool osync_format_env_load_plugins(OSyncFormatEnv *env, const char *path, OSyncError **error);
2461 OSyncObjFormat *osync_format_env_detect_objformat(OSyncFormatEnv *env, OSyncData *data);
2462 OSyncObjFormat *osync_format_env_detect_objformat_full(OSyncFormatEnv *env, OSyncData *input, OSyncError **error);
2464 osync_bool osync_format_env_convert(OSyncFormatEnv *env, OSyncFormatConverterPath *path, OSyncData *data, OSyncError **error);
2466 OSyncFormatConverterPath *osync_format_env_find_path(OSyncFormatEnv *env, OSyncObjFormat *sourceformat, OSyncObjFormat *targetformat, OSyncError **error);
2467 OSyncFormatConverterPath *osync_format_env_find_path_formats(OSyncFormatEnv *env, OSyncObjFormat *sourceformat, OSyncObjFormat **targets, OSyncError **error);
2472 OSYNC_TESTCASE_START("format-env")
2473 OSYNC_TESTCASE_ADD(conv_env_create
)
2475 OSYNC_TESTCASE_ADD(conv_env_register_objformat
)
2476 OSYNC_TESTCASE_ADD(conv_env_register_objformat_count
)
2477 OSYNC_TESTCASE_ADD(conv_env_objformat_find
)
2478 OSYNC_TESTCASE_ADD(conv_env_objformat_find_false
)
2480 OSYNC_TESTCASE_ADD(conv_env_register_converter
)
2481 OSYNC_TESTCASE_ADD(conv_env_register_converter_count
)
2482 OSYNC_TESTCASE_ADD(conv_env_converter_find
)
2483 OSYNC_TESTCASE_ADD(conv_env_converter_find_false
)
2485 OSYNC_TESTCASE_ADD(conv_env_register_filter
)
2486 OSYNC_TESTCASE_ADD(conv_env_register_filter_count
)
2488 OSYNC_TESTCASE_ADD(conv_find_path
)
2489 OSYNC_TESTCASE_ADD(conv_find_path2
)
2490 OSYNC_TESTCASE_ADD(conv_find_path_false
)
2491 OSYNC_TESTCASE_ADD(conv_find_multi_path
)
2492 OSYNC_TESTCASE_ADD(conv_find_multi_path_with_preferred
)
2493 OSYNC_TESTCASE_ADD(conv_find_circular_false
)
2494 OSYNC_TESTCASE_ADD(conv_find_complex
)
2496 OSYNC_TESTCASE_ADD(conv_find_multi_target
)
2497 OSYNC_TESTCASE_ADD(conv_find_multi_target2
)
2498 OSYNC_TESTCASE_ADD(conv_find_multi_path_multi_target
)
2499 OSYNC_TESTCASE_ADD(conv_find_multi_path_multi_target_with_preferred
)
2501 OSYNC_TESTCASE_ADD(conv_env_convert1
)
2502 OSYNC_TESTCASE_ADD(conv_env_convert_back
)
2503 OSYNC_TESTCASE_ADD(conv_env_convert_desenc
)
2505 OSYNC_TESTCASE_ADD(conv_env_convert_desenc_complex
)
2506 OSYNC_TESTCASE_ADD(conv_env_detect_and_convert
)
2507 OSYNC_TESTCASE_ADD(conv_prefer_not_desencap
)
2508 OSYNC_TESTCASE_ADD(conv_prefer_same_objtype
)
2509 OSYNC_TESTCASE_ADD(conv_prefer_not_lossy_objtype_change
)
2510 OSYNC_TESTCASE_ADD(conv_env_detect_false
)
2511 OSYNC_TESTCASE_ADD(conv_env_decap_and_detect
)
2512 OSYNC_TESTCASE_ADD(conv_env_decap_and_detect2
)