summaryrefslogtreecommitdiff
path: root/tests/string_test.cpp
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2016-08-15 14:14:40 -0700
committerElliott Hughes <enh@google.com>2016-08-16 12:28:58 -0700
commitcae33ade6c1300587db418f8d505b219b37503d6 (patch)
treeca57675256c69d915bdaf19fd4733a3edc16ab73 /tests/string_test.cpp
parent228e747b6c40da2945310cda214b829f7de8cb60 (diff)
Fix memmem behavior with empty needles.
Change-Id: I8b893d80c27b548652d843af9520d7adc8ba8902
Diffstat (limited to 'tests/string_test.cpp')
-rw-r--r--tests/string_test.cpp29
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"));
+}