chiark / gitweb /
test-strv.c: test strv_join added
[elogind.git] / src / test / test-strv.c
index 5ee4447..7898ea7 100644 (file)
 
 #include "util.h"
 #include "specifier.h"
+#include "strv.h"
+
+static void test_specifier_printf(void) {
+        char *w;
 
-int main(int argc, char *argv[]) {
         const Specifier table[] = {
                 { 'a', specifier_string, (char*) "AAAA" },
                 { 'b', specifier_string, (char*) "BBBB" },
                 { 0, NULL, NULL }
         };
 
+        w = specifier_printf("xxx a=%a b=%b yyy", table, NULL);
+        printf("<%s>\n", w);
+        free(w);
+}
+
+static void test_foreach_word_quoted(void) {
         char *w, *state;
         size_t l;
         const char test[] = "test a b c 'd' e '' '' hhh '' ''";
-
         printf("<%s>\n", test);
-
         FOREACH_WORD_QUOTED(w, l, test, state) {
                 char *t;
 
@@ -44,7 +51,52 @@ int main(int argc, char *argv[]) {
                 printf("<%s>\n", t);
                 free(t);
         }
+}
+
+static void test_strv_join(void) {
+        char *r;
+
+        const char * const input_table_multiple[] = {
+                "one",
+                "two",
+                "three",
+                NULL
+        };
+        const char * const input_table_one[] = {
+                "one",
+                NULL
+        };
+        const char * const input_table_none[] = {
+                NULL
+        };
+
+        r = strv_join((char **)input_table_multiple, ", ");
+        assert_se(streq(r, "one, two, three"));
+        puts(r);
+        free(r);
+
+        r = strv_join((char **)input_table_multiple, ";");
+        assert_se(streq(r, "one;two;three"));
+        puts(r);
+        free(r);
 
+        r = strv_join((char **)input_table_multiple, NULL);
+        assert_se(streq(r, "one two three"));
+        puts(r);
+        free(r);
+
+        r = strv_join((char **)input_table_one, ", ");
+        assert_se(streq(r, "one"));
+        puts(r);
+        free(r);
+
+        r = strv_join((char **)input_table_none, ", ");
+        assert_se(streq(r, ""));
+        puts(r);
+        free(r);
+}
+
+static void test_default_term_for_tty(void) {
         printf("%s\n", default_term_for_tty("/dev/tty23"));
         printf("%s\n", default_term_for_tty("/dev/ttyS23"));
         printf("%s\n", default_term_for_tty("/dev/tty0"));
@@ -57,10 +109,13 @@ int main(int argc, char *argv[]) {
         printf("%s\n", default_term_for_tty("pty0"));
         printf("%s\n", default_term_for_tty("pts/0"));
         printf("%s\n", default_term_for_tty("console"));
+}
 
-        w = specifier_printf("xxx a=%a b=%b yyy", table, NULL);
-        printf("<%s>\n", w);
-        free(w);
+int main(int argc, char *argv[]) {
+        test_default_term_for_tty();
+        test_foreach_word_quoted();
+        test_specifier_printf();
+        test_strv_join();
 
         return 0;
 }