diff options
author | Elliott Hughes <enh@google.com> | 2019-11-22 11:15:42 -0800 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2019-11-22 11:16:23 -0800 |
commit | c6b38aefa71b773d4b077ba2db2af7c3604b9cd6 (patch) | |
tree | 782074f038c271448de7624fa4a5aee0cdb97c81 /tests/string_test.cpp | |
parent | 1134b695bc3e8b7cdebf4d7d8238a58891a09045 (diff) |
Sync with upstream OpenBSD strstr().
Bug: http://b/124855136
Test: treehugger
Change-Id: I6cbeb82bc0e418f50e6c171ac4e38e335c448db8
Diffstat (limited to 'tests/string_test.cpp')
-rw-r--r-- | tests/string_test.cpp | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/tests/string_test.cpp b/tests/string_test.cpp index 335d33bd6..0ed0598f6 100644 --- a/tests/string_test.cpp +++ b/tests/string_test.cpp @@ -1548,11 +1548,31 @@ TEST(STRING_TEST, memmem_smoke) { } TEST(STRING_TEST, strstr_smoke) { - const char* haystack = "big daddy/giant haystacks"; - ASSERT_EQ(haystack, strstr(haystack, "")); + const char* haystack = "big daddy/giant haystacks!"; + + // The current strstr() 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, strstr(haystack, "")); + ASSERT_EQ(haystack + 0, strstr(haystack, "b")); - ASSERT_EQ(haystack + 1, strstr(haystack, "i")); - ASSERT_EQ(haystack + 4, strstr(haystack, "da")); + ASSERT_EQ(haystack + 0, strstr(haystack, "bi")); + ASSERT_EQ(haystack + 0, strstr(haystack, "big")); + ASSERT_EQ(haystack + 0, strstr(haystack, "big ")); + ASSERT_EQ(haystack + 0, strstr(haystack, "big d")); + + ASSERT_EQ(haystack + 2, strstr(haystack, "g")); + ASSERT_EQ(haystack + 10, strstr(haystack, "gi")); + ASSERT_EQ(haystack + 10, strstr(haystack, "gia")); + ASSERT_EQ(haystack + 10, strstr(haystack, "gian")); + ASSERT_EQ(haystack + 10, strstr(haystack, "giant")); + + ASSERT_EQ(haystack + 25, strstr(haystack, "!")); + ASSERT_EQ(haystack + 24, strstr(haystack, "s!")); + ASSERT_EQ(haystack + 23, strstr(haystack, "ks!")); + ASSERT_EQ(haystack + 22, strstr(haystack, "cks!")); + ASSERT_EQ(haystack + 21, strstr(haystack, "acks!")); } TEST(STRING_TEST, strcasestr_smoke) { |