[tor-commits] [tor/release-0.2.4] Add some unit tests for fp_pair_map_t to test/containers.c based on the strmap tests

arma at torproject.org arma at torproject.org
Sat May 25 03:58:41 UTC 2013


commit 54f41d68e9e30ccd0ebd84a3f8e913ea9e923cfd
Author: Andrea Shepard <andrea at torproject.org>
Date:   Thu May 9 10:51:48 2013 -0700

    Add some unit tests for fp_pair_map_t to test/containers.c based on the strmap tests
---
 src/test/test_containers.c |   84 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 84 insertions(+)

diff --git a/src/test/test_containers.c b/src/test/test_containers.c
index 45898df..5fee5c9 100644
--- a/src/test/test_containers.c
+++ b/src/test/test_containers.c
@@ -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
 };
 





More information about the tor-commits mailing list