Index: dm/DMTestTask.h |
diff --git a/dm/DMTestTask.h b/dm/DMTestTask.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4be57a9f86c4d666d10c4558a977567f38eae7bd |
--- /dev/null |
+++ b/dm/DMTestTask.h |
@@ -0,0 +1,66 @@ |
+#ifndef DMTestTask_DEFINED |
+#define DMTestTask_DEFINED |
+ |
+#include "DMReporter.h" |
+#include "DMJsonWriter.h" |
+#include "DMTask.h" |
+#include "DMTaskRunner.h" |
+#include "SkString.h" |
+#include "SkTemplates.h" |
+#include "Test.h" |
+ |
+// Runs a unit test. |
+namespace DM { |
+ |
+class TestReporter : public skiatest::Reporter { |
+public: |
+ TestReporter() {} |
+ |
+ const SkTArray<SkString>& failures() const { return fFailures; } |
+ |
+private: |
+ bool allowExtendedTest() const SK_OVERRIDE; |
+ bool verbose() const SK_OVERRIDE; |
+ |
+ void onReportFailed(const skiatest::Failure& failure) SK_OVERRIDE { |
+ JsonWriter::AddTestFailure(failure); |
+ |
+ SkString newFailure; |
+ failure.getFailureString(&newFailure); |
+ fFailures.push_back(newFailure); |
+ } |
+ |
+ SkTArray<SkString> fFailures; |
+}; |
+ |
+class CpuTestTask : public CpuTask { |
+public: |
+ CpuTestTask(Reporter*, TaskRunner*, skiatest::TestRegistry::Factory); |
+ |
+ void draw() SK_OVERRIDE; |
+ bool shouldSkip() const SK_OVERRIDE { return false; } |
+ SkString name() const SK_OVERRIDE { return fName; } |
+ |
+private: |
+ TestReporter fTestReporter; |
+ SkAutoTDelete<skiatest::Test> fTest; |
+ const SkString fName; |
+}; |
+ |
+class GpuTestTask : public GpuTask { |
+public: |
+ GpuTestTask(Reporter*, TaskRunner*, skiatest::TestRegistry::Factory); |
+ |
+ void draw(GrContextFactory*) SK_OVERRIDE; |
+ bool shouldSkip() const SK_OVERRIDE; |
+ SkString name() const SK_OVERRIDE { return fName; } |
+ |
+private: |
+ TestReporter fTestReporter; |
+ SkAutoTDelete<skiatest::Test> fTest; |
+ const SkString fName; |
+}; |
+ |
+} // namespace DM |
+ |
+#endif // DMTestTask_DEFINED |