Index: chrome/browser/sync/sessions/sync_session_unittest.cc |
=================================================================== |
--- chrome/browser/sync/sessions/sync_session_unittest.cc (revision 71618) |
+++ chrome/browser/sync/sessions/sync_session_unittest.cc (working copy) |
@@ -8,6 +8,7 @@ |
#include "chrome/browser/sync/engine/syncer_types.h" |
#include "chrome/browser/sync/engine/syncer_util.h" |
#include "chrome/browser/sync/syncable/directory_manager.h" |
+#include "chrome/browser/sync/syncable/model_type.h" |
#include "chrome/browser/sync/syncable/syncable.h" |
#include "chrome/test/sync/engine/test_directory_setter_upper.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -250,6 +251,64 @@ |
EXPECT_TRUE(session_->HasMoreToSync()); |
} |
+TEST_F(SyncSessionTest, ModelTypeBitSetToTypePayloadMap) { |
+ syncable::ModelTypeBitSet types; |
+ std::string payload = "test"; |
+ TypePayloadMap types_with_payloads = |
+ ModelTypeBitSetToTypePayloadMap(types, payload); |
+ EXPECT_TRUE(types_with_payloads.empty()); |
+ |
+ types[syncable::BOOKMARKS] = true; |
+ types[syncable::PASSWORDS] = true; |
+ types[syncable::AUTOFILL] = true; |
+ payload = "test2"; |
+ types_with_payloads = ModelTypeBitSetToTypePayloadMap(types, payload); |
+ |
+ ASSERT_EQ(3U, types_with_payloads.size()); |
+ EXPECT_EQ(types_with_payloads[syncable::BOOKMARKS], payload); |
+ EXPECT_EQ(types_with_payloads[syncable::PASSWORDS], payload); |
+ EXPECT_EQ(types_with_payloads[syncable::AUTOFILL], payload); |
+} |
+ |
+TEST_F(SyncSessionTest, RoutingInfoToTypePayloadMap) { |
+ std::string payload = "test"; |
+ TypePayloadMap types_with_payloads |
+ = RoutingInfoToTypePayloadMap(routes_, payload); |
+ ASSERT_EQ(routes_.size(), types_with_payloads.size()); |
+ for (ModelSafeRoutingInfo::iterator iter = routes_.begin(); |
+ iter != routes_.end(); |
+ ++iter) { |
+ EXPECT_EQ(payload, types_with_payloads[iter->first]); |
+ } |
+} |
+ |
+TEST_F(SyncSessionTest, CoalescePayloads) { |
+ TypePayloadMap original; |
+ std::string empty_payload; |
+ std::string payload1 = "payload1"; |
+ std::string payload2 = "payload2"; |
+ std::string payload3 = "payload3"; |
+ original[syncable::BOOKMARKS] = empty_payload; |
+ original[syncable::PASSWORDS] = payload1; |
+ original[syncable::AUTOFILL] = payload2; |
+ original[syncable::THEMES] = payload3; |
+ |
+ TypePayloadMap update; |
+ update[syncable::BOOKMARKS] = empty_payload; // Same. |
+ update[syncable::PASSWORDS] = empty_payload; // Overwrite with empty. |
+ update[syncable::AUTOFILL] = payload1; // Overwrite with non-empty. |
+ update[syncable::SESSIONS] = payload2; // New. |
+ // Themes untouched. |
+ |
+ CoalescePayloads(&original, update); |
+ ASSERT_EQ(5U, original.size()); |
+ EXPECT_EQ(empty_payload, original[syncable::BOOKMARKS]); |
+ EXPECT_EQ(payload1, original[syncable::PASSWORDS]); |
+ EXPECT_EQ(payload1, original[syncable::AUTOFILL]); |
+ EXPECT_EQ(payload2, original[syncable::SESSIONS]); |
+ EXPECT_EQ(payload3, original[syncable::THEMES]); |
+} |
+ |
} // namespace |
} // namespace sessions |
} // namespace browser_sync |