• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4 
5 #include "sync/internal_api/public/attachments/fake_attachment_uploader.h"
6 
7 #include "base/bind.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"
13 
14 namespace syncer {
15 
16 namespace {
17 
18 const char kAttachmentData[] = "some data";
19 
20 }  // namespace
21 
22 class FakeAttachmentUploaderTest : public testing::Test {
23  protected:
SetUp()24   virtual void SetUp() {
25     upload_callback_count = 0;
26     upload_callback = base::Bind(&FakeAttachmentUploaderTest::Increment,
27                                  base::Unretained(this),
28                                  &upload_callback_count);
29   }
30   base::MessageLoop message_loop;
31   FakeAttachmentUploader uploader;
32   int upload_callback_count;
33   AttachmentUploader::UploadCallback upload_callback;
34 
35  private:
Increment(int * success_count,const AttachmentUploader::UploadResult & result,const AttachmentId & ignored)36   void Increment(int* success_count,
37                  const AttachmentUploader::UploadResult& result,
38                  const AttachmentId& ignored) {
39     if (result == AttachmentUploader::UPLOAD_SUCCESS) {
40       ++(*success_count);
41     }
42   }
43 };
44 
45 // Call upload attachment several times, see that the supplied callback is
46 // invoked the same number of times with a result of SUCCESS.
TEST_F(FakeAttachmentUploaderTest,UploadAttachment)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);
58 }
59 
60 }  // namespace syncer
61