mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 06:13:31 +01:00
Add some unit tests for fp_pair_map_t to test/containers.c based on the strmap tests
This commit is contained in:
parent
ac73ceb728
commit
54f41d68e9
@ -5,6 +5,7 @@
|
||||
|
||||
#include "orconfig.h"
|
||||
#include "or.h"
|
||||
#include "fp_pair.h"
|
||||
#include "test.h"
|
||||
|
||||
/** Helper: return a tristate based on comparing the strings in *<b>a</b> and
|
||||
@ -782,6 +783,88 @@ test_container_order_functions(void)
|
||||
;
|
||||
}
|
||||
|
||||
/** Run unit tests for fp_pair-to-void* map functions */
|
||||
static void
|
||||
test_container_fp_pair_map(void)
|
||||
{
|
||||
fp_pair_map_t *map;
|
||||
fp_pair_t fp1, fp2, fp3, fp4, fp5, fp6;
|
||||
void *v;
|
||||
fp_pair_map_iter_t *iter;
|
||||
fp_pair_t k;
|
||||
|
||||
map = fp_pair_map_new();
|
||||
test_assert(map);
|
||||
test_eq(fp_pair_map_size(map), 0);
|
||||
test_assert(fp_pair_map_isempty(map));
|
||||
|
||||
memset(fp1.first, 0x11, DIGEST_LEN);
|
||||
memset(fp1.second, 0x12, DIGEST_LEN);
|
||||
memset(fp2.first, 0x21, DIGEST_LEN);
|
||||
memset(fp2.second, 0x22, DIGEST_LEN);
|
||||
memset(fp3.first, 0x31, DIGEST_LEN);
|
||||
memset(fp3.second, 0x32, DIGEST_LEN);
|
||||
memset(fp4.first, 0x41, DIGEST_LEN);
|
||||
memset(fp4.second, 0x42, DIGEST_LEN);
|
||||
memset(fp5.first, 0x51, DIGEST_LEN);
|
||||
memset(fp5.second, 0x52, DIGEST_LEN);
|
||||
memset(fp6.first, 0x61, DIGEST_LEN);
|
||||
memset(fp6.second, 0x62, DIGEST_LEN);
|
||||
|
||||
v = fp_pair_map_set(map, &fp1, (void*)99);
|
||||
test_eq(v, NULL);
|
||||
test_assert(!fp_pair_map_isempty(map));
|
||||
v = fp_pair_map_set(map, &fp2, (void*)101);
|
||||
test_eq(v, NULL);
|
||||
v = fp_pair_map_set(map, &fp1, (void*)100);
|
||||
test_eq(v, (void*)99);
|
||||
test_eq_ptr(fp_pair_map_get(map, &fp1), (void*)100);
|
||||
test_eq_ptr(fp_pair_map_get(map, &fp2), (void*)101);
|
||||
test_eq_ptr(fp_pair_map_get(map, &fp3), NULL);
|
||||
fp_pair_map_assert_ok(map);
|
||||
|
||||
v = fp_pair_map_remove(map, &fp2);
|
||||
fp_pair_map_assert_ok(map);
|
||||
test_eq_ptr(v, (void*)101);
|
||||
test_eq_ptr(fp_pair_map_get(map, &fp2), NULL);
|
||||
test_eq_ptr(fp_pair_map_remove(map, &fp2), NULL);
|
||||
|
||||
fp_pair_map_set(map, &fp2, (void*)101);
|
||||
fp_pair_map_set(map, &fp3, (void*)102);
|
||||
fp_pair_map_set(map, &fp4, (void*)103);
|
||||
test_eq(fp_pair_map_size(map), 4);
|
||||
fp_pair_map_assert_ok(map);
|
||||
fp_pair_map_set(map, &fp5, (void*)104);
|
||||
fp_pair_map_set(map, &fp6, (void*)105);
|
||||
fp_pair_map_assert_ok(map);
|
||||
|
||||
/* Test iterator. */
|
||||
iter = fp_pair_map_iter_init(map);
|
||||
while (!fp_pair_map_iter_done(iter)) {
|
||||
fp_pair_map_iter_get(iter, &k, &v);
|
||||
test_eq_ptr(v, fp_pair_map_get(map, &k));
|
||||
|
||||
if (tor_memeq(&fp2, &k, sizeof(fp2))) {
|
||||
iter = fp_pair_map_iter_next_rmv(map, iter);
|
||||
} else {
|
||||
iter = fp_pair_map_iter_next(map, iter);
|
||||
}
|
||||
}
|
||||
|
||||
/* Make sure we removed fp2, but not the others. */
|
||||
test_eq_ptr(fp_pair_map_get(map, &fp2), NULL);
|
||||
test_eq_ptr(fp_pair_map_get(map, &fp5), (void*)104);
|
||||
|
||||
fp_pair_map_assert_ok(map);
|
||||
/* Clean up after ourselves. */
|
||||
fp_pair_map_free(map, NULL);
|
||||
map = NULL;
|
||||
|
||||
done:
|
||||
if (map)
|
||||
fp_pair_map_free(map, NULL);
|
||||
}
|
||||
|
||||
#define CONTAINER_LEGACY(name) \
|
||||
{ #name, legacy_test_helper, 0, &legacy_setup, test_container_ ## name }
|
||||
|
||||
@ -796,6 +879,7 @@ struct testcase_t container_tests[] = {
|
||||
CONTAINER_LEGACY(strmap),
|
||||
CONTAINER_LEGACY(pqueue),
|
||||
CONTAINER_LEGACY(order_functions),
|
||||
CONTAINER_LEGACY(fp_pair_map),
|
||||
END_OF_TESTCASES
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user