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

Unified Diff: ppapi/tests/test_case.h

Issue 8536031: Reland http://codereview.chromium.org/8477015 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge AGAIN 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ppapi/tests/test_buffer.cc ('k') | ppapi/tests/test_case.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ppapi/tests/test_case.h
diff --git a/ppapi/tests/test_case.h b/ppapi/tests/test_case.h
index 05e0d32a6b816510156462457ff8c1cfd1116d8d..e974c507811f212ee8e20088f41904052c9b9d20 100644
--- a/ppapi/tests/test_case.h
+++ b/ppapi/tests/test_case.h
@@ -37,9 +37,12 @@ class TestCase {
// Default implementation just returns true.
virtual bool Init();
- // Override to implement the test. It will be called after the plugin is
- // first displayed.
- virtual void RunTest() = 0;
+ // Override to implement the test case. It will be called after the plugin is
+ // first displayed, passing a string. If the string is empty, the
+ // should run all tests for this test case. Otherwise, it should run the test
+ // whose name matches test_filter exactly (if there is one). This should
+ // generally be implemented using the RUN_TEST* macros.
+ virtual void RunTests(const std::string& test_filter) = 0;
static std::string MakeFailureMessage(const char* file, int line,
const char* cmd);
@@ -83,6 +86,10 @@ class TestCase {
// Makes sure the test is run over HTTP.
bool EnsureRunningOverHTTP();
+ // Return true if the given test name matches the filter. This is true if
+ // (a) filter is empty or (b) test_name and filter match exactly.
+ bool MatchesFilter(const std::string& test_name, const std::string& filter);
+
// Pointer to the instance that owns us.
TestingInstance* instance_;
@@ -140,24 +147,24 @@ class TestCaseFactory {
// Helper macro for calling functions implementing specific tests in the
// RunTest function. This assumes the function name is TestFoo where Foo is the
// test |name|.
-#define RUN_TEST(name) \
- do { \
+#define RUN_TEST(name, test_filter) \
+ if (MatchesFilter(#name, test_filter)) { \
force_async_ = false; \
instance_->LogTest(#name, Test##name()); \
- } while (false)
+ }
// Like RUN_TEST above but forces functions taking callbacks to complete
// asynchronously on success or error.
-#define RUN_TEST_FORCEASYNC(name) \
- do { \
+#define RUN_TEST_FORCEASYNC(name, test_filter) \
+ if (MatchesFilter(#name"ForceAsync", test_filter)) { \
force_async_ = true; \
instance_->LogTest(#name"ForceAsync", Test##name()); \
- } while (false)
+ }
-#define RUN_TEST_FORCEASYNC_AND_NOT(name) \
+#define RUN_TEST_FORCEASYNC_AND_NOT(name, test_filter) \
do { \
- RUN_TEST_FORCEASYNC(name); \
- RUN_TEST(name); \
+ RUN_TEST_FORCEASYNC(name, test_filter); \
+ RUN_TEST(name, test_filter); \
} while (false)
« 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