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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/language_usage_metrics_unittest.cc
diff --git a/chrome/browser/language_usage_metrics_unittest.cc b/chrome/browser/language_usage_metrics_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..e3363a3da89975a34b19a5464b7d97dc91489d6a
--- /dev/null
+++ b/chrome/browser/language_usage_metrics_unittest.cc
@@ -0,0 +1,86 @@
+// Copyright (c) 2011 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 "chrome/browser/language_usage_metrics.h"
+
+#include <algorithm>
+#include <vector>
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+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.
+ std::vector<Language>* language_list) {
+ language_list->clear();
+ language_list->assign(language_set.begin(), language_set.end());
+ 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
+}
+} // namespace
+
+class LanguageUsageMetricsTest : public testing::Test {
+};
+
+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.
+ std::set<Language> language_set;
+ std::vector<Language> language_list;
+
+ // Basic single language case.
+ LanguageUsageMetrics::ParseAcceptLanguages("ja", &language_set);
+ ToSortedList(language_set, &language_list);
+ EXPECT_EQ(1U, language_list.size());
+ EXPECT_EQ(JAPANESE, language_list[0]);
+
+ // Empty language.
+ LanguageUsageMetrics::ParseAcceptLanguages("", &language_set);
+ ToSortedList(language_set, &language_list);
+ EXPECT_EQ(0U, language_list.size());
+
+ // Country code is ignored.
+ LanguageUsageMetrics::ParseAcceptLanguages("ja-JP", &language_set);
+ ToSortedList(language_set, &language_list);
+ EXPECT_EQ(1U, language_list.size());
+ EXPECT_EQ(JAPANESE, language_list[0]);
+
+ // Case is ignored.
+ LanguageUsageMetrics::ParseAcceptLanguages("Ja_jP", &language_set);
+ ToSortedList(language_set, &language_list);
+ EXPECT_EQ(1U, language_list.size());
+ EXPECT_EQ(JAPANESE, language_list[0]);
+
+ // The result contains a same language code only once.
+ LanguageUsageMetrics::ParseAcceptLanguages("ja-JP,ja", &language_set);
+ ToSortedList(language_set, &language_list);
+ EXPECT_EQ(1U, language_list.size());
+ EXPECT_EQ(JAPANESE, language_list[0]);
+
+ // Basic two languages case.
+ LanguageUsageMetrics::ParseAcceptLanguages("en,ja", &language_set);
+ ToSortedList(language_set, &language_list);
+ EXPECT_EQ(2U, language_list.size());
+ EXPECT_EQ(ENGLISH, language_list[0]);
+ EXPECT_EQ(JAPANESE, language_list[1]);
+
+ // Multiple languages case.
+ LanguageUsageMetrics::ParseAcceptLanguages("ja-JP,en,es,ja,en-US",
+ &language_set);
+ ToSortedList(language_set, &language_list);
+ EXPECT_EQ(3U, language_list.size());
+ EXPECT_EQ(ENGLISH, language_list[0]);
+ EXPECT_EQ(JAPANESE, language_list[1]);
+ EXPECT_EQ(SPANISH, language_list[2]);
+}
Yusuke Sato 2011/07/13 06:52:06 What about adding tests for bad inputs like ",", "
Yuzo 2011/07/13 11:30:20 Done.
+
+TEST_F(LanguageUsageMetricsTest, ToLanguage) {
+ // Basic case.
+ EXPECT_EQ(JAPANESE, LanguageUsageMetrics::ToLanguage("ja"));
+
+ // Case is ignored.
+ EXPECT_EQ(SPANISH, LanguageUsageMetrics::ToLanguage("Es"));
+
+ // Coutry code is ignored.
+ EXPECT_EQ(JAPANESE, LanguageUsageMetrics::ToLanguage("ja-JP"));
+
+ // Invalid locales are considered as unknown language.
+ EXPECT_EQ(UNKNOWN_LANGUAGE, LanguageUsageMetrics::ToLanguage(""));
+ EXPECT_EQ(UNKNOWN_LANGUAGE, LanguageUsageMetrics::ToLanguage("xx"));
+}

Powered by Google App Engine
This is Rietveld 408576698