Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(600)

Side by Side Diff: ppapi/tests/test_case.h

Issue 8477015: Make it possible to enable/disable specific ppapi tests. Migrate PostMessage tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix license headers. Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ppapi/tests/test_buffer.cc ('k') | ppapi/tests/test_case.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef PPAPI_TESTS_TEST_CASE_H_ 5 #ifndef PPAPI_TESTS_TEST_CASE_H_
6 #define PPAPI_TESTS_TEST_CASE_H_ 6 #define PPAPI_TESTS_TEST_CASE_H_
7 7
8 #include <cmath> 8 #include <cmath>
9 #include <limits> 9 #include <limits>
10 #include <string> 10 #include <string>
(...skipping 19 matching lines...) Expand all
30 // Individual classes of tests derive from this generic test case. 30 // Individual classes of tests derive from this generic test case.
31 class TestCase { 31 class TestCase {
32 public: 32 public:
33 explicit TestCase(TestingInstance* instance); 33 explicit TestCase(TestingInstance* instance);
34 virtual ~TestCase(); 34 virtual ~TestCase();
35 35
36 // Optionally override to do testcase specific initialization. 36 // Optionally override to do testcase specific initialization.
37 // Default implementation just returns true. 37 // Default implementation just returns true.
38 virtual bool Init(); 38 virtual bool Init();
39 39
40 // Override to implement the test. It will be called after the plugin is 40 // Override to implement the test case. It will be called after the plugin is
41 // first displayed. 41 // first displayed, passing a string. If the string is empty, the
42 virtual void RunTest() = 0; 42 // should run all tests for this test case. Otherwise, it should run the test
43 // whose name matches test_filter exactly (if there is one). This should
44 // generally be implemented using the RUN_TEST* macros.
45 virtual void RunTests(const std::string& test_filter) = 0;
43 46
44 static std::string MakeFailureMessage(const char* file, int line, 47 static std::string MakeFailureMessage(const char* file, int line,
45 const char* cmd); 48 const char* cmd);
46 49
47 #if !(defined __native_client__) 50 #if !(defined __native_client__)
48 // Returns the scriptable test object for the current test, if any. 51 // Returns the scriptable test object for the current test, if any.
49 // Internally, this uses CreateTestObject which each test overrides. 52 // Internally, this uses CreateTestObject which each test overrides.
50 pp::VarPrivate GetTestObject(); 53 pp::VarPrivate GetTestObject();
51 #endif 54 #endif
52 55
(...skipping 23 matching lines...) Expand all
76 // caller. Return NULL if there is no supported test object (the default). 79 // caller. Return NULL if there is no supported test object (the default).
77 virtual pp::deprecated::ScriptableObject* CreateTestObject(); 80 virtual pp::deprecated::ScriptableObject* CreateTestObject();
78 #endif 81 #endif
79 82
80 // Initializes the testing interface. 83 // Initializes the testing interface.
81 bool InitTestingInterface(); 84 bool InitTestingInterface();
82 85
83 // Makes sure the test is run over HTTP. 86 // Makes sure the test is run over HTTP.
84 bool EnsureRunningOverHTTP(); 87 bool EnsureRunningOverHTTP();
85 88
89 // Return true if the given test name matches the filter. This is true if
90 // (a) filter is empty or (b) test_name and filter match exactly.
91 bool MatchesFilter(const std::string& test_name, const std::string& filter);
92
86 // Pointer to the instance that owns us. 93 // Pointer to the instance that owns us.
87 TestingInstance* instance_; 94 TestingInstance* instance_;
88 95
89 // NULL unless InitTestingInterface is called. 96 // NULL unless InitTestingInterface is called.
90 const PPB_Testing_Dev* testing_interface_; 97 const PPB_Testing_Dev* testing_interface_;
91 98
92 // Force asynchronous completion of any operation taking a callback. 99 // Force asynchronous completion of any operation taking a callback.
93 bool force_async_; 100 bool force_async_;
94 101
95 private: 102 private:
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 static TestCase* Test##name##_FactoryMethod(TestingInstance* instance) { \ 140 static TestCase* Test##name##_FactoryMethod(TestingInstance* instance) { \
134 return new Test##name(instance); \ 141 return new Test##name(instance); \
135 } \ 142 } \
136 static TestCaseFactory g_Test##name_factory( \ 143 static TestCaseFactory g_Test##name_factory( \
137 #name, &Test##name##_FactoryMethod \ 144 #name, &Test##name##_FactoryMethod \
138 ) 145 )
139 146
140 // Helper macro for calling functions implementing specific tests in the 147 // Helper macro for calling functions implementing specific tests in the
141 // RunTest function. This assumes the function name is TestFoo where Foo is the 148 // RunTest function. This assumes the function name is TestFoo where Foo is the
142 // test |name|. 149 // test |name|.
143 #define RUN_TEST(name) \ 150 #define RUN_TEST(name, test_filter) \
144 do { \ 151 if (MatchesFilter(#name, test_filter)) { \
145 force_async_ = false; \ 152 force_async_ = false; \
146 instance_->LogTest(#name, Test##name()); \ 153 instance_->LogTest(#name, Test##name()); \
147 } while (false) 154 }
148 155
149 // Like RUN_TEST above but forces functions taking callbacks to complete 156 // Like RUN_TEST above but forces functions taking callbacks to complete
150 // asynchronously on success or error. 157 // asynchronously on success or error.
151 #define RUN_TEST_FORCEASYNC(name) \ 158 #define RUN_TEST_FORCEASYNC(name, test_filter) \
152 do { \ 159 if (MatchesFilter(#name"ForceAsync", test_filter)) { \
153 force_async_ = true; \ 160 force_async_ = true; \
154 instance_->LogTest(#name"ForceAsync", Test##name()); \ 161 instance_->LogTest(#name"ForceAsync", Test##name()); \
155 } while (false) 162 }
156 163
157 #define RUN_TEST_FORCEASYNC_AND_NOT(name) \ 164 #define RUN_TEST_FORCEASYNC_AND_NOT(name, test_filter) \
158 do { \ 165 do { \
159 RUN_TEST_FORCEASYNC(name); \ 166 RUN_TEST_FORCEASYNC(name, test_filter); \
160 RUN_TEST(name); \ 167 RUN_TEST(name, test_filter); \
161 } while (false) 168 } while (false)
162 169
163 170
164 // Helper macros for checking values in tests, and returning a location 171 // Helper macros for checking values in tests, and returning a location
165 // description of the test fails. 172 // description of the test fails.
166 #define ASSERT_TRUE(cmd) \ 173 #define ASSERT_TRUE(cmd) \
167 if (!(cmd)) { \ 174 if (!(cmd)) { \
168 return MakeFailureMessage(__FILE__, __LINE__, #cmd); \ 175 return MakeFailureMessage(__FILE__, __LINE__, #cmd); \
169 } 176 }
170 #define ASSERT_FALSE(cmd) ASSERT_TRUE(!(cmd)) 177 #define ASSERT_FALSE(cmd) ASSERT_TRUE(!(cmd))
171 #define ASSERT_EQ(a, b) ASSERT_TRUE((a) == (b)) 178 #define ASSERT_EQ(a, b) ASSERT_TRUE((a) == (b))
172 #define ASSERT_NE(a, b) ASSERT_TRUE((a) != (b)) 179 #define ASSERT_NE(a, b) ASSERT_TRUE((a) != (b))
173 180
174 #define ASSERT_DOUBLE_EQ(a, b) ASSERT_TRUE( \ 181 #define ASSERT_DOUBLE_EQ(a, b) ASSERT_TRUE( \
175 std::fabs((a)-(b)) <= std::numeric_limits<double>::epsilon()) 182 std::fabs((a)-(b)) <= std::numeric_limits<double>::epsilon())
176 183
177 #define PASS() return std::string() 184 #define PASS() return std::string()
178 185
179 #endif // PPAPI_TESTS_TEST_CASE_H_ 186 #endif // PPAPI_TESTS_TEST_CASE_H_
OLDNEW
« no previous file with comments | « ppapi/tests/test_buffer.cc ('k') | ppapi/tests/test_case.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698