| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "core/fxcrt/include/fx_basic.h" | 5 #include "core/fxcrt/include/fx_basic.h" |
| 6 #include "testing/fx_string_testhelpers.h" | 6 #include "testing/fx_string_testhelpers.h" |
| 7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
| 8 | 8 |
| 9 TEST(fxcrt, WideStringOperatorSubscript) { | 9 TEST(fxcrt, WideStringOperatorSubscript) { |
| 10 // CFX_WideString includes the NUL terminator for non-empty strings. | 10 // CFX_WideString includes the NUL terminator for non-empty strings. |
| (...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 287 freed.Remove(L'X'); | 287 freed.Remove(L'X'); |
| 288 EXPECT_EQ(L"R", freed); | 288 EXPECT_EQ(L"R", freed); |
| 289 freed.Remove(L'R'); | 289 freed.Remove(L'R'); |
| 290 EXPECT_EQ(L"", freed); | 290 EXPECT_EQ(L"", freed); |
| 291 | 291 |
| 292 CFX_WideString empty; | 292 CFX_WideString empty; |
| 293 empty.Remove(L'X'); | 293 empty.Remove(L'X'); |
| 294 EXPECT_EQ(L"", empty); | 294 EXPECT_EQ(L"", empty); |
| 295 } | 295 } |
| 296 | 296 |
| 297 TEST(fxcrt, WideStringRemoveCopies) { |
| 298 CFX_WideString freed(L"FREED"); |
| 299 const FX_WCHAR* old_buffer = freed.c_str(); |
| 300 |
| 301 // No change with single reference - no copy. |
| 302 freed.Remove(L'Q'); |
| 303 EXPECT_EQ(L"FREED", freed); |
| 304 EXPECT_EQ(old_buffer, freed.c_str()); |
| 305 |
| 306 // Change with single reference - no copy. |
| 307 freed.Remove(L'E'); |
| 308 EXPECT_EQ(L"FRD", freed); |
| 309 EXPECT_EQ(old_buffer, freed.c_str()); |
| 310 |
| 311 // No change with multiple references - no copy. |
| 312 CFX_WideString shared(freed); |
| 313 freed.Remove(L'Q'); |
| 314 EXPECT_EQ(L"FRD", freed); |
| 315 EXPECT_EQ(old_buffer, freed.c_str()); |
| 316 EXPECT_EQ(old_buffer, shared.c_str()); |
| 317 |
| 318 // Change with multiple references -- must copy. |
| 319 freed.Remove(L'D'); |
| 320 EXPECT_EQ(L"FR", freed); |
| 321 EXPECT_NE(old_buffer, freed.c_str()); |
| 322 EXPECT_EQ(L"FRD", shared); |
| 323 EXPECT_EQ(old_buffer, shared.c_str()); |
| 324 } |
| 325 |
| 297 TEST(fxcrt, WideStringReplace) { | 326 TEST(fxcrt, WideStringReplace) { |
| 298 CFX_WideString fred(L"FRED"); | 327 CFX_WideString fred(L"FRED"); |
| 299 fred.Replace(L"FR", L"BL"); | 328 fred.Replace(L"FR", L"BL"); |
| 300 EXPECT_EQ(L"BLED", fred); | 329 EXPECT_EQ(L"BLED", fred); |
| 301 fred.Replace(L"D", L"DDY"); | 330 fred.Replace(L"D", L"DDY"); |
| 302 EXPECT_EQ(L"BLEDDY", fred); | 331 EXPECT_EQ(L"BLEDDY", fred); |
| 303 fred.Replace(L"LEDD", L""); | 332 fred.Replace(L"LEDD", L""); |
| 304 EXPECT_EQ(L"BY", fred); | 333 EXPECT_EQ(L"BY", fred); |
| 305 fred.Replace(L"X", L"CLAMS"); | 334 fred.Replace(L"X", L"CLAMS"); |
| 306 EXPECT_EQ(L"BY", fred); | 335 EXPECT_EQ(L"BY", fred); |
| (...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 801 } | 830 } |
| 802 } | 831 } |
| 803 | 832 |
| 804 TEST(fxcrt, EmptyWideString) { | 833 TEST(fxcrt, EmptyWideString) { |
| 805 CFX_WideString empty_str; | 834 CFX_WideString empty_str; |
| 806 EXPECT_TRUE(empty_str.IsEmpty()); | 835 EXPECT_TRUE(empty_str.IsEmpty()); |
| 807 EXPECT_EQ(0, empty_str.GetLength()); | 836 EXPECT_EQ(0, empty_str.GetLength()); |
| 808 const FX_WCHAR* cstr = empty_str.c_str(); | 837 const FX_WCHAR* cstr = empty_str.c_str(); |
| 809 EXPECT_EQ(0, FXSYS_wcslen(cstr)); | 838 EXPECT_EQ(0, FXSYS_wcslen(cstr)); |
| 810 } | 839 } |
| OLD | NEW |