| | 954 | |
| | 955 | destroy_testbed(testbed); |
| | 956 | } |
| | 957 | END_TEST |
| | 958 | |
| | 959 | START_TEST (conv_find_multi_path_multi_target) |
| | 960 | { |
| | 961 | char *testbed = setup_testbed(NULL); |
| | 962 | |
| | 963 | OSyncError *error = NULL; |
| | 964 | OSyncFormatEnv *env = osync_format_env_new(&error); |
| | 965 | fail_unless(env != NULL, NULL); |
| | 966 | fail_unless(error == NULL, NULL); |
| | 967 | |
| | 968 | OSyncObjFormat *format1 = osync_objformat_new("format1", "objtype", &error); |
| | 969 | fail_unless(format1 != NULL, NULL); |
| | 970 | fail_unless(error == NULL, NULL); |
| | 971 | osync_format_env_register_objformat(env, format1); |
| | 972 | |
| | 973 | OSyncObjFormat *format2 = osync_objformat_new("format2", "objtype", &error); |
| | 974 | fail_unless(format2 != NULL, NULL); |
| | 975 | fail_unless(error == NULL, NULL); |
| | 976 | osync_format_env_register_objformat(env, format2); |
| | 977 | |
| | 978 | OSyncObjFormat *format3 = osync_objformat_new("format3", "objtype", &error); |
| | 979 | fail_unless(format3 != NULL, NULL); |
| | 980 | fail_unless(error == NULL, NULL); |
| | 981 | osync_format_env_register_objformat(env, format3); |
| | 982 | |
| | 983 | OSyncObjFormat *format4 = osync_objformat_new("format4", "objtype", &error); |
| | 984 | fail_unless(format4 != NULL, NULL); |
| | 985 | fail_unless(error == NULL, NULL); |
| | 986 | osync_format_env_register_objformat(env, format4); |
| | 987 | |
| | 988 | OSyncObjFormat *format5 = osync_objformat_new("format5", "objtype", &error); |
| | 989 | fail_unless(format5 != NULL, NULL); |
| | 990 | fail_unless(error == NULL, NULL); |
| | 991 | osync_format_env_register_objformat(env, format5); |
| | 992 | |
| | 993 | OSyncFormatConverter *converter1 = osync_converter_new(OSYNC_CONVERTER_CONV, format1, format2, convert_func, &error); |
| | 994 | fail_unless(converter1 != NULL, NULL); |
| | 995 | fail_unless(error == NULL, NULL); |
| | 996 | osync_format_env_register_converter(env, converter1); |
| | 997 | osync_converter_unref(converter1); |
| | 998 | |
| | 999 | OSyncFormatConverter *converter2 = osync_converter_new(OSYNC_CONVERTER_CONV, format2, format4, convert_func, &error); |
| | 1000 | fail_unless(converter2 != NULL, NULL); |
| | 1001 | fail_unless(error == NULL, NULL); |
| | 1002 | osync_format_env_register_converter(env, converter2); |
| | 1003 | osync_converter_unref(converter2); |
| | 1004 | |
| | 1005 | OSyncFormatConverter *converter3 = osync_converter_new(OSYNC_CONVERTER_CONV, format1, format3, convert_func, &error); |
| | 1006 | fail_unless(converter3 != NULL, NULL); |
| | 1007 | fail_unless(error == NULL, NULL); |
| | 1008 | osync_format_env_register_converter(env, converter3); |
| | 1009 | osync_converter_unref(converter3); |
| | 1010 | |
| | 1011 | OSyncFormatConverter *converter4 = osync_converter_new(OSYNC_CONVERTER_CONV, format3, format4, convert_func, &error); |
| | 1012 | fail_unless(converter4 != NULL, NULL); |
| | 1013 | fail_unless(error == NULL, NULL); |
| | 1014 | osync_format_env_register_converter(env, converter4); |
| | 1015 | osync_converter_unref(converter4); |
| | 1016 | |
| | 1017 | OSyncFormatConverter *converter5 = osync_converter_new(OSYNC_CONVERTER_CONV, format3, format5, convert_func, &error); |
| | 1018 | fail_unless(converter5 != NULL, NULL); |
| | 1019 | fail_unless(error == NULL, NULL); |
| | 1020 | osync_format_env_register_converter(env, converter5); |
| | 1021 | osync_converter_unref(converter5); |
| | 1022 | |
| | 1023 | OSyncList *targets = NULL; |
| | 1024 | targets = osync_list_prepend(targets, format4); |
| | 1025 | targets = osync_list_prepend(targets, format5); |
| | 1026 | |
| | 1027 | OSyncData *data1 = osync_data_new("data", 5, format1, &error); |
| | 1028 | fail_unless(data1 != NULL, NULL); |
| | 1029 | fail_unless(error == NULL, NULL); |
| | 1030 | |
| | 1031 | OSyncFormatConverterPath *path = osync_format_env_find_path_formats_with_detectors(env, data1, targets, &error); |
| | 1032 | fail_unless(path != NULL, NULL); |
| | 1033 | fail_unless(error == NULL, NULL); |
| | 1034 | |
| | 1035 | fail_unless(osync_converter_path_num_edges(path) == 2, NULL); |
| | 1036 | fail_unless(osync_converter_path_nth_edge(path, 0) == converter1, NULL); |
| | 1037 | fail_unless(osync_converter_path_nth_edge(path, 1) == converter2, NULL); |
| | 1038 | |
| | 1039 | osync_converter_path_unref(path); |
| | 1040 | |
| | 1041 | osync_format_env_free(env); |
| | 1042 | |
| | 1043 | osync_data_unref(data1); |
| | 1044 | osync_objformat_unref(format1); |
| | 1045 | osync_objformat_unref(format2); |
| | 1046 | osync_objformat_unref(format3); |
| | 1047 | osync_objformat_unref(format4); |
| | 1048 | osync_objformat_unref(format5); |