[systemd-commits] src/test

Thomas H.P. Andersen phomes at kemper.freedesktop.org
Mon Feb 25 14:44:38 PST 2013


 src/test/test-util.c |   71 ++++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 67 insertions(+), 4 deletions(-)

New commits:
commit 1ef04f0b14a5e48a822683a9e3a19233b42aecb2
Author: Thomas Hindoe Paaboel Andersen <phomes at gmail.com>
Date:   Mon Feb 25 23:41:55 2013 +0100

    tests: add a few more tests to test-util.c
    
    Add asserts on the resutls in FOREACH_WORD_QUOTED
    Added tests for:
      FOREACH_WORD
      strstrip
      delete_chars
      in_charset

diff --git a/src/test/test-util.c b/src/test/test-util.c
index e4dea09..c15f19d 100644
--- a/src/test/test-util.c
+++ b/src/test/test-util.c
@@ -129,17 +129,76 @@ static void test_safe_atod(void) {
         assert_se(r == -EINVAL);
 }
 
+static void test_strstrip(void) {
+       char *r;
+       char input[] = "   hello, waldo.   ";
+
+       r = strstrip(input);
+       assert_se(streq(r, "hello, waldo."));
+
+}
+
+static void test_delete_chars(void) {
+       char *r;
+       char input[] = "   hello, waldo.   abc";
+
+       r = delete_chars(input, WHITESPACE);
+       assert_se(streq(r, "hello,waldo.abc"));
+}
+
+static void test_in_charset(void) {
+      assert_se(in_charset("dddaaabbbcccc", "abcd"));
+      assert_se(!in_charset("dddaaabbbcccc", "abc f"));
+}
+
+static void test_foreach_word(void) {
+        char *w, *state;
+        size_t l;
+        int i = 0;
+        const char test[] = "test abc d\te   f   ";
+        const char * const expected[] = {
+                "test",
+                "abc",
+                "d",
+                "e",
+                "f",
+                "",
+                NULL
+        };
+
+        FOREACH_WORD(w, l, test, state) {
+                assert_se(strneq(expected[i++], w, l));
+        }
+}
+
 static void test_foreach_word_quoted(void) {
         char *w, *state;
         size_t l;
-        const char test[] = "test a b c 'd' e '' '' hhh '' ''";
+        int i = 0;
+        const char test[] = "test a b c 'd' e '' '' hhh '' '' \"a b c\"";
+        const char * const expected[] = {
+                "test",
+                "a",
+                "b",
+                "c",
+                "d",
+                "e",
+                "",
+                "",
+                "hhh",
+                "",
+                "",
+                "a b c",
+                NULL
+        };
+
         printf("<%s>\n", test);
         FOREACH_WORD_QUOTED(w, l, test, state) {
-                char *t;
+                _cleanup_free_ char *t = NULL;
 
                 assert_se(t = strndup(w, l));
+                assert_se(strneq(expected[i++], w, l));
                 printf("<%s>\n", t);
-                free(t);
         }
 }
 
@@ -175,12 +234,16 @@ int main(int argc, char *argv[]) {
         test_streq_ptr();
         test_first_word();
         test_parse_boolean();
-        test_default_term_for_tty();
         test_parse_pid();
         test_parse_uid();
         test_safe_atolli();
         test_safe_atod();
+        test_strstrip();
+        test_delete_chars();
+        test_in_charset();
+        test_foreach_word();
         test_foreach_word_quoted();
+        test_default_term_for_tty();
         test_memdup_multiply();
 
         return 0;



More information about the systemd-commits mailing list