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

Side by Side Diff: chrome/browser/chromeos/language_preferences_unittest.cc

Issue 23548006: Remove IME related configuration preferences in Chrome OS. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove unnecessary comments. Created 7 years, 3 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
« no previous file with comments | « chrome/browser/chromeos/language_preferences.cc ('k') | chrome/browser/chromeos/preferences.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2010 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/chromeos/language_preferences.h"
6
7 #include <cstring>
8 #include <set>
9
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 namespace chromeos {
13 namespace language_prefs {
14
15 namespace {
16
17 // Compares |a| and |b| and returns true if a is equal to b. The second one is a
18 // specialized function for LanguageMultipleChoicePreference<const char*>.
19 template <typename T>
20 bool Compare(T a, T b) {
21 return a == b;
22 }
23 template <>
24 bool Compare<const char*>(const char* a, const char* b) {
25 return !std::strcmp(a, b);
26 }
27
28 // Returns false if one or more prefs have a bad |default_pref_value|.
29 // C++ template is used here since LanguageMultipleChoicePreference is a class
30 // template.
31 template <typename T>
32 bool CheckDefaultValueOfMultipleChoicePrefs(
33 const LanguageMultipleChoicePreference<T>* prefs, size_t prefs_len) {
34 const size_t kMaxItems = LanguageMultipleChoicePreference<T>::kMaxItems;
35 for (size_t i = 0; i < prefs_len; ++i) {
36 bool default_value_is_valid = false;
37 for (size_t j = 0; j < kMaxItems; ++j) {
38 const LanguageMultipleChoicePreference<T>& pref = prefs[i];
39 if (pref.values_and_ids[j].item_message_id == 0) {
40 break;
41 }
42 if (Compare(pref.default_pref_value,
43 pref.values_and_ids[j].ibus_config_value)) {
44 default_value_is_valid = true;
45 }
46 }
47 if (!default_value_is_valid) {
48 return false;
49 }
50 }
51 return true;
52 }
53
54 // Returns false if |prefs| has duplicated |ibus_config_value| or
55 // |item_message_id|.
56 template <typename T>
57 bool CheckDuplicationOfMultipleChoicePrefs(
58 const LanguageMultipleChoicePreference<T>* prefs, size_t prefs_len) {
59 const size_t kMaxItems = LanguageMultipleChoicePreference<T>::kMaxItems;
60 for (size_t i = 0; i < prefs_len; ++i) {
61 std::set<T> ibus_config_value_set;
62 std::set<int> item_message_id_set;
63 for (size_t j = 0; j < kMaxItems; ++j) {
64 const LanguageMultipleChoicePreference<T>& pref = prefs[i];
65 if (pref.values_and_ids[j].item_message_id == 0) {
66 break;
67 }
68 const T ibus_config_value = pref.values_and_ids[j].ibus_config_value;
69 if (!ibus_config_value_set.insert(ibus_config_value).second) {
70 // |ibus_config_value| is already in the set.
71 return false;
72 }
73 const int item_message_id = pref.values_and_ids[j].item_message_id;
74 if (!item_message_id_set.insert(item_message_id).second) {
75 // |item_message_id| is already in the set.
76 return false;
77 }
78 }
79 }
80 return true;
81 }
82
83 // Returns false if one or more prefs have an out-of-range |default_pref_value|.
84 bool CheckDefaultValueOfIntegerRangePrefs(
85 const LanguageIntegerRangePreference* prefs, size_t prefs_len) {
86 for (size_t i = 0; i < prefs_len; ++i) {
87 const LanguageIntegerRangePreference& pref = prefs[i];
88 if (pref.default_pref_value < pref.min_pref_value) {
89 return false;
90 }
91 if (pref.default_pref_value > pref.max_pref_value) {
92 return false;
93 }
94 }
95 return true;
96 }
97
98 } // namespace
99
100 // Checks |default_pref_value| in LanguageMultipleChoicePreference prefs.
101 TEST(LanguagePreferencesTest, TestDefaultValuesOfMultipleChoicePrefs) {
102 EXPECT_TRUE(CheckDefaultValueOfMultipleChoicePrefs(
103 kChewingMultipleChoicePrefs, kNumChewingMultipleChoicePrefs));
104 EXPECT_TRUE(CheckDefaultValueOfMultipleChoicePrefs(
105 &kChewingHsuSelKeyType, 1));
106 EXPECT_TRUE(CheckDefaultValueOfMultipleChoicePrefs(
107 &kPinyinDoublePinyinSchema, 1));
108 EXPECT_TRUE(CheckDefaultValueOfMultipleChoicePrefs(
109 kMozcMultipleChoicePrefs, kNumMozcMultipleChoicePrefs));
110 }
111
112 // Checks |ibus_config_value| and |item_message_id| duplications in
113 // LanguageMultipleChoicePreference prefs.
114 TEST(LanguagePreferencesTest, TestDuplicationOfMultipleChoicePrefs) {
115 EXPECT_TRUE(CheckDuplicationOfMultipleChoicePrefs(
116 kChewingMultipleChoicePrefs, kNumChewingMultipleChoicePrefs));
117 EXPECT_TRUE(CheckDuplicationOfMultipleChoicePrefs(
118 &kChewingHsuSelKeyType, 1));
119 EXPECT_TRUE(CheckDuplicationOfMultipleChoicePrefs(
120 &kPinyinDoublePinyinSchema, 1));
121 EXPECT_TRUE(CheckDuplicationOfMultipleChoicePrefs(
122 kMozcMultipleChoicePrefs, kNumMozcMultipleChoicePrefs));
123 }
124
125 // Checks |default_pref_value| in LanguageIntegerRangePreference prefs.
126 TEST(LanguagePreferencesTest, TestDefaultValuesOfIntegerRangePrefs) {
127 EXPECT_TRUE(CheckDefaultValueOfIntegerRangePrefs(
128 kChewingIntegerPrefs, kNumChewingIntegerPrefs));
129 EXPECT_TRUE(CheckDefaultValueOfIntegerRangePrefs(
130 kMozcIntegerPrefs, kNumMozcIntegerPrefs));
131 }
132
133 } // namespace language_prefs
134 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/language_preferences.cc ('k') | chrome/browser/chromeos/preferences.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698