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 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
269 EXPECT_EQ(L"FRED", copy); | 269 EXPECT_EQ(L"FRED", copy); |
270 | 270 |
271 // Test invalid arguments. | 271 // Test invalid arguments. |
272 copy = fred; | 272 copy = fred; |
273 fred.ConcatInPlace(-6, L"freddy"); | 273 fred.ConcatInPlace(-6, L"freddy"); |
274 CFX_WideString not_aliased(L"xxxxxx"); | 274 CFX_WideString not_aliased(L"xxxxxx"); |
275 EXPECT_EQ(L"FREDDY", fred); | 275 EXPECT_EQ(L"FREDDY", fred); |
276 EXPECT_EQ(L"xxxxxx", not_aliased); | 276 EXPECT_EQ(L"xxxxxx", not_aliased); |
277 } | 277 } |
278 | 278 |
| 279 TEST(fxcrt, WideStringRemove) { |
| 280 CFX_WideString freed(L"FREED"); |
| 281 freed.Remove(L'E'); |
| 282 EXPECT_EQ(L"FRD", freed); |
| 283 |
| 284 freed.Remove(L'F'); |
| 285 EXPECT_EQ(L"RD", freed); |
| 286 |
| 287 freed.Remove(L'D'); |
| 288 EXPECT_EQ(L"R", freed); |
| 289 |
| 290 freed.Remove(L'X'); |
| 291 EXPECT_EQ(L"R", freed); |
| 292 |
| 293 CFX_WideString empty; |
| 294 empty.Remove(L'X'); |
| 295 EXPECT_EQ(L"", empty); |
| 296 } |
| 297 |
| 298 TEST(fxcrt, WideStringReplace) { |
| 299 CFX_WideString fred(L"FRED"); |
| 300 fred.Replace(L"FR", L"BL"); |
| 301 EXPECT_EQ(L"BLED", fred); |
| 302 |
| 303 fred.Replace(L"D", L"DDY"); |
| 304 EXPECT_EQ(L"BLEDDY", fred); |
| 305 |
| 306 fred.Replace(L"LEDD", L""); |
| 307 EXPECT_EQ(L"BY", fred); |
| 308 |
| 309 fred.Replace(L"X", L"CLAMS"); |
| 310 EXPECT_EQ(L"BY", fred); |
| 311 |
| 312 fred.Replace(L"", L"CLAMS"); |
| 313 EXPECT_EQ(L"BY", fred); |
| 314 } |
| 315 |
| 316 TEST(fxcrt, WideStringInsert) { |
| 317 CFX_WideString fred(L"FRED"); |
| 318 fred.Insert(-1, 'X'); |
| 319 EXPECT_EQ(L"XFRED", fred); |
| 320 |
| 321 fred.Insert(0, 'S'); |
| 322 EXPECT_EQ(L"SXFRED", fred); |
| 323 |
| 324 fred.Insert(2, 'T'); |
| 325 EXPECT_EQ(L"SXTFRED", fred); |
| 326 |
| 327 fred.Insert(5, 'U'); |
| 328 EXPECT_EQ(L"SXTFRUED", fred); |
| 329 |
| 330 fred.Insert(8, 'V'); |
| 331 EXPECT_EQ(L"SXTFRUEDV", fred); |
| 332 |
| 333 fred.Insert(12, 'P'); |
| 334 EXPECT_EQ(L"SXTFRUEDVP", fred); |
| 335 |
| 336 { |
| 337 CFX_WideString empty; |
| 338 empty.Insert(-1, 'X'); |
| 339 EXPECT_EQ(L"X", empty); |
| 340 } |
| 341 { |
| 342 CFX_WideString empty; |
| 343 empty.Insert(0, 'X'); |
| 344 EXPECT_EQ(L"X", empty); |
| 345 } |
| 346 { |
| 347 CFX_WideString empty; |
| 348 empty.Insert(5, 'X'); |
| 349 EXPECT_EQ(L"X", empty); |
| 350 } |
| 351 } |
| 352 |
| 353 TEST(fxcrt, WideStringDelete) { |
| 354 CFX_WideString fred(L"FRED"); |
| 355 fred.Delete(0, 2); |
| 356 EXPECT_EQ(L"ED", fred); |
| 357 fred.Delete(1); |
| 358 EXPECT_EQ(L"E", fred); |
| 359 fred.Delete(-1); |
| 360 EXPECT_EQ(L"", fred); |
| 361 fred.Delete(1); |
| 362 EXPECT_EQ(L"", fred); |
| 363 |
| 364 CFX_WideString empty; |
| 365 empty.Delete(0); |
| 366 EXPECT_EQ(L"", empty); |
| 367 empty.Delete(-1); |
| 368 EXPECT_EQ(L"", empty); |
| 369 empty.Delete(1); |
| 370 EXPECT_EQ(L"", empty); |
| 371 } |
| 372 |
| 373 TEST(fxcrt, WideStringMid) { |
| 374 CFX_WideString fred(L"FRED"); |
| 375 EXPECT_EQ(L"", fred.Mid(0, 0)); |
| 376 EXPECT_EQ(L"", fred.Mid(3, 0)); |
| 377 EXPECT_EQ(L"FRED", fred.Mid(0)); |
| 378 EXPECT_EQ(L"RED", fred.Mid(1)); |
| 379 EXPECT_EQ(L"ED", fred.Mid(2)); |
| 380 EXPECT_EQ(L"D", fred.Mid(3)); |
| 381 EXPECT_EQ(L"F", fred.Mid(0, 1)); |
| 382 EXPECT_EQ(L"R", fred.Mid(1, 1)); |
| 383 EXPECT_EQ(L"E", fred.Mid(2, 1)); |
| 384 EXPECT_EQ(L"D", fred.Mid(3, 1)); |
| 385 EXPECT_EQ(L"FR", fred.Mid(0, 2)); |
| 386 EXPECT_EQ(L"FRED", fred.Mid(0, 4)); |
| 387 |
| 388 EXPECT_EQ(L"FR", fred.Mid(-1, 2)); |
| 389 EXPECT_EQ(L"RED", fred.Mid(1, 4)); |
| 390 EXPECT_EQ(L"", fred.Mid(4, 1)); |
| 391 |
| 392 CFX_WideString empty; |
| 393 EXPECT_EQ(L"", empty.Mid(0, 0)); |
| 394 EXPECT_EQ(L"", empty.Mid(0)); |
| 395 EXPECT_EQ(L"", empty.Mid(1)); |
| 396 EXPECT_EQ(L"", empty.Mid(-1)); |
| 397 } |
| 398 |
| 399 TEST(fxcrt, WideStringLeft) { |
| 400 CFX_WideString fred(L"FRED"); |
| 401 EXPECT_EQ(L"", fred.Left(0)); |
| 402 EXPECT_EQ(L"F", fred.Left(1)); |
| 403 EXPECT_EQ(L"FR", fred.Left(2)); |
| 404 EXPECT_EQ(L"FRE", fred.Left(3)); |
| 405 EXPECT_EQ(L"FRED", fred.Left(4)); |
| 406 |
| 407 EXPECT_EQ(L"FRED", fred.Left(5)); |
| 408 EXPECT_EQ(L"", fred.Left(-1)); |
| 409 |
| 410 CFX_WideString empty; |
| 411 EXPECT_EQ(L"", empty.Left(0)); |
| 412 EXPECT_EQ(L"", empty.Left(1)); |
| 413 EXPECT_EQ(L"", empty.Left(-1)); |
| 414 } |
| 415 |
| 416 TEST(fxcrt, WideStringRight) { |
| 417 CFX_WideString fred(L"FRED"); |
| 418 EXPECT_EQ(L"", fred.Right(0)); |
| 419 EXPECT_EQ(L"D", fred.Right(1)); |
| 420 EXPECT_EQ(L"ED", fred.Right(2)); |
| 421 EXPECT_EQ(L"RED", fred.Right(3)); |
| 422 EXPECT_EQ(L"FRED", fred.Right(4)); |
| 423 |
| 424 EXPECT_EQ(L"FRED", fred.Right(5)); |
| 425 EXPECT_EQ(L"", fred.Right(-1)); |
| 426 |
| 427 CFX_WideString empty; |
| 428 EXPECT_EQ(L"", empty.Right(0)); |
| 429 EXPECT_EQ(L"", empty.Right(1)); |
| 430 EXPECT_EQ(L"", empty.Right(-1)); |
| 431 } |
| 432 |
| 433 TEST(fxcrt, WideStringUpperLower) { |
| 434 CFX_WideString fred(L"F-Re.42D"); |
| 435 fred.MakeLower(); |
| 436 EXPECT_EQ(L"f-re.42d", fred); |
| 437 fred.MakeUpper(); |
| 438 EXPECT_EQ(L"F-RE.42D", fred); |
| 439 |
| 440 CFX_WideString empty; |
| 441 empty.MakeLower(); |
| 442 EXPECT_EQ(L"", empty); |
| 443 empty.MakeUpper(); |
| 444 EXPECT_EQ(L"", empty); |
| 445 } |
| 446 |
| 447 TEST(fxcrt, WideStringTrimRight) { |
| 448 CFX_WideString fred(L" FRED "); |
| 449 fred.TrimRight(); |
| 450 EXPECT_EQ(L" FRED", fred); |
| 451 fred.TrimRight(L'E'); |
| 452 EXPECT_EQ(L" FRED", fred); |
| 453 fred.TrimRight(L'D'); |
| 454 EXPECT_EQ(L" FRE", fred); |
| 455 fred.TrimRight(L"ERP"); |
| 456 EXPECT_EQ(L" F", fred); |
| 457 |
| 458 CFX_WideString blank(L" "); |
| 459 blank.TrimRight(L"ERP"); |
| 460 EXPECT_EQ(L" ", blank); |
| 461 blank.TrimRight(L'E'); |
| 462 EXPECT_EQ(L" ", blank); |
| 463 blank.TrimRight(); |
| 464 EXPECT_EQ(L"", blank); |
| 465 |
| 466 CFX_WideString empty; |
| 467 empty.TrimRight(L"ERP"); |
| 468 EXPECT_EQ(L"", empty); |
| 469 empty.TrimRight(L'E'); |
| 470 EXPECT_EQ(L"", empty); |
| 471 empty.TrimRight(); |
| 472 EXPECT_EQ(L"", empty); |
| 473 } |
| 474 |
| 475 TEST(fxcrt, WideStringTrimLeft) { |
| 476 CFX_WideString fred(L" FRED "); |
| 477 fred.TrimLeft(); |
| 478 EXPECT_EQ(L"FRED ", fred); |
| 479 fred.TrimLeft(L'E'); |
| 480 EXPECT_EQ(L"FRED ", fred); |
| 481 fred.TrimLeft(L'F'); |
| 482 EXPECT_EQ(L"RED ", fred); |
| 483 fred.TrimLeft(L"ERP"); |
| 484 EXPECT_EQ(L"D ", fred); |
| 485 |
| 486 CFX_WideString blank(L" "); |
| 487 blank.TrimLeft(L"ERP"); |
| 488 EXPECT_EQ(L" ", blank); |
| 489 blank.TrimLeft(L'E'); |
| 490 EXPECT_EQ(L" ", blank); |
| 491 blank.TrimLeft(); |
| 492 EXPECT_EQ(L"", blank); |
| 493 |
| 494 CFX_WideString empty; |
| 495 empty.TrimLeft(L"ERP"); |
| 496 EXPECT_EQ(L"", empty); |
| 497 empty.TrimLeft(L'E'); |
| 498 EXPECT_EQ(L"", empty); |
| 499 empty.TrimLeft(); |
| 500 EXPECT_EQ(L"", empty); |
| 501 } |
| 502 |
279 TEST(fxcrt, WideStringUTF16LE_Encode) { | 503 TEST(fxcrt, WideStringUTF16LE_Encode) { |
280 struct UTF16LEEncodeCase { | 504 struct UTF16LEEncodeCase { |
281 CFX_WideString ws; | 505 CFX_WideString ws; |
282 CFX_ByteString bs; | 506 CFX_ByteString bs; |
283 } utf16le_encode_cases[] = { | 507 } utf16le_encode_cases[] = { |
284 {L"", CFX_ByteString("\0\0", 2)}, | 508 {L"", CFX_ByteString("\0\0", 2)}, |
285 {L"abc", CFX_ByteString("a\0b\0c\0\0\0", 8)}, | 509 {L"abc", CFX_ByteString("a\0b\0c\0\0\0", 8)}, |
286 {L"abcdef", CFX_ByteString("a\0b\0c\0d\0e\0f\0\0\0", 14)}, | 510 {L"abcdef", CFX_ByteString("a\0b\0c\0d\0e\0f\0\0\0", 14)}, |
287 {L"abc\0def", CFX_ByteString("a\0b\0c\0\0\0", 8)}, | 511 {L"abc\0def", CFX_ByteString("a\0b\0c\0\0\0", 8)}, |
288 {L"\xaabb\xccdd", CFX_ByteString("\xbb\xaa\xdd\xcc\0\0", 6)}, | 512 {L"\xaabb\xccdd", CFX_ByteString("\xbb\xaa\xdd\xcc\0\0", 6)}, |
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
515 } | 739 } |
516 } | 740 } |
517 | 741 |
518 TEST(fxcrt, EmptyWideString) { | 742 TEST(fxcrt, EmptyWideString) { |
519 CFX_WideString empty_str; | 743 CFX_WideString empty_str; |
520 EXPECT_TRUE(empty_str.IsEmpty()); | 744 EXPECT_TRUE(empty_str.IsEmpty()); |
521 EXPECT_EQ(0, empty_str.GetLength()); | 745 EXPECT_EQ(0, empty_str.GetLength()); |
522 const FX_WCHAR* cstr = empty_str.c_str(); | 746 const FX_WCHAR* cstr = empty_str.c_str(); |
523 EXPECT_EQ(0, FXSYS_wcslen(cstr)); | 747 EXPECT_EQ(0, FXSYS_wcslen(cstr)); |
524 } | 748 } |
OLD | NEW |