diff options
author | Sumit Bose <sbose@redhat.com> | 2016-02-17 13:04:03 +0100 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2016-04-13 10:43:18 +0200 |
commit | 28f336bdb32db0b89cb98174a3f8e308e4e928db (patch) | |
tree | 1cf42461c6c268b7665ead6dabdc598de9d7750a /src/tests | |
parent | 7cf0f78d832c7a09b59ee9f91cedc427c0253cd4 (diff) | |
download | sssd-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.c | 49 | ||||
-rw-r--r-- | src/tests/cmocka/test_utils.c | 1 | ||||
-rw-r--r-- | src/tests/cmocka/test_utils.h | 1 |
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__ */ |