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

Side by Side Diff: base/prefs/overlay_user_pref_store_unittest.cc

Issue 210063003: Refactor TestingPrefStore to make it useful to some tests of load errors and asynchrony. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Review comments. Created 6 years, 9 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 | « no previous file | base/prefs/pref_store_observer_mock.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/prefs/overlay_user_pref_store.h" 5 #include "base/prefs/overlay_user_pref_store.h"
6 6
7 #include "base/prefs/pref_store_observer_mock.h" 7 #include "base/prefs/pref_store_observer_mock.h"
8 #include "base/prefs/testing_pref_store.h" 8 #include "base/prefs/testing_pref_store.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "testing/gmock/include/gmock/gmock.h" 10 #include "testing/gmock/include/gmock/gmock.h"
(...skipping 30 matching lines...) Expand all
41 41
42 scoped_refptr<TestingPrefStore> underlay_; 42 scoped_refptr<TestingPrefStore> underlay_;
43 scoped_refptr<OverlayUserPrefStore> overlay_; 43 scoped_refptr<OverlayUserPrefStore> overlay_;
44 }; 44 };
45 45
46 TEST_F(OverlayUserPrefStoreTest, Observer) { 46 TEST_F(OverlayUserPrefStoreTest, Observer) {
47 PrefStoreObserverMock obs; 47 PrefStoreObserverMock obs;
48 overlay_->AddObserver(&obs); 48 overlay_->AddObserver(&obs);
49 49
50 // Check that underlay first value is reported. 50 // Check that underlay first value is reported.
51 EXPECT_CALL(obs, OnPrefValueChanged(StrEq(overlay_key))).Times(1);
52 underlay_->SetValue(overlay_key, new FundamentalValue(42)); 51 underlay_->SetValue(overlay_key, new FundamentalValue(42));
53 Mock::VerifyAndClearExpectations(&obs); 52 obs.VerifyAndResetChangedKey(overlay_key);
54 53
55 // Check that underlay overwriting is reported. 54 // Check that underlay overwriting is reported.
56 EXPECT_CALL(obs, OnPrefValueChanged(StrEq(overlay_key))).Times(1);
57 underlay_->SetValue(overlay_key, new FundamentalValue(43)); 55 underlay_->SetValue(overlay_key, new FundamentalValue(43));
58 Mock::VerifyAndClearExpectations(&obs); 56 obs.VerifyAndResetChangedKey(overlay_key);
59 57
60 // Check that overwriting change in overlay is reported. 58 // Check that overwriting change in overlay is reported.
61 EXPECT_CALL(obs, OnPrefValueChanged(StrEq(overlay_key))).Times(1);
62 overlay_->SetValue(overlay_key, new FundamentalValue(44)); 59 overlay_->SetValue(overlay_key, new FundamentalValue(44));
63 Mock::VerifyAndClearExpectations(&obs); 60 obs.VerifyAndResetChangedKey(overlay_key);
64 61
65 // Check that hidden underlay change is not reported. 62 // Check that hidden underlay change is not reported.
66 EXPECT_CALL(obs, OnPrefValueChanged(StrEq(overlay_key))).Times(0);
67 underlay_->SetValue(overlay_key, new FundamentalValue(45)); 63 underlay_->SetValue(overlay_key, new FundamentalValue(45));
68 Mock::VerifyAndClearExpectations(&obs); 64 EXPECT_TRUE(obs.changed_keys.empty());
69 65
70 // Check that overlay remove is reported. 66 // Check that overlay remove is reported.
71 EXPECT_CALL(obs, OnPrefValueChanged(StrEq(overlay_key))).Times(1);
72 overlay_->RemoveValue(overlay_key); 67 overlay_->RemoveValue(overlay_key);
73 Mock::VerifyAndClearExpectations(&obs); 68 obs.VerifyAndResetChangedKey(overlay_key);
74 69
75 // Check that underlay remove is reported. 70 // Check that underlay remove is reported.
76 EXPECT_CALL(obs, OnPrefValueChanged(StrEq(overlay_key))).Times(1);
77 underlay_->RemoveValue(overlay_key); 71 underlay_->RemoveValue(overlay_key);
78 Mock::VerifyAndClearExpectations(&obs); 72 obs.VerifyAndResetChangedKey(overlay_key);
79 73
80 // Check respecting of silence. 74 // Check respecting of silence.
81 EXPECT_CALL(obs, OnPrefValueChanged(StrEq(overlay_key))).Times(0);
82 overlay_->SetValueSilently(overlay_key, new FundamentalValue(46)); 75 overlay_->SetValueSilently(overlay_key, new FundamentalValue(46));
83 Mock::VerifyAndClearExpectations(&obs); 76 EXPECT_TRUE(obs.changed_keys.empty());
84 77
85 overlay_->RemoveObserver(&obs); 78 overlay_->RemoveObserver(&obs);
86 79
87 // Check successful unsubscription. 80 // Check successful unsubscription.
88 EXPECT_CALL(obs, OnPrefValueChanged(StrEq(overlay_key))).Times(0);
89 underlay_->SetValue(overlay_key, new FundamentalValue(47)); 81 underlay_->SetValue(overlay_key, new FundamentalValue(47));
90 overlay_->SetValue(overlay_key, new FundamentalValue(48)); 82 overlay_->SetValue(overlay_key, new FundamentalValue(48));
91 Mock::VerifyAndClearExpectations(&obs); 83 EXPECT_TRUE(obs.changed_keys.empty());
92 } 84 }
93 85
94 TEST_F(OverlayUserPrefStoreTest, GetAndSet) { 86 TEST_F(OverlayUserPrefStoreTest, GetAndSet) {
95 const Value* value = NULL; 87 const Value* value = NULL;
96 EXPECT_FALSE(overlay_->GetValue(overlay_key, &value)); 88 EXPECT_FALSE(overlay_->GetValue(overlay_key, &value));
97 EXPECT_FALSE(underlay_->GetValue(overlay_key, &value)); 89 EXPECT_FALSE(underlay_->GetValue(overlay_key, &value));
98 90
99 underlay_->SetValue(overlay_key, new FundamentalValue(42)); 91 underlay_->SetValue(overlay_key, new FundamentalValue(42));
100 92
101 // Value shines through: 93 // Value shines through:
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 } 139 }
148 140
149 // Here we consider a global preference that is not overlayed. 141 // Here we consider a global preference that is not overlayed.
150 TEST_F(OverlayUserPrefStoreTest, GlobalPref) { 142 TEST_F(OverlayUserPrefStoreTest, GlobalPref) {
151 PrefStoreObserverMock obs; 143 PrefStoreObserverMock obs;
152 overlay_->AddObserver(&obs); 144 overlay_->AddObserver(&obs);
153 145
154 const Value* value = NULL; 146 const Value* value = NULL;
155 147
156 // Check that underlay first value is reported. 148 // Check that underlay first value is reported.
157 EXPECT_CALL(obs, OnPrefValueChanged(StrEq(regular_key))).Times(1);
158 underlay_->SetValue(regular_key, new FundamentalValue(42)); 149 underlay_->SetValue(regular_key, new FundamentalValue(42));
159 Mock::VerifyAndClearExpectations(&obs); 150 obs.VerifyAndResetChangedKey(regular_key);
160 151
161 // Check that underlay overwriting is reported. 152 // Check that underlay overwriting is reported.
162 EXPECT_CALL(obs, OnPrefValueChanged(StrEq(regular_key))).Times(1);
163 underlay_->SetValue(regular_key, new FundamentalValue(43)); 153 underlay_->SetValue(regular_key, new FundamentalValue(43));
164 Mock::VerifyAndClearExpectations(&obs); 154 obs.VerifyAndResetChangedKey(regular_key);
165 155
166 // Check that we get this value from the overlay 156 // Check that we get this value from the overlay
167 EXPECT_TRUE(overlay_->GetValue(regular_key, &value)); 157 EXPECT_TRUE(overlay_->GetValue(regular_key, &value));
168 EXPECT_TRUE(base::FundamentalValue(43).Equals(value)); 158 EXPECT_TRUE(base::FundamentalValue(43).Equals(value));
169 159
170 // Check that overwriting change in overlay is reported. 160 // Check that overwriting change in overlay is reported.
171 EXPECT_CALL(obs, OnPrefValueChanged(StrEq(regular_key))).Times(1);
172 overlay_->SetValue(regular_key, new FundamentalValue(44)); 161 overlay_->SetValue(regular_key, new FundamentalValue(44));
173 Mock::VerifyAndClearExpectations(&obs); 162 obs.VerifyAndResetChangedKey(regular_key);
174 163
175 // Check that we get this value from the overlay and the underlay. 164 // Check that we get this value from the overlay and the underlay.
176 EXPECT_TRUE(overlay_->GetValue(regular_key, &value)); 165 EXPECT_TRUE(overlay_->GetValue(regular_key, &value));
177 EXPECT_TRUE(base::FundamentalValue(44).Equals(value)); 166 EXPECT_TRUE(base::FundamentalValue(44).Equals(value));
178 EXPECT_TRUE(underlay_->GetValue(regular_key, &value)); 167 EXPECT_TRUE(underlay_->GetValue(regular_key, &value));
179 EXPECT_TRUE(base::FundamentalValue(44).Equals(value)); 168 EXPECT_TRUE(base::FundamentalValue(44).Equals(value));
180 169
181 // Check that overlay remove is reported. 170 // Check that overlay remove is reported.
182 EXPECT_CALL(obs, OnPrefValueChanged(StrEq(regular_key))).Times(1);
183 overlay_->RemoveValue(regular_key); 171 overlay_->RemoveValue(regular_key);
184 Mock::VerifyAndClearExpectations(&obs); 172 obs.VerifyAndResetChangedKey(regular_key);
185 173
186 // Check that value was removed from overlay and underlay 174 // Check that value was removed from overlay and underlay
187 EXPECT_FALSE(overlay_->GetValue(regular_key, &value)); 175 EXPECT_FALSE(overlay_->GetValue(regular_key, &value));
188 EXPECT_FALSE(underlay_->GetValue(regular_key, &value)); 176 EXPECT_FALSE(underlay_->GetValue(regular_key, &value));
189 177
190 // Check respecting of silence. 178 // Check respecting of silence.
191 EXPECT_CALL(obs, OnPrefValueChanged(StrEq(regular_key))).Times(0);
192 overlay_->SetValueSilently(regular_key, new FundamentalValue(46)); 179 overlay_->SetValueSilently(regular_key, new FundamentalValue(46));
193 Mock::VerifyAndClearExpectations(&obs); 180 EXPECT_TRUE(obs.changed_keys.empty());
194 181
195 overlay_->RemoveObserver(&obs); 182 overlay_->RemoveObserver(&obs);
196 183
197 // Check successful unsubscription. 184 // Check successful unsubscription.
198 EXPECT_CALL(obs, OnPrefValueChanged(StrEq(regular_key))).Times(0);
199 underlay_->SetValue(regular_key, new FundamentalValue(47)); 185 underlay_->SetValue(regular_key, new FundamentalValue(47));
200 overlay_->SetValue(regular_key, new FundamentalValue(48)); 186 overlay_->SetValue(regular_key, new FundamentalValue(48));
201 Mock::VerifyAndClearExpectations(&obs); 187 EXPECT_TRUE(obs.changed_keys.empty());
202 } 188 }
203 189
204 // Check that names mapping works correctly. 190 // Check that names mapping works correctly.
205 TEST_F(OverlayUserPrefStoreTest, NamesMapping) { 191 TEST_F(OverlayUserPrefStoreTest, NamesMapping) {
206 PrefStoreObserverMock obs; 192 PrefStoreObserverMock obs;
207 overlay_->AddObserver(&obs); 193 overlay_->AddObserver(&obs);
208 194
209 const Value* value = NULL; 195 const Value* value = NULL;
210 196
211 // Check that if there is no override in the overlay, changing underlay value 197 // Check that if there is no override in the overlay, changing underlay value
212 // is reported as changing an overlay value. 198 // is reported as changing an overlay value.
213 EXPECT_CALL(obs, OnPrefValueChanged(StrEq(mapped_overlay_key))).Times(1);
214 underlay_->SetValue(mapped_underlay_key, new FundamentalValue(42)); 199 underlay_->SetValue(mapped_underlay_key, new FundamentalValue(42));
215 Mock::VerifyAndClearExpectations(&obs); 200 obs.VerifyAndResetChangedKey(mapped_overlay_key);
216 201
217 // Check that underlay overwriting is reported. 202 // Check that underlay overwriting is reported.
218 EXPECT_CALL(obs, OnPrefValueChanged(StrEq(mapped_overlay_key))).Times(1);
219 underlay_->SetValue(mapped_underlay_key, new FundamentalValue(43)); 203 underlay_->SetValue(mapped_underlay_key, new FundamentalValue(43));
220 Mock::VerifyAndClearExpectations(&obs); 204 obs.VerifyAndResetChangedKey(mapped_overlay_key);
221 205
222 // Check that we get this value from the overlay with both keys 206 // Check that we get this value from the overlay with both keys
223 EXPECT_TRUE(overlay_->GetValue(mapped_overlay_key, &value)); 207 EXPECT_TRUE(overlay_->GetValue(mapped_overlay_key, &value));
224 EXPECT_TRUE(base::FundamentalValue(43).Equals(value)); 208 EXPECT_TRUE(base::FundamentalValue(43).Equals(value));
225 // In this case, overlay reads directly from the underlay. 209 // In this case, overlay reads directly from the underlay.
226 EXPECT_TRUE(overlay_->GetValue(mapped_underlay_key, &value)); 210 EXPECT_TRUE(overlay_->GetValue(mapped_underlay_key, &value));
227 EXPECT_TRUE(base::FundamentalValue(43).Equals(value)); 211 EXPECT_TRUE(base::FundamentalValue(43).Equals(value));
228 212
229 // Check that overwriting change in overlay is reported. 213 // Check that overwriting change in overlay is reported.
230 EXPECT_CALL(obs, OnPrefValueChanged(StrEq(mapped_overlay_key))).Times(1);
231 overlay_->SetValue(mapped_overlay_key, new FundamentalValue(44)); 214 overlay_->SetValue(mapped_overlay_key, new FundamentalValue(44));
232 Mock::VerifyAndClearExpectations(&obs); 215 obs.VerifyAndResetChangedKey(mapped_overlay_key);
233 216
234 // Check that we get an overriden value from overlay, while reading the 217 // Check that we get an overriden value from overlay, while reading the
235 // value from underlay still holds an old value. 218 // value from underlay still holds an old value.
236 EXPECT_TRUE(overlay_->GetValue(mapped_overlay_key, &value)); 219 EXPECT_TRUE(overlay_->GetValue(mapped_overlay_key, &value));
237 EXPECT_TRUE(base::FundamentalValue(44).Equals(value)); 220 EXPECT_TRUE(base::FundamentalValue(44).Equals(value));
238 EXPECT_TRUE(overlay_->GetValue(mapped_underlay_key, &value)); 221 EXPECT_TRUE(overlay_->GetValue(mapped_underlay_key, &value));
239 EXPECT_TRUE(base::FundamentalValue(43).Equals(value)); 222 EXPECT_TRUE(base::FundamentalValue(43).Equals(value));
240 EXPECT_TRUE(underlay_->GetValue(mapped_underlay_key, &value)); 223 EXPECT_TRUE(underlay_->GetValue(mapped_underlay_key, &value));
241 EXPECT_TRUE(base::FundamentalValue(43).Equals(value)); 224 EXPECT_TRUE(base::FundamentalValue(43).Equals(value));
242 225
243 // Check that hidden underlay change is not reported. 226 // Check that hidden underlay change is not reported.
244 EXPECT_CALL(obs, OnPrefValueChanged(StrEq(mapped_overlay_key))).Times(0);
245 underlay_->SetValue(mapped_underlay_key, new FundamentalValue(45)); 227 underlay_->SetValue(mapped_underlay_key, new FundamentalValue(45));
246 Mock::VerifyAndClearExpectations(&obs); 228 EXPECT_TRUE(obs.changed_keys.empty());
247 229
248 // Check that overlay remove is reported. 230 // Check that overlay remove is reported.
249 EXPECT_CALL(obs, OnPrefValueChanged(StrEq(mapped_overlay_key))).Times(1);
250 overlay_->RemoveValue(mapped_overlay_key); 231 overlay_->RemoveValue(mapped_overlay_key);
251 Mock::VerifyAndClearExpectations(&obs); 232 obs.VerifyAndResetChangedKey(mapped_overlay_key);
252 233
253 // Check that underlay remove is reported. 234 // Check that underlay remove is reported.
254 EXPECT_CALL(obs, OnPrefValueChanged(StrEq(mapped_overlay_key))).Times(1);
255 underlay_->RemoveValue(mapped_underlay_key); 235 underlay_->RemoveValue(mapped_underlay_key);
256 Mock::VerifyAndClearExpectations(&obs); 236 obs.VerifyAndResetChangedKey(mapped_overlay_key);
257 237
258 // Check that value was removed. 238 // Check that value was removed.
259 EXPECT_FALSE(overlay_->GetValue(mapped_overlay_key, &value)); 239 EXPECT_FALSE(overlay_->GetValue(mapped_overlay_key, &value));
260 EXPECT_FALSE(overlay_->GetValue(mapped_underlay_key, &value)); 240 EXPECT_FALSE(overlay_->GetValue(mapped_underlay_key, &value));
261 241
262 // Check respecting of silence. 242 // Check respecting of silence.
263 EXPECT_CALL(obs, OnPrefValueChanged(StrEq(mapped_overlay_key))).Times(0);
264 EXPECT_CALL(obs, OnPrefValueChanged(StrEq(mapped_underlay_key))).Times(0);
265 overlay_->SetValueSilently(mapped_overlay_key, new FundamentalValue(46)); 243 overlay_->SetValueSilently(mapped_overlay_key, new FundamentalValue(46));
266 Mock::VerifyAndClearExpectations(&obs); 244 EXPECT_TRUE(obs.changed_keys.empty());
267 245
268 overlay_->RemoveObserver(&obs); 246 overlay_->RemoveObserver(&obs);
269 247
270 // Check successful unsubscription. 248 // Check successful unsubscription.
271 EXPECT_CALL(obs, OnPrefValueChanged(StrEq(mapped_overlay_key))).Times(0);
272 EXPECT_CALL(obs, OnPrefValueChanged(StrEq(mapped_underlay_key))).Times(0);
273 underlay_->SetValue(mapped_underlay_key, new FundamentalValue(47)); 249 underlay_->SetValue(mapped_underlay_key, new FundamentalValue(47));
274 overlay_->SetValue(mapped_overlay_key, new FundamentalValue(48)); 250 overlay_->SetValue(mapped_overlay_key, new FundamentalValue(48));
275 Mock::VerifyAndClearExpectations(&obs); 251 EXPECT_TRUE(obs.changed_keys.empty());
276 } 252 }
277 253
278 } // namespace base 254 } // namespace base
OLDNEW
« no previous file with comments | « no previous file | base/prefs/pref_store_observer_mock.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698