OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 "chrome/browser/spellchecker/spellcheck_service.h" | 5 #include "chrome/browser/spellchecker/spellcheck_service.h" |
6 | 6 |
| 7 #include "base/command_line.h" |
7 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
8 #include "base/prefs/pref_registry_simple.h" | 9 #include "base/prefs/pref_registry_simple.h" |
9 #include "base/prefs/testing_pref_service.h" | 10 #include "base/prefs/testing_pref_service.h" |
10 #include "base/strings/string_split.h" | 11 #include "base/strings/string_split.h" |
11 #include "base/supports_user_data.h" | 12 #include "base/supports_user_data.h" |
| 13 #include "chrome/common/chrome_switches.h" |
12 #include "chrome/common/pref_names.h" | 14 #include "chrome/common/pref_names.h" |
13 #include "components/user_prefs/user_prefs.h" | 15 #include "components/user_prefs/user_prefs.h" |
14 #include "content/public/test/test_browser_thread.h" | 16 #include "content/public/test/test_browser_thread.h" |
15 #include "testing/gtest/include/gtest/gtest.h" | 17 #include "testing/gtest/include/gtest/gtest.h" |
16 | 18 |
17 struct SpellcheckLanguageTestCase { | 19 struct SpellcheckLanguageTestCase { |
18 SpellcheckLanguageTestCase(const std::string& accept_languages, | 20 SpellcheckLanguageTestCase(const std::string& accept_languages, |
19 const std::string& spellcheck_dictionary, | 21 const std::string& unsplit_spellcheck_dictionaries, |
| 22 size_t num_expected_enabled_spellcheck_languages, |
20 const std::string& unsplit_expected_languages) | 23 const std::string& unsplit_expected_languages) |
21 : accept_languages(accept_languages), | 24 : accept_languages(accept_languages), |
22 spellcheck_dictionaries(1, spellcheck_dictionary) { | 25 num_expected_enabled_spellcheck_languages( |
| 26 num_expected_enabled_spellcheck_languages) { |
| 27 base::SplitString(unsplit_spellcheck_dictionaries, ',', |
| 28 &spellcheck_dictionaries); |
23 base::SplitString(unsplit_expected_languages, ',', | 29 base::SplitString(unsplit_expected_languages, ',', |
24 &expected_spellcheck_languages); | 30 &expected_spellcheck_languages); |
25 } | 31 } |
26 ~SpellcheckLanguageTestCase() {} | 32 ~SpellcheckLanguageTestCase() {} |
27 | 33 |
28 std::string accept_languages; | 34 std::string accept_languages; |
29 std::vector<std::string> spellcheck_dictionaries; | 35 std::vector<std::string> spellcheck_dictionaries; |
| 36 size_t num_expected_enabled_spellcheck_languages; |
30 std::vector<std::string> expected_spellcheck_languages; | 37 std::vector<std::string> expected_spellcheck_languages; |
31 }; | 38 }; |
32 | 39 |
33 class SpellcheckServiceUnitTest | 40 class SpellcheckServiceUnitTest |
34 : public testing::TestWithParam<SpellcheckLanguageTestCase> { | 41 : public testing::TestWithParam<SpellcheckLanguageTestCase> { |
35 public: | 42 public: |
36 SpellcheckServiceUnitTest() | 43 SpellcheckServiceUnitTest() |
37 : ui_thread_(content::BrowserThread::UI, &message_loop_) { | 44 : ui_thread_(content::BrowserThread::UI, &message_loop_) { |
38 user_prefs::UserPrefs::Set(&context_, &prefs_); | 45 user_prefs::UserPrefs::Set(&context_, &prefs_); |
39 } | 46 } |
(...skipping 14 matching lines...) Expand all Loading... |
54 base::MessageLoop message_loop_; | 61 base::MessageLoop message_loop_; |
55 content::TestBrowserThread ui_thread_; | 62 content::TestBrowserThread ui_thread_; |
56 | 63 |
57 DISALLOW_COPY_AND_ASSIGN(SpellcheckServiceUnitTest); | 64 DISALLOW_COPY_AND_ASSIGN(SpellcheckServiceUnitTest); |
58 }; | 65 }; |
59 | 66 |
60 INSTANTIATE_TEST_CASE_P( | 67 INSTANTIATE_TEST_CASE_P( |
61 SpellcheckLanguageTestCases, | 68 SpellcheckLanguageTestCases, |
62 SpellcheckServiceUnitTest, | 69 SpellcheckServiceUnitTest, |
63 testing::Values( | 70 testing::Values( |
64 SpellcheckLanguageTestCase("en,en-US", "en-US", "en-US"), | 71 SpellcheckLanguageTestCase("en,en-US", "en-US", 1UL, "en-US"), |
65 SpellcheckLanguageTestCase("en-US,en", "en-US", "en-US"), | 72 SpellcheckLanguageTestCase("en-US,en", "en-US", 1UL, "en-US"), |
66 SpellcheckLanguageTestCase("en,en-US,en-AU", "en-US", "en-US,en-AU"), | 73 SpellcheckLanguageTestCase("en,en-US,en-AU", |
67 SpellcheckLanguageTestCase("en,en-US,fr", "en-US", "en-US,fr"), | 74 "en-US", |
68 SpellcheckLanguageTestCase("en,en-JP,fr,aa", "fr", "fr"))); | 75 1UL, |
| 76 "en-US,en-AU"), |
| 77 SpellcheckLanguageTestCase("en,en-US,fr", "en-US", 1UL, "en-US,fr"), |
| 78 SpellcheckLanguageTestCase("en,en-JP,fr,aa", "fr", 1UL, "fr"), |
| 79 SpellcheckLanguageTestCase("en,en-US", "en-US", 1UL, "en-US"), |
| 80 SpellcheckLanguageTestCase("en-US,en", "en-US", 1UL, "en-US"), |
| 81 SpellcheckLanguageTestCase("en,fr,en-US,en-AU", |
| 82 "en-US,fr", |
| 83 2UL, |
| 84 "en-US,fr,en-AU"), |
| 85 SpellcheckLanguageTestCase("en,en-JP,fr,zz,en-US", |
| 86 "fr", |
| 87 1UL, |
| 88 "fr,en-US"))); |
69 | 89 |
70 TEST_P(SpellcheckServiceUnitTest, GetSpellcheckLanguages) { | 90 TEST_P(SpellcheckServiceUnitTest, GetSpellcheckLanguages) { |
71 prefs()->SetString(prefs::kAcceptLanguages, GetParam().accept_languages); | 91 prefs()->SetString(prefs::kAcceptLanguages, GetParam().accept_languages); |
72 base::ListValue dictionaries; | 92 base::ListValue dictionaries; |
73 dictionaries.AppendStrings(GetParam().spellcheck_dictionaries); | 93 dictionaries.AppendStrings(GetParam().spellcheck_dictionaries); |
74 prefs()->Set(prefs::kSpellCheckDictionaries, dictionaries); | 94 prefs()->Set(prefs::kSpellCheckDictionaries, dictionaries); |
75 | 95 |
76 std::vector<std::string> spellcheck_languages; | 96 std::vector<std::string> spellcheck_languages; |
77 EXPECT_EQ(0, SpellcheckService::GetSpellCheckLanguages( | 97 EXPECT_EQ(GetParam().num_expected_enabled_spellcheck_languages, |
78 context(), &spellcheck_languages)); | 98 SpellcheckService::GetSpellCheckLanguages(context(), |
| 99 &spellcheck_languages)); |
79 | 100 |
80 EXPECT_EQ(GetParam().expected_spellcheck_languages, spellcheck_languages); | 101 EXPECT_EQ(GetParam().expected_spellcheck_languages, spellcheck_languages); |
81 } | 102 } |
OLD | NEW |