Page Speed Optimization Libraries  1.2.24.1
net/instaweb/util/public/shared_circular_buffer_test_base.h
Go to the documentation of this file.
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_
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines