Page Speed Optimization Libraries
1.3.25.1
|
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_