| Index: core/fxcrt/fx_basic_wstring_unittest.cpp
|
| diff --git a/core/fxcrt/fx_basic_wstring_unittest.cpp b/core/fxcrt/fx_basic_wstring_unittest.cpp
|
| index bc38141a95ca9f317d07b4850e28a8877f0c3360..708556af1d1299ead0ed251984a98070f3a4d26d 100644
|
| --- a/core/fxcrt/fx_basic_wstring_unittest.cpp
|
| +++ b/core/fxcrt/fx_basic_wstring_unittest.cpp
|
| @@ -294,6 +294,35 @@ TEST(fxcrt, WideStringRemove) {
|
| EXPECT_EQ(L"", empty);
|
| }
|
|
|
| +TEST(fxcrt, WideStringRemoveCopies) {
|
| + CFX_WideString freed(L"FREED");
|
| + const FX_WCHAR* old_buffer = freed.c_str();
|
| +
|
| + // No change with single reference - no copy.
|
| + freed.Remove(L'Q');
|
| + EXPECT_EQ(L"FREED", freed);
|
| + EXPECT_EQ(old_buffer, freed.c_str());
|
| +
|
| + // Change with single reference - no copy.
|
| + freed.Remove(L'E');
|
| + EXPECT_EQ(L"FRD", freed);
|
| + EXPECT_EQ(old_buffer, freed.c_str());
|
| +
|
| + // No change with multiple references - no copy.
|
| + CFX_WideString shared(freed);
|
| + freed.Remove(L'Q');
|
| + EXPECT_EQ(L"FRD", freed);
|
| + EXPECT_EQ(old_buffer, freed.c_str());
|
| + EXPECT_EQ(old_buffer, shared.c_str());
|
| +
|
| + // Change with multiple references -- must copy.
|
| + freed.Remove(L'D');
|
| + EXPECT_EQ(L"FR", freed);
|
| + EXPECT_NE(old_buffer, freed.c_str());
|
| + EXPECT_EQ(L"FRD", shared);
|
| + EXPECT_EQ(old_buffer, shared.c_str());
|
| +}
|
| +
|
| TEST(fxcrt, WideStringReplace) {
|
| CFX_WideString fred(L"FRED");
|
| fred.Replace(L"FR", L"BL");
|
|
|