Changeset 3455
- Timestamp:
- 07/16/08 18:07:06 (1 month ago)
- Files:
-
- trunk/opensync/CMakeLists.txt (modified) (1 diff)
- trunk/opensync/opensync-plugin.h (modified) (1 diff)
- trunk/opensync/opensync.h (modified) (1 diff)
- trunk/opensync/plugin/opensync_plugin_config.c (modified) (7 diffs)
- trunk/opensync/plugin/opensync_plugin_config.h (modified) (1 diff)
- trunk/opensync/plugin/opensync_plugin_config_internals.h (modified) (1 diff)
- trunk/tests/plugin-tests/check_plugin_config.c (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/opensync/CMakeLists.txt
r3427 r3455 45 45 merger/opensync_merger.c 46 46 module/opensync_module.c 47 plugin/opensync_plugin_advancedoptions.c 47 48 plugin/opensync_plugin_authentication.c 48 49 plugin/opensync_plugin.c trunk/opensync/opensync-plugin.h
r3312 r3455 28 28 #include "plugin/opensync_plugin_info.h" 29 29 #include "plugin/opensync_plugin_config.h" 30 #include "plugin/opensync_plugin_advancedoptions.h" 30 31 #include "plugin/opensync_plugin_authentication.h" 31 32 #include "plugin/opensync_plugin_connection.h" trunk/opensync/opensync.h
r3427 r3455 149 149 typedef struct OSyncPluginConfig OSyncPluginConfig; 150 150 typedef struct OSyncPluginAuthentication OSyncPluginAuthentication; 151 typedef struct OSyncPluginAdvancedOption OSyncPluginAdvancedOption; 152 typedef struct OSyncPluginAdvancedOptionParameter OSyncPluginAdvancedOptionParameter; 151 153 typedef struct OSyncPluginConnection OSyncPluginConnection; 152 154 typedef struct OSyncPluginLocalization OSyncPluginLocalization; trunk/opensync/plugin/opensync_plugin_config.c
r3406 r3455 25 25 #include "opensync-format.h" 26 26 #include "opensync_plugin_config_internals.h" 27 #include "opensync_plugin_advancedoptions_internals.h" 27 28 28 29 #include "opensync_xml.h" 30 31 static OSyncPluginAdvancedOptionParameter *_osync_plugin_config_parse_advancedoption_param(OSyncPluginAdvancedOption *option, xmlNode *cur, OSyncError **error) 32 { 33 osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, option, cur, error); 34 35 OSyncPluginAdvancedOptionParameter *param = osync_plugin_advancedoption_param_new(error); 36 if (!param) 37 goto error; 38 39 for (; cur != NULL; cur = cur->next) { 40 41 if (cur->type != XML_ELEMENT_NODE) 42 continue; 43 44 char *str = (char*)xmlNodeGetContent(cur); 45 if (!str) 46 continue; 47 48 if (!xmlStrcmp(cur->name, BAD_CAST "DisplayName")) 49 osync_plugin_advancedoption_param_set_displayname(param, str); 50 else if (!xmlStrcmp(cur->name, BAD_CAST "Name")) 51 osync_plugin_advancedoption_param_set_name(param, str); 52 else if (!xmlStrcmp(cur->name, BAD_CAST "Type")) 53 osync_plugin_advancedoption_param_set_type(param, 54 osync_plugin_advancedoption_type_string_to_val(str)); 55 else if (!xmlStrcmp(cur->name, BAD_CAST "ValEnum")) 56 osync_plugin_advancedoption_param_add_valenum(param, str); 57 58 xmlFree(str); 59 } 60 61 osync_trace(TRACE_EXIT, "%s", __func__); 62 return param; 63 64 error: 65 osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); 66 return NULL; 67 } 68 69 static OSyncPluginAdvancedOption *_osync_plugin_config_parse_advancedoption(OSyncPluginConfig *config, xmlNode *cur, OSyncError **error) 70 { 71 osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, config, cur, error); 72 73 OSyncPluginAdvancedOptionParameter *param; 74 OSyncPluginAdvancedOption *option = osync_plugin_advancedoption_new(error); 75 if (!option) 76 goto error; 77 78 for (; cur != NULL; cur = cur->next) { 79 80 if (cur->type != XML_ELEMENT_NODE) 81 continue; 82 83 char *str = (char*)xmlNodeGetContent(cur); 84 if (!str) 85 continue; 86 87 if (!xmlStrcmp(cur->name, BAD_CAST "DisplayName")) 88 osync_plugin_advancedoption_set_displayname(option, str); 89 else if (!xmlStrcmp(cur->name, BAD_CAST "MaxOccurs")) 90 osync_plugin_advancedoption_set_maxoccurs(option, atoi(str)); 91 else if (!xmlStrcmp(cur->name, BAD_CAST "MaxSize")) 92 osync_plugin_advancedoption_set_maxsize(option, atoi(str)); 93 else if (!xmlStrcmp(cur->name, BAD_CAST "Name")) 94 osync_plugin_advancedoption_set_name(option, str); 95 else if (!xmlStrcmp(cur->name, BAD_CAST "Parameter")) { 96 if (!(param = _osync_plugin_config_parse_advancedoption_param(option, cur->xmlChildrenNode, error))) 97 goto error; 98 99 option->parameters = osync_list_prepend(option->parameters, param); 100 101 } else if (!xmlStrcmp(cur->name, BAD_CAST "Type")) { 102 osync_plugin_advancedoption_set_type(option, osync_plugin_advancedoption_type_string_to_val(str)); 103 } else if (!xmlStrcmp(cur->name, BAD_CAST "ValEnum")) 104 osync_plugin_advancedoption_add_valenum(option, str); 105 106 xmlFree(str); 107 } 108 109 option->parameters = osync_list_reverse(option->parameters); 110 111 osync_trace(TRACE_EXIT, "%s: %p", __func__, option); 112 return option; 113 114 error: 115 osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); 116 return NULL; 117 } 118 119 static osync_bool _osync_plugin_config_parse_advancedoptions(OSyncPluginConfig *config, xmlNode *cur, OSyncError **error) 120 { 121 OSyncPluginAdvancedOption *option; 122 123 for (; cur != NULL; cur = cur->next) { 124 125 if (cur->type != XML_ELEMENT_NODE) 126 continue; 127 128 if (!xmlStrcmp(cur->name, (const xmlChar *)"AdvancedOption")) { 129 if (!(option = _osync_plugin_config_parse_advancedoption(config, cur->xmlChildrenNode, error))) 130 goto error; 131 132 config->advancedoptions = osync_list_prepend(config->advancedoptions, option); 133 } 134 } 135 136 config->advancedoptions = osync_list_reverse(config->advancedoptions); 137 138 return TRUE; 139 140 error: 141 return FALSE; 142 } 29 143 30 144 static osync_bool _osync_plugin_config_parse_authentication(OSyncPluginConfig *config, xmlNode *cur, OSyncError **error) … … 522 636 continue; 523 637 524 if (!xmlStrcmp(cur->name, (const xmlChar *)"Authentication")) { 638 if (!xmlStrcmp(cur->name, (const xmlChar *)"AdvancedOptions")) { 639 ret = _osync_plugin_config_parse_advancedoptions(config, cur->xmlChildrenNode, error); 640 } else if (!xmlStrcmp(cur->name, (const xmlChar *)"Authentication")) { 525 641 ret = _osync_plugin_config_parse_authentication(config, cur->xmlChildrenNode, error); 526 642 } else if (!xmlStrcmp(cur->name, (const xmlChar *)"Connection")) { … … 871 987 } 872 988 989 static osync_bool _osync_plugin_config_assemble_advancedoption_param(xmlNode *cur, OSyncPluginAdvancedOptionParameter *param, OSyncError **error) 990 { 991 osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, cur, param, error); 992 993 xmlNode *node = xmlNewChild(cur, NULL, (xmlChar*)"Parameter", NULL); 994 if (!node) { 995 osync_error_set(error, OSYNC_ERROR_GENERIC, "No memory left to assemble configuration."); 996 goto error; 997 } 998 999 /* DisplayName */ 1000 if (osync_plugin_advancedoption_param_get_displayname(param)) 1001 xmlNewChild(node, NULL, BAD_CAST "DisplayName", 1002 BAD_CAST osync_plugin_advancedoption_param_get_displayname(param)); 1003 1004 /* Name */ 1005 if (!osync_plugin_advancedoption_param_get_name(param)) { 1006 osync_error_set(error, OSYNC_ERROR_MISCONFIGURATION, "Name for advanced option not set."); 1007 goto error; 1008 } 1009 1010 xmlNewChild(node, NULL, BAD_CAST "Name", BAD_CAST osync_plugin_advancedoption_param_get_name(param)); 1011 1012 /* Type */ 1013 if (!osync_plugin_advancedoption_param_get_type(param)) { 1014 osync_error_set(error, OSYNC_ERROR_MISCONFIGURATION, "Type for advanced option not set."); 1015 goto error; 1016 } 1017 1018 xmlNewChild(node, NULL, BAD_CAST "Type", BAD_CAST osync_plugin_advancedoption_param_get_type_string(param)); 1019 1020 /* ValEnum */ 1021 OSyncList *v; 1022 for (v = osync_plugin_advancedoption_param_get_valenums(param); v; v = v->next) { 1023 char *valenum = v->data; 1024 xmlNewChild(node, NULL, BAD_CAST "ValEnum", BAD_CAST valenum); 1025 } 1026 1027 1028 osync_trace(TRACE_EXIT, "%s", __func__); 1029 return TRUE; 1030 error: 1031 osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); 1032 return FALSE; 1033 1034 } 1035 1036 static osync_bool _osync_plugin_config_assemble_advancedoption(xmlNode *cur, OSyncPluginAdvancedOption *option, OSyncError **error) 1037 { 1038 osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, cur, option, error); 1039 1040 OSyncList *o; 1041 const char *name, *mime, *objtype, *path, *url; 1042 1043 xmlNode *next, *node = xmlNewChild(cur, NULL, (xmlChar*)"AdvancedOption", NULL); 1044 if (!node) { 1045 osync_error_set(error, OSYNC_ERROR_GENERIC, "No memory left to assemble configuration."); 1046 goto error; 1047 } 1048 1049 /* DisplayName */ 1050 if (osync_plugin_advancedoption_get_displayname(option)) 1051 xmlNewChild(node, NULL, BAD_CAST "DisplayName", 1052 BAD_CAST osync_plugin_advancedoption_get_displayname(option)); 1053 1054 /* MaxOccurs */ 1055 if (osync_plugin_advancedoption_get_maxoccurs(option)) { 1056 char *str = g_strdup_printf("%u", osync_plugin_advancedoption_get_maxoccurs(option)); 1057 xmlNewChild(node, NULL, BAD_CAST "MaxOccurs", BAD_CAST str); 1058 g_free(str); 1059 } 1060 1061 /* MaxSize */ 1062 if (osync_plugin_advancedoption_get_maxsize(option)) { 1063 char *str = g_strdup_printf("%u", osync_plugin_advancedoption_get_maxsize(option)); 1064 xmlNewChild(node, NULL, BAD_CAST "MaxSize", BAD_CAST str); 1065 g_free(str); 1066 } 1067 1068 /* Name */ 1069 if (!osync_plugin_advancedoption_get_name(option)) { 1070 osync_error_set(error, OSYNC_ERROR_MISCONFIGURATION, "Name for advanced option not set."); 1071 goto error; 1072 } 1073 1074 xmlNewChild(node, NULL, BAD_CAST "Name", BAD_CAST osync_plugin_advancedoption_get_name(option)); 1075 1076 /* Parameters */ 1077 OSyncList *p; 1078 for (p = osync_plugin_advancedoption_get_parameters(option); p; p = p->next) { 1079 OSyncPluginAdvancedOptionParameter *param = p->data; 1080 if (!_osync_plugin_config_assemble_advancedoption_param(node, param, error)) 1081 goto error; 1082 } 1083 1084 /* Type */ 1085 if (!osync_plugin_advancedoption_get_type(option)) { 1086 osync_error_set(error, OSYNC_ERROR_MISCONFIGURATION, "Type for advanced option not set."); 1087 goto error; 1088 } 1089 1090 xmlNewChild(node, NULL, BAD_CAST "Type", BAD_CAST osync_plugin_advancedoption_get_type_string(option)); 1091 1092 /* ValEnum */ 1093 OSyncList *v; 1094 for (v = osync_plugin_advancedoption_get_valenums(option); v; v = v->next) { 1095 char *valenum = v->data; 1096 xmlNewChild(node, NULL, BAD_CAST "ValEnum", BAD_CAST valenum); 1097 } 1098 1099 osync_trace(TRACE_EXIT, "%s", __func__); 1100 return TRUE; 1101 error: 1102 osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); 1103 return FALSE; 1104 } 1105 1106 static osync_bool _osync_plugin_config_assemble_advancedoptions(xmlNode *cur, OSyncList *options, OSyncError **error) 1107 { 1108 osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, cur, options, error); 1109 1110 OSyncList *o; 1111 1112 xmlNode *node = xmlNewChild(cur, NULL, (xmlChar*)"AdvancedOptions", NULL); 1113 if (!node) { 1114 osync_error_set(error, OSYNC_ERROR_GENERIC, "No memory left to assemble configuration."); 1115 goto error; 1116 } 1117 1118 for (o = options; o; o = o->next) 1119 if (!_osync_plugin_config_assemble_advancedoption(node, o->data, error)) 1120 goto error; 1121 1122 1123 osync_trace(TRACE_EXIT, "%s", __func__); 1124 return TRUE; 1125 error: 1126 osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); 1127 return FALSE; 1128 } 873 1129 874 1130 OSyncPluginConfig *osync_plugin_config_new(OSyncError **error) … … 922 1178 OSyncPluginLocalization *local; 923 1179 OSyncList *ressources; 1180 OSyncList *options; 924 1181 925 1182 doc = xmlNewDoc((xmlChar*)"1.0"); … … 940 1197 941 1198 /** Assemble... */ 1199 /* Advanced Options */ 1200 if ((options = osync_plugin_config_get_advancedoptions(config))) 1201 if (!_osync_plugin_config_assemble_advancedoptions(doc->children, options, error)) 1202 goto error_and_free; 1203 942 1204 /* Authentication */ 943 1205 if ((auth = osync_plugin_config_get_authentication(config))) … … 975 1237 976 1238 1239 /* Advanced Options */ 1240 OSyncList *osync_plugin_config_get_advancedoptions(OSyncPluginConfig *config) 1241 { 1242 osync_assert(config); 1243 return config->advancedoptions; 1244 1245 } 1246 1247 void osync_plugin_config_add_advancedoption(OSyncPluginConfig *config, OSyncPluginAdvancedOption *option) 1248 { 1249 osync_assert(config); 1250 osync_assert(option); 1251 1252 if (osync_list_find(config->advancedoptions, option)) 1253 return; 1254 1255 osync_plugin_advancedoption_ref(option); 1256 config->advancedoptions = osync_list_prepend(config->advancedoptions, option); 1257 } 1258 1259 void osync_plugin_config_remove_advancedoption(OSyncPluginConfig *config, OSyncPluginAdvancedOption *option) 1260 { 1261 osync_assert(config); 1262 osync_assert(option); 1263 1264 config->advancedoptions = osync_list_remove(config->advancedoptions, option); 1265 osync_plugin_advancedoption_unref(option); 1266 } 1267 1268 /* Authentication */ 977 1269 OSyncPluginAuthentication *osync_plugin_config_get_authentication(OSyncPluginConfig *config) 978 1270 { … … 990 1282 } 991 1283 1284 /* Localization */ 992 1285 OSyncPluginLocalization *osync_plugin_config_get_localization(OSyncPluginConfig *config) 993 1286 { trunk/opensync/plugin/opensync_plugin_config.h
r3406 r3455 29 29 OSYNC_EXPORT osync_bool osync_plugin_config_file_save(OSyncPluginConfig *config, const char *path, OSyncError **error); 30 30 31 /* Advanced Options */ 32 OSYNC_EXPORT OSyncList *osync_plugin_config_get_advancedoptions(OSyncPluginConfig *config); 33 OSYNC_EXPORT void osync_plugin_config_add_advancedoption(OSyncPluginConfig *config, OSyncPluginAdvancedOption *option); 34 OSYNC_EXPORT void osync_plugin_config_remove_advancedoption(OSyncPluginConfig *config, OSyncPluginAdvancedOption *option); 35 31 36 /* Authentication */ 32 37 OSYNC_EXPORT OSyncPluginAuthentication *osync_plugin_config_get_authentication(OSyncPluginConfig *config); trunk/opensync/plugin/opensync_plugin_config_internals.h
r3406 r3455 29 29 **/ 30 30 struct OSyncPluginConfig { 31 /** Advanced Options */ 32 OSyncList *advancedoptions; 31 33 /** Connection configuration */ 32 34 OSyncPluginConnection *connection; trunk/tests/plugin-tests/check_plugin_config.c
r3406 r3455 168 168 } 169 169 END_TEST 170 171 START_TEST (plugin_config_advancedoption) 172 { 173 char *testbed = setup_testbed(NULL); 174 175 OSyncError *error = NULL; 176 OSyncPluginConfig *config = osync_plugin_config_new(&error); 177 fail_unless(error == NULL, NULL); 178 fail_unless(config != NULL, NULL); 179 180 /* Advanced Option */ 181 OSyncPluginAdvancedOption *option = osync_plugin_advancedoption_new(&error); 182 fail_unless(error == NULL, NULL); 183 fail_unless(option != NULL, NULL); 184 185 osync_plugin_advancedoption_set_maxsize(option, 2323); 186 fail_unless(osync_plugin_advancedoption_get_maxsize(option) == 2323, NULL); 187 188 osync_plugin_advancedoption_set_maxoccurs(option, 3232); 189 fail_unless(osync_plugin_advancedoption_get_maxoccurs(option) == 3232, NULL); 190 191 osync_plugin_advancedoption_set_type(option, OSYNC_PLUGIN_ADVANCEDOPTION_TYPE_BOOL); 192 fail_unless(osync_plugin_advancedoption_get_type(option) == OSYNC_PLUGIN_ADVANCEDOPTION_TYPE_BOOL, NULL); 193 194 195 /* Check for uniq number of VALENUMs */ 196 osync_plugin_advancedoption_add_valenum(option, "bar"); 197 osync_plugin_advancedoption_add_valenum(option, "foo"); 198 osync_plugin_advancedoption_add_valenum(option, "foo"); 199 osync_plugin_advancedoption_add_valenum(option, "foo"); 200 201 /* Expected result: 2 - 1x foo, 1x bar */ 202 fail_unless(osync_list_length(osync_plugin_advancedoption_get_valenums(option)) == 2, NULL); 203 204 /* Expected resut: 1 - 1x bar */ 205 osync_plugin_advancedoption_remove_valenum(option, "bar"); 206 fail_unless(osync_list_length(osync_plugin_advancedoption_get_valenums(option)) == 1, NULL); 207 208 /*****/ 209 210 osync_plugin_advancedoption_set_displayname(option, "foo"); 211 fail_unless(!strcmp(osync_plugin_advancedoption_get_displayname(option), "foo"), NULL); 212 213 /* Overwrite (leak check) */ 214 osync_plugin_advancedoption_set_displayname(option, "bar"); 215 fail_unless(!strcmp(osync_plugin_advancedoption_get_displayname(option), "bar"), NULL); 216 217 osync_plugin_advancedoption_set_name(option, "foo"); 218 fail_unless(!strcmp(osync_plugin_advancedoption_get_name(option), "foo"), NULL); 219 220 /* Overwrite (leak check) */ 221 osync_plugin_advancedoption_set_name(option, "bar"); 222 fail_unless(!strcmp(osync_plugin_advancedoption_get_name(option), "bar"), NULL); 223 224 fail_unless(osync_plugin_advancedoption_ref(option) != NULL, NULL); 225 osync_plugin_advancedoption_unref(option); 226 osync_plugin_advancedoption_unref(option); 227 228 osync_plugin_config_unref(config); 229 230 destroy_testbed(testbed); 231 } 232 END_TEST 233 234 START_TEST (plugin_config_advancedoption_param) 235 { 236 char *testbed = setup_testbed(NULL); 237 238 OSyncError *error = NULL; 239 OSyncPluginConfig *config = osync_plugin_config_new(&error); 240 fail_unless(error == NULL, NULL); 241 fail_unless(config != NULL, NULL); 242 243 /* Advanced Option */ 244 OSyncPluginAdvancedOptionParameter *param = osync_plugin_advancedoption_param_new(&error); 245 fail_unless(error == NULL, NULL); 246 fail_unless(param != NULL, NULL); 247 248 osync_plugin_advancedoption_param_set_type(param, OSYNC_PLUGIN_ADVANCEDOPTION_TYPE_BOOL); 249 fail_unless(osync_plugin_advancedoption_param_get_type(param) == OSYNC_PLUGIN_ADVANCEDOPTION_TYPE_BOOL, NULL); 250 251 252 /* Check for uniq number of VALENUMs */ 253 osync_plugin_advancedoption_param_add_valenum(param, "bar"); 254 osync_plugin_advancedoption_param_add_valenum(param, "foo"); 255 osync_plugin_advancedoption_param_add_valenum(param, "foo"); 256 osync_plugin_advancedoption_param_add_valenum(param, "foo"); 257 258 /* Expected result: 2 - 1x foo, 1x bar */ 259 fail_unless(osync_list_length(osync_plugin_advancedoption_param_get_valenums(param)) == 2, NULL); 260 261 /* Expected resut: 1 - 1x bar */ 262 osync_plugin_advancedoption_param_remove_valenum(param, "bar"); 263 fail_unless(osync_list_length(osync_plugin_advancedoption_param_get_valenums(param)) == 1, NULL); 264 265 /*****/ 266 267 osync_plugin_advancedoption_param_set_displayname(param, "foo"); 268 fail_unless(!strcmp(osync_plugin_advancedoption_param_get_displayname(param), "foo"), NULL); 269 270 /* Overwrite (leak check) */ 271 osync_plugin_advancedoption_param_set_displayname(param, "bar"); 272 fail_unless(!strcmp(osync_plugin_advancedoption_param_get_displayname(param), "bar"), NULL); 273 274 osync_plugin_advancedoption_param_set_name(param, "foo"); 275 fail_unless(!strcmp(osync_plugin_advancedoption_param_get_name(param), "foo"), NULL); 276 277 /* Overwrite (leak check) */ 278 osync_plugin_advancedoption_param_set_name(param, "bar"); 279 fail_unless(!strcmp(osync_plugin_advancedoption_param_get_name(param), "bar"), NULL); 280 281 fail_unless(osync_plugin_advancedoption_param_ref(param) != NULL, NULL); 282 osync_plugin_advancedoption_param_unref(param); 283 osync_plugin_advancedoption_param_unref(param); 284 285 osync_plugin_config_unref(config); 286 287 destroy_testbed(testbed); 288 } 289 END_TEST 290 170 291 171 292 START_TEST (plugin_config_authentication) … … 511 632 fail_unless(config != NULL, NULL); 512 633 634 /* Advanced Options */ 635 OSyncPluginAdvancedOption *option = osync_plugin_advancedoption_new(&error); 636 fail_unless(error == NULL, NULL); 637 fail_unless(option != NULL, NULL); 638 639 osync_plugin_advancedoption_set_maxsize(option, 1); 640 osync_plugin_advancedoption_set_maxoccurs(option, 1); 641 osync_plugin_advancedoption_set_displayname(option, "foobar1"); 642 osync_plugin_advancedoption_set_name(option, "foobar1"); 643 osync_plugin_advancedoption_set_type(option, OSYNC_PLUGIN_ADVANCEDOPTION_TYPE_CHAR); 644 645 osync_plugin_advancedoption_add_valenum(option, "FOOBAR1"); 646 osync_plugin_advancedoption_add_valenum(option, "FOOBAR2"); 647 fail_unless(osync_list_length(osync_plugin_advancedoption_get_valenums(option)) == 2, NULL); 648 649 /* Advanced Parameter */ 650 OSyncPluginAdvancedOptionParameter *param = osync_plugin_advancedoption_param_new(&error); 651 fail_unless(error == NULL, NULL); 652 fail_unless(param != NULL, NULL); 653 654 osync_plugin_advancedoption_param_set_displayname(param, "bar1"); 655 osync_plugin_advancedoption_param_set_name(param, "bar1"); 656 osync_plugin_advancedoption_param_set_type(param, OSYNC_PLUGIN_ADVANCEDOPTION_TYPE_INT); 657 658 osync_plugin_advancedoption_param_add_valenum(param, "BAR1"); 659 osync_plugin_advancedoption_param_add_valenum(param, "BAR2"); 660 fail_unless(osync_list_length(osync_plugin_advancedoption_param_get_valenums(param)) == 2, NULL); 661 osync_plugin_advancedoption_add_parameter(option, param); 662 513 663 /* Localization */ 514 664 OSyncPluginLocalization *local = osync_plugin_localization_new(&error); … … 570 720 571 721 /* Set subcomponents */ 722 osync_plugin_config_add_advancedoption(config, option); 723 osync_plugin_advancedoption_unref(option); 572 724 osync_plugin_config_set_authentication(config, auth); 573 725 osync_plugin_authentication_unref(auth); … … 589 741 OSyncPluginAuthentication *reloaded_auth = osync_plugin_config_get_authentication(reloaded_config); 590 742 OSyncList *reloaded_ressources = osync_plugin_config_get_ressources(reloaded_config); 743 OSyncList *reloaded_advancedoptions = osync_plugin_config_get_advancedoptions(reloaded_config); 744 OSyncList *reloaded_advancedoption_parameters = NULL; 745 OSyncList *reloaded_advancedoption_valenums = NULL; 746 OSyncList *reloaded_advancedoption_param_valenums = NULL; 591 747 592 748 fail_unless(reloaded_local != NULL, NULL); 593 749 fail_unless(reloaded_auth != NULL, NULL); 594 750 fail_unless(reloaded_ressources != NULL, NULL); 751 fail_unless(reloaded_advancedoptions != NULL, NULL); 595 752 596 753 fail_unless(!strcmp(osync_plugin_localization_get_language(reloaded_local), "de_DE"), NULL); … … 602 759 fail_unless(!strcmp(osync_plugin_authentication_get_reference(reloaded_auth), "ref"), NULL); 603 760 604 OSyncList *r ;605 int i ;761 OSyncList *r, *p, *v; 762 int i, j, k; 606 763 for (i = 1, r = reloaded_ressources; r; r = r->next, i++) { 607 764 char *value = g_strdup_printf("foobar%i", i); … … 615 772 g_free(value); 616 773 } 774 775 for (i = 1, r = reloaded_advancedoptions; r; r = r->next, i++) { 776 char *value = g_strdup_printf("foobar%i", i); 777 fail_unless(!strcmp(osync_plugin_advancedoption_get_name(r->data), value), NULL); 778 fail_unless(!strcmp(osync_plugin_advancedoption_get_displayname(r->data), value), NULL); 779 fail_unless(osync_plugin_advancedoption_get_maxsize(r->data) == i, NULL); 780 fail_unless(osync_plugin_advancedoption_get_maxoccurs(r->data) == i, NULL); 781 fail_unless(osync_plugin_advancedoption_get_type(r->data) == OSYNC_PLUGIN_ADVANCEDOPTION_TYPE_CHAR, NULL); 782 g_free(value); 783 784 reloaded_advancedoption_valenums = osync_plugin_advancedoption_get_valenums(r->data); 785 for (j = 1, v = reloaded_advancedoption_valenums; v; v = v->next, j++) { 786 char *value = g_strdup_printf("FOOBAR%i", j); 787 fail_unless(!strcmp(v->data, value), NULL); 788 g_free(value); 789 } 790 791 reloaded_advancedoption_parameters = osync_plugin_advancedoption_get_parameters(r->data); 792 for (j = 1, p = reloaded_advancedoption_parameters; p; p = p->next, j++) { 793 char *value = g_strdup_printf("bar%i", j); 794 fail_unless(!strcmp(osync_plugin_advancedoption_param_get_name(p->data), value), NULL); 795 fail_unless(!strcmp(osync_plugin_advancedoption_param_get_displayname(p->data), value), NULL); 796 g_free(value); 797 798 reloaded_advancedoption_param_valenums = osync_plugin_advancedoption_param_get_valenums(p->data); 799 for (k = 1, v = reloaded_advancedoption_param_valenums; v; v = v->next, k++) { 800 char *value = g_strdup_printf("BAR%i", k); 801 fail_unless(!strcmp(v->data, value), NULL); 802 g_free(value); 803 804 } 805 806 } 807 808 809 } 810 617 811 618 812 osync_plugin_config_unref(config); … … 872 1066 create_case(s, "plugin_config_subcomponents", plugin_config_subcomponents); 873 1067 create_case(s, "plugin_config_subcomponents_nomemory", plugin_config_subcomponents_nomemory); 1068 create_case(s, "plugin_config_advancedoption", plugin_config_advancedoption); 1069 create_case(s, "plugin_config_advancedoption_param", plugin_config_advancedoption_param); 874 1070 create_case(s, "plugin_config_authentication", plugin_config_authentication); 875 1071 create_case(s, "plugin_config_connection", plugin_config_connection);
