| Index: core/fxcrt/fx_basic_bstring_unittest.cpp
|
| diff --git a/core/fxcrt/fx_basic_bstring_unittest.cpp b/core/fxcrt/fx_basic_bstring_unittest.cpp
|
| index 8c72b2a054292257d81691daf8b5ef20bd94c7b3..ea7e17f1f1087408423ebc66ac498709efdbca68 100644
|
| --- a/core/fxcrt/fx_basic_bstring_unittest.cpp
|
| +++ b/core/fxcrt/fx_basic_bstring_unittest.cpp
|
| @@ -333,6 +333,35 @@ TEST(fxcrt, ByteStringRemove) {
|
| EXPECT_EQ("", empty);
|
| }
|
|
|
| +TEST(fxcrt, ByteStringRemoveCopies) {
|
| + CFX_ByteString freed("FREED");
|
| + const FX_CHAR* old_buffer = freed.c_str();
|
| +
|
| + // No change with single reference - no copy.
|
| + freed.Remove('Q');
|
| + EXPECT_EQ("FREED", freed);
|
| + EXPECT_EQ(old_buffer, freed.c_str());
|
| +
|
| + // Change with single reference - no copy.
|
| + freed.Remove('E');
|
| + EXPECT_EQ("FRD", freed);
|
| + EXPECT_EQ(old_buffer, freed.c_str());
|
| +
|
| + // No change with multiple references - no copy.
|
| + CFX_ByteString shared(freed);
|
| + freed.Remove('Q');
|
| + EXPECT_EQ("FRD", freed);
|
| + EXPECT_EQ(old_buffer, freed.c_str());
|
| + EXPECT_EQ(old_buffer, shared.c_str());
|
| +
|
| + // Change with multiple references -- must copy.
|
| + freed.Remove('D');
|
| + EXPECT_EQ("FR", freed);
|
| + EXPECT_NE(old_buffer, freed.c_str());
|
| + EXPECT_EQ("FRD", shared);
|
| + EXPECT_EQ(old_buffer, shared.c_str());
|
| +}
|
| +
|
| TEST(fxcrt, ByteStringReplace) {
|
| CFX_ByteString fred("FRED");
|
| fred.Replace("FR", "BL");
|
|
|