diff options
author | Elliott Hughes <enh@google.com> | 2020-08-06 14:32:43 -0700 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2020-08-06 14:33:48 -0700 |
commit | 5633caa285899527bffddb32cf1e33906a63edcd (patch) | |
tree | aa1510ef1cab9132be19da9c9f7b0a9babc31481 /tests/string_test.cpp | |
parent | 0f4bdb04fb4b803bbf19850c86cc9270d64a06b9 (diff) | |
download | bionic-5633caa285899527bffddb32cf1e33906a63edcd.tar.gz |
Switch to musl memmem (via OpenBSD).
Similar to the musl strstr. This patch also increases test coverage for
memmem, again similar to the strstr tests.
Test: treehugger
Change-Id: I7f4a2ab93a610cb692994d06d2512976e657ae9f
Diffstat (limited to 'tests/string_test.cpp')
-rw-r--r-- | tests/string_test.cpp | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/tests/string_test.cpp b/tests/string_test.cpp index 0ed0598f6..f157416c1 100644 --- a/tests/string_test.cpp +++ b/tests/string_test.cpp @@ -1538,13 +1538,31 @@ TEST(STRING_TEST, memmem_strstr_empty_needle) { } TEST(STRING_TEST, memmem_smoke) { - const char haystack[] = "big\0daddy\0giant\0haystacks"; - ASSERT_EQ(haystack, memmem(haystack, sizeof(haystack), "", 0)); - ASSERT_EQ(haystack + 3, memmem(haystack, sizeof(haystack), "", 1)); + const char haystack[] = "big\0daddy/giant\0haystacks!"; + + // The current memmem() implementation has special cases for needles of + // lengths 0, 1, 2, 3, and 4, plus a long needle case. We test matches at the + // beginning, middle, and end of the haystack. + + ASSERT_EQ(haystack + 0, memmem(haystack, sizeof(haystack), "", 0)); + ASSERT_EQ(haystack + 0, memmem(haystack, sizeof(haystack), "b", 1)); - ASSERT_EQ(haystack + 1, memmem(haystack, sizeof(haystack), "i", 1)); - ASSERT_EQ(haystack + 4, memmem(haystack, sizeof(haystack), "da", 2)); - ASSERT_EQ(haystack + 8, memmem(haystack, sizeof(haystack), "y\0g", 3)); + ASSERT_EQ(haystack + 0, memmem(haystack, sizeof(haystack), "bi", 2)); + ASSERT_EQ(haystack + 0, memmem(haystack, sizeof(haystack), "big", 3)); + ASSERT_EQ(haystack + 0, memmem(haystack, sizeof(haystack), "big\0", 4)); + ASSERT_EQ(haystack + 0, memmem(haystack, sizeof(haystack), "big\0d", 5)); + + ASSERT_EQ(haystack + 2, memmem(haystack, sizeof(haystack), "g", 1)); + ASSERT_EQ(haystack + 10, memmem(haystack, sizeof(haystack), "gi", 2)); + ASSERT_EQ(haystack + 10, memmem(haystack, sizeof(haystack), "gia", 3)); + ASSERT_EQ(haystack + 10, memmem(haystack, sizeof(haystack), "gian", 4)); + ASSERT_EQ(haystack + 10, memmem(haystack, sizeof(haystack), "giant", 5)); + + ASSERT_EQ(haystack + 25, memmem(haystack, sizeof(haystack), "!", 1)); + ASSERT_EQ(haystack + 24, memmem(haystack, sizeof(haystack), "s!", 2)); + ASSERT_EQ(haystack + 23, memmem(haystack, sizeof(haystack), "ks!", 3)); + ASSERT_EQ(haystack + 22, memmem(haystack, sizeof(haystack), "cks!", 4)); + ASSERT_EQ(haystack + 21, memmem(haystack, sizeof(haystack), "acks!", 5)); } TEST(STRING_TEST, strstr_smoke) { |