From b87363f82d941e76389415af55656ba3785b912d Mon Sep 17 00:00:00 2001 From: Petr Cech Date: Nov 14 2015 12:16:58 +0000 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 (cherry picked from commit 6ae53d7b54ec2ece9fb51ed92c097f5ba8f9d849) --- diff --git a/src/tests/common.c b/src/tests/common.c index 9655cd3..8ba73a2 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 794218c..c9b3815 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__ */