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

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

Issue 7348004: Record language usage as UMA histograms. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 9 years, 5 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 | Annotate | Revision Log
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 <algorithm>
8 #include <vector>
9 #include "testing/gtest/include/gtest/gtest.h"
10
11 namespace {
12 void ToSortedList(const std::set<Language>& language_set,
Yusuke Sato 2011/07/13 06:52:06 The word "List" reminds me std::list. It's up to y
Yuzo 2011/07/13 11:30:20 Renamed to language_vector.
13 std::vector<Language>* language_list) {
14 language_list->clear();
15 language_list->assign(language_set.begin(), language_set.end());
16 sort(language_list->begin(), language_list->end());
Yusuke Sato 2011/07/13 06:52:06 std:: seems to be missing. I'm also wondering why
Yuzo 2011/07/13 11:30:20 Removed the function as a whole. I admit I didn't
17 }
18 } // namespace
19
20 class LanguageUsageMetricsTest : public testing::Test {
21 };
22
23 TEST_F(LanguageUsageMetricsTest, ParseAcceptLanguages) {
Yusuke Sato 2011/07/13 06:52:06 I slightly prefer using TEST() and removing line 2
Yuzo 2011/07/13 11:30:20 Done.
24 std::set<Language> language_set;
25 std::vector<Language> language_list;
26
27 // Basic single language case.
28 LanguageUsageMetrics::ParseAcceptLanguages("ja", &language_set);
29 ToSortedList(language_set, &language_list);
30 EXPECT_EQ(1U, language_list.size());
31 EXPECT_EQ(JAPANESE, language_list[0]);
32
33 // Empty language.
34 LanguageUsageMetrics::ParseAcceptLanguages("", &language_set);
35 ToSortedList(language_set, &language_list);
36 EXPECT_EQ(0U, language_list.size());
37
38 // Country code is ignored.
39 LanguageUsageMetrics::ParseAcceptLanguages("ja-JP", &language_set);
40 ToSortedList(language_set, &language_list);
41 EXPECT_EQ(1U, language_list.size());
42 EXPECT_EQ(JAPANESE, language_list[0]);
43
44 // Case is ignored.
45 LanguageUsageMetrics::ParseAcceptLanguages("Ja_jP", &language_set);
46 ToSortedList(language_set, &language_list);
47 EXPECT_EQ(1U, language_list.size());
48 EXPECT_EQ(JAPANESE, language_list[0]);
49
50 // The result contains a same language code only once.
51 LanguageUsageMetrics::ParseAcceptLanguages("ja-JP,ja", &language_set);
52 ToSortedList(language_set, &language_list);
53 EXPECT_EQ(1U, language_list.size());
54 EXPECT_EQ(JAPANESE, language_list[0]);
55
56 // Basic two languages case.
57 LanguageUsageMetrics::ParseAcceptLanguages("en,ja", &language_set);
58 ToSortedList(language_set, &language_list);
59 EXPECT_EQ(2U, language_list.size());
60 EXPECT_EQ(ENGLISH, language_list[0]);
61 EXPECT_EQ(JAPANESE, language_list[1]);
62
63 // Multiple languages case.
64 LanguageUsageMetrics::ParseAcceptLanguages("ja-JP,en,es,ja,en-US",
65 &language_set);
66 ToSortedList(language_set, &language_list);
67 EXPECT_EQ(3U, language_list.size());
68 EXPECT_EQ(ENGLISH, language_list[0]);
69 EXPECT_EQ(JAPANESE, language_list[1]);
70 EXPECT_EQ(SPANISH, language_list[2]);
71 }
Yusuke Sato 2011/07/13 06:52:06 What about adding tests for bad inputs like ",", "
Yuzo 2011/07/13 11:30:20 Done.
72
73 TEST_F(LanguageUsageMetricsTest, ToLanguage) {
74 // Basic case.
75 EXPECT_EQ(JAPANESE, LanguageUsageMetrics::ToLanguage("ja"));
76
77 // Case is ignored.
78 EXPECT_EQ(SPANISH, LanguageUsageMetrics::ToLanguage("Es"));
79
80 // Coutry code is ignored.
81 EXPECT_EQ(JAPANESE, LanguageUsageMetrics::ToLanguage("ja-JP"));
82
83 // Invalid locales are considered as unknown language.
84 EXPECT_EQ(UNKNOWN_LANGUAGE, LanguageUsageMetrics::ToLanguage(""));
85 EXPECT_EQ(UNKNOWN_LANGUAGE, LanguageUsageMetrics::ToLanguage("xx"));
86 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698