10dc5bd149a8b69e8dc6d3b4713b827659c9b0a6bcommit-bot@chromium.org#include "DMTestTask.h"
20dc5bd149a8b69e8dc6d3b4713b827659c9b0a6bcommit-bot@chromium.org#include "DMUtil.h"
30dc5bd149a8b69e8dc6d3b4713b827659c9b0a6bcommit-bot@chromium.org#include "SkCommandLineFlags.h"
40dc5bd149a8b69e8dc6d3b4713b827659c9b0a6bcommit-bot@chromium.org
5125c6cdefe3d297319de6cdbf8210c9329abe99acommit-bot@chromium.org// When PathOps threaded tests get going, they're briefly a big consumer of lots of RAM.
6125c6cdefe3d297319de6cdbf8210c9329abe99acommit-bot@chromium.org// We disable the internal threading there by default on 32-bit builds.
7125c6cdefe3d297319de6cdbf8210c9329abe99acommit-bot@chromium.orgstatic const bool is32Bit = sizeof(void*) == 4;
8125c6cdefe3d297319de6cdbf8210c9329abe99acommit-bot@chromium.org
90dc5bd149a8b69e8dc6d3b4713b827659c9b0a6bcommit-bot@chromium.orgDEFINE_bool2(pathOpsExtended,     x, false, "Run extended pathOps tests.");
10125c6cdefe3d297319de6cdbf8210c9329abe99acommit-bot@chromium.orgDEFINE_bool2(pathOpsSingleThread, z, is32Bit, "Disallow pathOps tests from using threads.");
110dc5bd149a8b69e8dc6d3b4713b827659c9b0a6bcommit-bot@chromium.orgDEFINE_bool2(pathOpsVerbose,      V, false, "Tell pathOps tests to be verbose.");
120dc5bd149a8b69e8dc6d3b4713b827659c9b0a6bcommit-bot@chromium.org
130dc5bd149a8b69e8dc6d3b4713b827659c9b0a6bcommit-bot@chromium.orgnamespace DM {
140dc5bd149a8b69e8dc6d3b4713b827659c9b0a6bcommit-bot@chromium.org
15ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.orgbool TestReporter::allowExtendedTest() const { return FLAGS_pathOpsExtended; }
16ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.orgbool TestReporter::allowThreaded()     const { return !FLAGS_pathOpsSingleThread; }
17ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.orgbool TestReporter::verbose()           const { return FLAGS_pathOpsVerbose; }
18ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org
1938aeb0fd7a2bdab5e44531d96045dffe25c8e2b0commit-bot@chromium.orgstatic SkString test_name(const char* name) {
2038aeb0fd7a2bdab5e44531d96045dffe25c8e2b0commit-bot@chromium.org    SkString result("test ");
2138aeb0fd7a2bdab5e44531d96045dffe25c8e2b0commit-bot@chromium.org    result.append(name);
2238aeb0fd7a2bdab5e44531d96045dffe25c8e2b0commit-bot@chromium.org    return result;
2338aeb0fd7a2bdab5e44531d96045dffe25c8e2b0commit-bot@chromium.org}
2438aeb0fd7a2bdab5e44531d96045dffe25c8e2b0commit-bot@chromium.org
25ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.orgCpuTestTask::CpuTestTask(Reporter* reporter,
26ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org                         TaskRunner* taskRunner,
27ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org                         skiatest::TestRegistry::Factory factory)
28ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org    : CpuTask(reporter, taskRunner)
290dc5bd149a8b69e8dc6d3b4713b827659c9b0a6bcommit-bot@chromium.org    , fTest(factory(NULL))
3038aeb0fd7a2bdab5e44531d96045dffe25c8e2b0commit-bot@chromium.org    , fName(test_name(fTest->getName())) {}
310dc5bd149a8b69e8dc6d3b4713b827659c9b0a6bcommit-bot@chromium.org
32ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.orgGpuTestTask::GpuTestTask(Reporter* reporter,
33ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org                         TaskRunner* taskRunner,
34ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org                         skiatest::TestRegistry::Factory factory)
35ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org    : GpuTask(reporter, taskRunner)
36ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org    , fTest(factory(NULL))
37ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org    , fName(test_name(fTest->getName())) {}
38ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org
39ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org
40ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.orgvoid CpuTestTask::draw() {
410dc5bd149a8b69e8dc6d3b4713b827659c9b0a6bcommit-bot@chromium.org    fTest->setReporter(&fTestReporter);
420dc5bd149a8b69e8dc6d3b4713b827659c9b0a6bcommit-bot@chromium.org    fTest->run();
430dc5bd149a8b69e8dc6d3b4713b827659c9b0a6bcommit-bot@chromium.org    if (!fTest->passed()) {
440dc5bd149a8b69e8dc6d3b4713b827659c9b0a6bcommit-bot@chromium.org        this->fail(fTestReporter.failure());
450dc5bd149a8b69e8dc6d3b4713b827659c9b0a6bcommit-bot@chromium.org    }
460dc5bd149a8b69e8dc6d3b4713b827659c9b0a6bcommit-bot@chromium.org}
470dc5bd149a8b69e8dc6d3b4713b827659c9b0a6bcommit-bot@chromium.org
48ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.orgvoid GpuTestTask::draw(GrContextFactory* grFactory) {
49ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org    fTest->setGrContextFactory(grFactory);
50ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org    fTest->setReporter(&fTestReporter);
51ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org    fTest->run();
52ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org    if (!fTest->passed()) {
53ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org        this->fail(fTestReporter.failure());
54ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org    }
55ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.org}
560dc5bd149a8b69e8dc6d3b4713b827659c9b0a6bcommit-bot@chromium.org
57787227d3560bd8021394b76ada2cb184ecf5c919commit-bot@chromium.orgbool GpuTestTask::shouldSkip() const {
58787227d3560bd8021394b76ada2cb184ecf5c919commit-bot@chromium.org    return kGPUDisabled;
59787227d3560bd8021394b76ada2cb184ecf5c919commit-bot@chromium.org}
60787227d3560bd8021394b76ada2cb184ecf5c919commit-bot@chromium.org
610dc5bd149a8b69e8dc6d3b4713b827659c9b0a6bcommit-bot@chromium.org}  // namespace DM
62