#include "asterisk.h"
+#include "asterisk/config.h"
#include "asterisk/json.h"
#include "asterisk/module.h"
#include "asterisk/test.h"
return AST_TEST_PASS;
}
+AST_TEST_DEFINE(json_test_object_create_vars)
+{
+ RAII_VAR(struct ast_json *, uut, NULL, ast_json_unref);
+ RAII_VAR(struct ast_variable *, vars, NULL, ast_variables_destroy);
+ const char *value;
+ struct ast_variable *new_var;
+
+ switch (cmd) {
+ case TEST_INIT:
+ info->name = "object_create_vars";
+ info->category = CATEGORY;
+ info->summary = "Testing JSON object creation initialized using Asterisk variables.";
+ info->description = "Test JSON abstraction library.";
+ return AST_TEST_NOT_RUN;
+ case TEST_EXECUTE:
+ break;
+ }
+
+ /* NULL case */
+ ast_test_validate(test, (uut = ast_json_object_create_vars(NULL, NULL)));
+ ast_test_validate(test, !(value = ast_json_object_string_get(uut, "foo")));
+
+ ast_test_validate(test, (new_var = ast_variable_new("foo", "bar", "")));
+ ast_variable_list_append(&vars, new_var);
+ ast_test_validate(test, (new_var = ast_variable_new("bar", "baz", "")));
+ ast_variable_list_append(&vars, new_var);
+
+ /* Variables case */
+ ast_json_unref(uut);
+ ast_test_validate(test, (uut = ast_json_object_create_vars(vars, NULL)));
+ ast_test_validate(test, (value = ast_json_object_string_get(uut, "foo")));
+ ast_test_validate(test, !strcmp("bar", value));
+ ast_test_validate(test, (value = ast_json_object_string_get(uut, "bar")));
+ ast_test_validate(test, !strcmp("baz", value));
+
+ /* Variables with excludes case */
+ ast_json_unref(uut);
+ ast_test_validate(test, (uut = ast_json_object_create_vars(vars, "foo")));
+ ast_test_validate(test, !(value = ast_json_object_string_get(uut, "foo")));
+ ast_test_validate(test, (value = ast_json_object_string_get(uut, "bar")));
+ ast_test_validate(test, !strcmp("baz", value));
+
+ ast_json_unref(uut);
+ ast_test_validate(test, (uut = ast_json_object_create_vars(vars, "foo2")));
+ ast_test_validate(test, (value = ast_json_object_string_get(uut, "foo")));
+ ast_test_validate(test, (value = ast_json_object_string_get(uut, "bar")));
+ ast_test_validate(test, !strcmp("baz", value));
+
+ ast_json_unref(uut);
+ ast_test_validate(test, (uut = ast_json_object_create_vars(vars, "foobar,baz")));
+ ast_test_validate(test, (value = ast_json_object_string_get(uut, "foo")));
+ ast_test_validate(test, (value = ast_json_object_string_get(uut, "bar")));
+ ast_test_validate(test, !strcmp("baz", value));
+
+ return AST_TEST_PASS;
+}
+
AST_TEST_DEFINE(json_test_dump_load_string)
{
RAII_VAR(struct ast_json *, uut, NULL, ast_json_unref);
AST_TEST_UNREGISTER(json_test_object_null);
AST_TEST_UNREGISTER(json_test_object_iter);
AST_TEST_UNREGISTER(json_test_object_iter_null);
+ AST_TEST_UNREGISTER(json_test_object_create_vars);
AST_TEST_UNREGISTER(json_test_dump_load_string);
AST_TEST_UNREGISTER(json_test_dump_load_str);
AST_TEST_UNREGISTER(json_test_dump_str_fail);
AST_TEST_REGISTER(json_test_object_null);
AST_TEST_REGISTER(json_test_object_iter);
AST_TEST_REGISTER(json_test_object_iter_null);
+ AST_TEST_REGISTER(json_test_object_create_vars);
AST_TEST_REGISTER(json_test_dump_load_string);
AST_TEST_REGISTER(json_test_dump_load_str);
AST_TEST_REGISTER(json_test_dump_str_fail);
return AST_TEST_PASS;
}
+AST_TEST_DEFINE(in_delimited_string)
+{
+ switch (cmd) {
+ case TEST_INIT:
+ info->name = "in_delimited_string";
+ info->category = "/main/strings/";
+ info->summary = "Test ast_in_delimited_string";
+ info->description = info->summary;
+ return AST_TEST_NOT_RUN;
+ case TEST_EXECUTE:
+ break;
+ }
+
+ /* Single letter */
+ ast_test_validate(test, ast_in_delimited_string("a", "a,b", ','));
+ ast_test_validate(test, ast_in_delimited_string("b", "a,b", ','));
+
+ ast_test_validate(test, !ast_in_delimited_string("c", "a,b", ','));
+ ast_test_validate(test, !ast_in_delimited_string("aa", "a,b", ','));
+ ast_test_validate(test, !ast_in_delimited_string("bb", "a,b", ','));
+ ast_test_validate(test, !ast_in_delimited_string("a,", "a,b", ','));
+ ast_test_validate(test, !ast_in_delimited_string(",b", "a,b", ','));
+ ast_test_validate(test, !ast_in_delimited_string("a,b", "a,b", ','));
+
+ /* Bad delimiter (ends up being just a strcmp) */
+ ast_test_validate(test, !ast_in_delimited_string("a", "a,b", '#'));
+ ast_test_validate(test, !ast_in_delimited_string("b", "a,b", '#'));
+
+ ast_test_validate(test, !ast_in_delimited_string("c", "a,b", '#'));
+ ast_test_validate(test, !ast_in_delimited_string("aa", "a,b", '#'));
+ ast_test_validate(test, !ast_in_delimited_string("bb", "a,b", '#'));
+ ast_test_validate(test, !ast_in_delimited_string("a,", "a,b", '#'));
+ ast_test_validate(test, !ast_in_delimited_string(",b", "a,b", '#'));
+
+ ast_test_validate(test, ast_in_delimited_string("a,b", "a,b", '#'));
+
+ /* Multi letter */
+ ast_test_validate(test, ast_in_delimited_string("abc", "abc,def", ','));
+ ast_test_validate(test, ast_in_delimited_string("def", "abc,def", ','));
+
+ ast_test_validate(test, !ast_in_delimited_string("a", "abc,def", ','));
+ ast_test_validate(test, !ast_in_delimited_string("b", "abc,def", ','));
+ ast_test_validate(test, !ast_in_delimited_string("c", "abc,def", ','));
+
+ ast_test_validate(test, !ast_in_delimited_string("d", "abc,def", ','));
+ ast_test_validate(test, !ast_in_delimited_string("e", "abc,def", ','));
+ ast_test_validate(test, !ast_in_delimited_string("f", "abc,def", ','));
+
+ ast_test_validate(test, !ast_in_delimited_string("abc,", "abc,def", ','));
+ ast_test_validate(test, !ast_in_delimited_string(",def", "abc,def", ','));
+ ast_test_validate(test, !ast_in_delimited_string("abc,def", "abc,def", ','));
+
+ /* Embedded */
+ ast_test_validate(test, ast_in_delimited_string("abc", "abcdef,abc", ','));
+ ast_test_validate(test, ast_in_delimited_string("abcdef", "abcdef,abc", ','));
+
+ ast_test_validate(test, !ast_in_delimited_string("abc", "abcdef,def", ','));
+ ast_test_validate(test, !ast_in_delimited_string("def", "abcdef,abc", ','));
+ ast_test_validate(test, !ast_in_delimited_string("def", "abcdefghi,abc", ','));
+
+ /* NULL and empty values */
+ ast_test_validate(test, !ast_in_delimited_string(NULL, "abc,def", ','));
+
+ ast_test_validate(test, ast_in_delimited_string("abc", ",abc,def", ','));
+ ast_test_validate(test, ast_in_delimited_string("abc", "abc,def,", ','));
+ ast_test_validate(test, ast_in_delimited_string("abc", "abc,,def,", ','));
+ ast_test_validate(test, ast_in_delimited_string("def", "abc,,def", ','));
+ ast_test_validate(test, ast_in_delimited_string("def", ",abc,,def,", ','));
+
+ ast_test_validate(test, ast_in_delimited_string("", ",abc,def", ','));
+ ast_test_validate(test, ast_in_delimited_string("", "abc,def,", ','));
+ ast_test_validate(test, ast_in_delimited_string("", "abc,,def,", ','));
+ ast_test_validate(test, !ast_in_delimited_string("", "abc,def", ','));
+
+ /* Multi word */
+ ast_test_validate(test, ast_in_delimited_string("abc", "abc,def,ghi", ','));
+ ast_test_validate(test, ast_in_delimited_string("def", "abc,def,ghi", ','));
+ ast_test_validate(test, ast_in_delimited_string("ghi", "abc,def,ghi", ','));
+
+ ast_test_validate(test, !ast_in_delimited_string("a", "abc,def,ghi", ','));
+ ast_test_validate(test, !ast_in_delimited_string("d", "abc,def,ghi", ','));
+ ast_test_validate(test, !ast_in_delimited_string("g", "abc,def,ghi", ','));
+
+ ast_test_validate(test, !ast_in_delimited_string("ab", "abc,def,ghi", ','));
+ ast_test_validate(test, !ast_in_delimited_string("de", "abc,def,ghi", ','));
+ ast_test_validate(test, !ast_in_delimited_string("gh", "abc,def,ghi", ','));
+
+
+ /* With leading spaces */
+ ast_test_validate(test, ast_in_delimited_string("abc", " abc", ','));
+ ast_test_validate(test, ast_in_delimited_string("abc", " abc, def", ','));
+ ast_test_validate(test, ast_in_delimited_string("def", " abc, def", ','));
+ ast_test_validate(test, ast_in_delimited_string("abc", " abc, def, ghi", ','));
+ ast_test_validate(test, ast_in_delimited_string("def", " abc, def, ghi", ','));
+ ast_test_validate(test, ast_in_delimited_string("ghi", " abc, def, ghi", ','));
+
+ ast_test_validate(test, ast_in_delimited_string("abc", " abc", ','));
+ ast_test_validate(test, ast_in_delimited_string("abc", " abc, def", ','));
+ ast_test_validate(test, ast_in_delimited_string("def", " abc, def", ','));
+ ast_test_validate(test, ast_in_delimited_string("abc", " abc, def, ghi", ','));
+ ast_test_validate(test, ast_in_delimited_string("def", " abc, def, ghi", ','));
+ ast_test_validate(test, ast_in_delimited_string("ghi", " abc, def, ghi", ','));
+
+ /* With leading spaces and space as a delimiter */
+ ast_test_validate(test, ast_in_delimited_string("abc", " abc", ' '));
+ ast_test_validate(test, ast_in_delimited_string("abc", " abc def", ' '));
+ ast_test_validate(test, ast_in_delimited_string("def", " abc def", ' '));
+ ast_test_validate(test, ast_in_delimited_string("abc", " abc def ghi", ' '));
+ ast_test_validate(test, ast_in_delimited_string("def", " abc def ghi", ' '));
+ ast_test_validate(test, ast_in_delimited_string("ghi", " abc def ghi", ' '));
+
+ return AST_TEST_PASS;
+}
+
static int unload_module(void)
{
AST_TEST_UNREGISTER(str_test);
AST_TEST_UNREGISTER(escape_test);
AST_TEST_UNREGISTER(strings_match);
AST_TEST_UNREGISTER(temp_strings);
+ AST_TEST_UNREGISTER(in_delimited_string);
return 0;
}
AST_TEST_REGISTER(escape_test);
AST_TEST_REGISTER(strings_match);
AST_TEST_REGISTER(temp_strings);
+ AST_TEST_REGISTER(in_delimited_string);
return AST_MODULE_LOAD_SUCCESS;
}