X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Ftest%2Ftest-strv.c;h=fabc26e25e4844bbbd328b31e850aac2e6405964;hp=1df8157b597cbfc8b9d9eb3ffda141ea3593583e;hb=343a896935b9573949f57918c375ad783d71febf;hpb=539ad707db5361e7fbe0076615a92456fd34f7df diff --git a/src/test/test-strv.c b/src/test/test-strv.c index 1df8157b5..fabc26e25 100644 --- a/src/test/test-strv.c +++ b/src/test/test-strv.c @@ -100,6 +100,23 @@ static void test_strv_join(void) { assert(streq(t, "")); } +static void test_strv_parse_nulstr(void) { + _cleanup_strv_free_ char **l = NULL; + const char nulstr[] = "fuck\0fuck2\0fuck3\0\0fuck5\0\0xxx"; + + l = strv_parse_nulstr(nulstr, sizeof(nulstr)-1); + puts("Parse nulstr:"); + strv_print(l); + + assert(streq(l[0], "fuck")); + assert(streq(l[1], "fuck2")); + assert(streq(l[2], "fuck3")); + assert(streq(l[3], "")); + assert(streq(l[4], "fuck5")); + assert(streq(l[5], "")); + assert(streq(l[6], "xxx")); +} + static void test_strv_overlap(void) { const char * const input_table[] = { "one", @@ -141,13 +158,48 @@ static void test_strv_sort(void) { assert(streq(input_table[4], "durian")); } +static void test_strv_merge_concat(void) { + _cleanup_strv_free_ char **a = NULL, **b = NULL, **c = NULL; + + a = strv_new("without", "suffix", NULL); + b = strv_new("with", "suffix", NULL); + + c = strv_merge_concat(a, b, "_suffix"); + + assert(streq(c[0], "without")); + assert(streq(c[1], "suffix")); + assert(streq(c[2], "with_suffix")); + assert(streq(c[3], "suffix_suffix")); +} + +static void test_strv_merge(void) { + _cleanup_strv_free_ char **a = NULL, **b = NULL, **c = NULL; + + a = strv_new("abc", "def", "ghi", NULL); + b = strv_new("jkl", "mno", "pqr", NULL); + + c = strv_merge(a, b); + + assert(streq(c[0], "abc")); + assert(streq(c[1], "def")); + assert(streq(c[2], "ghi")); + assert(streq(c[3], "jkl")); + assert(streq(c[4], "mno")); + assert(streq(c[5], "pqr")); + + assert(strv_length(c) == 6); +} + int main(int argc, char *argv[]) { test_specifier_printf(); test_strv_find(); test_strv_find_prefix(); test_strv_join(); + test_strv_parse_nulstr(); test_strv_overlap(); test_strv_sort(); + test_strv_merge(); + test_strv_merge_concat(); return 0; }