Home | History | Annotate | Download | only in core
      1 // Copyright 2013 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 "mojo/core/core_test_base.h"
      6 
      7 #include <stddef.h>
      8 #include <stdint.h>
      9 
     10 #include <vector>
     11 
     12 #include "base/logging.h"
     13 #include "base/macros.h"
     14 #include "base/memory/ref_counted.h"
     15 #include "mojo/core/configuration.h"
     16 #include "mojo/core/core.h"
     17 #include "mojo/core/dispatcher.h"
     18 #include "mojo/core/user_message_impl.h"
     19 
     20 namespace mojo {
     21 namespace core {
     22 namespace test {
     23 
     24 namespace {
     25 
     26 // MockDispatcher --------------------------------------------------------------
     27 
     28 class MockDispatcher : public Dispatcher {
     29  public:
     30   static scoped_refptr<MockDispatcher> Create(
     31       CoreTestBase::MockHandleInfo* info) {
     32     return base::WrapRefCounted(new MockDispatcher(info));
     33   }
     34 
     35   // Dispatcher:
     36   Type GetType() const override { return Type::UNKNOWN; }
     37 
     38   MojoResult Close() override {
     39     info_->IncrementCloseCallCount();
     40     return MOJO_RESULT_OK;
     41   }
     42 
     43   MojoResult WriteMessage(
     44       std::unique_ptr<ports::UserMessageEvent> message_event) override {
     45     info_->IncrementWriteMessageCallCount();
     46     return MOJO_RESULT_OK;
     47   }
     48 
     49   MojoResult ReadMessage(
     50       std::unique_ptr<ports::UserMessageEvent>* message_event) override {
     51     info_->IncrementReadMessageCallCount();
     52     return MOJO_RESULT_OK;
     53   }
     54 
     55   MojoResult WriteData(const void* elements,
     56                        uint32_t* num_bytes,
     57                        const MojoWriteDataOptions& options) override {
     58     info_->IncrementWriteDataCallCount();
     59     return MOJO_RESULT_UNIMPLEMENTED;
     60   }
     61 
     62   MojoResult BeginWriteData(void** buffer,
     63                             uint32_t* buffer_num_bytes) override {
     64     info_->IncrementBeginWriteDataCallCount();
     65     return MOJO_RESULT_UNIMPLEMENTED;
     66   }
     67 
     68   MojoResult EndWriteData(uint32_t num_bytes_written) override {
     69     info_->IncrementEndWriteDataCallCount();
     70     return MOJO_RESULT_UNIMPLEMENTED;
     71   }
     72 
     73   MojoResult ReadData(const MojoReadDataOptions& options,
     74                       void* elements,
     75                       uint32_t* num_bytes) override {
     76     info_->IncrementReadDataCallCount();
     77     return MOJO_RESULT_UNIMPLEMENTED;
     78   }
     79 
     80   MojoResult BeginReadData(const void** buffer,
     81                            uint32_t* buffer_num_bytes) override {
     82     info_->IncrementBeginReadDataCallCount();
     83     return MOJO_RESULT_UNIMPLEMENTED;
     84   }
     85 
     86   MojoResult EndReadData(uint32_t num_bytes_read) override {
     87     info_->IncrementEndReadDataCallCount();
     88     return MOJO_RESULT_UNIMPLEMENTED;
     89   }
     90 
     91  private:
     92   explicit MockDispatcher(CoreTestBase::MockHandleInfo* info) : info_(info) {
     93     CHECK(info_);
     94     info_->IncrementCtorCallCount();
     95   }
     96 
     97   ~MockDispatcher() override { info_->IncrementDtorCallCount(); }
     98 
     99   CoreTestBase::MockHandleInfo* const info_;
    100 
    101   DISALLOW_COPY_AND_ASSIGN(MockDispatcher);
    102 };
    103 
    104 }  // namespace
    105 
    106 // CoreTestBase ----------------------------------------------------------------
    107 
    108 CoreTestBase::CoreTestBase() {}
    109 
    110 CoreTestBase::~CoreTestBase() {}
    111 
    112 MojoHandle CoreTestBase::CreateMockHandle(CoreTestBase::MockHandleInfo* info) {
    113   scoped_refptr<MockDispatcher> dispatcher = MockDispatcher::Create(info);
    114   return core()->AddDispatcher(dispatcher);
    115 }
    116 
    117 Core* CoreTestBase::core() {
    118   return Core::Get();
    119 }
    120 
    121 // CoreTestBase_MockHandleInfo -------------------------------------------------
    122 
    123 CoreTestBase_MockHandleInfo::CoreTestBase_MockHandleInfo()
    124     : ctor_call_count_(0),
    125       dtor_call_count_(0),
    126       close_call_count_(0),
    127       write_message_call_count_(0),
    128       read_message_call_count_(0),
    129       write_data_call_count_(0),
    130       begin_write_data_call_count_(0),
    131       end_write_data_call_count_(0),
    132       read_data_call_count_(0),
    133       begin_read_data_call_count_(0),
    134       end_read_data_call_count_(0) {}
    135 
    136 CoreTestBase_MockHandleInfo::~CoreTestBase_MockHandleInfo() {}
    137 
    138 unsigned CoreTestBase_MockHandleInfo::GetCtorCallCount() const {
    139   base::AutoLock locker(lock_);
    140   return ctor_call_count_;
    141 }
    142 
    143 unsigned CoreTestBase_MockHandleInfo::GetDtorCallCount() const {
    144   base::AutoLock locker(lock_);
    145   return dtor_call_count_;
    146 }
    147 
    148 unsigned CoreTestBase_MockHandleInfo::GetCloseCallCount() const {
    149   base::AutoLock locker(lock_);
    150   return close_call_count_;
    151 }
    152 
    153 unsigned CoreTestBase_MockHandleInfo::GetWriteMessageCallCount() const {
    154   base::AutoLock locker(lock_);
    155   return write_message_call_count_;
    156 }
    157 
    158 unsigned CoreTestBase_MockHandleInfo::GetReadMessageCallCount() const {
    159   base::AutoLock locker(lock_);
    160   return read_message_call_count_;
    161 }
    162 
    163 unsigned CoreTestBase_MockHandleInfo::GetWriteDataCallCount() const {
    164   base::AutoLock locker(lock_);
    165   return write_data_call_count_;
    166 }
    167 
    168 unsigned CoreTestBase_MockHandleInfo::GetBeginWriteDataCallCount() const {
    169   base::AutoLock locker(lock_);
    170   return begin_write_data_call_count_;
    171 }
    172 
    173 unsigned CoreTestBase_MockHandleInfo::GetEndWriteDataCallCount() const {
    174   base::AutoLock locker(lock_);
    175   return end_write_data_call_count_;
    176 }
    177 
    178 unsigned CoreTestBase_MockHandleInfo::GetReadDataCallCount() const {
    179   base::AutoLock locker(lock_);
    180   return read_data_call_count_;
    181 }
    182 
    183 unsigned CoreTestBase_MockHandleInfo::GetBeginReadDataCallCount() const {
    184   base::AutoLock locker(lock_);
    185   return begin_read_data_call_count_;
    186 }
    187 
    188 unsigned CoreTestBase_MockHandleInfo::GetEndReadDataCallCount() const {
    189   base::AutoLock locker(lock_);
    190   return end_read_data_call_count_;
    191 }
    192 
    193 void CoreTestBase_MockHandleInfo::IncrementCtorCallCount() {
    194   base::AutoLock locker(lock_);
    195   ctor_call_count_++;
    196 }
    197 
    198 void CoreTestBase_MockHandleInfo::IncrementDtorCallCount() {
    199   base::AutoLock locker(lock_);
    200   dtor_call_count_++;
    201 }
    202 
    203 void CoreTestBase_MockHandleInfo::IncrementCloseCallCount() {
    204   base::AutoLock locker(lock_);
    205   close_call_count_++;
    206 }
    207 
    208 void CoreTestBase_MockHandleInfo::IncrementWriteMessageCallCount() {
    209   base::AutoLock locker(lock_);
    210   write_message_call_count_++;
    211 }
    212 
    213 void CoreTestBase_MockHandleInfo::IncrementReadMessageCallCount() {
    214   base::AutoLock locker(lock_);
    215   read_message_call_count_++;
    216 }
    217 
    218 void CoreTestBase_MockHandleInfo::IncrementWriteDataCallCount() {
    219   base::AutoLock locker(lock_);
    220   write_data_call_count_++;
    221 }
    222 
    223 void CoreTestBase_MockHandleInfo::IncrementBeginWriteDataCallCount() {
    224   base::AutoLock locker(lock_);
    225   begin_write_data_call_count_++;
    226 }
    227 
    228 void CoreTestBase_MockHandleInfo::IncrementEndWriteDataCallCount() {
    229   base::AutoLock locker(lock_);
    230   end_write_data_call_count_++;
    231 }
    232 
    233 void CoreTestBase_MockHandleInfo::IncrementReadDataCallCount() {
    234   base::AutoLock locker(lock_);
    235   read_data_call_count_++;
    236 }
    237 
    238 void CoreTestBase_MockHandleInfo::IncrementBeginReadDataCallCount() {
    239   base::AutoLock locker(lock_);
    240   begin_read_data_call_count_++;
    241 }
    242 
    243 void CoreTestBase_MockHandleInfo::IncrementEndReadDataCallCount() {
    244   base::AutoLock locker(lock_);
    245   end_read_data_call_count_++;
    246 }
    247 
    248 }  // namespace test
    249 }  // namespace core
    250 }  // namespace mojo
    251