Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4287)

Unified Diff: chrome/installer/util/language_selector_unittest.cc

Issue 4139010: The UI language rather than the locale is now used to pick Chrome's language ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/installer/util/language_selector.cc ('k') | chrome/installer/util/prebuild/create_string_rc.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/installer/util/language_selector_unittest.cc
===================================================================
--- chrome/installer/util/language_selector_unittest.cc (revision 0)
+++ chrome/installer/util/language_selector_unittest.cc (revision 0)
@@ -0,0 +1,128 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <string>
+#include <vector>
+
+#include "chrome/installer/util/language_selector.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+const wchar_t* const kExactMatchCandidates[] = {
+#if defined(GOOGLE_CHROME_BUILD)
+ L"am", L"ar", L"bg", L"bn", L"ca", L"cs", L"da", L"de", L"el", L"en-gb",
+ L"en-us", L"es", L"es-419", L"et", L"fa", L"fi", L"fil", L"fr", L"gu", L"hi",
+ L"hr", L"hu", L"id", L"it", L"iw", L"ja", L"kn", L"ko", L"lt", L"lv", L"ml",
+ L"mr", L"nl", L"no", L"pl", L"pt-br", L"pt-pt", L"ro", L"ru", L"sk", L"sl",
+ L"sr", L"sv", L"sw", L"ta", L"te", L"th", L"tr", L"uk", L"vi", L"zh-cn",
+ L"zh-tw"
+#else
+ L"en-us"
+#endif
+};
+
+const wchar_t* const kAliasMatchCandidates[] = {
+#if defined(GOOGLE_CHROME_BUILD)
+ L"he", L"nb", L"tl", L"zh-chs", L"zh-cht", L"zh-hans", L"zh-hant", L"zh-hk",
+ L"zh-mk", L"zh-mo"
+#else
+ // There is only en-us.
+ L"en-us"
+#endif
+};
+
+const wchar_t* const kWildcardMatchCandidates[] = {
+ L"en-AU",
+#if defined(GOOGLE_CHROME_BUILD)
+ L"es-CO", L"pt-AB", L"zh-SG"
+#endif
+};
+
+} // namespace
+
+// Test that a language is selected from the system.
+TEST(LanguageSelectorTest, DefaultSelection) {
+ installer_util::LanguageSelector instance;
+ EXPECT_FALSE(instance.matched_candidate().empty());
+}
+
+// Test some hypothetical candidate sets.
+TEST(LanguageSelectorTest, AssortedSelections) {
+ {
+ std::wstring candidates[] = {
+ L"fr-BE", L"fr", L"en"
+ };
+ installer_util::LanguageSelector instance(
+ std::vector<std::wstring>(&candidates[0],
+ &candidates[arraysize(candidates)]));
+#if defined(GOOGLE_CHROME_BUILD)
+ // Expect the exact match to win.
+ EXPECT_EQ(L"fr", instance.matched_candidate());
+#else
+ // Expect the exact match to win.
+ EXPECT_EQ(L"en", instance.matched_candidate());
+#endif
+ }
+ {
+ std::wstring candidates[] = {
+ L"xx-YY", L"cc-Ssss-RR"
+ };
+ installer_util::LanguageSelector instance(
+ std::vector<std::wstring>(&candidates[0],
+ &candidates[arraysize(candidates)]));
+ // Expect the fallback to win.
+ EXPECT_EQ(L"en-us", instance.matched_candidate());
+ }
+ {
+ std::wstring candidates[] = {
+ L"zh-SG", L"en-GB"
+ };
+ installer_util::LanguageSelector instance(
+ std::vector<std::wstring>(&candidates[0],
+ &candidates[arraysize(candidates)]));
+#if defined(GOOGLE_CHROME_BUILD)
+ // Expect the alias match to win.
+ EXPECT_EQ(L"zh-SG", instance.matched_candidate());
+#else
+ // Expect the exact match to win.
+ EXPECT_EQ(L"en-GB", instance.matched_candidate());
+#endif
+ }
+}
+
+// A fixture for testing sets of single-candidate selections.
+class LanguageSelectorMatchCandidateTest
+ : public ::testing::TestWithParam<const wchar_t*> {
+};
+
+TEST_P(LanguageSelectorMatchCandidateTest, TestMatchCandidate) {
+ installer_util::LanguageSelector instance(
+ std::vector<std::wstring>(1, std::wstring(GetParam())));
+ EXPECT_EQ(GetParam(), instance.matched_candidate());
+}
+
+// Test that all existing translations can be found by exact match.
+INSTANTIATE_TEST_CASE_P(
+ TestExactMatches,
+ LanguageSelectorMatchCandidateTest,
+ ::testing::ValuesIn(
+ &kExactMatchCandidates[0],
+ &kExactMatchCandidates[arraysize(kExactMatchCandidates)]));
+
+// Test the alias matches.
+INSTANTIATE_TEST_CASE_P(
+ TestAliasMatches,
+ LanguageSelectorMatchCandidateTest,
+ ::testing::ValuesIn(
+ &kAliasMatchCandidates[0],
+ &kAliasMatchCandidates[arraysize(kAliasMatchCandidates)]));
+
+// Test a few wildcard matches.
+INSTANTIATE_TEST_CASE_P(
+ TestWildcardMatches,
+ LanguageSelectorMatchCandidateTest,
+ ::testing::ValuesIn(
+ &kWildcardMatchCandidates[0],
+ &kWildcardMatchCandidates[arraysize(kWildcardMatchCandidates)]));
Property changes on: chrome\installer\util\language_selector_unittest.cc
___________________________________________________________________
Added: svn:eol-style
+ LF
« no previous file with comments | « chrome/installer/util/language_selector.cc ('k') | chrome/installer/util/prebuild/create_string_rc.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698