diff options
| author | Carlos Martín Nieto <cmn@dwim.me> | 2016-09-23 12:42:33 +0200 |
|---|---|---|
| committer | Carlos Martín Nieto <cmn@dwim.me> | 2016-10-06 11:04:55 +0200 |
| commit | 0bd43371c27b5fee23768c1b369bf2c62601578f (patch) | |
| tree | b9b04e70097439d19482f236018c35ea4e11dd05 /tests | |
| parent | 6708618c10f509ed1d22298628bf578a514d2624 (diff) | |
| download | libgit2-0bd43371c27b5fee23768c1b369bf2c62601578f.tar.gz | |
vector, pqueue: add git_vector_reverse and git_pqueue_reverse
This is a convenience function to reverse the contents of a vector and a pqueue
in-place.
The pqueue function is useful in the case where we're treating it as a
LIFO queue.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/core/vector.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/core/vector.c b/tests/core/vector.c index c351655a7..336254cce 100644 --- a/tests/core/vector.c +++ b/tests/core/vector.c @@ -376,3 +376,32 @@ void test_core_vector__grow_and_shrink(void) git_vector_free(&x); } + +void test_core_vector__reverse(void) +{ + git_vector v = GIT_VECTOR_INIT; + size_t i; + + void *in1[] = {(void *) 0x0, (void *) 0x1, (void *) 0x2, (void *) 0x3}; + void *out1[] = {(void *) 0x3, (void *) 0x2, (void *) 0x1, (void *) 0x0}; + + void *in2[] = {(void *) 0x0, (void *) 0x1, (void *) 0x2, (void *) 0x3, (void *) 0x4}; + void *out2[] = {(void *) 0x4, (void *) 0x3, (void *) 0x2, (void *) 0x1, (void *) 0x0}; + + for (i = 0; i < 4; i++) + cl_git_pass(git_vector_insert(&v, in1[i])); + + git_vector_reverse(&v); + + for (i = 0; i < 4; i++) + cl_assert_equal_p(out1[i], git_vector_get(&v, i)); + + git_vector_clear(&v); + for (i = 0; i < 5; i++) + cl_git_pass(git_vector_insert(&v, in2[i])); + + git_vector_reverse(&v); + + for (i = 0; i < 5; i++) + cl_assert_equal_p(out2[i], git_vector_get(&v, i)); +} |
