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")); |
+} |