summaryrefslogtreecommitdiffstats
path: root/src/tests
diff options
context:
space:
mode:
authorSumit Bose <sbose@redhat.com>2016-02-17 13:04:03 +0100
committerJakub Hrozek <jhrozek@redhat.com>2016-04-13 10:43:18 +0200
commit28f336bdb32db0b89cb98174a3f8e308e4e928db (patch)
tree1cf42461c6c268b7665ead6dabdc598de9d7750a /src/tests
parent7cf0f78d832c7a09b59ee9f91cedc427c0253cd4 (diff)
downloadsssd-28f336bdb32db0b89cb98174a3f8e308e4e928db.tar.gz
sssd-28f336bdb32db0b89cb98174a3f8e308e4e928db.tar.xz
sssd-28f336bdb32db0b89cb98174a3f8e308e4e928db.zip
util: make concatenate_string_array() reusable
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
Diffstat (limited to 'src/tests')
-rw-r--r--src/tests/cmocka/test_string_utils.c49
-rw-r--r--src/tests/cmocka/test_utils.c1
-rw-r--r--src/tests/cmocka/test_utils.h1
3 files changed, 51 insertions, 0 deletions
diff --git a/src/tests/cmocka/test_string_utils.c b/src/tests/cmocka/test_string_utils.c
index 4832015a5..57e6f2617 100644
--- a/src/tests/cmocka/test_string_utils.c
+++ b/src/tests/cmocka/test_string_utils.c
@@ -220,3 +220,52 @@ void test_get_last_x_chars(void **state)
assert_non_null(s);
assert_string_equal(s, "abc");
}
+
+void test_concatenate_string_array(void **state)
+{
+ TALLOC_CTX *mem_ctx;
+ char **a1;
+ size_t a1_len = 2;
+ char **a2;
+ size_t a2_len = 3;
+ char **res;
+ size_t c;
+
+ mem_ctx = talloc_new(NULL);
+ assert_non_null(mem_ctx);
+ check_leaks_push(mem_ctx);
+
+ res = concatenate_string_array(mem_ctx, NULL, 0, NULL, 0);
+ assert_non_null(res);
+ assert_null(res[0]);
+ talloc_free(res);
+
+ a1 = talloc_array(mem_ctx, char *, a1_len);
+ assert_non_null(a1);
+ for (c = 0; c < a1_len; c++) {
+ a1[c] = talloc_asprintf(a1, "%zu", c);
+ assert_non_null(a1[c]);
+ }
+
+ a2 = talloc_array(mem_ctx, char *, a2_len);
+ assert_non_null(a2);
+ for (c = 0; c < a2_len; c++) {
+ a2[c] = talloc_asprintf(a2, "%zu", c + a1_len);
+ assert_non_null(a2[c]);
+ }
+
+ res = concatenate_string_array(mem_ctx, a1, a1_len, a2, a2_len);
+ assert_non_null(res);
+ assert_null(res[a1_len + a2_len]);
+ for (c = 0; c < (a1_len + a2_len); c++) {
+ assert_string_equal(res[c], talloc_asprintf(res, "%zu", c));
+ }
+
+ talloc_free(res);
+ /* Since concatenate_string_array() uses talloc_realloc on a1 it should
+ * not be needed to free a1 explicitly. */
+ talloc_free(a2);
+
+ assert_true(check_leaks_pop(mem_ctx) == true);
+ talloc_free(mem_ctx);
+}
diff --git a/src/tests/cmocka/test_utils.c b/src/tests/cmocka/test_utils.c
index 996d99ea0..3aea17f36 100644
--- a/src/tests/cmocka/test_utils.c
+++ b/src/tests/cmocka/test_utils.c
@@ -1545,6 +1545,7 @@ int main(int argc, const char *argv[])
cmocka_unit_test(test_reverse_replace_whitespaces),
cmocka_unit_test(test_guid_blob_to_string_buf),
cmocka_unit_test(test_get_last_x_chars),
+ cmocka_unit_test(test_concatenate_string_array),
cmocka_unit_test_setup_teardown(test_add_strings_lists,
setup_add_strings_lists,
teardown_add_strings_lists),
diff --git a/src/tests/cmocka/test_utils.h b/src/tests/cmocka/test_utils.h
index 8b5163165..e93e0da25 100644
--- a/src/tests/cmocka/test_utils.h
+++ b/src/tests/cmocka/test_utils.h
@@ -31,5 +31,6 @@ void test_replace_whitespaces(void **state);
void test_reverse_replace_whitespaces(void **state);
void test_guid_blob_to_string_buf(void **state);
void test_get_last_x_chars(void **state);
+void test_concatenate_string_array(void **state);
#endif /* __TESTS__CMOCKA__TEST_UTILS_H__ */