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

Unified Diff: chrome/browser/bookmarks/bookmark_codec_unittest.cc

Issue 155560: Don't use ID generation logic always. Only reassign IDs... (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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/bookmarks/bookmark_codec_unittest.cc
===================================================================
--- chrome/browser/bookmarks/bookmark_codec_unittest.cc (revision 20638)
+++ chrome/browser/bookmarks/bookmark_codec_unittest.cc (working copy)
@@ -145,6 +145,21 @@
return model.release();
}
+
+ void CheckIDs(const BookmarkNode* node, std::set<int64>* assigned_ids) {
+ DCHECK(node);
+ int64 node_id = node->id();
+ EXPECT_TRUE(assigned_ids->find(node_id) == assigned_ids->end());
+ assigned_ids->insert(node_id);
+ for (int i = 0; i < node->GetChildCount(); ++i)
+ CheckIDs(node->GetChild(i), assigned_ids);
+ }
+
+ void ExpectIDsUnique(BookmarkModel* model) {
+ std::set<int64> assigned_ids;
+ CheckIDs(model->GetBookmarkBarNode(), &assigned_ids);
+ CheckIDs(model->other_node(), &assigned_ids);
+ }
};
TEST_F(BookmarkCodecTest, ChecksumEncodeDecodeTest) {
@@ -199,6 +214,42 @@
*value.get(), enc_checksum, &dec_checksum, false));
}
+TEST_F(BookmarkCodecTest, ChecksumManualEditIDsTest) {
+ scoped_ptr<BookmarkModel> model_to_encode(CreateTestModel3());
+
+ // The test depends on existence of multiple children under bookmark bar, so
+ // make sure that's the case.
+ int bb_child_count = model_to_encode->GetBookmarkBarNode()->GetChildCount();
+ ASSERT_GT(bb_child_count, 1);
+
+ std::string enc_checksum;
+ scoped_ptr<Value> value(EncodeHelper(model_to_encode.get(), &enc_checksum));
+
+ EXPECT_TRUE(value.get() != NULL);
+
+ // Change IDs for all children of bookmark bar to be 1.
+ DictionaryValue* child_value;
+ for (int i = 0; i < bb_child_count; ++i) {
+ GetBookmarksBarChildValue(value.get(), i, &child_value);
+ std::string id;
+ ASSERT_TRUE(child_value->GetString(BookmarkCodec::kIdKey, &id));
+ ASSERT_TRUE(child_value->SetString(BookmarkCodec::kIdKey, "1"));
+ }
+
+ std::string dec_checksum;
+ scoped_ptr<BookmarkModel> decoded_model(DecodeHelper(
+ *value.get(), enc_checksum, &dec_checksum, true));
+
+ ExpectIDsUnique(decoded_model.get());
+
+ // add a few extra nodes to bookmark model and make sure IDs are still uniuqe.
+ const BookmarkNode* bb_node = decoded_model->GetBookmarkBarNode();
+ decoded_model->AddURL(bb_node, 0, L"new url1", GURL(L"http://newurl1.com"));
+ decoded_model->AddURL(bb_node, 0, L"new url2", GURL(L"http://newurl2.com"));
+
+ ExpectIDsUnique(decoded_model.get());
+}
+
TEST_F(BookmarkCodecTest, PersistIDsTest) {
scoped_ptr<BookmarkModel> model_to_encode(CreateTestModel3());
BookmarkCodec encoder;
@@ -230,92 +281,3 @@
&decoded_model2,
true);
}
-
-class UniqueIDGeneratorTest : public testing::Test {
- protected:
- void TestMixed(UniqueIDGenerator* gen) {
- // Few unique numbers.
- for (int64 i = 1; i <= 5; ++i) {
- EXPECT_EQ(i, gen->GetUniqueID(i));
- }
-
- // All numbers from 1 to 5 should produce numbers 6 to 10.
- for (int64 i = 1; i <= 5; ++i) {
- EXPECT_EQ(5 + i, gen->GetUniqueID(i));
- }
-
- // 10 should produce 11, then 11 should produce 12, and so on.
- for (int64 i = 1; i <= 5; ++i) {
- EXPECT_EQ(10 + i, gen->GetUniqueID(9 + i));
- }
-
- // Any numbers between 1 and 15 should produce a new numbers in sequence.
- EXPECT_EQ(16, gen->GetUniqueID(10));
- EXPECT_EQ(17, gen->GetUniqueID(2));
- EXPECT_EQ(18, gen->GetUniqueID(14));
- EXPECT_EQ(19, gen->GetUniqueID(7));
- EXPECT_EQ(20, gen->GetUniqueID(4));
-
- // Numbers not yet generated should work.
- EXPECT_EQ(100, gen->GetUniqueID(100));
- EXPECT_EQ(21, gen->GetUniqueID(21));
- EXPECT_EQ(200, gen->GetUniqueID(200));
-
- // Now any existing number should produce numbers starting from 201.
- EXPECT_EQ(201, gen->GetUniqueID(1));
- EXPECT_EQ(202, gen->GetUniqueID(20));
- EXPECT_EQ(203, gen->GetUniqueID(21));
- EXPECT_EQ(204, gen->GetUniqueID(100));
- EXPECT_EQ(205, gen->GetUniqueID(200));
- }
-};
-
-TEST_F(UniqueIDGeneratorTest, SerialNumbersTest) {
- UniqueIDGenerator gen;
- for (int64 i = 1; i <= 10; ++i) {
- EXPECT_EQ(i, gen.GetUniqueID(i));
- }
-}
-
-TEST_F(UniqueIDGeneratorTest, UniqueSortedNumbersTest) {
- UniqueIDGenerator gen;
- for (int64 i = 1; i <= 10; i += 2) {
- EXPECT_EQ(i, gen.GetUniqueID(i));
- }
-}
-
-TEST_F(UniqueIDGeneratorTest, UniqueUnsortedConsecutiveNumbersTest) {
- UniqueIDGenerator gen;
- int numbers[] = {2, 10, 6, 3, 8, 5, 1, 7, 4, 9};
- for (int64 i = 0; i < ARRAYSIZE(numbers); ++i) {
- EXPECT_EQ(numbers[i], gen.GetUniqueID(numbers[i]));
- }
-}
-
-TEST_F(UniqueIDGeneratorTest, UniqueUnsortedNumbersTest) {
- UniqueIDGenerator gen;
- int numbers[] = {20, 100, 60, 30, 80, 50, 10, 70, 40, 90};
- for (int64 i = 0; i < ARRAYSIZE(numbers); ++i) {
- EXPECT_EQ(numbers[i], gen.GetUniqueID(numbers[i]));
- }
-}
-
-TEST_F(UniqueIDGeneratorTest, AllDuplicatesTest) {
- UniqueIDGenerator gen;
- for (int64 i = 1; i <= 10; ++i) {
- EXPECT_EQ(i, gen.GetUniqueID(1));
- }
-}
-
-TEST_F(UniqueIDGeneratorTest, MixedTest) {
- UniqueIDGenerator gen;
- TestMixed(&gen);
-}
-
-TEST_F(UniqueIDGeneratorTest, ResetTest) {
- UniqueIDGenerator gen;
- for (int64 i = 0; i < 5; ++i) {
- TestMixed(&gen);
- gen.Reset();
- }
-}
« chrome/browser/bookmarks/bookmark_codec.cc ('K') | « chrome/browser/bookmarks/bookmark_codec.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698