| // Copyright 2014 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "components/sync/model/sync_data.h" |
| |
| #include <memory> |
| |
| #include "base/memory/ref_counted_memory.h" |
| #include "components/sync/protocol/entity_specifics.pb.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| using std::string; |
| |
| namespace syncer { |
| |
| namespace { |
| |
| const char kSyncTag[] = "3984729834"; |
| const ModelType kDatatype = PREFERENCES; |
| const char kNonUniqueTitle[] = "my preference"; |
| |
| TEST(SyncDataTest, NoArgCtor) { |
| SyncData data; |
| EXPECT_FALSE(data.IsValid()); |
| } |
| |
| TEST(SyncDataTest, CreateLocalDelete) { |
| SyncData data = SyncData::CreateLocalDelete(kSyncTag, kDatatype); |
| EXPECT_TRUE(data.IsValid()); |
| EXPECT_EQ(ClientTagHash::FromUnhashed(PREFERENCES, kSyncTag), |
| data.GetClientTagHash()); |
| EXPECT_EQ(kDatatype, data.GetDataType()); |
| } |
| |
| TEST(SyncDataTest, CreateLocalData) { |
| sync_pb::EntitySpecifics specifics; |
| specifics.mutable_preference(); |
| SyncData data = |
| SyncData::CreateLocalData(kSyncTag, kNonUniqueTitle, specifics); |
| EXPECT_TRUE(data.IsValid()); |
| EXPECT_EQ(ClientTagHash::FromUnhashed(PREFERENCES, kSyncTag), |
| data.GetClientTagHash()); |
| EXPECT_EQ(kDatatype, data.GetDataType()); |
| EXPECT_EQ(kNonUniqueTitle, data.GetTitle()); |
| EXPECT_TRUE(data.GetSpecifics().has_preference()); |
| EXPECT_FALSE(data.ToString().empty()); |
| } |
| |
| TEST(SyncDataTest, CreateRemoteData) { |
| sync_pb::EntitySpecifics specifics; |
| specifics.mutable_preference(); |
| SyncData data = SyncData::CreateRemoteData( |
| specifics, ClientTagHash::FromUnhashed(PREFERENCES, kSyncTag)); |
| EXPECT_TRUE(data.IsValid()); |
| EXPECT_EQ(ClientTagHash::FromUnhashed(PREFERENCES, kSyncTag), |
| data.GetClientTagHash()); |
| EXPECT_TRUE(data.GetSpecifics().has_preference()); |
| EXPECT_FALSE(data.ToString().empty()); |
| } |
| |
| } // namespace |
| |
| } // namespace syncer |