OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium 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 "base/i18n/break_iterator.h" | 5 #include "base/i18n/break_iterator.h" |
6 | 6 |
7 #include "base/strings/string_piece.h" | 7 #include "base/strings/string_piece.h" |
8 #include "base/strings/stringprintf.h" | 8 #include "base/strings/stringprintf.h" |
9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
362 EXPECT_TRUE(iter.Advance()); | 362 EXPECT_TRUE(iter.Advance()); |
363 EXPECT_EQ(iter.GetString(), iter.GetStringPiece().as_string()); | 363 EXPECT_EQ(iter.GetString(), iter.GetStringPiece().as_string()); |
364 EXPECT_EQ(StringPiece16(ASCIIToUTF16("some")), iter.GetStringPiece()); | 364 EXPECT_EQ(StringPiece16(ASCIIToUTF16("some")), iter.GetStringPiece()); |
365 | 365 |
366 EXPECT_TRUE(iter.Advance()); | 366 EXPECT_TRUE(iter.Advance()); |
367 EXPECT_TRUE(iter.Advance()); | 367 EXPECT_TRUE(iter.Advance()); |
368 EXPECT_EQ(iter.GetString(), iter.GetStringPiece().as_string()); | 368 EXPECT_EQ(iter.GetString(), iter.GetStringPiece().as_string()); |
369 EXPECT_EQ(StringPiece16(ASCIIToUTF16("string")), iter.GetStringPiece()); | 369 EXPECT_EQ(StringPiece16(ASCIIToUTF16("string")), iter.GetStringPiece()); |
370 } | 370 } |
371 | 371 |
| 372 // Make sure that when not in RULE_BASED or BREAK_WORD mode we're getting |
| 373 // IS_LINE_OR_CHAR_BREAK. |
| 374 TEST(BreakIteratorTest, GetWordBreakStatusBreakLine) { |
| 375 // A string containing the English word "foo", followed by two Khmer |
| 376 // characters, the English word "Can", and then two Russian characters and |
| 377 // punctuation. |
| 378 base::string16 text( |
| 379 base::WideToUTF16(L"foo \x1791\x17C1 \nCan \x041C\x0438...")); |
| 380 BreakIterator iter(text, BreakIterator::BREAK_LINE); |
| 381 ASSERT_TRUE(iter.Init()); |
| 382 |
| 383 EXPECT_TRUE(iter.Advance()); |
| 384 // Finds "foo" and the space. |
| 385 EXPECT_EQ(base::UTF8ToUTF16("foo "), iter.GetString()); |
| 386 EXPECT_EQ(iter.GetWordBreakStatus(), BreakIterator::IS_LINE_OR_CHAR_BREAK); |
| 387 EXPECT_TRUE(iter.Advance()); |
| 388 // Finds the Khmer characters, the next space, and the newline. |
| 389 EXPECT_EQ(base::WideToUTF16(L"\x1791\x17C1 \n"), iter.GetString()); |
| 390 EXPECT_EQ(iter.GetWordBreakStatus(), BreakIterator::IS_LINE_OR_CHAR_BREAK); |
| 391 EXPECT_TRUE(iter.Advance()); |
| 392 // Finds "Can" and the space. |
| 393 EXPECT_EQ(base::UTF8ToUTF16("Can "), iter.GetString()); |
| 394 EXPECT_EQ(iter.GetWordBreakStatus(), BreakIterator::IS_LINE_OR_CHAR_BREAK); |
| 395 EXPECT_TRUE(iter.Advance()); |
| 396 // Finds the Russian characters and periods. |
| 397 EXPECT_EQ(base::WideToUTF16(L"\x041C\x0438..."), iter.GetString()); |
| 398 EXPECT_EQ(iter.GetWordBreakStatus(), BreakIterator::IS_LINE_OR_CHAR_BREAK); |
| 399 EXPECT_FALSE(iter.Advance()); |
| 400 } |
| 401 |
| 402 // Make sure that in BREAK_WORD mode we're getting IS_WORD_BREAK and |
| 403 // IS_SKIPPABLE_WORD when we should be. IS_WORD_BREAK should be returned when we |
| 404 // finish going over non-punctuation characters while IS_SKIPPABLE_WORD should |
| 405 // be returned on punctuation and spaces. |
| 406 TEST(BreakIteratorTest, GetWordBreakStatusBreakWord) { |
| 407 // A string containing the English word "foo", followed by two Khmer |
| 408 // characters, the English word "Can", and then two Russian characters and |
| 409 // punctuation. |
| 410 base::string16 text( |
| 411 base::WideToUTF16(L"foo \x1791\x17C1 \nCan \x041C\x0438...")); |
| 412 BreakIterator iter(text, BreakIterator::BREAK_WORD); |
| 413 ASSERT_TRUE(iter.Init()); |
| 414 |
| 415 EXPECT_TRUE(iter.Advance()); |
| 416 // Finds "foo". |
| 417 EXPECT_EQ(base::UTF8ToUTF16("foo"), iter.GetString()); |
| 418 EXPECT_EQ(iter.GetWordBreakStatus(), BreakIterator::IS_WORD_BREAK); |
| 419 EXPECT_TRUE(iter.Advance()); |
| 420 // Finds the space, and the Khmer characters. |
| 421 EXPECT_EQ(base::UTF8ToUTF16(" "), iter.GetString()); |
| 422 EXPECT_EQ(iter.GetWordBreakStatus(), BreakIterator::IS_SKIPPABLE_WORD); |
| 423 EXPECT_TRUE(iter.Advance()); |
| 424 EXPECT_EQ(base::WideToUTF16(L"\x1791\x17C1"), iter.GetString()); |
| 425 EXPECT_EQ(iter.GetWordBreakStatus(), BreakIterator::IS_WORD_BREAK); |
| 426 EXPECT_TRUE(iter.Advance()); |
| 427 // Finds the space and the newline. |
| 428 EXPECT_EQ(base::UTF8ToUTF16(" "), iter.GetString()); |
| 429 EXPECT_EQ(iter.GetWordBreakStatus(), BreakIterator::IS_SKIPPABLE_WORD); |
| 430 EXPECT_TRUE(iter.Advance()); |
| 431 EXPECT_EQ(base::UTF8ToUTF16("\n"), iter.GetString()); |
| 432 EXPECT_EQ(iter.GetWordBreakStatus(), BreakIterator::IS_SKIPPABLE_WORD); |
| 433 EXPECT_TRUE(iter.Advance()); |
| 434 // Finds "Can". |
| 435 EXPECT_EQ(base::UTF8ToUTF16("Can"), iter.GetString()); |
| 436 EXPECT_EQ(iter.GetWordBreakStatus(), BreakIterator::IS_WORD_BREAK); |
| 437 EXPECT_TRUE(iter.Advance()); |
| 438 // Finds the space and the Russian characters. |
| 439 EXPECT_EQ(base::UTF8ToUTF16(" "), iter.GetString()); |
| 440 EXPECT_EQ(iter.GetWordBreakStatus(), BreakIterator::IS_SKIPPABLE_WORD); |
| 441 EXPECT_TRUE(iter.Advance()); |
| 442 EXPECT_EQ(base::WideToUTF16(L"\x041C\x0438"), iter.GetString()); |
| 443 EXPECT_EQ(iter.GetWordBreakStatus(), BreakIterator::IS_WORD_BREAK); |
| 444 EXPECT_TRUE(iter.Advance()); |
| 445 // Finds the trailing periods. |
| 446 EXPECT_EQ(base::UTF8ToUTF16("."), iter.GetString()); |
| 447 EXPECT_EQ(iter.GetWordBreakStatus(), BreakIterator::IS_SKIPPABLE_WORD); |
| 448 EXPECT_TRUE(iter.Advance()); |
| 449 EXPECT_EQ(base::UTF8ToUTF16("."), iter.GetString()); |
| 450 EXPECT_EQ(iter.GetWordBreakStatus(), BreakIterator::IS_SKIPPABLE_WORD); |
| 451 EXPECT_TRUE(iter.Advance()); |
| 452 EXPECT_EQ(base::UTF8ToUTF16("."), iter.GetString()); |
| 453 EXPECT_EQ(iter.GetWordBreakStatus(), BreakIterator::IS_SKIPPABLE_WORD); |
| 454 EXPECT_FALSE(iter.Advance()); |
| 455 } |
| 456 |
372 } // namespace i18n | 457 } // namespace i18n |
373 } // namespace base | 458 } // namespace base |
OLD | NEW |