[tor-commits] [tor/master] Improve coverage in string-related unit tests

nickm at torproject.org nickm at torproject.org
Fri Mar 9 16:30:59 UTC 2012


commit 1f6e3ec5006076d5ee7254489795bebbf8dab36a
Author: Esteban Manchado Velázquez <emanchado at demiurgo.org>
Date:   Mon Feb 20 13:20:32 2012 +0100

    Improve coverage in string-related unit tests
---
 src/test/test_util.c |   49 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 48 insertions(+), 1 deletions(-)

diff --git a/src/test/test_util.c b/src/test/test_util.c
index 1305e2f..4fb565d 100644
--- a/src/test/test_util.c
+++ b/src/test/test_util.c
@@ -789,6 +789,27 @@ test_util_strmisc(void)
     test_streq(cp, "### Sm\n#### a\n#### l\n#### l\n#### t\n#### e\n#### s\n#### t\n");
     tor_free(cp);
     SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
+    smartlist_clear(sl);
+
+    wrap_string(sl, "First null", 6, NULL, "> ");
+    cp = smartlist_join_strings(sl, "", 0, NULL);
+    test_streq(cp, "First\n> null\n");
+    tor_free(cp);
+    SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
+    smartlist_clear(sl);
+
+    wrap_string(sl, "Second null", 6, "> ", NULL);
+    cp = smartlist_join_strings(sl, "", 0, NULL);
+    test_streq(cp, "> Seco\nnd\nnull\n");
+    tor_free(cp);
+    SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
+    smartlist_clear(sl);
+
+    wrap_string(sl, "Both null", 6, NULL, NULL);
+    cp = smartlist_join_strings(sl, "", 0, NULL);
+    test_streq(cp, "Both\nnull\n");
+    tor_free(cp);
+    SMARTLIST_FOREACH(sl, char *, cp, tor_free(cp));
     smartlist_free(sl);
 
     /* Can't test prefixes that have the same length as the line width, because
@@ -797,7 +818,7 @@ test_util_strmisc(void)
 
   /* Test hex_str */
   {
-    char binary_data[64];
+    char binary_data[68];
     size_t i;
     for (i = 0; i < sizeof(binary_data); ++i)
       binary_data[i] = i;
@@ -807,11 +828,36 @@ test_util_strmisc(void)
     test_streq(hex_str(binary_data, 32),
                "000102030405060708090A0B0C0D0E0F"
                "101112131415161718191A1B1C1D1E1F");
+    test_streq(hex_str(binary_data, 34),
+               "000102030405060708090A0B0C0D0E0F"
+               "101112131415161718191A1B1C1D1E1F");
     /* Repeat these tests for shorter strings after longer strings
        have been tried, to make sure we're correctly terminating strings */
     test_streq(hex_str(binary_data, 1), "00");
     test_streq(hex_str(binary_data, 0), "");
   }
+
+  /* Test strcmp_opt */
+  test_eq(-1, strcmp_opt("",   "foo"));
+  test_eq(0,  strcmp_opt("",    ""));
+  test_eq(1,  strcmp_opt("foo", ""));
+
+  test_eq(-1, strcmp_opt(NULL,  ""));
+  test_eq(0,  strcmp_opt(NULL,  NULL));
+  test_eq(1,  strcmp_opt("",    NULL));
+
+  test_eq(-1, strcmp_opt(NULL,  "foo"));
+  test_eq(1,  strcmp_opt("foo", NULL));
+
+  /* Test strcmp_len */
+  test_eq(1,  strcmp_len("foo", "bar", 3));
+  test_eq(-1, strcmp_len("foo", "bar", 2)); /* First len, then lexical */
+  test_eq(1,  strcmp_len("foo2", "foo1", 4));
+  test_eq(-1, strcmp_len("foo2", "foo1", 3)); /* Really stop at len */
+  test_eq(0, strcmp_len("foo2", "foo", 3));   /* Really stop at len */
+  test_eq(1, strcmp_len("blah", "", 4));
+  test_eq(0, strcmp_len("blah", "", 0));
+
  done:
   ;
 }
@@ -1565,6 +1611,7 @@ test_util_find_str_at_start_of_line(void *ptr)
   (void)ptr;
 
   test_eq_ptr(long_string, find_str_at_start_of_line(long_string, ""));
+  test_eq_ptr(NULL, find_str_at_start_of_line(short_string, "nonsense"));
   test_eq_ptr(NULL, find_str_at_start_of_line(long_string, "nonsense"));
   test_eq_ptr(NULL, find_str_at_start_of_line(long_string, "\n"));
   test_eq_ptr(NULL, find_str_at_start_of_line(long_string, "how "));





More information about the tor-commits mailing list