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/attachments/fake_attachment_uploader.h"
8 #include "base/memory/ref_counted.h"
9 #include "base/memory/ref_counted_memory.h"
10 #include "base/message_loop/message_loop.h"
11 #include "sync/api/attachments/attachment.h"
12 #include "testing/gtest/include/gtest/gtest.h"
18 const char kAttachmentData
[] = "some data";
22 class FakeAttachmentUploaderTest
: public testing::Test
{
24 virtual void SetUp() {
25 upload_callback_count
= 0;
26 upload_callback
= base::Bind(&FakeAttachmentUploaderTest::Increment
,
27 base::Unretained(this),
28 &upload_callback_count
);
30 base::MessageLoop message_loop
;
31 FakeAttachmentUploader uploader
;
32 int upload_callback_count
;
33 AttachmentUploader::UploadCallback upload_callback
;
36 void Increment(int* success_count
,
37 const AttachmentUploader::UploadResult
& result
,
38 const AttachmentId
& ignored
) {
39 if (result
== AttachmentUploader::UPLOAD_SUCCESS
) {
45 // Call upload attachment several times, see that the supplied callback is
46 // invoked the same number of times with a result of SUCCESS.
47 TEST_F(FakeAttachmentUploaderTest
, UploadAttachment
) {
48 scoped_refptr
<base::RefCountedString
> some_data(new base::RefCountedString
);
49 some_data
->data() = kAttachmentData
;
50 Attachment attachment1
= Attachment::Create(some_data
);
51 Attachment attachment2
= Attachment::Create(some_data
);
52 Attachment attachment3
= Attachment::Create(some_data
);
53 uploader
.UploadAttachment(attachment1
, upload_callback
);
54 uploader
.UploadAttachment(attachment2
, upload_callback
);
55 uploader
.UploadAttachment(attachment3
, upload_callback
);
56 message_loop
.RunUntilIdle();
57 EXPECT_EQ(upload_callback_count
, 3);