diff options
author | Elliott Hughes <enh@google.com> | 2016-08-15 14:14:40 -0700 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2016-08-16 12:28:58 -0700 |
commit | cae33ade6c1300587db418f8d505b219b37503d6 (patch) | |
tree | ca57675256c69d915bdaf19fd4733a3edc16ab73 /tests/string_test.cpp | |
parent | 228e747b6c40da2945310cda214b829f7de8cb60 (diff) |
Fix memmem behavior with empty needles.
Change-Id: I8b893d80c27b548652d843af9520d7adc8ba8902
Diffstat (limited to 'tests/string_test.cpp')
-rw-r--r-- | tests/string_test.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/string_test.cpp b/tests/string_test.cpp index 763d65cd0..385fe3300 100644 --- a/tests/string_test.cpp +++ b/tests/string_test.cpp @@ -1455,3 +1455,32 @@ TEST(STRING_TEST, memcpy_src_dst_same) { } RunSingleBufferAlignTest(MEDIUM, DoMemcpySameTest); } + +TEST(STRING_TEST, memmem_strstr_empty_needle) { + const char* some_haystack = "haystack"; + const char* empty_haystack = ""; + + ASSERT_EQ(some_haystack, memmem(some_haystack, 8, "", 0)); + ASSERT_EQ(empty_haystack, memmem(empty_haystack, 0, "", 0)); + + ASSERT_EQ(some_haystack, strstr(some_haystack, "")); + ASSERT_EQ(empty_haystack, strstr(empty_haystack, "")); +} + +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)); + 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)); +} + +TEST(STRING_TEST, strstr_smoke) { + const char* haystack = "big daddy/giant haystacks"; + ASSERT_EQ(haystack, strstr(haystack, "")); + ASSERT_EQ(haystack + 0, strstr(haystack, "b")); + ASSERT_EQ(haystack + 1, strstr(haystack, "i")); + ASSERT_EQ(haystack + 4, strstr(haystack, "da")); +} |