1 // Copyright 2014 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.
5 #include "components/translate/core/browser/translate_prefs.h"
11 #include "components/translate/core/browser/translate_download_manager.h"
12 #include "testing/gtest/include/gtest/gtest.h"
14 TEST(TranslatePrefsTest, CreateBlockedLanguages) {
15 TranslateDownloadManager::GetInstance()->set_application_locale("en");
16 std::vector<std::string> blacklisted_languages;
17 blacklisted_languages.push_back("en");
18 blacklisted_languages.push_back("fr");
19 // Hebrew: synonym to 'he'
20 blacklisted_languages.push_back("iw");
21 // Haitian is not used as Accept-Language
22 blacklisted_languages.push_back("ht");
24 std::vector<std::string> accept_languages;
25 accept_languages.push_back("en");
26 // The subcode (IT) will be ignored when merging, except for Chinese.
27 accept_languages.push_back("it-IT");
28 accept_languages.push_back("ja");
29 // Filippino: synonym to 'tl'
30 accept_languages.push_back("fil");
31 // General Chinese is not used as Translate language, but not filtered
33 accept_languages.push_back("zh");
34 // Chinese with a sub code is acceptable for the blocked-language list.
35 accept_languages.push_back("zh-TW");
37 std::vector<std::string> blocked_languages;
39 TranslatePrefs::CreateBlockedLanguages(&blocked_languages,
40 blacklisted_languages,
43 // The order of the elements cannot be determined.
44 std::vector<std::string> expected;
45 expected.push_back("en");
46 expected.push_back("fr");
47 expected.push_back("iw");
48 expected.push_back("ht");
49 expected.push_back("it");
50 expected.push_back("ja");
51 expected.push_back("tl");
52 expected.push_back("zh");
53 expected.push_back("zh-TW");
55 EXPECT_EQ(expected.size(), blocked_languages.size());
56 for (std::vector<std::string>::const_iterator it = expected.begin();
57 it != expected.end(); ++it) {
58 EXPECT_NE(blocked_languages.end(),
59 std::find(blocked_languages.begin(),
60 blocked_languages.end(),
65 TEST(TranslatePrefsTest, CreateBlockedLanguagesNonEnglishUI) {
66 std::vector<std::string> blacklisted_languages;
67 blacklisted_languages.push_back("fr");
69 std::vector<std::string> accept_languages;
70 accept_languages.push_back("en");
71 accept_languages.push_back("ja");
72 accept_languages.push_back("zh");
74 // Run in an English locale.
76 TranslateDownloadManager::GetInstance()->set_application_locale("en");
77 std::vector<std::string> blocked_languages;
78 TranslatePrefs::CreateBlockedLanguages(&blocked_languages,
79 blacklisted_languages,
81 std::vector<std::string> expected;
82 expected.push_back("en");
83 expected.push_back("fr");
84 expected.push_back("ja");
85 expected.push_back("zh");
87 EXPECT_EQ(expected.size(), blocked_languages.size());
88 for (std::vector<std::string>::const_iterator it = expected.begin();
89 it != expected.end(); ++it) {
90 EXPECT_NE(blocked_languages.end(),
91 std::find(blocked_languages.begin(),
92 blocked_languages.end(),
97 // Run in a Japanese locale.
98 // English should not be included in the result even though Accept Languages
99 // has English because the UI is not English.
101 TranslateDownloadManager::GetInstance()->set_application_locale("ja");
102 std::vector<std::string> blocked_languages;
103 TranslatePrefs::CreateBlockedLanguages(&blocked_languages,
104 blacklisted_languages,
106 std::vector<std::string> expected;
107 expected.push_back("fr");
108 expected.push_back("ja");
109 expected.push_back("zh");
111 EXPECT_EQ(expected.size(), blocked_languages.size());
112 for (std::vector<std::string>::const_iterator it = expected.begin();
113 it != expected.end(); ++it) {
114 EXPECT_NE(blocked_languages.end(),
115 std::find(blocked_languages.begin(),
116 blocked_languages.end(),