| Index: chrome/renderer/spellchecker/spellcheck_unittest.cc
|
| diff --git a/chrome/renderer/spellchecker/spellcheck_unittest.cc b/chrome/renderer/spellchecker/spellcheck_unittest.cc
|
| index 751768976edd942452431c34b45c8fc13d7c123c..1fa837910e2c095e7f516efd323da9e5d1883603 100644
|
| --- a/chrome/renderer/spellchecker/spellcheck_unittest.cc
|
| +++ b/chrome/renderer/spellchecker/spellcheck_unittest.cc
|
| @@ -1188,8 +1188,8 @@ TEST_F(SpellCheckTest, EnglishWords) {
|
| // Checks that NOSUGGEST works in English dictionaries.
|
| TEST_F(SpellCheckTest, NoSuggest) {
|
| static const struct {
|
| - const char* misspelling;
|
| const char* input;
|
| + const char* suggestion;
|
| const char* locale;
|
| bool should_pass;
|
| } kTestCases[] = {
|
| @@ -1211,45 +1211,46 @@ TEST_F(SpellCheckTest, NoSuggest) {
|
| size_t test_cases_size = ARRAYSIZE_UNSAFE(kTestCases);
|
| for (size_t i = 0; i < test_cases_size; ++i) {
|
| ReinitializeSpellCheck(kTestCases[i].locale);
|
| - size_t input_length = 0;
|
| - if (kTestCases[i].input != NULL)
|
| - input_length = strlen(kTestCases[i].input);
|
| + size_t suggestion_length = 0;
|
| + if (kTestCases[i].suggestion != NULL)
|
| + suggestion_length = strlen(kTestCases[i].suggestion);
|
|
|
| // First check that the NOSUGGEST flag didn't mark this word as not being in
|
| // the dictionary.
|
| int misspelling_start = 0;
|
| int misspelling_length = 0;
|
| bool result = spell_check()->SpellCheckWord(
|
| - ASCIIToUTF16(kTestCases[i].input).c_str(),
|
| - static_cast<int>(input_length),
|
| + ASCIIToUTF16(kTestCases[i].suggestion).c_str(),
|
| + static_cast<int>(suggestion_length),
|
| 0,
|
| &misspelling_start,
|
| &misspelling_length, NULL);
|
|
|
| - EXPECT_EQ(kTestCases[i].should_pass, result) << kTestCases[i].input <<
|
| - " in " << kTestCases[i].input;
|
| + EXPECT_EQ(kTestCases[i].should_pass, result) << kTestCases[i].suggestion <<
|
| + " in " << kTestCases[i].locale;
|
|
|
| // Now verify that this test case does not show up as a suggestion.
|
| std::vector<string16> suggestions;
|
| - input_length = 0;
|
| - if (kTestCases[i].misspelling != NULL)
|
| - input_length = strlen(kTestCases[i].misspelling);
|
| + size_t input_length = 0;
|
| + if (kTestCases[i].input != NULL)
|
| + input_length = strlen(kTestCases[i].input);
|
| result = spell_check()->SpellCheckWord(
|
| - ASCIIToUTF16(kTestCases[i].misspelling).c_str(),
|
| + ASCIIToUTF16(kTestCases[i].input).c_str(),
|
| static_cast<int>(input_length),
|
| 0,
|
| &misspelling_start,
|
| &misspelling_length,
|
| &suggestions);
|
| - // Check if the suggested words occur.
|
| - EXPECT_FALSE(result) << kTestCases[i].misspelling
|
| + // Input word should be a misspelling.
|
| + EXPECT_FALSE(result) << kTestCases[i].input
|
| << " is not a misspelling in "
|
| << kTestCases[i].locale;
|
| + // Check if the suggested words occur.
|
| for (int j = 0; j < static_cast<int>(suggestions.size()); j++) {
|
| for (size_t t = 0; t < test_cases_size; t++) {
|
| int compare_result =
|
| - suggestions.at(j).compare(ASCIIToUTF16(kTestCases[t].input));
|
| - EXPECT_FALSE(compare_result == 0) << kTestCases[t].input <<
|
| + suggestions.at(j).compare(ASCIIToUTF16(kTestCases[t].suggestion));
|
| + EXPECT_FALSE(compare_result == 0) << kTestCases[t].suggestion <<
|
| " in " << kTestCases[i].locale;
|
| }
|
| }
|
| @@ -1258,14 +1259,9 @@ TEST_F(SpellCheckTest, NoSuggest) {
|
|
|
| // Check that the correct dictionary files are checked in.
|
| TEST_F(SpellCheckTest, DictionaryFiles) {
|
| - std::vector<std::string> locale_codes;
|
| - l10n_util::GetAcceptLanguagesForLocale("C", &locale_codes);
|
| - EXPECT_FALSE(locale_codes.empty());
|
| -
|
| std::vector<std::string> spellcheck_languages;
|
| chrome::spellcheck_common::SpellCheckLanguages(&spellcheck_languages);
|
| EXPECT_FALSE(spellcheck_languages.empty());
|
| - EXPECT_LE(spellcheck_languages.size(), locale_codes.size());
|
|
|
| FilePath hunspell = GetHunspellDirectory();
|
| for (size_t i = 0; i < spellcheck_languages.size(); ++i) {
|
| @@ -1275,4 +1271,44 @@ TEST_F(SpellCheckTest, DictionaryFiles) {
|
| }
|
| }
|
|
|
| +// Check for correct behavior around the maximum word length boundary.
|
| +TEST_F(SpellCheckTest, MaxWordLengthBoundary) {
|
| + static const char* kTestCases[] = {
|
| + // 96 characters.
|
| + "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqr",
|
| + // 97 characters.
|
| + "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrs",
|
| + // 98 characters.
|
| + "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrst",
|
| + // 99 characters.
|
| + "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstu",
|
| + // 100 characters.
|
| + "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuv",
|
| + // 101 characters.
|
| + "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvw",
|
| + // 102 characters.
|
| + "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwx"
|
| + };
|
| +
|
| + ReinitializeSpellCheck("en-US");
|
| + size_t test_cases_size = ARRAYSIZE_UNSAFE(kTestCases);
|
| + for (size_t i = 0; i < test_cases_size; ++i) {
|
| + size_t input_length = strlen(kTestCases[i]);
|
| +
|
| + int misspelling_start = 0;
|
| + int misspelling_length = 0;
|
| + std::vector<string16> suggestions;
|
| + bool result = spell_check()->SpellCheckWord(
|
| + ASCIIToUTF16(kTestCases[i]).c_str(),
|
| + static_cast<int>(input_length),
|
| + 0,
|
| + &misspelling_start,
|
| + &misspelling_length,
|
| + &suggestions);
|
| +
|
| + EXPECT_FALSE(result) << kTestCases[i] << " is spelled correctly";
|
| + EXPECT_TRUE(suggestions.empty()) << kTestCases[i] << " has suggestions";
|
| + }
|
| +}
|
| +
|
| #endif
|
|
|