]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - src/test/test-set.c
set: introduce set_strjoin()
[thirdparty/systemd.git] / src / test / test-set.c
index 16314d051b6d1f529137ab01b0e5fe9fe8830247..897940824255d70f31ca4d36a2b68c453d2436f9 100644 (file)
@@ -150,6 +150,56 @@ static void test_set_ensure_consume(void) {
         assert_se(set_size(m) == 2);
 }
 
+static void test_set_strjoin(void) {
+        _cleanup_set_free_ Set *m = NULL;
+        _cleanup_free_ char *joined = NULL;
+
+        assert_se(set_strjoin(m, NULL, &joined) >= 0);
+        assert_se(!joined);
+        assert_se(set_strjoin(m, "", &joined) >= 0);
+        assert_se(!joined);
+        assert_se(set_strjoin(m, " ", &joined) >= 0);
+        assert_se(!joined);
+        assert_se(set_strjoin(m, "xxx", &joined) >= 0);
+        assert_se(!joined);
+
+        assert_se(set_put_strdup(&m, "aaa") == 1);
+
+        assert_se(set_strjoin(m, NULL, &joined) >= 0);
+        assert_se(streq(joined, "aaa"));
+
+        joined = mfree(joined);
+        assert_se(set_strjoin(m, "", &joined) >= 0);
+        assert_se(streq(joined, "aaa"));
+
+        joined = mfree(joined);
+        assert_se(set_strjoin(m, " ", &joined) >= 0);
+        assert_se(streq(joined, "aaa"));
+
+        joined = mfree(joined);
+        assert_se(set_strjoin(m, "xxx", &joined) >= 0);
+        assert_se(streq(joined, "aaa"));
+
+        assert_se(set_put_strdup(&m, "bbb") == 1);
+        assert_se(set_put_strdup(&m, "aaa") == 0);
+
+        joined = mfree(joined);
+        assert_se(set_strjoin(m, NULL, &joined) >= 0);
+        assert_se(STR_IN_SET(joined, "aaabbb", "bbbaaa"));
+
+        joined = mfree(joined);
+        assert_se(set_strjoin(m, "", &joined) >= 0);
+        assert_se(STR_IN_SET(joined, "aaabbb", "bbbaaa"));
+
+        joined = mfree(joined);
+        assert_se(set_strjoin(m, " ", &joined) >= 0);
+        assert_se(STR_IN_SET(joined, "aaa bbb", "bbb aaa"));
+
+        joined = mfree(joined);
+        assert_se(set_strjoin(m, "xxx", &joined) >= 0);
+        assert_se(STR_IN_SET(joined, "aaaxxxbbb", "bbbxxxaaa"));
+}
+
 int main(int argc, const char *argv[]) {
         test_set_steal_first();
         test_set_free_with_destructor();
@@ -160,6 +210,7 @@ int main(int argc, const char *argv[]) {
         test_set_ensure_allocated();
         test_set_ensure_put();
         test_set_ensure_consume();
+        test_set_strjoin();
 
         return 0;
 }