Home | History | Annotate | Download | only in spellchecker
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include <vector>
      6 
      7 #include "base/files/scoped_temp_dir.h"
      8 #include "base/message_loop/message_loop.h"
      9 #include "chrome/browser/spellchecker/spellcheck_custom_dictionary.h"
     10 #include "chrome/browser/spellchecker/spellcheck_factory.h"
     11 #include "chrome/browser/spellchecker/spellcheck_service.h"
     12 #include "chrome/common/spellcheck_common.h"
     13 #include "chrome/test/base/testing_profile.h"
     14 #include "content/public/test/test_browser_thread_bundle.h"
     15 #include "testing/gmock/include/gmock/gmock.h"
     16 #include "testing/gtest/include/gtest/gtest.h"
     17 
     18 using chrome::spellcheck_common::WordList;
     19 
     20 static KeyedService* BuildSpellcheckService(content::BrowserContext* profile) {
     21   return new SpellcheckService(static_cast<Profile*>(profile));
     22 }
     23 
     24 class SpellcheckServiceTest : public testing::Test {
     25  protected:
     26   virtual void SetUp() OVERRIDE {
     27     // Use SetTestingFactoryAndUse to force creation and initialization.
     28     SpellcheckServiceFactory::GetInstance()->SetTestingFactoryAndUse(
     29         &profile_, &BuildSpellcheckService);
     30   }
     31 
     32  private:
     33   content::TestBrowserThreadBundle thread_bundle_;
     34   TestingProfile profile_;
     35 };
     36 
     37 TEST_F(SpellcheckServiceTest, GetSpellCheckLanguages1) {
     38   std::vector<std::string> accept_languages;
     39   accept_languages.push_back("en");
     40   accept_languages.push_back("en-US");
     41   std::vector<std::string> languages;
     42 
     43   SpellcheckService::GetSpellCheckLanguagesFromAcceptLanguages(
     44       accept_languages, "en-US", &languages);
     45 
     46   EXPECT_EQ(1U, languages.size());
     47   EXPECT_EQ("en-US", languages[0]);
     48 }
     49 
     50 TEST_F(SpellcheckServiceTest, GetSpellCheckLanguages2) {
     51   std::vector<std::string> accept_languages;
     52   accept_languages.push_back("en-US");
     53   accept_languages.push_back("en");
     54   std::vector<std::string> languages;
     55 
     56   SpellcheckService::GetSpellCheckLanguagesFromAcceptLanguages(
     57       accept_languages, "en-US", &languages);
     58 
     59   EXPECT_EQ(1U, languages.size());
     60   EXPECT_EQ("en-US", languages[0]);
     61 }
     62 
     63 TEST_F(SpellcheckServiceTest, GetSpellCheckLanguages3) {
     64   std::vector<std::string> accept_languages;
     65   accept_languages.push_back("en");
     66   accept_languages.push_back("en-US");
     67   accept_languages.push_back("en-AU");
     68   std::vector<std::string> languages;
     69 
     70   SpellcheckService::GetSpellCheckLanguagesFromAcceptLanguages(
     71       accept_languages, "en-US", &languages);
     72 
     73   EXPECT_EQ(2U, languages.size());
     74 
     75   std::sort(languages.begin(), languages.end());
     76   EXPECT_EQ("en-AU", languages[0]);
     77   EXPECT_EQ("en-US", languages[1]);
     78 }
     79 
     80 TEST_F(SpellcheckServiceTest, GetSpellCheckLanguages4) {
     81   std::vector<std::string> accept_languages;
     82   accept_languages.push_back("en");
     83   accept_languages.push_back("en-US");
     84   accept_languages.push_back("fr");
     85   std::vector<std::string> languages;
     86 
     87   SpellcheckService::GetSpellCheckLanguagesFromAcceptLanguages(
     88       accept_languages, "en-US", &languages);
     89 
     90   EXPECT_EQ(2U, languages.size());
     91 
     92   std::sort(languages.begin(), languages.end());
     93   EXPECT_EQ("en-US", languages[0]);
     94   EXPECT_EQ("fr", languages[1]);
     95 }
     96 
     97 TEST_F(SpellcheckServiceTest, GetSpellCheckLanguages5) {
     98   std::vector<std::string> accept_languages;
     99   accept_languages.push_back("en");
    100   accept_languages.push_back("en-JP");  // Will not exist.
    101   accept_languages.push_back("fr");
    102   accept_languages.push_back("aa");  // Will not exist.
    103   std::vector<std::string> languages;
    104 
    105   SpellcheckService::GetSpellCheckLanguagesFromAcceptLanguages(
    106       accept_languages, "fr", &languages);
    107 
    108   EXPECT_EQ(1U, languages.size());
    109   EXPECT_EQ("fr", languages[0]);
    110 }
    111