diff options
Diffstat (limited to 'src/test/test-string-util.c')
-rw-r--r-- | src/test/test-string-util.c | 445 |
1 files changed, 251 insertions, 194 deletions
diff --git a/src/test/test-string-util.c b/src/test/test-string-util.c index a8fd45d..4bf7548 100644 --- a/src/test/test-string-util.c +++ b/src/test/test-string-util.c @@ -13,13 +13,13 @@ TEST(string_erase) { char *x; x = strdupa_safe(""); - assert_se(streq(string_erase(x), "")); + ASSERT_STREQ(string_erase(x), ""); x = strdupa_safe("1"); - assert_se(streq(string_erase(x), "")); + ASSERT_STREQ(string_erase(x), ""); x = strdupa_safe("123456789"); - assert_se(streq(string_erase(x), "")); + ASSERT_STREQ(string_erase(x), ""); assert_se(x[1] == '\0'); assert_se(x[2] == '\0'); @@ -37,7 +37,7 @@ static void test_free_and_strndup_one(char **t, const char *src, size_t l, const __func__, strnull(*t), strnull(src), l, strnull(expected), yes_no(change)); int r = free_and_strndup(t, src, l); - assert_se(streq_ptr(*t, expected)); + ASSERT_STREQ(*t, expected); assert_se(r == change); /* check that change occurs only when necessary */ } @@ -88,6 +88,35 @@ TEST(free_and_strndup) { } } +TEST(strdup_to_full) { + _cleanup_free_ char *dst; + + assert_se(strdup_to_full(NULL, NULL) == 0); + assert_se(strdup_to_full(&dst, NULL) == 0); + + assert_se(strdup_to_full(NULL, "") == 1); + assert_se(strdup_to_full(&dst, "") == 1); + ASSERT_STREQ(dst, ""); + dst = mfree(dst); + + assert_se(strdup_to_full(NULL, "x") == 1); + assert_se(strdup_to_full(&dst, "x") == 1); + ASSERT_STREQ(dst, "x"); +} + +TEST(strdup_to) { + _cleanup_free_ char *dst; + + assert_se(strdup_to(&dst, NULL) == 0); + + assert_se(strdup_to(&dst, "") == 0); + ASSERT_STREQ(dst, ""); + dst = mfree(dst); + + assert_se(strdup_to(&dst, "x") == 0); + ASSERT_STREQ(dst, "x"); +} + TEST(ascii_strcasecmp_n) { assert_se(ascii_strcasecmp_n("", "", 0) == 0); assert_se(ascii_strcasecmp_n("", "", 1) == 0); @@ -134,82 +163,82 @@ TEST(ascii_strcasecmp_nn) { TEST(cellescape) { char buf[40]; - assert_se(streq(cellescape(buf, 1, ""), "")); - assert_se(streq(cellescape(buf, 1, "1"), "")); - assert_se(streq(cellescape(buf, 1, "12"), "")); - - assert_se(streq(cellescape(buf, 2, ""), "")); - assert_se(streq(cellescape(buf, 2, "1"), "1")); - assert_se(streq(cellescape(buf, 2, "12"), ".")); - assert_se(streq(cellescape(buf, 2, "123"), ".")); - - assert_se(streq(cellescape(buf, 3, ""), "")); - assert_se(streq(cellescape(buf, 3, "1"), "1")); - assert_se(streq(cellescape(buf, 3, "12"), "12")); - assert_se(streq(cellescape(buf, 3, "123"), "..")); - assert_se(streq(cellescape(buf, 3, "1234"), "..")); - - assert_se(streq(cellescape(buf, 4, ""), "")); - assert_se(streq(cellescape(buf, 4, "1"), "1")); - assert_se(streq(cellescape(buf, 4, "12"), "12")); - assert_se(streq(cellescape(buf, 4, "123"), "123")); - assert_se(streq(cellescape(buf, 4, "1234"), is_locale_utf8() ? "…" : "...")); - assert_se(streq(cellescape(buf, 4, "12345"), is_locale_utf8() ? "…" : "...")); - - assert_se(streq(cellescape(buf, 5, ""), "")); - assert_se(streq(cellescape(buf, 5, "1"), "1")); - assert_se(streq(cellescape(buf, 5, "12"), "12")); - assert_se(streq(cellescape(buf, 5, "123"), "123")); - assert_se(streq(cellescape(buf, 5, "1234"), "1234")); - assert_se(streq(cellescape(buf, 5, "12345"), is_locale_utf8() ? "1…" : "1...")); - assert_se(streq(cellescape(buf, 5, "123456"), is_locale_utf8() ? "1…" : "1...")); - - assert_se(streq(cellescape(buf, 1, "\020"), "")); - assert_se(streq(cellescape(buf, 2, "\020"), ".")); - assert_se(streq(cellescape(buf, 3, "\020"), "..")); - assert_se(streq(cellescape(buf, 4, "\020"), is_locale_utf8() ? "…" : "...")); - assert_se(streq(cellescape(buf, 5, "\020"), "\\020")); - - assert_se(streq(cellescape(buf, 5, "1234\020"), is_locale_utf8() ? "1…" : "1...")); - assert_se(streq(cellescape(buf, 6, "1234\020"), is_locale_utf8() ? "12…" : "12...")); - assert_se(streq(cellescape(buf, 7, "1234\020"), is_locale_utf8() ? "123…" : "123...")); - assert_se(streq(cellescape(buf, 8, "1234\020"), is_locale_utf8() ? "1234…" : "1234...")); - assert_se(streq(cellescape(buf, 9, "1234\020"), "1234\\020")); - - assert_se(streq(cellescape(buf, 1, "\t\n"), "")); - assert_se(streq(cellescape(buf, 2, "\t\n"), ".")); - assert_se(streq(cellescape(buf, 3, "\t\n"), "..")); - assert_se(streq(cellescape(buf, 4, "\t\n"), is_locale_utf8() ? "…" : "...")); - assert_se(streq(cellescape(buf, 5, "\t\n"), "\\t\\n")); - - assert_se(streq(cellescape(buf, 5, "1234\t\n"), is_locale_utf8() ? "1…" : "1...")); - assert_se(streq(cellescape(buf, 6, "1234\t\n"), is_locale_utf8() ? "12…" : "12...")); - assert_se(streq(cellescape(buf, 7, "1234\t\n"), is_locale_utf8() ? "123…" : "123...")); - assert_se(streq(cellescape(buf, 8, "1234\t\n"), is_locale_utf8() ? "1234…" : "1234...")); - assert_se(streq(cellescape(buf, 9, "1234\t\n"), "1234\\t\\n")); - - assert_se(streq(cellescape(buf, 4, "x\t\020\n"), is_locale_utf8() ? "…" : "...")); - assert_se(streq(cellescape(buf, 5, "x\t\020\n"), is_locale_utf8() ? "x…" : "x...")); - assert_se(streq(cellescape(buf, 6, "x\t\020\n"), is_locale_utf8() ? "x…" : "x...")); - assert_se(streq(cellescape(buf, 7, "x\t\020\n"), is_locale_utf8() ? "x\\t…" : "x\\t...")); - assert_se(streq(cellescape(buf, 8, "x\t\020\n"), is_locale_utf8() ? "x\\t…" : "x\\t...")); - assert_se(streq(cellescape(buf, 9, "x\t\020\n"), is_locale_utf8() ? "x\\t…" : "x\\t...")); - assert_se(streq(cellescape(buf, 10, "x\t\020\n"), "x\\t\\020\\n")); - - assert_se(streq(cellescape(buf, 6, "1\011"), "1\\t")); - assert_se(streq(cellescape(buf, 6, "1\020"), "1\\020")); - assert_se(streq(cellescape(buf, 6, "1\020x"), is_locale_utf8() ? "1…" : "1...")); - - assert_se(streq(cellescape(buf, 40, "1\020"), "1\\020")); - assert_se(streq(cellescape(buf, 40, "1\020x"), "1\\020x")); - - assert_se(streq(cellescape(buf, 40, "\a\b\f\n\r\t\v\\\"'"), "\\a\\b\\f\\n\\r\\t\\v\\\\\\\"\\'")); - assert_se(streq(cellescape(buf, 6, "\a\b\f\n\r\t\v\\\"'"), is_locale_utf8() ? "\\a…" : "\\a...")); - assert_se(streq(cellescape(buf, 7, "\a\b\f\n\r\t\v\\\"'"), is_locale_utf8() ? "\\a…" : "\\a...")); - assert_se(streq(cellescape(buf, 8, "\a\b\f\n\r\t\v\\\"'"), is_locale_utf8() ? "\\a\\b…" : "\\a\\b...")); - - assert_se(streq(cellescape(buf, sizeof buf, "1\020"), "1\\020")); - assert_se(streq(cellescape(buf, sizeof buf, "1\020x"), "1\\020x")); + ASSERT_STREQ(cellescape(buf, 1, ""), ""); + ASSERT_STREQ(cellescape(buf, 1, "1"), ""); + ASSERT_STREQ(cellescape(buf, 1, "12"), ""); + + ASSERT_STREQ(cellescape(buf, 2, ""), ""); + ASSERT_STREQ(cellescape(buf, 2, "1"), "1"); + ASSERT_STREQ(cellescape(buf, 2, "12"), "."); + ASSERT_STREQ(cellescape(buf, 2, "123"), "."); + + ASSERT_STREQ(cellescape(buf, 3, ""), ""); + ASSERT_STREQ(cellescape(buf, 3, "1"), "1"); + ASSERT_STREQ(cellescape(buf, 3, "12"), "12"); + ASSERT_STREQ(cellescape(buf, 3, "123"), ".."); + ASSERT_STREQ(cellescape(buf, 3, "1234"), ".."); + + ASSERT_STREQ(cellescape(buf, 4, ""), ""); + ASSERT_STREQ(cellescape(buf, 4, "1"), "1"); + ASSERT_STREQ(cellescape(buf, 4, "12"), "12"); + ASSERT_STREQ(cellescape(buf, 4, "123"), "123"); + ASSERT_STREQ(cellescape(buf, 4, "1234"), is_locale_utf8() ? "…" : "..."); + ASSERT_STREQ(cellescape(buf, 4, "12345"), is_locale_utf8() ? "…" : "..."); + + ASSERT_STREQ(cellescape(buf, 5, ""), ""); + ASSERT_STREQ(cellescape(buf, 5, "1"), "1"); + ASSERT_STREQ(cellescape(buf, 5, "12"), "12"); + ASSERT_STREQ(cellescape(buf, 5, "123"), "123"); + ASSERT_STREQ(cellescape(buf, 5, "1234"), "1234"); + ASSERT_STREQ(cellescape(buf, 5, "12345"), is_locale_utf8() ? "1…" : "1..."); + ASSERT_STREQ(cellescape(buf, 5, "123456"), is_locale_utf8() ? "1…" : "1..."); + + ASSERT_STREQ(cellescape(buf, 1, "\020"), ""); + ASSERT_STREQ(cellescape(buf, 2, "\020"), "."); + ASSERT_STREQ(cellescape(buf, 3, "\020"), ".."); + ASSERT_STREQ(cellescape(buf, 4, "\020"), is_locale_utf8() ? "…" : "..."); + ASSERT_STREQ(cellescape(buf, 5, "\020"), "\\020"); + + ASSERT_STREQ(cellescape(buf, 5, "1234\020"), is_locale_utf8() ? "1…" : "1..."); + ASSERT_STREQ(cellescape(buf, 6, "1234\020"), is_locale_utf8() ? "12…" : "12..."); + ASSERT_STREQ(cellescape(buf, 7, "1234\020"), is_locale_utf8() ? "123…" : "123..."); + ASSERT_STREQ(cellescape(buf, 8, "1234\020"), is_locale_utf8() ? "1234…" : "1234..."); + ASSERT_STREQ(cellescape(buf, 9, "1234\020"), "1234\\020"); + + ASSERT_STREQ(cellescape(buf, 1, "\t\n"), ""); + ASSERT_STREQ(cellescape(buf, 2, "\t\n"), "."); + ASSERT_STREQ(cellescape(buf, 3, "\t\n"), ".."); + ASSERT_STREQ(cellescape(buf, 4, "\t\n"), is_locale_utf8() ? "…" : "..."); + ASSERT_STREQ(cellescape(buf, 5, "\t\n"), "\\t\\n"); + + ASSERT_STREQ(cellescape(buf, 5, "1234\t\n"), is_locale_utf8() ? "1…" : "1..."); + ASSERT_STREQ(cellescape(buf, 6, "1234\t\n"), is_locale_utf8() ? "12…" : "12..."); + ASSERT_STREQ(cellescape(buf, 7, "1234\t\n"), is_locale_utf8() ? "123…" : "123..."); + ASSERT_STREQ(cellescape(buf, 8, "1234\t\n"), is_locale_utf8() ? "1234…" : "1234..."); + ASSERT_STREQ(cellescape(buf, 9, "1234\t\n"), "1234\\t\\n"); + + ASSERT_STREQ(cellescape(buf, 4, "x\t\020\n"), is_locale_utf8() ? "…" : "..."); + ASSERT_STREQ(cellescape(buf, 5, "x\t\020\n"), is_locale_utf8() ? "x…" : "x..."); + ASSERT_STREQ(cellescape(buf, 6, "x\t\020\n"), is_locale_utf8() ? "x…" : "x..."); + ASSERT_STREQ(cellescape(buf, 7, "x\t\020\n"), is_locale_utf8() ? "x\\t…" : "x\\t..."); + ASSERT_STREQ(cellescape(buf, 8, "x\t\020\n"), is_locale_utf8() ? "x\\t…" : "x\\t..."); + ASSERT_STREQ(cellescape(buf, 9, "x\t\020\n"), is_locale_utf8() ? "x\\t…" : "x\\t..."); + ASSERT_STREQ(cellescape(buf, 10, "x\t\020\n"), "x\\t\\020\\n"); + + ASSERT_STREQ(cellescape(buf, 6, "1\011"), "1\\t"); + ASSERT_STREQ(cellescape(buf, 6, "1\020"), "1\\020"); + ASSERT_STREQ(cellescape(buf, 6, "1\020x"), is_locale_utf8() ? "1…" : "1..."); + + ASSERT_STREQ(cellescape(buf, 40, "1\020"), "1\\020"); + ASSERT_STREQ(cellescape(buf, 40, "1\020x"), "1\\020x"); + + ASSERT_STREQ(cellescape(buf, 40, "\a\b\f\n\r\t\v\\\"'"), "\\a\\b\\f\\n\\r\\t\\v\\\\\\\"\\'"); + ASSERT_STREQ(cellescape(buf, 6, "\a\b\f\n\r\t\v\\\"'"), is_locale_utf8() ? "\\a…" : "\\a..."); + ASSERT_STREQ(cellescape(buf, 7, "\a\b\f\n\r\t\v\\\"'"), is_locale_utf8() ? "\\a…" : "\\a..."); + ASSERT_STREQ(cellescape(buf, 8, "\a\b\f\n\r\t\v\\\"'"), is_locale_utf8() ? "\\a\\b…" : "\\a\\b..."); + + ASSERT_STREQ(cellescape(buf, sizeof buf, "1\020"), "1\\020"); + ASSERT_STREQ(cellescape(buf, sizeof buf, "1\020x"), "1\\020x"); } TEST(streq_ptr) { @@ -221,41 +250,41 @@ TEST(strstrip) { char *ret, input[] = " hello, waldo. "; ret = strstrip(input); - assert_se(streq(ret, "hello, waldo.")); + ASSERT_STREQ(ret, "hello, waldo."); } TEST(strextend) { _cleanup_free_ char *str = NULL; assert_se(strextend(&str, NULL)); - assert_se(streq_ptr(str, "")); + ASSERT_STREQ(str, ""); assert_se(strextend(&str, "", "0", "", "", "123")); - assert_se(streq_ptr(str, "0123")); + ASSERT_STREQ(str, "0123"); assert_se(strextend(&str, "456", "78", "9")); - assert_se(streq_ptr(str, "0123456789")); + ASSERT_STREQ(str, "0123456789"); } TEST(strextend_with_separator) { _cleanup_free_ char *str = NULL; assert_se(strextend_with_separator(&str, NULL, NULL)); - assert_se(streq_ptr(str, "")); + ASSERT_STREQ(str, ""); str = mfree(str); assert_se(strextend_with_separator(&str, "...", NULL)); - assert_se(streq_ptr(str, "")); + ASSERT_STREQ(str, ""); assert_se(strextend_with_separator(&str, "...", NULL)); - assert_se(streq_ptr(str, "")); + ASSERT_STREQ(str, ""); str = mfree(str); assert_se(strextend_with_separator(&str, "xyz", "a", "bb", "ccc")); - assert_se(streq_ptr(str, "axyzbbxyzccc")); + ASSERT_STREQ(str, "axyzbbxyzccc"); str = mfree(str); assert_se(strextend_with_separator(&str, ",", "start", "", "1", "234")); - assert_se(streq_ptr(str, "start,,1,234")); + ASSERT_STREQ(str, "start,,1,234"); assert_se(strextend_with_separator(&str, ";", "more", "5", "678")); - assert_se(streq_ptr(str, "start,,1,234;more;5;678")); + ASSERT_STREQ(str, "start,,1,234;more;5;678"); } TEST(strrep) { @@ -266,15 +295,15 @@ TEST(strrep) { three = strrep("waldo", 3); zero = strrep("waldo", 0); - assert_se(streq(one, "waldo")); - assert_se(streq(three, "waldowaldowaldo")); - assert_se(streq(zero, "")); + ASSERT_STREQ(one, "waldo"); + ASSERT_STREQ(three, "waldowaldowaldo"); + ASSERT_STREQ(zero, ""); onea = strrepa("waldo", 1); threea = strrepa("waldo", 3); - assert_se(streq(onea, "waldo")); - assert_se(streq(threea, "waldowaldowaldo")); + ASSERT_STREQ(onea, "waldo"); + ASSERT_STREQ(threea, "waldowaldowaldo"); } TEST(string_has_cc) { @@ -293,14 +322,19 @@ TEST(string_has_cc) { TEST(ascii_strlower) { char a[] = "AabBcC Jk Ii Od LKJJJ kkd LK"; - assert_se(streq(ascii_strlower(a), "aabbcc jk ii od lkjjj kkd lk")); + ASSERT_STREQ(ascii_strlower(a), "aabbcc jk ii od lkjjj kkd lk"); } TEST(strshorten) { char s[] = "foobar"; + assert_se(strlen(strshorten(s, SIZE_MAX)) == 6); + assert_se(strlen(strshorten(s, SIZE_MAX-1)) == 6); + assert_se(strlen(strshorten(s, SIZE_MAX-2)) == 6); assert_se(strlen(strshorten(s, 6)) == 6); + assert_se(strlen(strshorten(s, 7)) == 6); assert_se(strlen(strshorten(s, 12)) == 6); + assert_se(strlen(strshorten(s, 5)) == 5); assert_se(strlen(strshorten(s, 2)) == 2); assert_se(strlen(strshorten(s, 0)) == 0); } @@ -309,63 +343,63 @@ TEST(strjoina) { char *actual; actual = strjoina("", "foo", "bar"); - assert_se(streq(actual, "foobar")); + ASSERT_STREQ(actual, "foobar"); actual = strjoina("foo", "bar", "baz"); - assert_se(streq(actual, "foobarbaz")); + ASSERT_STREQ(actual, "foobarbaz"); actual = strjoina("foo", "", "bar", "baz"); - assert_se(streq(actual, "foobarbaz")); + ASSERT_STREQ(actual, "foobarbaz"); actual = strjoina("foo"); - assert_se(streq(actual, "foo")); + ASSERT_STREQ(actual, "foo"); actual = strjoina(NULL); - assert_se(streq(actual, "")); + ASSERT_STREQ(actual, ""); actual = strjoina(NULL, "foo"); - assert_se(streq(actual, "")); + ASSERT_STREQ(actual, ""); actual = strjoina("foo", NULL, "bar"); - assert_se(streq(actual, "foo")); + ASSERT_STREQ(actual, "foo"); actual = strjoina("/sys/fs/cgroup/", "dn", "/a/b/c", "/cgroup.procs"); - assert_se(streq(actual, "/sys/fs/cgroup/dn/a/b/c/cgroup.procs")); + ASSERT_STREQ(actual, "/sys/fs/cgroup/dn/a/b/c/cgroup.procs"); actual = strjoina("/sys/fs/cgroup/", "dn", NULL, NULL); - assert_se(streq(actual, "/sys/fs/cgroup/dn")); + ASSERT_STREQ(actual, "/sys/fs/cgroup/dn"); } TEST(strjoin) { char *actual; actual = strjoin("", "foo", "bar"); - assert_se(streq(actual, "foobar")); - mfree(actual); + ASSERT_STREQ(actual, "foobar"); + free(actual); actual = strjoin("foo", "bar", "baz"); - assert_se(streq(actual, "foobarbaz")); - mfree(actual); + ASSERT_STREQ(actual, "foobarbaz"); + free(actual); actual = strjoin("foo", "", "bar", "baz"); - assert_se(streq(actual, "foobarbaz")); - mfree(actual); + ASSERT_STREQ(actual, "foobarbaz"); + free(actual); actual = strjoin("foo", NULL); - assert_se(streq(actual, "foo")); - mfree(actual); + ASSERT_STREQ(actual, "foo"); + free(actual); actual = strjoin(NULL, NULL); - assert_se(streq(actual, "")); - mfree(actual); + ASSERT_STREQ(actual, ""); + free(actual); actual = strjoin(NULL, "foo"); - assert_se(streq(actual, "")); - mfree(actual); + ASSERT_STREQ(actual, ""); + free(actual); actual = strjoin("foo", NULL, "bar"); - assert_se(streq(actual, "foo")); - mfree(actual); + ASSERT_STREQ(actual, "foo"); + free(actual); } TEST(strcmp_ptr) { @@ -402,7 +436,7 @@ TEST(foreach_word) { } assert_se(r > 0); - assert_se(streq(expected[i++], word)); + ASSERT_STREQ(expected[i++], word); } } @@ -423,10 +457,10 @@ static void check(const char *test, char** expected, bool trailing) { break; } - assert_se(streq(word, expected[i++])); + ASSERT_STREQ(word, expected[i++]); printf("<%s>\n", word); } - assert_se(expected[i] == NULL); + ASSERT_NULL(expected[i]); } TEST(foreach_word_quoted) { @@ -478,7 +512,7 @@ TEST(delete_chars) { char *s, input[] = " hello, waldo. abc"; s = delete_chars(input, WHITESPACE); - assert_se(streq(s, "hello,waldo.abc")); + ASSERT_STREQ(s, "hello,waldo.abc"); assert_se(s == input); } @@ -489,19 +523,19 @@ TEST(delete_trailing_chars) { input3[] = "abcdef"; s = delete_trailing_chars(input1, WHITESPACE); - assert_se(streq(s, " \n \r k")); + ASSERT_STREQ(s, " \n \r k"); assert_se(s == input1); s = delete_trailing_chars(input2, "kt"); - assert_se(streq(s, "kkkkthiskkkiskkkaktes")); + ASSERT_STREQ(s, "kkkkthiskkkiskkkaktes"); assert_se(s == input2); s = delete_trailing_chars(input3, WHITESPACE); - assert_se(streq(s, "abcdef")); + ASSERT_STREQ(s, "abcdef"); assert_se(s == input3); s = delete_trailing_chars(input3, "fe"); - assert_se(streq(s, "abcd")); + ASSERT_STREQ(s, "abcd"); assert_se(s == input3); } @@ -511,11 +545,11 @@ TEST(delete_trailing_slashes) { s3[] = "foobar", s4[] = ""; - assert_se(streq(delete_trailing_chars(s1, "_"), "foobar//")); - assert_se(streq(delete_trailing_chars(s1, "/"), "foobar")); - assert_se(streq(delete_trailing_chars(s2, "/"), "foobar")); - assert_se(streq(delete_trailing_chars(s3, "/"), "foobar")); - assert_se(streq(delete_trailing_chars(s4, "/"), "")); + ASSERT_STREQ(delete_trailing_chars(s1, "_"), "foobar//"); + ASSERT_STREQ(delete_trailing_chars(s1, "/"), "foobar"); + ASSERT_STREQ(delete_trailing_chars(s2, "/"), "foobar"); + ASSERT_STREQ(delete_trailing_chars(s3, "/"), "foobar"); + ASSERT_STREQ(delete_trailing_chars(s4, "/"), ""); } TEST(skip_leading_chars) { @@ -523,11 +557,11 @@ TEST(skip_leading_chars) { input2[] = "kkkkthiskkkiskkkaktestkkk", input3[] = "abcdef"; - assert_se(streq(skip_leading_chars(input1, WHITESPACE), "k \n \r ")); - assert_se(streq(skip_leading_chars(input2, "k"), "thiskkkiskkkaktestkkk")); - assert_se(streq(skip_leading_chars(input2, "tk"), "hiskkkiskkkaktestkkk")); - assert_se(streq(skip_leading_chars(input3, WHITESPACE), "abcdef")); - assert_se(streq(skip_leading_chars(input3, "bcaef"), "def")); + ASSERT_STREQ(skip_leading_chars(input1, WHITESPACE), "k \n \r "); + ASSERT_STREQ(skip_leading_chars(input2, "k"), "thiskkkiskkkaktestkkk"); + ASSERT_STREQ(skip_leading_chars(input2, "tk"), "hiskkkiskkkaktestkkk"); + ASSERT_STREQ(skip_leading_chars(input3, WHITESPACE), "abcdef"); + ASSERT_STREQ(skip_leading_chars(input3, "bcaef"), "def"); } TEST(in_charset) { @@ -542,19 +576,19 @@ TEST(split_pair) { assert_se(split_pair("foo=bar", "", &a, &b) == -EINVAL); assert_se(split_pair("", "=", &a, &b) == -EINVAL); assert_se(split_pair("foo=bar", "=", &a, &b) >= 0); - assert_se(streq(a, "foo")); - assert_se(streq(b, "bar")); + ASSERT_STREQ(a, "foo"); + ASSERT_STREQ(b, "bar"); free(a); free(b); assert_se(split_pair("==", "==", &a, &b) >= 0); - assert_se(streq(a, "")); - assert_se(streq(b, "")); + ASSERT_STREQ(a, ""); + ASSERT_STREQ(b, ""); free(a); free(b); assert_se(split_pair("===", "==", &a, &b) >= 0); - assert_se(streq(a, "")); - assert_se(streq(b, "=")); + ASSERT_STREQ(a, ""); + ASSERT_STREQ(b, "="); } TEST(first_word) { @@ -578,33 +612,33 @@ TEST(strlen_ptr) { } TEST(memory_startswith) { - assert_se(streq(memory_startswith("", 0, ""), "")); - assert_se(streq(memory_startswith("", 1, ""), "")); - assert_se(streq(memory_startswith("x", 2, ""), "x")); + ASSERT_STREQ(memory_startswith("", 0, ""), ""); + ASSERT_STREQ(memory_startswith("", 1, ""), ""); + ASSERT_STREQ(memory_startswith("x", 2, ""), "x"); assert_se(!memory_startswith("", 1, "x")); assert_se(!memory_startswith("", 1, "xxxxxxxx")); - assert_se(streq(memory_startswith("xxx", 4, "x"), "xx")); - assert_se(streq(memory_startswith("xxx", 4, "xx"), "x")); - assert_se(streq(memory_startswith("xxx", 4, "xxx"), "")); + ASSERT_STREQ(memory_startswith("xxx", 4, "x"), "xx"); + ASSERT_STREQ(memory_startswith("xxx", 4, "xx"), "x"); + ASSERT_STREQ(memory_startswith("xxx", 4, "xxx"), ""); assert_se(!memory_startswith("xxx", 4, "xxxx")); } TEST(memory_startswith_no_case) { - assert_se(streq(memory_startswith_no_case("", 0, ""), "")); - assert_se(streq(memory_startswith_no_case("", 1, ""), "")); - assert_se(streq(memory_startswith_no_case("x", 2, ""), "x")); - assert_se(streq(memory_startswith_no_case("X", 2, ""), "X")); + ASSERT_STREQ(memory_startswith_no_case("", 0, ""), ""); + ASSERT_STREQ(memory_startswith_no_case("", 1, ""), ""); + ASSERT_STREQ(memory_startswith_no_case("x", 2, ""), "x"); + ASSERT_STREQ(memory_startswith_no_case("X", 2, ""), "X"); assert_se(!memory_startswith_no_case("", 1, "X")); assert_se(!memory_startswith_no_case("", 1, "xxxxXXXX")); - assert_se(streq(memory_startswith_no_case("xxx", 4, "X"), "xx")); - assert_se(streq(memory_startswith_no_case("XXX", 4, "x"), "XX")); - assert_se(streq(memory_startswith_no_case("XXX", 4, "X"), "XX")); - assert_se(streq(memory_startswith_no_case("xxx", 4, "XX"), "x")); - assert_se(streq(memory_startswith_no_case("XXX", 4, "xx"), "X")); - assert_se(streq(memory_startswith_no_case("XXX", 4, "XX"), "X")); - assert_se(streq(memory_startswith_no_case("xxx", 4, "XXX"), "")); - assert_se(streq(memory_startswith_no_case("XXX", 4, "xxx"), "")); - assert_se(streq(memory_startswith_no_case("XXX", 4, "XXX"), "")); + ASSERT_STREQ(memory_startswith_no_case("xxx", 4, "X"), "xx"); + ASSERT_STREQ(memory_startswith_no_case("XXX", 4, "x"), "XX"); + ASSERT_STREQ(memory_startswith_no_case("XXX", 4, "X"), "XX"); + ASSERT_STREQ(memory_startswith_no_case("xxx", 4, "XX"), "x"); + ASSERT_STREQ(memory_startswith_no_case("XXX", 4, "xx"), "X"); + ASSERT_STREQ(memory_startswith_no_case("XXX", 4, "XX"), "X"); + ASSERT_STREQ(memory_startswith_no_case("xxx", 4, "XXX"), ""); + ASSERT_STREQ(memory_startswith_no_case("XXX", 4, "xxx"), ""); + ASSERT_STREQ(memory_startswith_no_case("XXX", 4, "XXX"), ""); assert_se(memory_startswith_no_case((char[2]){'x', 'x'}, 2, "xx")); assert_se(memory_startswith_no_case((char[2]){'x', 'X'}, 2, "xX")); @@ -617,7 +651,7 @@ static void test_string_truncate_lines_one(const char *input, size_t n_lines, co int k; assert_se((k = string_truncate_lines(input, n_lines, &b)) >= 0); - assert_se(streq(b, output)); + ASSERT_STREQ(b, output); assert_se(!!k == truncation); } @@ -688,7 +722,7 @@ static void test_string_extract_lines_one(const char *input, size_t i, const cha int k; assert_se((k = string_extract_line(input, i, &b)) >= 0); - assert_se(streq(b ?: input, output)); + ASSERT_STREQ(b ?: input, output); assert_se(!!k == more); } @@ -765,25 +799,25 @@ TEST(string_contains_word_strv) { assert_se(string_contains_word_strv("a b cc", NULL, STRV_MAKE("a", "b"), NULL)); assert_se(string_contains_word_strv("a b cc", NULL, STRV_MAKE("a", "b"), &w)); - assert_se(streq(w, "a")); + ASSERT_STREQ(w, "a"); assert_se(!string_contains_word_strv("a b cc", NULL, STRV_MAKE("d"), &w)); - assert_se(w == NULL); + ASSERT_NULL(w); assert_se(string_contains_word_strv("a b cc", NULL, STRV_MAKE("b", "a"), &w)); - assert_se(streq(w, "a")); + ASSERT_STREQ(w, "a"); assert_se(string_contains_word_strv("b a b cc", NULL, STRV_MAKE("b", "a", "b"), &w)); - assert_se(streq(w, "b")); + ASSERT_STREQ(w, "b"); assert_se(string_contains_word_strv("a b cc", NULL, STRV_MAKE("b", ""), &w)); - assert_se(streq(w, "b")); + ASSERT_STREQ(w, "b"); assert_se(!string_contains_word_strv("a b cc", NULL, STRV_MAKE(""), &w)); - assert_se(w == NULL); + ASSERT_NULL(w); assert_se(string_contains_word_strv("a b cc", " ", STRV_MAKE(""), &w)); - assert_se(streq(w, "")); + ASSERT_STREQ(w, ""); } TEST(string_contains_word) { @@ -1105,38 +1139,38 @@ TEST(strextendf) { _cleanup_free_ char *p = NULL; assert_se(strextendf(&p, "<%i>", 77) >= 0); - assert_se(streq(p, "<77>")); + ASSERT_STREQ(p, "<77>"); assert_se(strextendf(&p, "<%i>", 99) >= 0); - assert_se(streq(p, "<77><99>")); + ASSERT_STREQ(p, "<77><99>"); assert_se(strextendf(&p, "<%80i>", 88) >= 0); - assert_se(streq(p, "<77><99>< 88>")); + ASSERT_STREQ(p, "<77><99>< 88>"); assert_se(strextendf(&p, "<%08x>", 0x1234u) >= 0); - assert_se(streq(p, "<77><99>< 88><00001234>")); + ASSERT_STREQ(p, "<77><99>< 88><00001234>"); p = mfree(p); assert_se(strextendf_with_separator(&p, ",", "<%i>", 77) >= 0); - assert_se(streq(p, "<77>")); + ASSERT_STREQ(p, "<77>"); assert_se(strextendf_with_separator(&p, ",", "<%i>", 99) >= 0); - assert_se(streq(p, "<77>,<99>")); + ASSERT_STREQ(p, "<77>,<99>"); assert_se(strextendf_with_separator(&p, ",", "<%80i>", 88) >= 0); - assert_se(streq(p, "<77>,<99>,< 88>")); + ASSERT_STREQ(p, "<77>,<99>,< 88>"); assert_se(strextendf_with_separator(&p, ",", "<%08x>", 0x1234u) >= 0); - assert_se(streq(p, "<77>,<99>,< 88>,<00001234>")); + ASSERT_STREQ(p, "<77>,<99>,< 88>,<00001234>"); } TEST(string_replace_char) { - assert_se(streq(string_replace_char(strdupa_safe(""), 'a', 'b'), "")); - assert_se(streq(string_replace_char(strdupa_safe("abc"), 'a', 'b'), "bbc")); - assert_se(streq(string_replace_char(strdupa_safe("hoge"), 'a', 'b'), "hoge")); - assert_se(streq(string_replace_char(strdupa_safe("aaaa"), 'a', 'b'), "bbbb")); - assert_se(streq(string_replace_char(strdupa_safe("aaaa"), 'a', '\t'), "\t\t\t\t")); + ASSERT_STREQ(string_replace_char(strdupa_safe(""), 'a', 'b'), ""); + ASSERT_STREQ(string_replace_char(strdupa_safe("abc"), 'a', 'b'), "bbc"); + ASSERT_STREQ(string_replace_char(strdupa_safe("hoge"), 'a', 'b'), "hoge"); + ASSERT_STREQ(string_replace_char(strdupa_safe("aaaa"), 'a', 'b'), "bbbb"); + ASSERT_STREQ(string_replace_char(strdupa_safe("aaaa"), 'a', '\t'), "\t\t\t\t"); } TEST(strspn_from_end) { @@ -1180,7 +1214,7 @@ TEST(streq_skip_trailing_chars) { do { \ _cleanup_free_ char *b = NULL; \ assert_se(make_cstring((x), ELEMENTSOF(x), (mode), &b) == (ret)); \ - assert_se(streq_ptr(b, (expect))); \ + ASSERT_STREQ(b, (expect)); \ } while(false) TEST(make_cstring) { @@ -1261,7 +1295,7 @@ TEST(strstrafter) { assert_se(!strstrafter(NULL, NULL)); assert_se(!strstrafter("", NULL)); assert_se(!strstrafter(NULL, "")); - assert_se(streq_ptr(strstrafter("", ""), "")); + ASSERT_STREQ(strstrafter("", ""), ""); assert_se(strstrafter(buffer, "a") == buffer + 1); assert_se(strstrafter(buffer, "") == buffer); @@ -1285,18 +1319,18 @@ TEST(version_is_valid) { TEST(strextendn) { _cleanup_free_ char *x = NULL; - assert_se(streq_ptr(strextendn(&x, NULL, 0), "")); + ASSERT_STREQ(strextendn(&x, NULL, 0), ""); x = mfree(x); - assert_se(streq_ptr(strextendn(&x, "", 0), "")); + ASSERT_STREQ(strextendn(&x, "", 0), ""); x = mfree(x); - assert_se(streq_ptr(strextendn(&x, "xxx", 3), "xxx")); - assert_se(streq_ptr(strextendn(&x, "xxx", 3), "xxxxxx")); - assert_se(streq_ptr(strextendn(&x, "...", 1), "xxxxxx.")); - assert_se(streq_ptr(strextendn(&x, "...", 2), "xxxxxx...")); - assert_se(streq_ptr(strextendn(&x, "...", 3), "xxxxxx......")); - assert_se(streq_ptr(strextendn(&x, "...", 4), "xxxxxx.........")); + ASSERT_STREQ(strextendn(&x, "xxx", 3), "xxx"); + ASSERT_STREQ(strextendn(&x, "xxx", 3), "xxxxxx"); + ASSERT_STREQ(strextendn(&x, "...", 1), "xxxxxx."); + ASSERT_STREQ(strextendn(&x, "...", 2), "xxxxxx..."); + ASSERT_STREQ(strextendn(&x, "...", 3), "xxxxxx......"); + ASSERT_STREQ(strextendn(&x, "...", 4), "xxxxxx........."); x = mfree(x); } @@ -1324,4 +1358,27 @@ TEST(strlevenshtein) { assert_se(strlevenshtein("sunday", "saturday") == 3); } +TEST(strrstr) { + assert_se(!strrstr(NULL, NULL)); + assert_se(!strrstr("foo", NULL)); + assert_se(!strrstr(NULL, "foo")); + + const char *p = "foo"; + assert_se(strrstr(p, "foo") == p); + assert_se(strrstr(p, "fo") == p); + assert_se(strrstr(p, "f") == p); + assert_se(strrstr(p, "oo") == p + 1); + assert_se(strrstr(p, "o") == p + 2); + assert_se(strrstr(p, "") == p + strlen(p)); + assert_se(!strrstr(p, "bar")); + + p = "xoxoxox"; + assert_se(strrstr(p, "") == p + strlen(p)); + assert_se(strrstr(p, "x") == p + 6); + assert_se(strrstr(p, "ox") == p + 5); + assert_se(strrstr(p, "xo") == p + 4); + assert_se(strrstr(p, "xox") == p + 4); + assert_se(!strrstr(p, "xx")); +} + DEFINE_TEST_MAIN(LOG_DEBUG); |