diff options
Diffstat (limited to 'tests/vector.c')
-rw-r--r-- | tests/vector.c | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/tests/vector.c b/tests/vector.c index 8f4a20c..4d27c7f 100644 --- a/tests/vector.c +++ b/tests/vector.c @@ -381,6 +381,70 @@ test_vector_pop_back(void) { return 0; } +static int +test_vector_contains(void) { + int rc = -1; + + const struct Vector *v = NULL; + + test_start("vector_contains()"); + { + testing("empty vector"); + + if (vector_new(sizeof(int), &v)) { + logerr("vector_new()"); + goto out; + } + + const int value = 1; + for (size_t i = 0; i < 100; i++) { + assert(!vector_contains(v, &value)); + } + + vector_free(v); + v = NULL; + + test_ok(); + } + { + testing("small vectors"); + + if (vector_new(sizeof(size_t), &v)) { + logerr("vector_new()"); + goto out; + } + + for (size_t i = 0; i < 100U; i++) { + if (vector_push_back(v, &i)) { + logerr("vector_push_back()"); + goto out; + } + } + + const size_t value = 100U; + for (size_t i = 0; i < vector_count(v); i++) { + assert(!vector_contains(v, &value)); + } + + for (size_t i = 0; i < vector_count(v); i++) { + assert(vector_contains(v, &i)); + } + + vector_free(v); + v = NULL; + + test_ok(); + } + + rc = 0; +out: + if (v != NULL) { + vector_free(v); + v = NULL; + } + return rc; +} + int main(void) { @@ -424,6 +488,11 @@ main(void) { goto out; } + if (test_vector_contains()) { + logerr("test_vector_contains()"); + goto out; + } + rc = 0; out: return !!rc; |