Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3264)

Unified Diff: chrome/renderer/spellchecker/spellcheck_worditerator_unittest.cc

Issue 1269343005: Updates SpellcheckWordIterator::GetNextWord to return an enum. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@break-iter
Patch Set: Addressed comments. Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/renderer/spellchecker/spellcheck_worditerator.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/renderer/spellchecker/spellcheck_worditerator_unittest.cc
diff --git a/chrome/renderer/spellchecker/spellcheck_worditerator_unittest.cc b/chrome/renderer/spellchecker/spellcheck_worditerator_unittest.cc
index 7b233e9462e2fd020840b25a5e602d28fe0478c3..6eb39c593329cba774dc9eba2a5b3e9515684aa4 100644
--- a/chrome/renderer/spellchecker/spellcheck_worditerator_unittest.cc
+++ b/chrome/renderer/spellchecker/spellcheck_worditerator_unittest.cc
@@ -31,13 +31,15 @@ base::string16 GetRulesForLanguage(const std::string& language) {
} // namespace
-// Tests whether or not our SpellcheckWordIterator can extract only words used
-// by the specified language from a multi-language text.
+// Tests whether or not our SpellcheckWordIterator can extract words used by the
+// specified language from a multi-language text.
TEST(SpellcheckWordIteratorTest, SplitWord) {
// An input text. This text includes words of several languages. (Some words
// are not separated with whitespace characters.) Our SpellcheckWordIterator
- // should extract only the words used by the specified language from this text
- // and normalize them so our spell-checker can check their spellings.
+ // should extract the words used by the specified language from this text and
+ // normalize them so our spell-checker can check their spellings. If
+ // characters are found that are not from the specified language the test
+ // skips them.
const wchar_t kTestText[] =
// Graphic characters
L"!@#$%^&*()"
@@ -141,7 +143,14 @@ TEST(SpellcheckWordIteratorTest, SplitWord) {
base::string16 actual_word;
int actual_start, actual_end;
size_t index = 0;
- while (iterator.GetNextWord(&actual_word, &actual_start, &actual_end)) {
+ for (SpellcheckWordIterator::WordIteratorStatus status =
+ iterator.GetNextWord(&actual_word, &actual_start, &actual_end);
+ status != SpellcheckWordIterator::IS_END_OF_TEXT;
+ status =
+ iterator.GetNextWord(&actual_word, &actual_start, &actual_end)) {
+ if (status == SpellcheckWordIterator::WordIteratorStatus::IS_SKIPPABLE)
+ continue;
+
EXPECT_TRUE(index < expected_words.size());
if (index < expected_words.size())
EXPECT_EQ(expected_words[index], actual_word);
@@ -165,11 +174,19 @@ TEST(SpellcheckWordIteratorTest, RuleSetConsistency) {
EXPECT_TRUE(iterator.SetText(input.c_str(), input.length()));
// When SpellcheckWordIterator uses an inconsistent ICU ruleset, the following
- // iterator.GetNextWord() call gets stuck in an infinite loop. Therefore, this
+ // iterator.GetNextWord() calls get stuck in an infinite loop. Therefore, this
// test succeeds if this call returns without timeouts.
base::string16 actual_word;
int actual_start, actual_end;
- EXPECT_FALSE(iterator.GetNextWord(&actual_word, &actual_start, &actual_end));
+ SpellcheckWordIterator::WordIteratorStatus status;
+ for (status = iterator.GetNextWord(&actual_word, &actual_start, &actual_end);
+ status == SpellcheckWordIterator::IS_SKIPPABLE;
+ status =
+ iterator.GetNextWord(&actual_word, &actual_start, &actual_end)) {
+ continue;
+ }
+
+ EXPECT_EQ(SpellcheckWordIterator::WordIteratorStatus::IS_END_OF_TEXT, status);
EXPECT_EQ(0, actual_start);
EXPECT_EQ(0, actual_end);
}
@@ -230,7 +247,16 @@ TEST(SpellcheckWordIteratorTest, TreatNumbersAsWordCharacters) {
base::string16 actual_word;
int actual_start, actual_end;
- EXPECT_TRUE(iterator.GetNextWord(&actual_word, &actual_start, &actual_end));
+ SpellcheckWordIterator::WordIteratorStatus status;
+ for (status =
+ iterator.GetNextWord(&actual_word, &actual_start, &actual_end);
+ status == SpellcheckWordIterator::IS_SKIPPABLE;
+ status =
+ iterator.GetNextWord(&actual_word, &actual_start, &actual_end)) {
+ continue;
+ }
+
+ EXPECT_EQ(SpellcheckWordIterator::WordIteratorStatus::IS_WORD, status);
if (kTestCases[i].left_to_right)
EXPECT_EQ(input_word, actual_word);
else
@@ -278,7 +304,15 @@ TEST(SpellcheckWordIteratorTest, TypographicalApostropheIsPartOfWord) {
base::string16 actual_word;
int actual_start, actual_end;
- EXPECT_TRUE(iterator.GetNextWord(&actual_word, &actual_start, &actual_end));
+ SpellcheckWordIterator::WordIteratorStatus status;
+ for (status =
+ iterator.GetNextWord(&actual_word, &actual_start, &actual_end);
+ status == SpellcheckWordIterator::IS_SKIPPABLE;
+ iterator.GetNextWord(&actual_word, &actual_start, &actual_end)) {
Nico 2016/01/05 22:13:23 You forgot to assign to status here (you got it ri
groby-ooo-7-16 2016/01/05 22:36:11 I _think_ the test still passes because the very f
+ continue;
+ }
+
+ EXPECT_EQ(SpellcheckWordIterator::WordIteratorStatus::IS_WORD, status);
EXPECT_EQ(input_word, actual_word);
EXPECT_EQ(0, actual_start);
EXPECT_EQ(input_word.length(),
« no previous file with comments | « chrome/renderer/spellchecker/spellcheck_worditerator.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698