aboutsummaryrefslogtreecommitdiffstats
path: root/tests/common/check_config_parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/common/check_config_parser.c')
-rw-r--r--tests/common/check_config_parser.c213
1 files changed, 175 insertions, 38 deletions
diff --git a/tests/common/check_config_parser.c b/tests/common/check_config_parser.c
index 49e2a5b..1986d5a 100644
--- a/tests/common/check_config_parser.c
+++ b/tests/common/check_config_parser.c
@@ -24,7 +24,7 @@ test_config_empty(void **state)
{
const char *a = "";
bc_error_t *err = NULL;
- bc_config_t *c = bc_config_parse(a, strlen(a), NULL, &err);
+ bc_config_t *c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -39,7 +39,7 @@ test_config_section_empty(void **state)
{
const char *a = "[foo]";
bc_error_t *err = NULL;
- bc_config_t *c = bc_config_parse(a, strlen(a), NULL, &err);
+ bc_config_t *c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -66,7 +66,7 @@ test_config_section(void **state)
"[foo]\n"
"asd = zxc";
bc_error_t *err = NULL;
- bc_config_t *c = bc_config_parse(a, strlen(a), NULL, &err);
+ bc_config_t *c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -90,7 +90,7 @@ test_config_section(void **state)
"[foo]\n"
"asd = zxc\n";
err = NULL;
- c = bc_config_parse(a, strlen(a), NULL, &err);
+ c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -114,7 +114,7 @@ test_config_section(void **state)
"[foo]\r\n"
"asd = zxc\r\n";
err = NULL;
- c = bc_config_parse(a, strlen(a), NULL, &err);
+ c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -145,7 +145,7 @@ test_config_section_multiple_keys(void **state)
"qwe = rty \n"
"zxc = vbn";
bc_error_t *err = NULL;
- bc_config_t *c = bc_config_parse(a, strlen(a), NULL, &err);
+ bc_config_t *c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -175,7 +175,7 @@ test_config_section_multiple_keys(void **state)
"qwe = rty \n"
"zxc = vbn\n";
err = NULL;
- c = bc_config_parse(a, strlen(a), NULL, &err);
+ c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -205,7 +205,7 @@ test_config_section_multiple_keys(void **state)
"qwe = rty \r\n"
"zxc = vbn\r\n";
err = NULL;
- c = bc_config_parse(a, strlen(a), NULL, &err);
+ c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -243,7 +243,7 @@ test_config_section_multiple_sections(void **state)
"[bar]\n"
"lol = hehe";
bc_error_t *err = NULL;
- bc_config_t *c = bc_config_parse(a, strlen(a), NULL, &err);
+ bc_config_t *c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -284,7 +284,7 @@ test_config_section_multiple_sections(void **state)
"[bar]\n"
"lol = hehe\n";
err = NULL;
- c = bc_config_parse(a, strlen(a), NULL, &err);
+ c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -325,7 +325,7 @@ test_config_section_multiple_sections(void **state)
"[bar]\r\n"
"lol = hehe\r\n";
err = NULL;
- c = bc_config_parse(a, strlen(a), NULL, &err);
+ c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -373,7 +373,7 @@ test_config_section_list(void **state)
" asdasdadssad ";
bc_error_t *err = NULL;
const char *sections[] = {"bar", NULL};
- bc_config_t *c = bc_config_parse(a, strlen(a), sections, &err);
+ bc_config_t *c = bc_config_parse(a, strlen(a), sections, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -416,7 +416,7 @@ test_config_section_list(void **state)
"lol = hehe\n"
"asdasdadssad\n";
err = NULL;
- c = bc_config_parse(a, strlen(a), sections, &err);
+ c = bc_config_parse(a, strlen(a), sections, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -459,7 +459,7 @@ test_config_section_list(void **state)
"lol = hehe\r\n"
"asdasdadssad\r\n";
err = NULL;
- c = bc_config_parse(a, strlen(a), sections, &err);
+ c = bc_config_parse(a, strlen(a), sections, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -495,6 +495,141 @@ test_config_section_list(void **state)
static void
+test_config_section_list_prefix(void **state)
+{
+ const char *a =
+ "[foo]\n"
+ "asd = zxc\n"
+ "qwe = rty\n"
+ "zxc = vbn\n"
+ "\n"
+ "[bara]\n"
+ "lol = hehe\n"
+ " asdasdadssad ";
+ bc_error_t *err = NULL;
+ const char *sections[] = {"bar", NULL};
+ bc_config_t *c = bc_config_parse(a, strlen(a), NULL, sections, &err);
+ assert_null(err);
+ assert_non_null(c);
+ assert_non_null(c->root);
+ assert_int_equal(bc_trie_size(c->root), 2);
+ char **s = bc_config_list_sections(c);
+ assert_non_null(s);
+ assert_int_equal(bc_strv_length(s), 2);
+ assert_string_equal(s[0], "foo");
+ assert_string_equal(s[1], "bara");
+ assert_null(s[2]);
+ bc_strv_free(s);
+ assert_string_equal(bc_config_get(c, "foo", "asd"), "zxc");
+ assert_string_equal(bc_config_get(c, "foo", "qwe"), "rty");
+ assert_string_equal(bc_config_get(c, "foo", "zxc"), "vbn");
+ char **bar = bc_config_get_list(c, "bara");
+ assert_non_null(bar);
+ assert_string_equal(bar[0], "lol = hehe");
+ assert_string_equal(bar[1], "asdasdadssad");
+ assert_null(bar[2]);
+ bc_strv_free(bar);
+ char **k = bc_config_list_keys(c, "foo");
+ assert_non_null(k);
+ assert_int_equal(bc_strv_length(k), 3);
+ assert_string_equal(k[0], "asd");
+ assert_string_equal(k[1], "qwe");
+ assert_string_equal(k[2], "zxc");
+ assert_null(k[3]);
+ bc_strv_free(k);
+ k = bc_config_list_keys(c, "bara");
+ assert_null(k);
+ bc_config_free(c);
+
+ a =
+ "[foo]\n"
+ "asd = zxc\n"
+ "qwe = rty\n"
+ "zxc = vbn\n"
+ "\n"
+ "[baras]\n"
+ "lol = hehe\n"
+ "asdasdadssad\n";
+ err = NULL;
+ c = bc_config_parse(a, strlen(a), NULL, sections, &err);
+ assert_null(err);
+ assert_non_null(c);
+ assert_non_null(c->root);
+ assert_int_equal(bc_trie_size(c->root), 2);
+ s = bc_config_list_sections(c);
+ assert_non_null(s);
+ assert_int_equal(bc_strv_length(s), 2);
+ assert_string_equal(s[0], "foo");
+ assert_string_equal(s[1], "baras");
+ assert_null(s[2]);
+ bc_strv_free(s);
+ assert_string_equal(bc_config_get(c, "foo", "asd"), "zxc");
+ assert_string_equal(bc_config_get(c, "foo", "qwe"), "rty");
+ assert_string_equal(bc_config_get(c, "foo", "zxc"), "vbn");
+ bar = bc_config_get_list(c, "baras");
+ assert_non_null(bar);
+ assert_string_equal(bar[0], "lol = hehe");
+ assert_string_equal(bar[1], "asdasdadssad");
+ assert_null(bar[2]);
+ bc_strv_free(bar);
+ k = bc_config_list_keys(c, "foo");
+ assert_non_null(k);
+ assert_int_equal(bc_strv_length(k), 3);
+ assert_string_equal(k[0], "asd");
+ assert_string_equal(k[1], "qwe");
+ assert_string_equal(k[2], "zxc");
+ assert_null(k[3]);
+ bc_strv_free(k);
+ k = bc_config_list_keys(c, "baras");
+ assert_null(k);
+ bc_config_free(c);
+
+ a =
+ "[foo]\r\n"
+ "asd = zxc\r\n"
+ "qwe = rty\r\n"
+ "zxc = vbn\r\n"
+ "\r\n"
+ "[barasd]\r\n"
+ "lol = hehe\r\n"
+ "asdasdadssad\r\n";
+ err = NULL;
+ c = bc_config_parse(a, strlen(a), NULL, sections, &err);
+ assert_null(err);
+ assert_non_null(c);
+ assert_non_null(c->root);
+ assert_int_equal(bc_trie_size(c->root), 2);
+ s = bc_config_list_sections(c);
+ assert_non_null(s);
+ assert_int_equal(bc_strv_length(s), 2);
+ assert_string_equal(s[0], "foo");
+ assert_string_equal(s[1], "barasd");
+ assert_null(s[2]);
+ bc_strv_free(s);
+ assert_string_equal(bc_config_get(c, "foo", "asd"), "zxc");
+ assert_string_equal(bc_config_get(c, "foo", "qwe"), "rty");
+ assert_string_equal(bc_config_get(c, "foo", "zxc"), "vbn");
+ bar = bc_config_get_list(c, "barasd");
+ assert_non_null(bar);
+ assert_string_equal(bar[0], "lol = hehe");
+ assert_string_equal(bar[1], "asdasdadssad");
+ assert_null(bar[2]);
+ bc_strv_free(bar);
+ k = bc_config_list_keys(c, "foo");
+ assert_non_null(k);
+ assert_int_equal(bc_strv_length(k), 3);
+ assert_string_equal(k[0], "asd");
+ assert_string_equal(k[1], "qwe");
+ assert_string_equal(k[2], "zxc");
+ assert_null(k[3]);
+ bc_strv_free(k);
+ k = bc_config_list_keys(c, "barasd");
+ assert_null(k);
+ bc_config_free(c);
+}
+
+
+static void
test_config_quoted_values(void **state)
{
const char *a =
@@ -509,7 +644,7 @@ test_config_quoted_values(void **state)
"h = \"\\\\asd\"\n"
"i = '\\\\asd'\n";
bc_error_t *err = NULL;
- bc_config_t *c = bc_config_parse(a, strlen(a), NULL, &err);
+ bc_config_t *c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -557,12 +692,13 @@ test_config_quoted_values(void **state)
"\"\\\\asd\"\n"
"'\\\\asd'\n"
"\n"
- "[bar]\n"
+ "[bar:1]\n"
"'lol = hehe'\n"
"\" asdasdadssad \"";
err = NULL;
- const char *sections[] = {"foo", "bar", NULL};
- c = bc_config_parse(a, strlen(a), sections, &err);
+ const char *sections[] = {"foo", NULL};
+ const char *sections_prefix[] = {"bar:", NULL};
+ c = bc_config_parse(a, strlen(a), sections, sections_prefix, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -571,7 +707,7 @@ test_config_quoted_values(void **state)
assert_non_null(s);
assert_int_equal(bc_strv_length(s), 2);
assert_string_equal(s[0], "foo");
- assert_string_equal(s[1], "bar");
+ assert_string_equal(s[1], "bar:1");
assert_null(s[2]);
bc_strv_free(s);
char **bar = bc_config_get_list(c, "foo");
@@ -586,7 +722,7 @@ test_config_quoted_values(void **state)
assert_string_equal(bar[8], "'\\asd'");
assert_null(bar[9]);
bc_strv_free(bar);
- bar = bc_config_get_list(c, "bar");
+ bar = bc_config_get_list(c, "bar:1");
assert_non_null(bar);
assert_string_equal(bar[0], "'lol = hehe'");
assert_string_equal(bar[1], " asdasdadssad ");
@@ -594,7 +730,7 @@ test_config_quoted_values(void **state)
bc_strv_free(bar);
k = bc_config_list_keys(c, "foo");
assert_null(k);
- k = bc_config_list_keys(c, "bar");
+ k = bc_config_list_keys(c, "bar:1");
assert_null(k);
bc_config_free(c);
}
@@ -607,7 +743,7 @@ test_config_empty_values(void **state)
"[foo]\n"
"asd =";
bc_error_t *err = NULL;
- bc_config_t *c = bc_config_parse(a, strlen(a), NULL, &err);
+ bc_config_t *c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -631,7 +767,7 @@ test_config_empty_values(void **state)
"[foo]\n"
"asd = \n";
err = NULL;
- c = bc_config_parse(a, strlen(a), NULL, &err);
+ c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -656,7 +792,7 @@ test_config_empty_values(void **state)
"asd = foo\n"
"qwe =";
err = NULL;
- c = bc_config_parse(a, strlen(a), NULL, &err);
+ c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -683,7 +819,7 @@ test_config_empty_values(void **state)
"asd = foo\n"
"qwe = \n";
err = NULL;
- c = bc_config_parse(a, strlen(a), NULL, &err);
+ c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -710,7 +846,7 @@ test_config_empty_values(void **state)
"asd =\n"
"qwe = foo";
err = NULL;
- c = bc_config_parse(a, strlen(a), NULL, &err);
+ c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -737,7 +873,7 @@ test_config_empty_values(void **state)
"asd = \n"
"qwe = foo\n";
err = NULL;
- c = bc_config_parse(a, strlen(a), NULL, &err);
+ c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -763,7 +899,7 @@ test_config_empty_values(void **state)
"[foo]\r\n"
"asd =";
err = NULL;
- c = bc_config_parse(a, strlen(a), NULL, &err);
+ c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -787,7 +923,7 @@ test_config_empty_values(void **state)
"[foo]\r\n"
"asd = \r\n";
err = NULL;
- c = bc_config_parse(a, strlen(a), NULL, &err);
+ c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -812,7 +948,7 @@ test_config_empty_values(void **state)
"asd = foo\r\n"
"qwe =";
err = NULL;
- c = bc_config_parse(a, strlen(a), NULL, &err);
+ c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -839,7 +975,7 @@ test_config_empty_values(void **state)
"asd = foo\r\n"
"qwe = \r\n";
err = NULL;
- c = bc_config_parse(a, strlen(a), NULL, &err);
+ c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -866,7 +1002,7 @@ test_config_empty_values(void **state)
"asd =\r\n"
"qwe = foo";
err = NULL;
- c = bc_config_parse(a, strlen(a), NULL, &err);
+ c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -893,7 +1029,7 @@ test_config_empty_values(void **state)
"asd = \r\n"
"qwe = foo\r\n";
err = NULL;
- c = bc_config_parse(a, strlen(a), NULL, &err);
+ c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -925,7 +1061,7 @@ test_config_key_prefix(void **state)
"LAST_FLIGHT = lol\n"
"LAST_FLIGHT_SLUG = hehe\n";
bc_error_t *err = NULL;
- bc_config_t *c = bc_config_parse(a, strlen(a), NULL, &err);
+ bc_config_t *c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_null(err);
assert_non_null(c);
assert_non_null(c->root);
@@ -956,7 +1092,7 @@ test_config_error_start(void **state)
"asd\n"
"[foo]";
bc_error_t *err = NULL;
- bc_config_t *c = bc_config_parse(a, strlen(a), NULL, &err);
+ bc_config_t *c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_non_null(err);
assert_null(c);
assert_int_equal(err->type, BC_ERROR_CONFIG_PARSER);
@@ -973,7 +1109,7 @@ test_config_error_section_with_newline(void **state)
const char *a =
"[foo\nbar]";
bc_error_t *err = NULL;
- bc_config_t *c = bc_config_parse(a, strlen(a), NULL, &err);
+ bc_config_t *c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_non_null(err);
assert_null(c);
assert_int_equal(err->type, BC_ERROR_CONFIG_PARSER);
@@ -992,7 +1128,7 @@ test_config_error_key_without_value(void **state)
"asd = 12\n"
"foo";
bc_error_t *err = NULL;
- bc_config_t *c = bc_config_parse(a, strlen(a), NULL, &err);
+ bc_config_t *c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_non_null(err);
assert_null(c);
assert_int_equal(err->type, BC_ERROR_CONFIG_PARSER);
@@ -1005,7 +1141,7 @@ test_config_error_key_without_value(void **state)
"asd = 12\n"
"foo\n";
err = NULL;
- c = bc_config_parse(a, strlen(a), NULL, &err);
+ c = bc_config_parse(a, strlen(a), NULL, NULL, &err);
assert_non_null(err);
assert_null(c);
assert_int_equal(err->type, BC_ERROR_CONFIG_PARSER);
@@ -1026,6 +1162,7 @@ main(void)
unit_test(test_config_section_multiple_keys),
unit_test(test_config_section_multiple_sections),
unit_test(test_config_section_list),
+ unit_test(test_config_section_list_prefix),
unit_test(test_config_quoted_values),
unit_test(test_config_empty_values),
unit_test(test_config_key_prefix),