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 #ifndef MOJO_SYSTEM_CORE_TEST_BASE_H_ 6 #define MOJO_SYSTEM_CORE_TEST_BASE_H_ 7 8 #include "base/compiler_specific.h" 9 #include "base/macros.h" 10 #include "base/synchronization/lock.h" 11 #include "mojo/public/c/system/types.h" 12 #include "testing/gtest/include/gtest/gtest.h" 13 14 namespace mojo { 15 namespace system { 16 17 class Core; 18 19 namespace test { 20 21 class CoreTestBase_MockHandleInfo; 22 23 class CoreTestBase : public testing::Test { 24 public: 25 typedef CoreTestBase_MockHandleInfo MockHandleInfo; 26 27 CoreTestBase(); 28 virtual ~CoreTestBase(); 29 30 virtual void SetUp() OVERRIDE; 31 virtual void TearDown() OVERRIDE; 32 33 protected: 34 // |info| must remain alive until the returned handle is closed. 35 MojoHandle CreateMockHandle(MockHandleInfo* info); 36 core()37 Core* core() { return core_; } 38 39 private: 40 Core* core_; 41 42 DISALLOW_COPY_AND_ASSIGN(CoreTestBase); 43 }; 44 45 class CoreTestBase_MockHandleInfo { 46 public: 47 CoreTestBase_MockHandleInfo(); 48 ~CoreTestBase_MockHandleInfo(); 49 50 unsigned GetCtorCallCount() const; 51 unsigned GetDtorCallCount() const; 52 unsigned GetCloseCallCount() const; 53 unsigned GetWriteMessageCallCount() const; 54 unsigned GetReadMessageCallCount() const; 55 unsigned GetWriteDataCallCount() const; 56 unsigned GetBeginWriteDataCallCount() const; 57 unsigned GetEndWriteDataCallCount() const; 58 unsigned GetReadDataCallCount() const; 59 unsigned GetBeginReadDataCallCount() const; 60 unsigned GetEndReadDataCallCount() const; 61 unsigned GetAddWaiterCallCount() const; 62 unsigned GetRemoveWaiterCallCount() const; 63 unsigned GetCancelAllWaitersCallCount() const; 64 65 // For use by |MockDispatcher|: 66 void IncrementCtorCallCount(); 67 void IncrementDtorCallCount(); 68 void IncrementCloseCallCount(); 69 void IncrementWriteMessageCallCount(); 70 void IncrementReadMessageCallCount(); 71 void IncrementWriteDataCallCount(); 72 void IncrementBeginWriteDataCallCount(); 73 void IncrementEndWriteDataCallCount(); 74 void IncrementReadDataCallCount(); 75 void IncrementBeginReadDataCallCount(); 76 void IncrementEndReadDataCallCount(); 77 void IncrementAddWaiterCallCount(); 78 void IncrementRemoveWaiterCallCount(); 79 void IncrementCancelAllWaitersCallCount(); 80 81 private: 82 mutable base::Lock lock_; // Protects the following members. 83 unsigned ctor_call_count_; 84 unsigned dtor_call_count_; 85 unsigned close_call_count_; 86 unsigned write_message_call_count_; 87 unsigned read_message_call_count_; 88 unsigned write_data_call_count_; 89 unsigned begin_write_data_call_count_; 90 unsigned end_write_data_call_count_; 91 unsigned read_data_call_count_; 92 unsigned begin_read_data_call_count_; 93 unsigned end_read_data_call_count_; 94 unsigned add_waiter_call_count_; 95 unsigned remove_waiter_call_count_; 96 unsigned cancel_all_waiters_call_count_; 97 98 DISALLOW_COPY_AND_ASSIGN(CoreTestBase_MockHandleInfo); 99 }; 100 101 } // namespace test 102 } // namespace system 103 } // namespace mojo 104 105 #endif // MOJO_SYSTEM_CORE_TEST_BASE_H_ 106