1#ifndef DMTestTask_DEFINED 2#define DMTestTask_DEFINED 3 4#include "DMReporter.h" 5#include "DMTask.h" 6#include "DMTaskRunner.h" 7#include "SkString.h" 8#include "SkTemplates.h" 9#include "Test.h" 10 11// Runs a unit test. 12namespace DM { 13 14class TestReporter : public skiatest::Reporter { 15public: 16 TestReporter() {} 17 18 const char* failure() const { return fFailure.c_str(); } 19 20private: 21 virtual bool allowExtendedTest() const SK_OVERRIDE; 22 virtual bool allowThreaded() const SK_OVERRIDE; 23 virtual bool verbose() const SK_OVERRIDE; 24 25 virtual void onReportFailed(const SkString& desc) SK_OVERRIDE { 26 fFailure = desc; 27 } 28 29 SkString fFailure; 30}; 31 32class CpuTestTask : public CpuTask { 33public: 34 CpuTestTask(Reporter*, TaskRunner*, skiatest::TestRegistry::Factory); 35 36 virtual void draw() SK_OVERRIDE; 37 virtual bool shouldSkip() const SK_OVERRIDE { return false; } 38 virtual SkString name() const SK_OVERRIDE { return fName; } 39 40private: 41 TestReporter fTestReporter; 42 SkAutoTDelete<skiatest::Test> fTest; 43 const SkString fName; 44}; 45 46class GpuTestTask : public GpuTask { 47public: 48 GpuTestTask(Reporter*, TaskRunner*, skiatest::TestRegistry::Factory); 49 50 virtual void draw(GrContextFactory*) SK_OVERRIDE; 51 virtual bool shouldSkip() const SK_OVERRIDE; 52 virtual SkString name() const SK_OVERRIDE { return fName; } 53 54private: 55 TestReporter fTestReporter; 56 SkAutoTDelete<skiatest::Test> fTest; 57 const SkString fName; 58}; 59 60} // namespace DM 61 62#endif // DMTestTask_DEFINED 63