Index: chrome/browser/spellcheck_unittest.cc |
=================================================================== |
--- chrome/browser/spellcheck_unittest.cc (revision 25643) |
+++ chrome/browser/spellcheck_unittest.cc (working copy) |
@@ -7,7 +7,9 @@ |
#include "base/file_util.h" |
#include "base/message_loop.h" |
#include "base/path_service.h" |
+#include "base/sys_string_conversions.h" |
#include "chrome/browser/spellchecker.h" |
+#include "chrome/browser/spellchecker_platform_engine.h" |
#include "chrome/common/chrome_paths.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -280,6 +282,7 @@ |
int misspelling_length; |
bool result = spell_checker->SpellCheckWord(kTestCases[i].input, |
static_cast<int>(input_length), |
+ 0, |
&misspelling_start, |
&misspelling_length, NULL); |
@@ -377,9 +380,7 @@ |
{L"compitition", false, 0,0,L"competition"}, |
{L"conceed", false, 0,0,L"concede"}, |
{L"congradulate", false, 0,0,L"congratulate"}, |
- // TODO(pwicks): This fails as a result of 13432. |
- // Once that is fixed, uncomment this. |
- // {L"consciencious", false, 0,0,L"conscientious"}, |
+ {L"consciencious", false, 0, 0, L"conscientious"}, |
{L"concious", false, 0,0,L"conscious"}, |
{L"concensus", false, 0,0,L"consensus"}, |
{L"contraversy", false, 0,0,L"controversy"}, |
@@ -452,9 +453,7 @@ |
{L"imediately", false, 0,0,L"immediately"}, |
{L"incidently", false, 0,0,L"incidentally"}, |
{L"independant", false, 0,0,L"independent"}, |
- // TODO(pwicks): This fails as a result of 13432. |
- // Once that is fixed, uncomment this. |
- // {L"indispensible", false, 0,0,L"indispensable"}, |
+ {L"indispensible", false, 0, 0, L"indispensable"}, |
{L"innoculate", false, 0,0,L"inoculate"}, |
{L"inteligence", false, 0,0,L"intelligence"}, |
{L"intresting", false, 0,0,L"interesting"}, |
@@ -533,9 +532,7 @@ |
{L"proffesional", false, 0,0,L"professional"}, |
{L"professer", false, 0,0,L"professor"}, |
{L"promiss", false, 0,0,L"promise"}, |
- // TODO(pwicks): This fails as a result of 13432. |
- // Once that is fixed, uncomment this. |
- // {L"pronounciation", false, 0,0,L"pronunciation"}, |
+ {L"pronounciation", false, 0, 0, L"pronunciation"}, |
{L"prufe", false, 0,0,L"proof"}, |
{L"psycology", false, 0,0,L"psychology"}, |
{L"publically", false, 0,0,L"publicly"}, |
@@ -631,6 +628,7 @@ |
int misspelling_length; |
bool result = spell_checker->SpellCheckWord(kTestCases[i].input, |
static_cast<int>(input_length), |
+ 0, |
&misspelling_start, |
&misspelling_length, |
&suggestions); |
@@ -899,6 +897,7 @@ |
int misspelling_length = 0; |
bool result = spell_checker->SpellCheckWord(kTestCases[i].input, |
static_cast<int>(input_length), |
+ 0, |
&misspelling_start, |
&misspelling_length, NULL); |
@@ -940,6 +939,7 @@ |
int misspelling_length; |
bool result = spell_checker->SpellCheckWord(kTestCases[i].word_to_add, |
static_cast<int>(input_length), |
+ 0, |
&misspelling_start, |
&misspelling_length, |
&suggestions); |
@@ -964,6 +964,7 @@ |
bool result = spell_checker_new->SpellCheckWord( |
kTestCases[i].word_to_add, |
static_cast<int>(input_length), |
+ 0, |
&misspelling_start, |
&misspelling_length, |
&suggestions); |
@@ -1030,6 +1031,7 @@ |
int misspelling_length; |
bool result = spell_checker->SpellCheckWord(kTestCasesToBeTested[i].input, |
static_cast<int>(input_length), |
+ 0, |
&misspelling_start, |
&misspelling_length, |
&suggestions); |
@@ -1081,9 +1083,86 @@ |
std::wstring misspelled_word(kTestCases[i].input); |
std::wstring expected_autocorrect_word(kTestCases[i].expected_result); |
std::wstring autocorrect_word; |
- spell_checker->GetAutoCorrectionWord(misspelled_word, &autocorrect_word); |
+ spell_checker->GetAutoCorrectionWord(misspelled_word, 0, &autocorrect_word); |
// Check for spelling. |
EXPECT_EQ(expected_autocorrect_word, autocorrect_word); |
} |
} |
+ |
+#if defined(OS_MACOSX) |
+// Tests that words are properly ignored. Currently only enabled on OS X as it |
+// is the only platform to support ignoring words. Note that in this test, we |
+// supply a non-zero doc_tag, in order to test that ignored words are matched to |
+// the correct document. |
+TEST_F(SpellCheckTest, IgnoreWords_EN_US) { |
+ static const struct { |
+ // A misspelled word. |
+ const wchar_t* input; |
+ bool input_result; |
+ } kTestCases[] = { |
+ {L"teh",false}, |
+ {L"moer", false}, |
+ {L"watre",false}, |
+ {L"noen", false}, |
+ }; |
+ |
+ FilePath hunspell_directory = GetHunspellDirectory(); |
+ ASSERT_FALSE(hunspell_directory.empty()); |
+ |
+ scoped_refptr<SpellChecker> spell_checker(new SpellChecker( |
+ hunspell_directory, "en-US", NULL, FilePath())); |
+ |
+ for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestCases); ++i) { |
+ std::wstring word(kTestCases[i].input); |
+ std::string misspelled_word = base::SysWideToUTF8(word); |
+ std::vector<std::wstring> suggestions; |
+ size_t input_length = 0; |
+ if (kTestCases[i].input != NULL) { |
+ input_length = wcslen(kTestCases[i].input); |
+ } |
+ int misspelling_start; |
+ int misspelling_length; |
+ |
+ int doc_tag = SpellCheckerPlatform::GetDocumentTag(); |
+ bool result = spell_checker->SpellCheckWord(kTestCases[i].input, |
+ static_cast<int>(input_length), |
+ doc_tag, |
+ &misspelling_start, |
+ &misspelling_length, |
+ &suggestions); |
+ |
+ // The word should show up as misspelled. |
+ EXPECT_EQ(kTestCases[i].input_result, result); |
+ |
+ // Ignore the word. |
+ SpellCheckerPlatform::IgnoreWord(misspelled_word); |
+ |
+ // Spellcheck again. |
+ result = spell_checker->SpellCheckWord(kTestCases[i].input, |
+ static_cast<int>(input_length), |
+ doc_tag, |
+ &misspelling_start, |
+ &misspelling_length, |
+ &suggestions); |
+ |
+ // The word should now show up as correctly spelled. |
+ EXPECT_EQ(!(kTestCases[i].input_result), result); |
+ |
+ // Close the docuemnt. Any words that we had previously ignored should no |
+ // longer be ignored and thus should show up as misspelled. |
+ SpellCheckerPlatform::CloseDocumentWithTag(doc_tag); |
+ |
+ // Spellcheck one more time. |
+ result = spell_checker->SpellCheckWord(kTestCases[i].input, |
+ static_cast<int>(input_length), |
+ doc_tag, |
+ &misspelling_start, |
+ &misspelling_length, |
+ &suggestions); |
+ |
+ // The word should now show be spelled wrong again |
+ EXPECT_EQ(kTestCases[i].input_result, result); |
+ } |
+} // Test IgnoreWords_EN_US |
+#endif // OS_MACOSX |