blob: bd5d4e617e6d9b189b1273a54aff9b9207aedcf1 [file] [log] [blame]
// Copyright 2015 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 "sync/api/entity_data.h"
#include "sync/internal_api/public/base/model_type.h"
#include "sync/internal_api/public/base/unique_position.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace syncer_v2 {
class EntityDataTest : public testing::Test {
protected:
EntityDataTest() {}
~EntityDataTest() override {}
};
TEST_F(EntityDataTest, IsDeleted) {
EntityData data;
EXPECT_TRUE(data.is_deleted());
syncer::AddDefaultFieldValue(syncer::BOOKMARKS, &data.specifics);
EXPECT_FALSE(data.is_deleted());
}
TEST_F(EntityDataTest, Swap) {
EntityData data;
syncer::AddDefaultFieldValue(syncer::BOOKMARKS, &data.specifics);
data.id = "id";
data.client_tag_hash = "client_tag_hash";
data.non_unique_name = "non_unique_name";
data.creation_time = base::Time::FromTimeT(10);
data.modification_time = base::Time::FromTimeT(20);
data.parent_id = "parent_id";
using syncer::UniquePosition;
UniquePosition unique_position =
UniquePosition::InitialPosition(UniquePosition::RandomSuffix());
unique_position.ToProto(&data.unique_position);
// Remember addresses of some data within EntitySpecific and UniquePosition
// to make sure that the underlying data isn't copied.
const sync_pb::BookmarkSpecifics* bookmark_specifics =
&data.specifics.bookmark();
const std::string* unique_position_value = &data.unique_position.value();
EntityDataPtr ptr(data.PassToPtr());
// Compare addresses of the data wrapped by EntityDataPtr to make sure that
// the underlying objects are exactly the same.
EXPECT_EQ(bookmark_specifics, &ptr->specifics.bookmark());
EXPECT_EQ(unique_position_value, &ptr->unique_position.value());
// Compare other fields.
EXPECT_EQ("id", ptr->id);
EXPECT_EQ("client_tag_hash", ptr->client_tag_hash);
EXPECT_EQ("non_unique_name", ptr->non_unique_name);
EXPECT_EQ("parent_id", ptr->parent_id);
EXPECT_EQ(base::Time::FromTimeT(10), ptr->creation_time);
EXPECT_EQ(base::Time::FromTimeT(20), ptr->modification_time);
}
} // namespace syncer_v2