chiark / gitweb /
tests: compress unit name tests and add more asserts
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 29 Jan 2013 19:39:32 +0000 (14:39 -0500)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 30 Jan 2013 00:01:41 +0000 (19:01 -0500)
src/test/test-unit-name.c

index 50187e1..5207781 100644 (file)
 #include "util.h"
 
 int main(int argc, char* argv[]) {
-        char *t, *k;
-
-        t = unit_name_replace_instance("foo@.service", "waldo");
-        puts(t);
-        free(t);
-
-        t = unit_name_replace_instance("foo@xyz.service", "waldo");
-        puts(t);
-        free(t);
-
-        t = unit_name_replace_instance("xyz", "waldo");
-        puts(t);
-        free(t);
-
-        t = unit_name_replace_instance("", "waldo");
-        puts(t);
-        free(t);
-
-        t = unit_name_replace_instance("", "");
-        puts(t);
-        free(t);
-
-        t = unit_name_replace_instance("foo.service", "waldo");
-        puts(t);
-        free(t);
-
-        t = unit_name_replace_instance(".service", "waldo");
-        puts(t);
-        free(t);
-
-        t = unit_name_replace_instance("foo@bar", "waldo");
-        puts(t);
-        free(t);
-
-        t = unit_name_replace_instance("foo@", "waldo");
-        puts(t);
-        free(t);
-
-        t = unit_name_replace_instance("@", "waldo");
-        puts(t);
-        free(t);
-
-        t = unit_name_replace_instance("@bar", "waldo");
-        puts(t);
-        free(t);
-
-        t = unit_name_from_path("/waldo", ".mount");
-        puts(t);
-        k = unit_name_to_path(t);
-        puts(k);
-        free(k);
-        free(t);
-
-        t = unit_name_from_path("/waldo/quuix", ".mount");
-        puts(t);
-        k = unit_name_to_path(t);
-        puts(k);
-        free(k);
-        free(t);
-
-        t = unit_name_from_path("/waldo/quuix/", ".mount");
-        puts(t);
-        k = unit_name_to_path(t);
-        puts(k);
-        free(k);
-        free(t);
-
-        t = unit_name_from_path("/", ".mount");
-        puts(t);
-        k = unit_name_to_path(t);
-        puts(k);
-        free(k);
-        free(t);
-
-        t = unit_name_from_path("///", ".mount");
-        puts(t);
-        k = unit_name_to_path(t);
-        puts(k);
-        free(k);
-        free(t);
-
-        t = unit_name_from_path_instance("waldo", "/waldo", ".mount");
-        puts(t);
-        free(t);
-
-        t = unit_name_from_path_instance("waldo", "/waldo////quuix////", ".mount");
-        puts(t);
-        free(t);
-
-        t = unit_name_from_path_instance("waldo", "/", ".mount");
-        puts(t);
-        free(t);
-
-        t = unit_name_from_path_instance("wa--ldo", "/--", ".mount");
-        puts(t);
-        free(t);
-
-        assert_se(t = unit_name_mangle("/home"));
-        assert_se(k = unit_name_mangle(t));
-        puts(t);
-        assert_se(streq(t, k));
-        free(t);
-        free(k);
-
-        assert_se(t = unit_name_mangle("/dev/sda"));
-        assert_se(k = unit_name_mangle(t));
-        puts(t);
-        assert_se(streq(t, k));
-        free(t);
-        free(k);
-
-        assert_se(t = unit_name_mangle("üxknürz.service"));
-        assert_se(k = unit_name_mangle(t));
-        puts(t);
-        assert_se(streq(t, k));
-        free(t);
-        free(k);
-
-        assert_se(t = unit_name_mangle("foobar-meh...waldi.service"));
-        assert_se(k = unit_name_mangle(t));
-        puts(t);
-        assert_se(streq(t, k));
-        free(t);
-        free(k);
-
-        assert_se(t = unit_name_mangle("_____####----.....service"));
-        assert_se(k = unit_name_mangle(t));
-        puts(t);
-        assert_se(streq(t, k));
-        free(t);
-        free(k);
-
-        assert_se(t = unit_name_mangle("_____##@;;;,,,##----.....service"));
-        assert_se(k = unit_name_mangle(t));
-        puts(t);
-        assert_se(streq(t, k));
-        free(t);
-        free(k);
-
-        assert_se(t = unit_name_mangle("xxx@@@@/////\\\\\\\\\\yyy.service"));
-        assert_se(k = unit_name_mangle(t));
-        puts(t);
-        assert_se(streq(t, k));
-        free(t);
-        free(k);
+
+#define expect(pattern, repl, expected)                            \
+        {                                                          \
+                char _cleanup_free_ *t =                           \
+                        unit_name_replace_instance(pattern, repl); \
+                puts(t);                                           \
+                assert(streq(t, expected));                        \
+        }
+
+        expect("foo@.service", "waldo", "foo@waldo.service");
+        expect("foo@xyz.service", "waldo", "foo@waldo.service");
+        expect("xyz", "waldo", "xyz");
+        expect("", "waldo", "");
+        expect("foo.service", "waldo", "foo.service");
+        expect(".service", "waldo", ".service");
+        expect("foo@", "waldo", "foo@waldo");
+        expect("@bar", "waldo", "@waldo");
+
+        puts("-------------------------------------------------");
+#undef expect
+#define expect(path, suffix, expected)                             \
+        {                                                          \
+                char _cleanup_free_ *k, *t =                       \
+                        unit_name_from_path(path, suffix);         \
+                puts(t);                                           \
+                k = unit_name_to_path(t);                          \
+                puts(k);                                           \
+                assert(streq(k, expected ? expected : path));     \
+        }
+
+        expect("/waldo", ".mount", NULL);
+        expect("/waldo/quuix", ".mount", NULL);
+        expect("/waldo/quuix/", ".mount", "/waldo/quuix");
+        expect("/", ".mount", NULL);
+        expect("///", ".mount", "/");
+
+        puts("-------------------------------------------------");
+#undef expect
+#define expect(pattern, path, suffix, expected)                         \
+        {                                                               \
+                char _cleanup_free_ *t =                                \
+                        unit_name_from_path_instance(pattern, path, suffix); \
+                puts(t);                                                \
+                assert(streq(t, expected));                             \
+        }
+
+        expect("waldo", "/waldo", ".mount", "waldo@waldo.mount");
+        expect("waldo", "/waldo////quuix////", ".mount", "waldo@waldo-quuix.mount");
+        expect("waldo", "/", ".mount", "waldo@-.mount");
+        expect("wa--ldo", "/--", ".mount", "wa--ldo@\\x2d\\x2d.mount");
+
+        puts("-------------------------------------------------");
+#undef expect
+#define expect(pattern)                                                 \
+        {                                                               \
+                char _cleanup_free_ *k, *t;                             \
+                assert_se(t = unit_name_mangle(pattern));               \
+                assert_se(k = unit_name_mangle(t));                     \
+                puts(t);                                                \
+                assert_se(streq(t, k));                                 \
+        }
+
+        expect("/home");
+        expect("/dev/sda");
+        expect("üxknürz.service");
+        expect("foobar-meh...waldi.service");
+        expect("_____####----.....service");
+        expect("_____##@;;;,,,##----.....service");
+        expect("xxx@@@@/////\\\\\\\\\\yyy.service");
 
         return 0;
 }