Page Speed Optimization Libraries  1.2.24.1
net/instaweb/util/public/shared_dynamic_string_map_test_base.h
Go to the documentation of this file.
00001 // Copyright 2011 Google Inc.
00016 
00017 #ifndef NET_INSTAWEB_UTIL_PUBLIC_SHARED_DYNAMIC_STRING_MAP_TEST_BASE_H_
00018 #define NET_INSTAWEB_UTIL_PUBLIC_SHARED_DYNAMIC_STRING_MAP_TEST_BASE_H_
00019 
00020 #include <vector>
00021 
00022 #include "net/instaweb/util/public/abstract_shared_mem.h"
00023 #include "net/instaweb/util/public/basictypes.h"
00024 #include "net/instaweb/util/public/gtest.h"
00025 #include "net/instaweb/util/public/mock_message_handler.h"
00026 #include "net/instaweb/util/public/scoped_ptr.h"
00027 #include "net/instaweb/util/public/shared_mem_test_base.h"
00028 #include "net/instaweb/util/public/string.h"
00029 
00030 namespace net_instaweb {
00031 class SharedDynamicStringMap;
00032 
00033 class SharedDynamicStringMapTestBase : public testing::Test {
00034  protected:
00035   typedef void (SharedDynamicStringMapTestBase::*TestMethod0)();
00036   typedef void (SharedDynamicStringMapTestBase::*TestMethod2)(int, int);
00037 
00038   explicit SharedDynamicStringMapTestBase(SharedMemTestEnv* test_env);
00039 
00042   bool CreateChild(TestMethod0 method);
00043   bool CreateFillChild(TestMethod2 method, int start, int number_of_strings);
00044 
00046   void TestSimple();
00048   void TestCreate();
00050   void TestAdd();
00053   void TestQuarterFull();
00055   void TestFillSingleThread();
00058   void TestFillMultipleNonOverlappingThreads();
00062   void TestFillMultipleOverlappingThreads();
00063 
00064  private:
00065   void AddChild();
00066   void AddFillChild(int start, int number_of_strings);
00067   void AddToFullTable();
00068 
00070   SharedDynamicStringMap* ChildInit();
00072   SharedDynamicStringMap* ParentInit();
00073 
00074   std::vector<GoogleString> strings_;
00075 
00076   scoped_ptr<SharedMemTestEnv> test_env_;
00077   scoped_ptr<AbstractSharedMem> shmem_runtime_;
00078   MockMessageHandler handler_;
00079 
00080   DISALLOW_COPY_AND_ASSIGN(SharedDynamicStringMapTestBase);
00081 };
00082 
00083 template<typename ConcreteTestEnv>
00084 class SharedDynamicStringMapTestTemplate
00085     : public SharedDynamicStringMapTestBase {
00086  public:
00087   SharedDynamicStringMapTestTemplate()
00088       : SharedDynamicStringMapTestBase(new ConcreteTestEnv) {
00089   }
00090 };
00091 
00092 TYPED_TEST_CASE_P(SharedDynamicStringMapTestTemplate);
00093 
00094 TYPED_TEST_P(SharedDynamicStringMapTestTemplate, TestSimple) {
00095   SharedDynamicStringMapTestBase::TestSimple();
00096 }
00097 
00098 TYPED_TEST_P(SharedDynamicStringMapTestTemplate, TestCreate) {
00099   SharedDynamicStringMapTestBase::TestCreate();
00100 }
00101 
00102 TYPED_TEST_P(SharedDynamicStringMapTestTemplate, TestAdd) {
00103   SharedDynamicStringMapTestBase::TestAdd();
00104 }
00105 
00106 TYPED_TEST_P(SharedDynamicStringMapTestTemplate, TestQuarterFull) {
00107   SharedDynamicStringMapTestBase::TestQuarterFull();
00108 }
00109 
00110 TYPED_TEST_P(SharedDynamicStringMapTestTemplate, TestFillSingleThread) {
00111   SharedDynamicStringMapTestBase::TestFillSingleThread();
00112 }
00113 
00114 TYPED_TEST_P(SharedDynamicStringMapTestTemplate,
00115              TestFillMultipleNonOverlappingThreads) {
00116   SharedDynamicStringMapTestBase::TestFillMultipleNonOverlappingThreads();
00117 }
00118 
00119 TYPED_TEST_P(SharedDynamicStringMapTestTemplate,
00120              TestFillMultipleOverlappingThreads) {
00121   SharedDynamicStringMapTestBase::TestFillMultipleOverlappingThreads();
00122 }
00123 
00124 REGISTER_TYPED_TEST_CASE_P(SharedDynamicStringMapTestTemplate, TestSimple,
00125                            TestCreate, TestAdd, TestQuarterFull,
00126                            TestFillSingleThread,
00127                            TestFillMultipleNonOverlappingThreads,
00128                            TestFillMultipleOverlappingThreads);
00129 
00130 }  
00131 
00132 #endif  ///< NET_INSTAWEB_UTIL_PUBLIC_SHARED_DYNAMIC_STRING_MAP_TEST_BASE_H_
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines