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

Side by Side Diff: chrome/browser/language_usage_metrics_unittest.cc

Issue 131203002: Move LanguageUsageMetrics and TranslateBrowserMetrics to components (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 6 years, 11 months 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2011 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 "chrome/browser/language_usage_metrics.h"
6
7 #include "testing/gtest/include/gtest/gtest.h"
8
9 TEST(LanguageUsageMetricsTest, ParseAcceptLanguages) {
10 std::set<int> language_set;
11 std::set<int>::const_iterator it;
12
13 const int ENGLISH = 25966;
14 const int SPANISH = 25971;
15 const int JAPANESE = 27233;
16
17 // Basic single language case.
18 LanguageUsageMetrics::ParseAcceptLanguages("ja", &language_set);
19 EXPECT_EQ(1U, language_set.size());
20 EXPECT_EQ(JAPANESE, *language_set.begin());
21
22 // Empty language.
23 LanguageUsageMetrics::ParseAcceptLanguages(std::string(), &language_set);
24 EXPECT_EQ(0U, language_set.size());
25
26 // Country code is ignored.
27 LanguageUsageMetrics::ParseAcceptLanguages("ja-JP", &language_set);
28 EXPECT_EQ(1U, language_set.size());
29 EXPECT_EQ(JAPANESE, *language_set.begin());
30
31 // Case is ignored.
32 LanguageUsageMetrics::ParseAcceptLanguages("Ja-jP", &language_set);
33 EXPECT_EQ(1U, language_set.size());
34 EXPECT_EQ(JAPANESE, *language_set.begin());
35
36 // Underscore as the separator.
37 LanguageUsageMetrics::ParseAcceptLanguages("ja_JP", &language_set);
38 EXPECT_EQ(1U, language_set.size());
39 EXPECT_EQ(JAPANESE, *language_set.begin());
40
41 // The result contains a same language code only once.
42 LanguageUsageMetrics::ParseAcceptLanguages("ja-JP,ja", &language_set);
43 EXPECT_EQ(1U, language_set.size());
44 EXPECT_EQ(JAPANESE, *language_set.begin());
45
46 // Basic two languages case.
47 LanguageUsageMetrics::ParseAcceptLanguages("en,ja", &language_set);
48 EXPECT_EQ(2U, language_set.size());
49 it = language_set.begin();
50 EXPECT_EQ(ENGLISH, *it);
51 EXPECT_EQ(JAPANESE, *++it);
52
53 // Multiple languages.
54 LanguageUsageMetrics::ParseAcceptLanguages("ja-JP,en,es,ja,en-US",
55 &language_set);
56 EXPECT_EQ(3U, language_set.size());
57 it = language_set.begin();
58 EXPECT_EQ(ENGLISH, *it);
59 EXPECT_EQ(SPANISH, *++it);
60 EXPECT_EQ(JAPANESE, *++it);
61
62 // Two empty languages.
63 LanguageUsageMetrics::ParseAcceptLanguages(",", &language_set);
64 EXPECT_EQ(0U, language_set.size());
65
66 // Trailing comma.
67 LanguageUsageMetrics::ParseAcceptLanguages("ja,", &language_set);
68 EXPECT_EQ(1U, language_set.size());
69 EXPECT_EQ(JAPANESE, *language_set.begin());
70
71 // Leading comma.
72 LanguageUsageMetrics::ParseAcceptLanguages(",es", &language_set);
73 EXPECT_EQ(1U, language_set.size());
74 EXPECT_EQ(SPANISH, *language_set.begin());
75
76 // Combination of invalid and valid.
77 LanguageUsageMetrics::ParseAcceptLanguages("1234,en", &language_set);
78 EXPECT_EQ(1U, language_set.size());
79 it = language_set.begin();
80 EXPECT_EQ(ENGLISH, *it);
81 }
82
83 TEST(LanguageUsageMetricsTest, ToLanguageCode) {
84 const int SPANISH = 25971;
85 const int JAPANESE = 27233;
86
87 // Basic case.
88 EXPECT_EQ(JAPANESE, LanguageUsageMetrics::ToLanguageCode("ja"));
89
90 // Case is ignored.
91 EXPECT_EQ(SPANISH, LanguageUsageMetrics::ToLanguageCode("Es"));
92
93 // Coutry code is ignored.
94 EXPECT_EQ(JAPANESE, LanguageUsageMetrics::ToLanguageCode("ja-JP"));
95
96 // Invalid locales are considered as unknown language.
97 EXPECT_EQ(0, LanguageUsageMetrics::ToLanguageCode(std::string()));
98 EXPECT_EQ(0, LanguageUsageMetrics::ToLanguageCode("1234"));
99
100 // "xx" is not acceptable because it doesn't exist in ISO 639-1 table.
101 // However, LanguageUsageMetrics doesn't tell what code is valid.
102 EXPECT_EQ(30840, LanguageUsageMetrics::ToLanguageCode("xx"));
103 }
OLDNEW
« no previous file with comments | « chrome/browser/language_usage_metrics.cc ('k') | chrome/browser/translate/translate_browser_metrics.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698