mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-02 11:06:31 +00:00
core: Config and XML tweaks needed for geolocation
Added: Replace a variable in a list: int ast_variable_list_replace_variable(struct ast_variable **head, struct ast_variable *old, struct ast_variable *new); Added test as well. Create a "name=value" string from a variable list: 'name1="val1",name2="val2"', etc. struct ast_str *ast_variable_list_join( const struct ast_variable *head, const char *item_separator, const char *name_value_separator, const char *quote_char, struct ast_str **str); Added test as well. Allow the name of an XML element to be changed. void ast_xml_set_name(struct ast_xml_node *node, const char *name); Change-Id: I330a5f63dc0c218e0d8dfc0745948d2812141ccb
This commit is contained in:
@@ -1893,6 +1893,56 @@ AST_TEST_DEFINE(variable_lists_match)
|
||||
return AST_TEST_PASS;
|
||||
}
|
||||
|
||||
AST_TEST_DEFINE(variable_list_join_replace)
|
||||
{
|
||||
RAII_VAR(struct ast_variable *, list, NULL, ast_variables_destroy);
|
||||
RAII_VAR(struct ast_str *, str, NULL, ast_free);
|
||||
struct ast_variable *bbb;
|
||||
int rc;
|
||||
|
||||
switch (cmd) {
|
||||
case TEST_INIT:
|
||||
info->name = "variable_list_join_replace";
|
||||
info->category = "/main/config/";
|
||||
info->summary = "Test joining a variable list";
|
||||
info->description = info->summary;
|
||||
return AST_TEST_NOT_RUN;
|
||||
case TEST_EXECUTE:
|
||||
break;
|
||||
}
|
||||
|
||||
list = ast_variable_new("aaa", "111", "");
|
||||
bbb = ast_variable_new("bbb", "222", "");
|
||||
ast_variable_list_append(&list, bbb);
|
||||
ast_variable_list_append(&list, ast_variable_new("ccc", "33 33", ""));
|
||||
|
||||
str = ast_variable_list_join(list, ", ", " = ", "\"", &str);
|
||||
ast_test_validate(test, strcmp(ast_str_buffer(str), "aaa = \"111\", bbb = \"222\", ccc = \"33 33\"") == 0);
|
||||
ast_free(str);
|
||||
|
||||
str = ast_str_create(AST_MAX_USER_FIELD);
|
||||
str = ast_variable_list_join(list, ", ", " = ", "\"", &str);
|
||||
ast_test_validate(test, strcmp(ast_str_buffer(str), "aaa = \"111\", bbb = \"222\", ccc = \"33 33\"") == 0);
|
||||
ast_free(str);
|
||||
|
||||
str = ast_variable_list_join(list, ", ", " = ", "\"", NULL);
|
||||
ast_test_validate(test, strcmp(ast_str_buffer(str), "aaa = \"111\", bbb = \"222\", ccc = \"33 33\"") == 0);
|
||||
ast_free(str);
|
||||
|
||||
/* Replace the head item in the list */
|
||||
rc = ast_variable_list_replace_variable(&list, list, ast_variable_new("ddd", "444", ""));
|
||||
ast_test_validate(test, rc == 0);
|
||||
str = ast_variable_list_join(list, ", ", " = ", "\"", NULL);
|
||||
ast_test_validate(test, strcmp(ast_str_buffer(str), "ddd = \"444\", bbb = \"222\", ccc = \"33 33\"") == 0);
|
||||
ast_free(str);
|
||||
|
||||
rc = ast_variable_list_replace_variable(&list, bbb, ast_variable_new("eee", "555", ""));
|
||||
ast_test_validate(test, rc == 0);
|
||||
str = ast_variable_list_join(list, ", ", " = ", "\"", NULL);
|
||||
ast_test_validate(test, strcmp(ast_str_buffer(str), "ddd = \"444\", eee = \"555\", ccc = \"33 33\"") == 0);
|
||||
|
||||
return AST_TEST_PASS;
|
||||
}
|
||||
static int unload_module(void)
|
||||
{
|
||||
AST_TEST_UNREGISTER(config_save);
|
||||
@@ -1905,6 +1955,7 @@ static int unload_module(void)
|
||||
AST_TEST_UNREGISTER(config_options_test);
|
||||
AST_TEST_UNREGISTER(config_dialplan_function);
|
||||
AST_TEST_UNREGISTER(variable_lists_match);
|
||||
AST_TEST_UNREGISTER(variable_list_join_replace);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1920,6 +1971,7 @@ static int load_module(void)
|
||||
AST_TEST_REGISTER(config_options_test);
|
||||
AST_TEST_REGISTER(config_dialplan_function);
|
||||
AST_TEST_REGISTER(variable_lists_match);
|
||||
AST_TEST_REGISTER(variable_list_join_replace);
|
||||
return AST_MODULE_LOAD_SUCCESS;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user