mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-25 07:07:52 +01:00
Improve coverage in string-related unit tests
This commit is contained in:
parent
03258529d8
commit
1f6e3ec500
1 changed files with 48 additions and 1 deletions
|
@ -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 "));
|
||||
|
|
Loading…
Add table
Reference in a new issue