From 6ae53d7b54ec2ece9fb51ed92c097f5ba8f9d849 Mon Sep 17 00:00:00 2001 From: Petr Cech Date: Tue, 10 Nov 2015 06:04:45 -0500 Subject: TEST: Add common function are_values_in_array() This patch adds function are_values_in_array() to common test code. And there is tc_are_values_in_array macro defined which is usefull for talloc allocated values and arrays. Resolves: https://fedorahosted.org/sssd/ticket/2730 Reviewed-by: Jakub Hrozek --- src/tests/common.c | 21 +++++++++++++++++++++ src/tests/common.h | 8 ++++++++ 2 files changed, 29 insertions(+) (limited to 'src') diff --git a/src/tests/common.c b/src/tests/common.c index 9655cd3c..8ba73a2e 100644 --- a/src/tests/common.c +++ b/src/tests/common.c @@ -118,3 +118,24 @@ bool ldb_modules_path_is_set(void) return false; } + +/* Returns true if all values are in array (else returns false) */ +bool are_values_in_array(const char **values, size_t values_len, + const char **array, size_t array_len) +{ + bool is_value_in_element = false; + bool is_value_in_array = false; + bool ret = true; + + for (size_t i = 0; i < values_len; i++) { + is_value_in_array = false; + for (size_t j = 0; j < array_len; j++) { + is_value_in_element = strcmp(values[i], array[j]) == 0 ? \ + true : false; + is_value_in_array = is_value_in_array || is_value_in_element; + } + ret = ret && is_value_in_array; + } + + return ret; +} diff --git a/src/tests/common.h b/src/tests/common.h index 794218c5..c9b3815c 100644 --- a/src/tests/common.h +++ b/src/tests/common.h @@ -143,4 +143,12 @@ struct sss_domain_info *named_domain(TALLOC_CTX *mem_ctx, const char *name, struct sss_domain_info *parent); +/* Returns true if all values are in array (else returns false) */ +bool are_values_in_array(const char **values, size_t values_len, + const char **array, size_t array_len); + +#define tc_are_values_in_array(values, array) \ + are_values_in_array(values, talloc_array_length(values), \ + array, talloc_array_length(array)) + #endif /* !__TESTS_COMMON_H__ */ -- cgit