Improve tests for {Byte,Wide}String::Replace()
Add some empty string cases, some multiple replacement cases, and some
self-intersecting cases.
Change-Id: Iac51fab43d24f5a3ec7832f97d73b2b6b32122af
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/67770
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fxcrt/bytestring_unittest.cpp b/core/fxcrt/bytestring_unittest.cpp
index e2e87f0..3452a1e 100644
--- a/core/fxcrt/bytestring_unittest.cpp
+++ b/core/fxcrt/bytestring_unittest.cpp
@@ -506,7 +506,16 @@
}
TEST(ByteString, Replace) {
+ ByteString empty;
+ empty.Replace("", "CLAMS");
+ empty.Replace("xx", "CLAMS");
+ EXPECT_EQ("", empty);
+
ByteString fred("FRED");
+ fred.Replace("", "");
+ EXPECT_EQ("FRED", fred);
+ fred.Replace("", "CLAMS");
+ EXPECT_EQ("FRED", fred);
fred.Replace("FR", "BL");
EXPECT_EQ("BLED", fred);
fred.Replace("D", "DDY");
@@ -517,10 +526,20 @@
EXPECT_EQ("BY", fred);
fred.Replace("BY", "HI");
EXPECT_EQ("HI", fred);
- fred.Replace("", "CLAMS");
- EXPECT_EQ("HI", fred);
- fred.Replace("HI", "");
+ fred.Replace("I", "IHIHI");
+ EXPECT_EQ("HIHIHI", fred);
+ fred.Replace("HI", "HO");
+ EXPECT_EQ("HOHOHO", fred);
+ fred.Replace("HO", "");
EXPECT_EQ("", fred);
+
+ ByteString five_xs("xxxxx");
+ five_xs.Replace("xx", "xxx");
+ EXPECT_EQ("xxxxxxx", five_xs);
+
+ ByteString five_ys("yyyyy");
+ five_ys.Replace("yy", "y");
+ EXPECT_EQ("yyy", five_ys);
}
TEST(ByteString, Insert) {
diff --git a/core/fxcrt/widestring_unittest.cpp b/core/fxcrt/widestring_unittest.cpp
index 2445a47..1043b5d 100644
--- a/core/fxcrt/widestring_unittest.cpp
+++ b/core/fxcrt/widestring_unittest.cpp
@@ -514,7 +514,16 @@
}
TEST(WideString, Replace) {
+ WideString empty;
+ empty.Replace(L"", L"CLAMS");
+ empty.Replace(L"xx", L"CLAMS");
+ EXPECT_EQ(L"", empty);
+
WideString fred(L"FRED");
+ fred.Replace(L"", L"");
+ EXPECT_EQ(L"FRED", fred);
+ fred.Replace(L"", L"CLAMS");
+ EXPECT_EQ(L"FRED", fred);
fred.Replace(L"FR", L"BL");
EXPECT_EQ(L"BLED", fred);
fred.Replace(L"D", L"DDY");
@@ -525,10 +534,20 @@
EXPECT_EQ(L"BY", fred);
fred.Replace(L"BY", L"HI");
EXPECT_EQ(L"HI", fred);
- fred.Replace(L"", L"CLAMS");
- EXPECT_EQ(L"HI", fred);
- fred.Replace(L"HI", L"");
+ fred.Replace(L"I", L"IHIHI");
+ EXPECT_EQ(L"HIHIHI", fred);
+ fred.Replace(L"HI", L"HO");
+ EXPECT_EQ(L"HOHOHO", fred);
+ fred.Replace(L"HO", L"");
EXPECT_EQ(L"", fred);
+
+ WideString five_xs(L"xxxxx");
+ five_xs.Replace(L"xx", L"xxx");
+ EXPECT_EQ(L"xxxxxxx", five_xs);
+
+ WideString five_ys(L"yyyyy");
+ five_ys.Replace(L"yy", L"y");
+ EXPECT_EQ(L"yyy", five_ys);
}
TEST(WideString, Insert) {