OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include <memory> |
| 6 |
| 7 #include "base/json/json_writer.h" |
| 8 #include "base/values.h" |
| 9 #include "components/sync/protocol/app_list_specifics.pb.h" |
| 10 #include "components/sync/protocol/app_notification_specifics.pb.h" |
| 11 #include "components/sync/protocol/app_setting_specifics.pb.h" |
| 12 #include "components/sync/protocol/app_specifics.pb.h" |
| 13 #include "components/sync/protocol/arc_package_specifics.pb.h" |
| 14 #include "components/sync/protocol/autofill_specifics.pb.h" |
| 15 #include "components/sync/protocol/bookmark_specifics.pb.h" |
| 16 #include "components/sync/protocol/dictionary_specifics.pb.h" |
| 17 #include "components/sync/protocol/encryption.pb.h" |
| 18 #include "components/sync/protocol/entity_metadata.pb.h" |
| 19 #include "components/sync/protocol/experiments_specifics.pb.h" |
| 20 #include "components/sync/protocol/extension_setting_specifics.pb.h" |
| 21 #include "components/sync/protocol/extension_specifics.pb.h" |
| 22 #include "components/sync/protocol/favicon_image_specifics.pb.h" |
| 23 #include "components/sync/protocol/favicon_tracking_specifics.pb.h" |
| 24 #include "components/sync/protocol/history_delete_directive_specifics.pb.h" |
| 25 #include "components/sync/protocol/nigori_specifics.pb.h" |
| 26 #include "components/sync/protocol/password_specifics.pb.h" |
| 27 #include "components/sync/protocol/preference_specifics.pb.h" |
| 28 #include "components/sync/protocol/printer_specifics.pb.h" |
| 29 #include "components/sync/protocol/priority_preference_specifics.pb.h" |
| 30 #include "components/sync/protocol/proto_enum_conversions.h" |
| 31 #include "components/sync/protocol/proto_old_value_conversions.h" |
| 32 #include "components/sync/protocol/proto_unittest_serialized_data.h" |
| 33 #include "components/sync/protocol/proto_value_conversions.h" |
| 34 #include "components/sync/protocol/reading_list_specifics.pb.h" |
| 35 #include "components/sync/protocol/search_engine_specifics.pb.h" |
| 36 #include "components/sync/protocol/session_specifics.pb.h" |
| 37 #include "components/sync/protocol/sync.pb.h" |
| 38 #include "components/sync/protocol/theme_specifics.pb.h" |
| 39 #include "components/sync/protocol/typed_url_specifics.pb.h" |
| 40 #include "components/sync/protocol/unique_position.pb.h" |
| 41 #include "testing/gtest/include/gtest/gtest.h" |
| 42 |
| 43 namespace syncer { |
| 44 namespace { |
| 45 |
| 46 template <class P, typename ...Args> |
| 47 P TypeOfProto(std::unique_ptr<base::DictionaryValue> (*)(const P&, Args...)); |
| 48 |
| 49 #define COMPARE_CONVERSION2(ProtoToValue, OldProtoToValue) \ |
| 50 TEST(ProtoCompareValueConversionsTest, ProtoToValue) { \ |
| 51 using Proto = decltype(TypeOfProto(ProtoToValue)); \ |
| 52 Proto proto; \ |
| 53 const auto& serialized_data = SerializedProto<Proto>::data; \ |
| 54 EXPECT_TRUE(proto.ParseFromArray(serialized_data, \ |
| 55 sizeof(serialized_data))); \ |
| 56 \ |
| 57 auto old_value = OldProtoToValue(proto); \ |
| 58 std::string old_json; \ |
| 59 EXPECT_TRUE(old_value && \ |
| 60 base::JSONWriter::Write(*old_value, &old_json)); \ |
| 61 \ |
| 62 auto value = ProtoToValue(proto); \ |
| 63 std::string json; \ |
| 64 EXPECT_TRUE(value && \ |
| 65 base::JSONWriter::Write(*value, &json)); \ |
| 66 \ |
| 67 EXPECT_EQ(old_json, json); \ |
| 68 } |
| 69 |
| 70 #define COMPARE_CONVERSION(ProtoToValue) \ |
| 71 COMPARE_CONVERSION2(ProtoToValue, old::ProtoToValue) |
| 72 |
| 73 #define COMPARE_CONVERSION_ARG(ProtoToValue, arg) \ |
| 74 TEST(ProtoCompareValueConversionsTest, ProtoToValue##_##arg) { \ |
| 75 using Proto = decltype(TypeOfProto(ProtoToValue)); \ |
| 76 Proto proto; \ |
| 77 const auto& serialized_data = SerializedProto<Proto>::data; \ |
| 78 EXPECT_TRUE(proto.ParseFromArray(serialized_data, \ |
| 79 sizeof(serialized_data))); \ |
| 80 \ |
| 81 auto old_value = old::ProtoToValue(proto, arg); \ |
| 82 std::string old_json; \ |
| 83 EXPECT_TRUE(old_value && \ |
| 84 base::JSONWriter::Write(*old_value, &old_json)); \ |
| 85 \ |
| 86 auto value = ProtoToValue(proto, arg); \ |
| 87 std::string json; \ |
| 88 EXPECT_TRUE(value && \ |
| 89 base::JSONWriter::Write(*value, &json)); \ |
| 90 \ |
| 91 EXPECT_EQ(old_json, json); \ |
| 92 } |
| 93 |
| 94 COMPARE_CONVERSION(EncryptedDataToValue) |
| 95 COMPARE_CONVERSION(AppListSpecificsToValue) |
| 96 COMPARE_CONVERSION2(AppNotificationSettingsToValue, old::AppSettingsToValue) |
| 97 COMPARE_CONVERSION(LinkedAppIconInfoToValue) |
| 98 COMPARE_CONVERSION(ArcPackageSpecificsToValue) |
| 99 COMPARE_CONVERSION(SessionHeaderToValue) |
| 100 COMPARE_CONVERSION(SessionTabToValue) |
| 101 COMPARE_CONVERSION(SessionWindowToValue) |
| 102 COMPARE_CONVERSION(TabNavigationToValue) |
| 103 COMPARE_CONVERSION(NavigationRedirectToValue) |
| 104 COMPARE_CONVERSION(PasswordSpecificsDataToValue) |
| 105 COMPARE_CONVERSION(GlobalIdDirectiveToValue) |
| 106 COMPARE_CONVERSION(TimeRangeDirectiveToValue) |
| 107 COMPARE_CONVERSION(SessionSpecificsToValue) |
| 108 COMPARE_CONVERSION(PrinterPPDDataToValue) |
| 109 COMPARE_CONVERSION(AppNotificationToValue) |
| 110 COMPARE_CONVERSION(AppSettingSpecificsToValue) |
| 111 COMPARE_CONVERSION(AppSpecificsToValue) |
| 112 COMPARE_CONVERSION(ArticleSpecificsToValue) |
| 113 COMPARE_CONVERSION(AutofillSpecificsToValue) |
| 114 COMPARE_CONVERSION(AutofillProfileSpecificsToValue) |
| 115 COMPARE_CONVERSION(WalletMetadataSpecificsToValue) |
| 116 COMPARE_CONVERSION(AutofillWalletSpecificsToValue) |
| 117 COMPARE_CONVERSION(BookmarkSpecificsToValue) |
| 118 COMPARE_CONVERSION(DeviceInfoSpecificsToValue) |
| 119 COMPARE_CONVERSION(DictionarySpecificsToValue) |
| 120 COMPARE_CONVERSION(ExperimentsSpecificsToValue) |
| 121 COMPARE_CONVERSION(PriorityPreferenceSpecificsToValue) |
| 122 COMPARE_CONVERSION(ExtensionSettingSpecificsToValue) |
| 123 COMPARE_CONVERSION(ExtensionSpecificsToValue) |
| 124 COMPARE_CONVERSION(FaviconImageSpecificsToValue) |
| 125 COMPARE_CONVERSION(FaviconTrackingSpecificsToValue) |
| 126 COMPARE_CONVERSION(HistoryDeleteDirectiveSpecificsToValue) |
| 127 COMPARE_CONVERSION(ManagedUserSettingSpecificsToValue) |
| 128 COMPARE_CONVERSION(ManagedUserSpecificsToValue) |
| 129 COMPARE_CONVERSION(ManagedUserSharedSettingSpecificsToValue) |
| 130 COMPARE_CONVERSION(ManagedUserWhitelistSpecificsToValue) |
| 131 COMPARE_CONVERSION(NigoriSpecificsToValue) |
| 132 COMPARE_CONVERSION(PasswordSpecificsToValue) |
| 133 COMPARE_CONVERSION(PreferenceSpecificsToValue) |
| 134 COMPARE_CONVERSION(PrinterSpecificsToValue) |
| 135 COMPARE_CONVERSION(ReadingListSpecificsToValue) |
| 136 COMPARE_CONVERSION(SyncedNotificationAppInfoSpecificsToValue) |
| 137 COMPARE_CONVERSION(SyncedNotificationSpecificsToValue) |
| 138 COMPARE_CONVERSION(SearchEngineSpecificsToValue) |
| 139 COMPARE_CONVERSION(ThemeSpecificsToValue) |
| 140 COMPARE_CONVERSION(TypedUrlSpecificsToValue) |
| 141 COMPARE_CONVERSION(WalletMaskedCreditCardToValue) |
| 142 COMPARE_CONVERSION(WalletPostalAddressToValue) |
| 143 COMPARE_CONVERSION(WifiCredentialSpecificsToValue) |
| 144 COMPARE_CONVERSION(EntitySpecificsToValue) |
| 145 COMPARE_CONVERSION_ARG(SyncEntityToValue, true) |
| 146 COMPARE_CONVERSION_ARG(SyncEntityToValue, false) |
| 147 COMPARE_CONVERSION_ARG(ClientToServerMessageToValue, true) |
| 148 COMPARE_CONVERSION_ARG(ClientToServerMessageToValue, false) |
| 149 COMPARE_CONVERSION_ARG(ClientToServerResponseToValue, true) |
| 150 COMPARE_CONVERSION_ARG(ClientToServerResponseToValue, false) |
| 151 COMPARE_CONVERSION(DatatypeAssociationStatsToValue) |
| 152 COMPARE_CONVERSION(DebugEventInfoToValue) |
| 153 COMPARE_CONVERSION(DebugInfoToValue) |
| 154 COMPARE_CONVERSION(SyncCycleCompletedEventInfoToValue) |
| 155 COMPARE_CONVERSION(ClientConfigParamsToValue) |
| 156 COMPARE_CONVERSION(AttachmentIdProtoToValue) |
| 157 COMPARE_CONVERSION(EntityMetadataToValue) |
| 158 |
| 159 } // namespace |
| 160 } // namespace syncer |
OLD | NEW |