blob: 87f59209b2f2dd63aba1cec230b5e65bfff94560 [file] [log] [blame]
commit-bot@chromium.org0dc5bd12014-02-26 16:31:22 +00001#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
commit-bot@chromium.orgef57b7e2014-02-28 20:31:31 +000014class TestReporter : public skiatest::Reporter {
commit-bot@chromium.org0dc5bd12014-02-26 16:31:22 +000015public:
commit-bot@chromium.orgef57b7e2014-02-28 20:31:31 +000016 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);
commit-bot@chromium.org0dc5bd12014-02-26 16:31:22 +000035
36 virtual void draw() SK_OVERRIDE;
commit-bot@chromium.org0dc5bd12014-02-26 16:31:22 +000037 virtual bool shouldSkip() const SK_OVERRIDE { return false; }
38 virtual SkString name() const SK_OVERRIDE { return fName; }
39
40private:
commit-bot@chromium.orgef57b7e2014-02-28 20:31:31 +000041 TestReporter fTestReporter;
42 SkAutoTDelete<skiatest::Test> fTest;
43 const SkString fName;
44};
commit-bot@chromium.org0dc5bd12014-02-26 16:31:22 +000045
commit-bot@chromium.orgef57b7e2014-02-28 20:31:31 +000046class GpuTestTask : public GpuTask {
47public:
48 GpuTestTask(Reporter*, TaskRunner*, skiatest::TestRegistry::Factory);
commit-bot@chromium.org0dc5bd12014-02-26 16:31:22 +000049
commit-bot@chromium.orgef57b7e2014-02-28 20:31:31 +000050 virtual void draw(GrContextFactory*) SK_OVERRIDE;
51 virtual bool shouldSkip() const SK_OVERRIDE { return false; }
52 virtual SkString name() const SK_OVERRIDE { return fName; }
commit-bot@chromium.org0dc5bd12014-02-26 16:31:22 +000053
commit-bot@chromium.orgef57b7e2014-02-28 20:31:31 +000054private:
commit-bot@chromium.org0dc5bd12014-02-26 16:31:22 +000055 TestReporter fTestReporter;
56 SkAutoTDelete<skiatest::Test> fTest;
57 const SkString fName;
58};
59
60} // namespace DM
61
62#endif // DMTestTask_DEFINED