Fix memmem behavior with empty needles.
Change-Id: I8b893d80c27b548652d843af9520d7adc8ba8902
diff --git a/tests/string_test.cpp b/tests/string_test.cpp
index 763d65c..385fe33 100644
--- a/tests/string_test.cpp
+++ b/tests/string_test.cpp
@@ -1455,3 +1455,32 @@
}
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"));
+}