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

Side by Side Diff: chrome/browser/bookmarks/bookmark_codec_unittest.cc

Issue 155456: Try the original CL "Always persist bookmark IDs" again with the fix to... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2009 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/scoped_ptr.h" 5 #include "base/scoped_ptr.h"
6 #include "base/string_util.h" 6 #include "base/string_util.h"
7 #include "base/values.h" 7 #include "base/values.h"
8 #include "chrome/browser/bookmarks/bookmark_codec.h" 8 #include "chrome/browser/bookmarks/bookmark_codec.h"
9 #include "chrome/browser/bookmarks/bookmark_model.h" 9 #include "chrome/browser/bookmarks/bookmark_model.h"
10 #include "chrome/browser/bookmarks/bookmark_model_test_utils.h" 10 #include "chrome/browser/bookmarks/bookmark_model_test_utils.h"
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 // Computed and stored checksums should not be empty and should be equal. 99 // Computed and stored checksums should not be empty and should be equal.
100 EXPECT_FALSE(computed_checksum.empty()); 100 EXPECT_FALSE(computed_checksum.empty());
101 EXPECT_FALSE(stored_checksum.empty()); 101 EXPECT_FALSE(stored_checksum.empty());
102 EXPECT_EQ(computed_checksum, stored_checksum); 102 EXPECT_EQ(computed_checksum, stored_checksum);
103 103
104 *checksum = computed_checksum; 104 *checksum = computed_checksum;
105 return value.release(); 105 return value.release();
106 } 106 }
107 107
108 bool Decode(BookmarkCodec* codec, BookmarkModel* model, const Value& value) { 108 bool Decode(BookmarkCodec* codec, BookmarkModel* model, const Value& value) {
109 int max_id; 109 int64 max_id;
110 bool result = codec->Decode(AsMutable(model->GetBookmarkBarNode()), 110 bool result = codec->Decode(AsMutable(model->GetBookmarkBarNode()),
111 AsMutable(model->other_node()), 111 AsMutable(model->other_node()),
112 &max_id, value); 112 &max_id, value);
113 model->set_next_node_id(max_id); 113 model->set_next_node_id(max_id);
114 return result; 114 return result;
115 } 115 }
116 116
117 BookmarkModel* DecodeHelper(const Value& value, 117 BookmarkModel* DecodeHelper(const Value& value,
118 const std::string& expected_stored_checksum, 118 const std::string& expected_stored_checksum,
119 std::string* computed_checksum, 119 std::string* computed_checksum,
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 *value.get(), enc_checksum, &dec_checksum, true)); 194 *value.get(), enc_checksum, &dec_checksum, true));
195 195
196 // Undo the change and make sure the checksum is same as original. 196 // Undo the change and make sure the checksum is same as original.
197 ASSERT_TRUE(child1_value->SetString(BookmarkCodec::kNameKey, title)); 197 ASSERT_TRUE(child1_value->SetString(BookmarkCodec::kNameKey, title));
198 scoped_ptr<BookmarkModel> decoded_model2(DecodeHelper( 198 scoped_ptr<BookmarkModel> decoded_model2(DecodeHelper(
199 *value.get(), enc_checksum, &dec_checksum, false)); 199 *value.get(), enc_checksum, &dec_checksum, false));
200 } 200 }
201 201
202 TEST_F(BookmarkCodecTest, PersistIDsTest) { 202 TEST_F(BookmarkCodecTest, PersistIDsTest) {
203 scoped_ptr<BookmarkModel> model_to_encode(CreateTestModel3()); 203 scoped_ptr<BookmarkModel> model_to_encode(CreateTestModel3());
204 BookmarkCodec encoder(true); 204 BookmarkCodec encoder;
205 scoped_ptr<Value> model_value(encoder.Encode(model_to_encode.get())); 205 scoped_ptr<Value> model_value(encoder.Encode(model_to_encode.get()));
206 206
207 BookmarkModel decoded_model(NULL); 207 BookmarkModel decoded_model(NULL);
208 BookmarkCodec decoder(true); 208 BookmarkCodec decoder;
209 ASSERT_TRUE(Decode(&decoder, &decoded_model, *model_value.get())); 209 ASSERT_TRUE(Decode(&decoder, &decoded_model, *model_value.get()));
210 BookmarkModelTestUtils::AssertModelsEqual(model_to_encode.get(), 210 BookmarkModelTestUtils::AssertModelsEqual(model_to_encode.get(),
211 &decoded_model, 211 &decoded_model,
212 true); 212 true);
213 213
214 // Add a couple of more items to the decoded bookmark model and make sure 214 // Add a couple of more items to the decoded bookmark model and make sure
215 // ID persistence is working properly. 215 // ID persistence is working properly.
216 const BookmarkNode* bookmark_bar = decoded_model.GetBookmarkBarNode(); 216 const BookmarkNode* bookmark_bar = decoded_model.GetBookmarkBarNode();
217 decoded_model.AddURL( 217 decoded_model.AddURL(
218 bookmark_bar, bookmark_bar->GetChildCount(), kUrl3Title, GURL(kUrl3Url)); 218 bookmark_bar, bookmark_bar->GetChildCount(), kUrl3Title, GURL(kUrl3Url));
219 const BookmarkNode* group2_node = decoded_model.AddGroup( 219 const BookmarkNode* group2_node = decoded_model.AddGroup(
220 bookmark_bar, bookmark_bar->GetChildCount(), kGroup2Title); 220 bookmark_bar, bookmark_bar->GetChildCount(), kGroup2Title);
221 decoded_model.AddURL(group2_node, 0, kUrl4Title, GURL(kUrl4Url)); 221 decoded_model.AddURL(group2_node, 0, kUrl4Title, GURL(kUrl4Url));
222 222
223 BookmarkCodec encoder2(true); 223 BookmarkCodec encoder2;
224 scoped_ptr<Value> model_value2(encoder2.Encode(&decoded_model)); 224 scoped_ptr<Value> model_value2(encoder2.Encode(&decoded_model));
225 225
226 BookmarkModel decoded_model2(NULL); 226 BookmarkModel decoded_model2(NULL);
227 BookmarkCodec decoder2(true); 227 BookmarkCodec decoder2;
228 ASSERT_TRUE(Decode(&decoder2, &decoded_model2, *model_value2.get())); 228 ASSERT_TRUE(Decode(&decoder2, &decoded_model2, *model_value2.get()));
229 BookmarkModelTestUtils::AssertModelsEqual(&decoded_model, 229 BookmarkModelTestUtils::AssertModelsEqual(&decoded_model,
230 &decoded_model2, 230 &decoded_model2,
231 true); 231 true);
232 } 232 }
233 233
234 class UniqueIDGeneratorTest : public testing::Test { 234 class UniqueIDGeneratorTest : public testing::Test {
235 protected: 235 protected:
236 void TestMixed(UniqueIDGenerator* gen) { 236 void TestMixed(UniqueIDGenerator* gen) {
237 // Few unique numbers. 237 // Few unique numbers.
238 for (int i = 1; i <= 5; ++i) { 238 for (int64 i = 1; i <= 5; ++i) {
239 EXPECT_EQ(i, gen->GetUniqueID(i)); 239 EXPECT_EQ(i, gen->GetUniqueID(i));
240 } 240 }
241 241
242 // All numbers from 1 to 5 should produce numbers 6 to 10. 242 // All numbers from 1 to 5 should produce numbers 6 to 10.
243 for (int i = 1; i <= 5; ++i) { 243 for (int64 i = 1; i <= 5; ++i) {
244 EXPECT_EQ(5 + i, gen->GetUniqueID(i)); 244 EXPECT_EQ(5 + i, gen->GetUniqueID(i));
245 } 245 }
246 246
247 // 10 should produce 11, then 11 should produce 12, and so on. 247 // 10 should produce 11, then 11 should produce 12, and so on.
248 for (int i = 1; i <= 5; ++i) { 248 for (int64 i = 1; i <= 5; ++i) {
249 EXPECT_EQ(10 + i, gen->GetUniqueID(9 + i)); 249 EXPECT_EQ(10 + i, gen->GetUniqueID(9 + i));
250 } 250 }
251 251
252 // Any numbers between 1 and 15 should produce a new numbers in sequence. 252 // Any numbers between 1 and 15 should produce a new numbers in sequence.
253 EXPECT_EQ(16, gen->GetUniqueID(10)); 253 EXPECT_EQ(16, gen->GetUniqueID(10));
254 EXPECT_EQ(17, gen->GetUniqueID(2)); 254 EXPECT_EQ(17, gen->GetUniqueID(2));
255 EXPECT_EQ(18, gen->GetUniqueID(14)); 255 EXPECT_EQ(18, gen->GetUniqueID(14));
256 EXPECT_EQ(19, gen->GetUniqueID(7)); 256 EXPECT_EQ(19, gen->GetUniqueID(7));
257 EXPECT_EQ(20, gen->GetUniqueID(4)); 257 EXPECT_EQ(20, gen->GetUniqueID(4));
258 258
259 // Numbers not yet generated should work. 259 // Numbers not yet generated should work.
260 EXPECT_EQ(100, gen->GetUniqueID(100)); 260 EXPECT_EQ(100, gen->GetUniqueID(100));
261 EXPECT_EQ(21, gen->GetUniqueID(21)); 261 EXPECT_EQ(21, gen->GetUniqueID(21));
262 EXPECT_EQ(200, gen->GetUniqueID(200)); 262 EXPECT_EQ(200, gen->GetUniqueID(200));
263 263
264 // Now any existing number should produce numbers starting from 201. 264 // Now any existing number should produce numbers starting from 201.
265 EXPECT_EQ(201, gen->GetUniqueID(1)); 265 EXPECT_EQ(201, gen->GetUniqueID(1));
266 EXPECT_EQ(202, gen->GetUniqueID(20)); 266 EXPECT_EQ(202, gen->GetUniqueID(20));
267 EXPECT_EQ(203, gen->GetUniqueID(21)); 267 EXPECT_EQ(203, gen->GetUniqueID(21));
268 EXPECT_EQ(204, gen->GetUniqueID(100)); 268 EXPECT_EQ(204, gen->GetUniqueID(100));
269 EXPECT_EQ(205, gen->GetUniqueID(200)); 269 EXPECT_EQ(205, gen->GetUniqueID(200));
270 } 270 }
271 }; 271 };
272 272
273 TEST_F(UniqueIDGeneratorTest, SerialNumbersTest) { 273 TEST_F(UniqueIDGeneratorTest, SerialNumbersTest) {
274 UniqueIDGenerator gen; 274 UniqueIDGenerator gen;
275 for (int i = 1; i <= 10; ++i) { 275 for (int64 i = 1; i <= 10; ++i) {
276 EXPECT_EQ(i, gen.GetUniqueID(i)); 276 EXPECT_EQ(i, gen.GetUniqueID(i));
277 } 277 }
278 } 278 }
279 279
280 TEST_F(UniqueIDGeneratorTest, UniqueSortedNumbersTest) { 280 TEST_F(UniqueIDGeneratorTest, UniqueSortedNumbersTest) {
281 UniqueIDGenerator gen; 281 UniqueIDGenerator gen;
282 for (int i = 1; i <= 10; i += 2) { 282 for (int64 i = 1; i <= 10; i += 2) {
283 EXPECT_EQ(i, gen.GetUniqueID(i)); 283 EXPECT_EQ(i, gen.GetUniqueID(i));
284 } 284 }
285 } 285 }
286 286
287 TEST_F(UniqueIDGeneratorTest, UniqueUnsortedConsecutiveNumbersTest) { 287 TEST_F(UniqueIDGeneratorTest, UniqueUnsortedConsecutiveNumbersTest) {
288 UniqueIDGenerator gen; 288 UniqueIDGenerator gen;
289 int numbers[] = {2, 10, 6, 3, 8, 5, 1, 7, 4, 9}; 289 int numbers[] = {2, 10, 6, 3, 8, 5, 1, 7, 4, 9};
290 for (int i = 0; i < ARRAYSIZE(numbers); ++i) { 290 for (int64 i = 0; i < ARRAYSIZE(numbers); ++i) {
291 EXPECT_EQ(numbers[i], gen.GetUniqueID(numbers[i])); 291 EXPECT_EQ(numbers[i], gen.GetUniqueID(numbers[i]));
292 } 292 }
293 } 293 }
294 294
295 TEST_F(UniqueIDGeneratorTest, UniqueUnsortedNumbersTest) { 295 TEST_F(UniqueIDGeneratorTest, UniqueUnsortedNumbersTest) {
296 UniqueIDGenerator gen; 296 UniqueIDGenerator gen;
297 int numbers[] = {20, 100, 60, 30, 80, 50, 10, 70, 40, 90}; 297 int numbers[] = {20, 100, 60, 30, 80, 50, 10, 70, 40, 90};
298 for (int i = 0; i < ARRAYSIZE(numbers); ++i) { 298 for (int64 i = 0; i < ARRAYSIZE(numbers); ++i) {
299 EXPECT_EQ(numbers[i], gen.GetUniqueID(numbers[i])); 299 EXPECT_EQ(numbers[i], gen.GetUniqueID(numbers[i]));
300 } 300 }
301 } 301 }
302 302
303 TEST_F(UniqueIDGeneratorTest, AllDuplicatesTest) { 303 TEST_F(UniqueIDGeneratorTest, AllDuplicatesTest) {
304 UniqueIDGenerator gen; 304 UniqueIDGenerator gen;
305 for (int i = 1; i <= 10; ++i) { 305 for (int64 i = 1; i <= 10; ++i) {
306 EXPECT_EQ(i, gen.GetUniqueID(1)); 306 EXPECT_EQ(i, gen.GetUniqueID(1));
307 } 307 }
308 } 308 }
309 309
310 TEST_F(UniqueIDGeneratorTest, MixedTest) { 310 TEST_F(UniqueIDGeneratorTest, MixedTest) {
311 UniqueIDGenerator gen; 311 UniqueIDGenerator gen;
312 TestMixed(&gen); 312 TestMixed(&gen);
313 } 313 }
314 314
315 TEST_F(UniqueIDGeneratorTest, ResetTest) { 315 TEST_F(UniqueIDGeneratorTest, ResetTest) {
316 UniqueIDGenerator gen; 316 UniqueIDGenerator gen;
317 for (int i = 0; i < 5; ++i) { 317 for (int64 i = 0; i < 5; ++i) {
318 TestMixed(&gen); 318 TestMixed(&gen);
319 gen.Reset(); 319 gen.Reset();
320 } 320 }
321 } 321 }
OLDNEW
« no previous file with comments | « chrome/browser/bookmarks/bookmark_codec.cc ('k') | chrome/browser/bookmarks/bookmark_drag_data.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698