X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Ftest%2Ftest-strv.c;h=3ed5a09836ccd6a1ad5003fc35d4e68116753f93;hb=a1022300b9f5af6249292acf93f5c6d4bf45e655;hp=1df8157b597cbfc8b9d9eb3ffda141ea3593583e;hpb=539ad707db5361e7fbe0076615a92456fd34f7df;p=elogind.git diff --git a/src/test/test-strv.c b/src/test/test-strv.c index 1df8157b5..3ed5a0983 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,33 @@ static void test_strv_sort(void) { assert(streq(input_table[4], "durian")); } +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(); return 0; }