Index: components/sync/protocol/proto_compare_value_conversions_unittest.cc |
diff --git a/components/sync/protocol/proto_compare_value_conversions_unittest.cc b/components/sync/protocol/proto_compare_value_conversions_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7371ee38ea26378a8245e068be19583e0fb5ea96 |
--- /dev/null |
+++ b/components/sync/protocol/proto_compare_value_conversions_unittest.cc |
@@ -0,0 +1,160 @@ |
+// Copyright (c) 2016 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 <memory> |
+ |
+#include "base/json/json_writer.h" |
+#include "base/values.h" |
+#include "components/sync/protocol/app_list_specifics.pb.h" |
+#include "components/sync/protocol/app_notification_specifics.pb.h" |
+#include "components/sync/protocol/app_setting_specifics.pb.h" |
+#include "components/sync/protocol/app_specifics.pb.h" |
+#include "components/sync/protocol/arc_package_specifics.pb.h" |
+#include "components/sync/protocol/autofill_specifics.pb.h" |
+#include "components/sync/protocol/bookmark_specifics.pb.h" |
+#include "components/sync/protocol/dictionary_specifics.pb.h" |
+#include "components/sync/protocol/encryption.pb.h" |
+#include "components/sync/protocol/entity_metadata.pb.h" |
+#include "components/sync/protocol/experiments_specifics.pb.h" |
+#include "components/sync/protocol/extension_setting_specifics.pb.h" |
+#include "components/sync/protocol/extension_specifics.pb.h" |
+#include "components/sync/protocol/favicon_image_specifics.pb.h" |
+#include "components/sync/protocol/favicon_tracking_specifics.pb.h" |
+#include "components/sync/protocol/history_delete_directive_specifics.pb.h" |
+#include "components/sync/protocol/nigori_specifics.pb.h" |
+#include "components/sync/protocol/password_specifics.pb.h" |
+#include "components/sync/protocol/preference_specifics.pb.h" |
+#include "components/sync/protocol/printer_specifics.pb.h" |
+#include "components/sync/protocol/priority_preference_specifics.pb.h" |
+#include "components/sync/protocol/proto_enum_conversions.h" |
+#include "components/sync/protocol/proto_old_value_conversions.h" |
+#include "components/sync/protocol/proto_unittest_serialized_data.h" |
+#include "components/sync/protocol/proto_value_conversions.h" |
+#include "components/sync/protocol/reading_list_specifics.pb.h" |
+#include "components/sync/protocol/search_engine_specifics.pb.h" |
+#include "components/sync/protocol/session_specifics.pb.h" |
+#include "components/sync/protocol/sync.pb.h" |
+#include "components/sync/protocol/theme_specifics.pb.h" |
+#include "components/sync/protocol/typed_url_specifics.pb.h" |
+#include "components/sync/protocol/unique_position.pb.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace syncer { |
+namespace { |
+ |
+template <class P, typename ...Args> |
+P TypeOfProto(std::unique_ptr<base::DictionaryValue> (*)(const P&, Args...)); |
+ |
+#define COMPARE_CONVERSION2(ProtoToValue, OldProtoToValue) \ |
+ TEST(ProtoCompareValueConversionsTest, ProtoToValue) { \ |
+ using Proto = decltype(TypeOfProto(ProtoToValue)); \ |
+ Proto proto; \ |
+ const auto& serialized_data = SerializedProto<Proto>::data; \ |
+ EXPECT_TRUE(proto.ParseFromArray(serialized_data, \ |
+ sizeof(serialized_data))); \ |
+ \ |
+ auto old_value = OldProtoToValue(proto); \ |
+ std::string old_json; \ |
+ EXPECT_TRUE(old_value && \ |
+ base::JSONWriter::Write(*old_value, &old_json)); \ |
+ \ |
+ auto value = ProtoToValue(proto); \ |
+ std::string json; \ |
+ EXPECT_TRUE(value && \ |
+ base::JSONWriter::Write(*value, &json)); \ |
+ \ |
+ EXPECT_EQ(old_json, json); \ |
+ } |
+ |
+#define COMPARE_CONVERSION(ProtoToValue) \ |
+ COMPARE_CONVERSION2(ProtoToValue, old::ProtoToValue) |
+ |
+#define COMPARE_CONVERSION_ARG(ProtoToValue, arg) \ |
+ TEST(ProtoCompareValueConversionsTest, ProtoToValue##_##arg) { \ |
+ using Proto = decltype(TypeOfProto(ProtoToValue)); \ |
+ Proto proto; \ |
+ const auto& serialized_data = SerializedProto<Proto>::data; \ |
+ EXPECT_TRUE(proto.ParseFromArray(serialized_data, \ |
+ sizeof(serialized_data))); \ |
+ \ |
+ auto old_value = old::ProtoToValue(proto, arg); \ |
+ std::string old_json; \ |
+ EXPECT_TRUE(old_value && \ |
+ base::JSONWriter::Write(*old_value, &old_json)); \ |
+ \ |
+ auto value = ProtoToValue(proto, arg); \ |
+ std::string json; \ |
+ EXPECT_TRUE(value && \ |
+ base::JSONWriter::Write(*value, &json)); \ |
+ \ |
+ EXPECT_EQ(old_json, json); \ |
+ } |
+ |
+COMPARE_CONVERSION(EncryptedDataToValue) |
+COMPARE_CONVERSION(AppListSpecificsToValue) |
+COMPARE_CONVERSION2(AppNotificationSettingsToValue, old::AppSettingsToValue) |
+COMPARE_CONVERSION(LinkedAppIconInfoToValue) |
+COMPARE_CONVERSION(ArcPackageSpecificsToValue) |
+COMPARE_CONVERSION(SessionHeaderToValue) |
+COMPARE_CONVERSION(SessionTabToValue) |
+COMPARE_CONVERSION(SessionWindowToValue) |
+COMPARE_CONVERSION(TabNavigationToValue) |
+COMPARE_CONVERSION(NavigationRedirectToValue) |
+COMPARE_CONVERSION(PasswordSpecificsDataToValue) |
+COMPARE_CONVERSION(GlobalIdDirectiveToValue) |
+COMPARE_CONVERSION(TimeRangeDirectiveToValue) |
+COMPARE_CONVERSION(SessionSpecificsToValue) |
+COMPARE_CONVERSION(PrinterPPDDataToValue) |
+COMPARE_CONVERSION(AppNotificationToValue) |
+COMPARE_CONVERSION(AppSettingSpecificsToValue) |
+COMPARE_CONVERSION(AppSpecificsToValue) |
+COMPARE_CONVERSION(ArticleSpecificsToValue) |
+COMPARE_CONVERSION(AutofillSpecificsToValue) |
+COMPARE_CONVERSION(AutofillProfileSpecificsToValue) |
+COMPARE_CONVERSION(WalletMetadataSpecificsToValue) |
+COMPARE_CONVERSION(AutofillWalletSpecificsToValue) |
+COMPARE_CONVERSION(BookmarkSpecificsToValue) |
+COMPARE_CONVERSION(DeviceInfoSpecificsToValue) |
+COMPARE_CONVERSION(DictionarySpecificsToValue) |
+COMPARE_CONVERSION(ExperimentsSpecificsToValue) |
+COMPARE_CONVERSION(PriorityPreferenceSpecificsToValue) |
+COMPARE_CONVERSION(ExtensionSettingSpecificsToValue) |
+COMPARE_CONVERSION(ExtensionSpecificsToValue) |
+COMPARE_CONVERSION(FaviconImageSpecificsToValue) |
+COMPARE_CONVERSION(FaviconTrackingSpecificsToValue) |
+COMPARE_CONVERSION(HistoryDeleteDirectiveSpecificsToValue) |
+COMPARE_CONVERSION(ManagedUserSettingSpecificsToValue) |
+COMPARE_CONVERSION(ManagedUserSpecificsToValue) |
+COMPARE_CONVERSION(ManagedUserSharedSettingSpecificsToValue) |
+COMPARE_CONVERSION(ManagedUserWhitelistSpecificsToValue) |
+COMPARE_CONVERSION(NigoriSpecificsToValue) |
+COMPARE_CONVERSION(PasswordSpecificsToValue) |
+COMPARE_CONVERSION(PreferenceSpecificsToValue) |
+COMPARE_CONVERSION(PrinterSpecificsToValue) |
+COMPARE_CONVERSION(ReadingListSpecificsToValue) |
+COMPARE_CONVERSION(SyncedNotificationAppInfoSpecificsToValue) |
+COMPARE_CONVERSION(SyncedNotificationSpecificsToValue) |
+COMPARE_CONVERSION(SearchEngineSpecificsToValue) |
+COMPARE_CONVERSION(ThemeSpecificsToValue) |
+COMPARE_CONVERSION(TypedUrlSpecificsToValue) |
+COMPARE_CONVERSION(WalletMaskedCreditCardToValue) |
+COMPARE_CONVERSION(WalletPostalAddressToValue) |
+COMPARE_CONVERSION(WifiCredentialSpecificsToValue) |
+COMPARE_CONVERSION(EntitySpecificsToValue) |
+COMPARE_CONVERSION_ARG(SyncEntityToValue, true) |
+COMPARE_CONVERSION_ARG(SyncEntityToValue, false) |
+COMPARE_CONVERSION_ARG(ClientToServerMessageToValue, true) |
+COMPARE_CONVERSION_ARG(ClientToServerMessageToValue, false) |
+COMPARE_CONVERSION_ARG(ClientToServerResponseToValue, true) |
+COMPARE_CONVERSION_ARG(ClientToServerResponseToValue, false) |
+COMPARE_CONVERSION(DatatypeAssociationStatsToValue) |
+COMPARE_CONVERSION(DebugEventInfoToValue) |
+COMPARE_CONVERSION(DebugInfoToValue) |
+COMPARE_CONVERSION(SyncCycleCompletedEventInfoToValue) |
+COMPARE_CONVERSION(ClientConfigParamsToValue) |
+COMPARE_CONVERSION(AttachmentIdProtoToValue) |
+COMPARE_CONVERSION(EntityMetadataToValue) |
+ |
+} // namespace |
+} // namespace syncer |