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