Browse Source

r12812@catbus: nickm | 2007-05-19 16:17:36 -0400
Fix compilation with -O0; add unit tests for swap and shuffle.


svn:r10223

Nick Mathewson 17 years ago
parent
commit
5f58bee0b0
2 changed files with 21 additions and 3 deletions
  1. 2 2
      src/common/container.h
  2. 19 1
      src/or/test.c

+ 2 - 2
src/common/container.h

@@ -78,9 +78,9 @@ extern INLINE void smartlist_set(smartlist_t *sl, int idx, void *val) {
 #define smartlist_set(sl, idx, val) ((sl)->list[idx] = (val))
 #endif
 
-void smartlist_swap(smartlist_t *sl, int idx1, int idx2);
+// void smartlist_swap(smartlist_t *sl, int idx1, int idx2);
 /**DOCDOC*/
-extern INLINE void smartlist_swap(smartlist_t *sl, int idx1, int idx2)
+static INLINE void smartlist_swap(smartlist_t *sl, int idx1, int idx2)
 {
   if (idx1 != idx2) {
     void *elt = smartlist_get(sl, idx1);

+ 19 - 1
src/or/test.c

@@ -1085,19 +1085,37 @@ test_smartlist(void)
   SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
   smartlist_clear(sl);
 
-  /* Test smartlist sorting. */
+  /* Test swapping, shuffling, and sorting. */
   smartlist_split_string(sl, "the,onion,router,by,arma,and,nickm", ",", 0, 0);
   test_eq(7, smartlist_len(sl));
   smartlist_sort(sl, _compare_strs);
   cp = smartlist_join_strings(sl, ",", 0, NULL);
   test_streq(cp,"and,arma,by,nickm,onion,router,the");
   tor_free(cp);
+  smartlist_swap(sl, 1, 5);
+  cp = smartlist_join_strings(sl, ",", 0, NULL);
+  test_streq(cp,"and,router,by,nickm,onion,arma,the");
+  tor_free(cp);
+  smartlist_shuffle(sl);
+  test_eq(7, smartlist_len(sl));
+  test_assert(smartlist_string_isin(sl, "and"));
+  test_assert(smartlist_string_isin(sl, "router"));
+  test_assert(smartlist_string_isin(sl, "by"));
+  test_assert(smartlist_string_isin(sl, "nickm"));
+  test_assert(smartlist_string_isin(sl, "onion"));
+  test_assert(smartlist_string_isin(sl, "arma"));
+  test_assert(smartlist_string_isin(sl, "the"));
+
 
+  /* Test bsearch. */
+  smartlist_sort(sl, _compare_strs);
   test_streq("nickm", smartlist_bsearch(sl, "zNicKM",
                                         _compare_without_first_ch));
   test_streq("and", smartlist_bsearch(sl, " AND", _compare_without_first_ch));
   test_eq_ptr(NULL, smartlist_bsearch(sl, " ANz", _compare_without_first_ch));
 
+
+
   /* Test reverse() and pop_last() */
   smartlist_reverse(sl);
   cp = smartlist_join_strings(sl, ",", 0, NULL);