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 verbose() const SK_OVERRIDE; 23 24 virtual void onReportFailed(const SkString& desc) SK_OVERRIDE { 25 fFailure = desc; 26 } 27 28 SkString fFailure; 29}; 30 31class CpuTestTask : public CpuTask { 32public: 33 CpuTestTask(Reporter*, TaskRunner*, skiatest::TestRegistry::Factory); 34 35 virtual void draw() SK_OVERRIDE; 36 virtual bool shouldSkip() const SK_OVERRIDE { return false; } 37 virtual SkString name() const SK_OVERRIDE { return fName; } 38 39private: 40 TestReporter fTestReporter; 41 SkAutoTDelete<skiatest::Test> fTest; 42 const SkString fName; 43}; 44 45class GpuTestTask : public GpuTask { 46public: 47 GpuTestTask(Reporter*, TaskRunner*, skiatest::TestRegistry::Factory); 48 49 virtual void draw(GrContextFactory*) SK_OVERRIDE; 50 virtual bool shouldSkip() const SK_OVERRIDE; 51 virtual SkString name() const SK_OVERRIDE { return fName; } 52 53private: 54 TestReporter fTestReporter; 55 SkAutoTDelete<skiatest::Test> fTest; 56 const SkString fName; 57}; 58 59} // namespace DM 60 61#endif // DMTestTask_DEFINED 62