Index: chrome/browser/sync/api/sync_event_unittest.cc |
diff --git a/chrome/browser/sync/api/sync_event_unittest.cc b/chrome/browser/sync/api/sync_event_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9f93e77971b255efae1249da341b45c013a2de34 |
--- /dev/null |
+++ b/chrome/browser/sync/api/sync_event_unittest.cc |
@@ -0,0 +1,125 @@ |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/sync/api/sync_event.h" |
+ |
+#include <string> |
+ |
+#include "base/values.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+#include "chrome/browser/sync/protocol/preference_specifics.pb.h" |
+#include "chrome/browser/sync/protocol/proto_value_conversions.h" |
+ |
+using browser_sync::EntitySpecificsToValue; |
+ |
+namespace { |
+ |
+typedef testing::Test SyncEventTest; |
+ |
+TEST_F(SyncEventTest, LocalDelete) { |
+ SyncEvent::SyncEventType event_type = SyncEvent::ACTION_DELETE; |
+ std::string tag = "client_tag"; |
+ SyncEvent e(event_type, |
+ SyncData::CreateLocalData(tag)); |
+ EXPECT_EQ(event_type, e.event_type()); |
+ EXPECT_EQ(tag, e.sync_data().GetTag()); |
+ EXPECT_EQ(syncable::UNSPECIFIED, e.sync_data().GetDataType()); |
+} |
+ |
+TEST_F(SyncEventTest, LocalUpdate) { |
+ SyncEvent::SyncEventType event_type = SyncEvent::ACTION_UPDATE; |
+ sync_pb::EntitySpecifics specifics; |
+ sync_pb::PreferenceSpecifics* pref_specifics = |
+ specifics.MutableExtension(sync_pb::preference); |
+ pref_specifics->set_name("test"); |
+ std::string tag = "client_tag"; |
+ SyncEvent e(event_type, |
+ SyncData::CreateLocalData(tag, specifics)); |
+ EXPECT_EQ(event_type, e.event_type()); |
+ EXPECT_EQ(tag, e.sync_data().GetTag()); |
+ EXPECT_EQ(syncable::PREFERENCES, e.sync_data().GetDataType()); |
+ scoped_ptr<DictionaryValue> ref_spec(EntitySpecificsToValue(specifics)); |
+ scoped_ptr<DictionaryValue> e_spec(EntitySpecificsToValue( |
+ e.sync_data().GetSpecifics())); |
+ EXPECT_TRUE(ref_spec->Equals(e_spec.get())); |
+} |
+ |
+TEST_F(SyncEventTest, LocalAdd) { |
+ SyncEvent::SyncEventType event_type = SyncEvent::ACTION_ADD; |
+ sync_pb::EntitySpecifics specifics; |
+ sync_pb::PreferenceSpecifics* pref_specifics = |
+ specifics.MutableExtension(sync_pb::preference); |
+ pref_specifics->set_name("test"); |
+ std::string tag = "client_tag"; |
+ SyncEvent e(event_type, |
+ SyncData::CreateLocalData(tag, specifics)); |
+ EXPECT_EQ(event_type, e.event_type()); |
+ EXPECT_EQ(tag, e.sync_data().GetTag()); |
+ EXPECT_EQ(syncable::PREFERENCES, e.sync_data().GetDataType()); |
+ scoped_ptr<DictionaryValue> ref_spec(EntitySpecificsToValue(specifics)); |
+ scoped_ptr<DictionaryValue> e_spec(EntitySpecificsToValue( |
+ e.sync_data().GetSpecifics())); |
+ EXPECT_TRUE(ref_spec->Equals(e_spec.get())); |
+} |
+ |
+TEST_F(SyncEventTest, SyncerEvents) { |
+ SyncEventList event_list; |
+ |
+ // Create an update. |
+ sync_pb::EntitySpecifics update_specifics; |
+ sync_pb::PreferenceSpecifics* pref_specifics = |
+ update_specifics.MutableExtension(sync_pb::preference); |
+ pref_specifics->set_name("update"); |
+ event_list.push_back(SyncEvent( |
+ SyncEvent::ACTION_UPDATE, |
+ SyncData::CreateRemoteData(update_specifics))); |
+ |
+ // Create an add. |
+ sync_pb::EntitySpecifics add_specifics; |
+ pref_specifics = |
+ add_specifics.MutableExtension(sync_pb::preference); |
+ pref_specifics->set_name("add"); |
+ event_list.push_back(SyncEvent( |
+ SyncEvent::ACTION_ADD, |
+ SyncData::CreateRemoteData(add_specifics))); |
+ |
+ // Create a delete. |
+ sync_pb::EntitySpecifics delete_specifics; |
+ pref_specifics = |
+ delete_specifics.MutableExtension(sync_pb::preference); |
+ pref_specifics->set_name("add"); |
+ event_list.push_back(SyncEvent( |
+ SyncEvent::ACTION_DELETE, |
+ SyncData::CreateRemoteData(delete_specifics))); |
+ |
+ ASSERT_EQ(3U, event_list.size()); |
+ |
+ // Verify update. |
+ SyncEvent e = event_list[0]; |
+ EXPECT_EQ(SyncEvent::ACTION_UPDATE, e.event_type()); |
+ EXPECT_EQ(syncable::PREFERENCES, e.sync_data().GetDataType()); |
+ scoped_ptr<DictionaryValue> ref_spec(EntitySpecificsToValue( |
+ update_specifics)); |
+ scoped_ptr<DictionaryValue> e_spec(EntitySpecificsToValue( |
+ e.sync_data().GetSpecifics())); |
+ EXPECT_TRUE(ref_spec->Equals(e_spec.get())); |
+ |
+ // Verify add. |
+ e = event_list[1]; |
+ EXPECT_EQ(SyncEvent::ACTION_ADD, e.event_type()); |
+ EXPECT_EQ(syncable::PREFERENCES, e.sync_data().GetDataType()); |
+ ref_spec.reset(EntitySpecificsToValue(add_specifics)); |
+ e_spec.reset(EntitySpecificsToValue(e.sync_data().GetSpecifics())); |
+ EXPECT_TRUE(ref_spec->Equals(e_spec.get())); |
+ |
+ // Verify delete. |
+ e = event_list[2]; |
+ EXPECT_EQ(SyncEvent::ACTION_DELETE, e.event_type()); |
+ EXPECT_EQ(syncable::PREFERENCES, e.sync_data().GetDataType()); |
+ ref_spec.reset(EntitySpecificsToValue(delete_specifics)); |
+ e_spec.reset(EntitySpecificsToValue(e.sync_data().GetSpecifics())); |
+ EXPECT_TRUE(ref_spec->Equals(e_spec.get())); |
+} |
+ |
+} // namespace |