Page Speed Optimization Libraries
1.5.27.2
|
00001 // Copyright 2011 Google Inc. 00016 00017 #ifndef NET_INSTAWEB_UTIL_PUBLIC_SHARED_CIRCULAR_BUFFER_TEST_BASE_H_ 00018 #define NET_INSTAWEB_UTIL_PUBLIC_SHARED_CIRCULAR_BUFFER_TEST_BASE_H_ 00019 00020 #include "net/instaweb/util/public/abstract_shared_mem.h" 00021 #include "net/instaweb/util/public/basictypes.h" 00022 #include "net/instaweb/util/public/gtest.h" 00023 #include "net/instaweb/util/public/mock_message_handler.h" 00024 #include "net/instaweb/util/public/scoped_ptr.h" 00025 #include "net/instaweb/util/public/shared_mem_test_base.h" 00026 #include "net/instaweb/util/public/string_util.h" 00027 00028 namespace net_instaweb { 00029 class SharedCircularBuffer; 00030 00032 class SharedCircularBufferTestBase : public testing::Test { 00033 protected: 00034 typedef void (SharedCircularBufferTestBase::*TestMethod)(); 00035 00036 explicit SharedCircularBufferTestBase(SharedMemTestEnv* test_env); 00037 00038 bool CreateChild(TestMethod method); 00039 00041 void TestCreate(); 00043 void TestAdd(); 00045 void TestClear(); 00047 void TestCircular(); 00048 00049 private: 00051 void TestCreateChild(); 00052 void TestAddChild(); 00053 void TestClearChild(); 00055 void TestChildWrite(); 00057 void TestChildBuff(); 00058 00060 SharedCircularBuffer* ChildInit(); 00062 SharedCircularBuffer* ParentInit(); 00063 00064 scoped_ptr<SharedMemTestEnv> test_env_; 00065 scoped_ptr<AbstractSharedMem> shmem_runtime_; 00066 MockMessageHandler handler_; 00070 StringPiece message_; 00073 StringPiece expected_result_; 00074 00075 DISALLOW_COPY_AND_ASSIGN(SharedCircularBufferTestBase); 00076 }; 00077 00078 template<typename ConcreteTestEnv> 00079 class SharedCircularBufferTestTemplate : public SharedCircularBufferTestBase { 00080 public: 00081 SharedCircularBufferTestTemplate() 00082 : SharedCircularBufferTestBase(new ConcreteTestEnv) { 00083 } 00084 }; 00085 00086 TYPED_TEST_CASE_P(SharedCircularBufferTestTemplate); 00087 00088 TYPED_TEST_P(SharedCircularBufferTestTemplate, TestCreate) { 00089 SharedCircularBufferTestBase::TestCreate(); 00090 } 00091 00092 TYPED_TEST_P(SharedCircularBufferTestTemplate, TestAdd) { 00093 SharedCircularBufferTestBase::TestAdd(); 00094 } 00095 00096 TYPED_TEST_P(SharedCircularBufferTestTemplate, TestClear) { 00097 SharedCircularBufferTestBase::TestClear(); 00098 } 00099 00100 TYPED_TEST_P(SharedCircularBufferTestTemplate, TestCircular) { 00101 SharedCircularBufferTestBase::TestCircular(); 00102 } 00103 00104 REGISTER_TYPED_TEST_CASE_P(SharedCircularBufferTestTemplate, TestCreate, 00105 TestAdd, TestClear, TestCircular); 00106 00107 } 00108 #endif ///< NET_INSTAWEB_UTIL_PUBLIC_SHARED_CIRCULAR_BUFFER_TEST_BASE_H_