1 // Copyright 2014 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.
5 #include "sync/internal_api/public/base/attachment_id_proto.h"
7 #include "base/strings/string_util.h"
8 #include "testing/gmock/include/gmock/gmock-matchers.h"
9 #include "testing/gtest/include/gtest/gtest.h"
13 typedef testing::Test AttachmentIdProtoTest
;
15 // Verify that that we generate a proto with a properly formatted unique_id
17 TEST(AttachmentIdProtoTest
, UniqueIdFormat
) {
18 sync_pb::AttachmentIdProto id_proto
= CreateAttachmentIdProto(0, 0);
19 ASSERT_TRUE(id_proto
.has_unique_id());
20 // gtest's regular expression support is pretty poor so we cannot test as
21 // closely as we would like.
22 EXPECT_THAT(id_proto
.unique_id(),
23 testing::MatchesRegex(
24 "\\w\\w\\w\\w\\w\\w\\w\\w-\\w\\w\\w\\w-\\w\\w\\w\\w-"
25 "\\w\\w\\w\\w-\\w\\w\\w\\w\\w\\w\\w\\w\\w\\w\\w\\w"));
26 EXPECT_EQ(base::ToLowerASCII(id_proto
.unique_id()), id_proto
.unique_id());
29 TEST(AttachmentIdProtoTest
, CreateAttachmentMetadata_Empty
) {
30 google::protobuf::RepeatedPtrField
<sync_pb::AttachmentIdProto
> ids
;
31 sync_pb::AttachmentMetadata metadata
= CreateAttachmentMetadata(ids
);
32 EXPECT_EQ(0, metadata
.record_size());
35 TEST(AttachmentIdProtoTest
, CreateAttachmentMetadata_NonEmpty
) {
36 google::protobuf::RepeatedPtrField
<sync_pb::AttachmentIdProto
> ids
;
37 *ids
.Add() = CreateAttachmentIdProto(0, 0);
38 *ids
.Add() = CreateAttachmentIdProto(0, 0);
39 *ids
.Add() = CreateAttachmentIdProto(0, 0);
40 sync_pb::AttachmentMetadata metadata
= CreateAttachmentMetadata(ids
);
41 ASSERT_EQ(3, metadata
.record_size());
42 for (int i
= 0; i
< metadata
.record_size(); ++i
) {
43 EXPECT_EQ(ids
.Get(i
).SerializeAsString(),
44 metadata
.record(i
).id().SerializeAsString());
45 EXPECT_TRUE(metadata
.record(i
).is_on_server());