blob: 79d3aad58180350dc235fd6abdba8f430dc59516 [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
2/*
3 * Copyright 2011 Google Inc.
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
reed@android.comed673312009-02-27 16:24:51 +00008#include "Test.h"
9
bsalomon@google.comcf8fb1f2012-08-02 14:03:32 +000010#include "SkTLazy.h"
11
12#if SK_SUPPORT_GPU
bsalomon@google.coma8e686e2011-08-16 15:45:58 +000013#include "GrContext.h"
tomhudson@google.com6bf38b52012-02-14 15:11:59 +000014#include "gl/SkNativeGLContext.h"
bsalomon@google.comcf8fb1f2012-08-02 14:03:32 +000015#else
16class GrContext;
17#endif
bsalomon@google.coma8e686e2011-08-16 15:45:58 +000018
robertphillips@google.coma22e2112012-08-16 14:58:06 +000019SK_DEFINE_INST_COUNT(skiatest::Reporter)
20
reed@android.comed673312009-02-27 16:24:51 +000021using namespace skiatest;
22
caryclark@google.comd54e1e92013-04-10 15:57:31 +000023Reporter::Reporter()
24 : fTestCount(0) {
reed@android.comed673312009-02-27 16:24:51 +000025 this->resetReporting();
26}
27
28void Reporter::resetReporting() {
29 fCurrTest = NULL;
30 fTestCount = 0;
reed@android.com4516f472009-06-29 16:25:36 +000031 sk_bzero(fResultCount, sizeof(fResultCount));
reed@android.comed673312009-02-27 16:24:51 +000032}
33
34void Reporter::startTest(Test* test) {
35 SkASSERT(NULL == fCurrTest);
36 fCurrTest = test;
37 this->onStart(test);
38 fTestCount += 1;
reed@android.comeeb3b7f2009-04-09 04:06:54 +000039 fCurrTestSuccess = true; // we're optimistic
reed@android.comed673312009-02-27 16:24:51 +000040}
41
42void Reporter::report(const char desc[], Result result) {
43 if (NULL == desc) {
44 desc = "<no description>";
45 }
46 this->onReport(desc, result);
47 fResultCount[result] += 1;
reed@android.comeeb3b7f2009-04-09 04:06:54 +000048 if (kFailed == result) {
49 fCurrTestSuccess = false;
50 }
reed@android.comed673312009-02-27 16:24:51 +000051}
52
53void Reporter::endTest(Test* test) {
54 SkASSERT(test == fCurrTest);
55 this->onEnd(test);
56 fCurrTest = NULL;
57}
58
59///////////////////////////////////////////////////////////////////////////////
60
61Test::Test() : fReporter(NULL) {}
62
63Test::~Test() {
reed@google.com82065d62011-02-07 15:30:46 +000064 SkSafeUnref(fReporter);
reed@android.comed673312009-02-27 16:24:51 +000065}
66
67void Test::setReporter(Reporter* r) {
68 SkRefCnt_SafeAssign(fReporter, r);
69}
70
71const char* Test::getName() {
72 if (fName.size() == 0) {
73 this->onGetName(&fName);
74 }
75 return fName.c_str();
76}
77
reed@android.comeeb3b7f2009-04-09 04:06:54 +000078bool Test::run() {
reed@android.comed673312009-02-27 16:24:51 +000079 fReporter->startTest(this);
80 this->onRun(fReporter);
81 fReporter->endTest(this);
reed@android.comeeb3b7f2009-04-09 04:06:54 +000082 return fReporter->getCurrSuccess();
reed@android.comed673312009-02-27 16:24:51 +000083}
84
bsalomon@google.coma8e686e2011-08-16 15:45:58 +000085///////////////////////////////////////////////////////////////////////////////
86
djsollen@google.com0945bde2012-11-29 15:28:45 +000087#if SK_SUPPORT_GPU
bsalomon@google.com67b915d2013-02-04 16:13:32 +000088#include "GrContextFactory.h"
89GrContextFactory gGrContextFactory;
djsollen@google.com0945bde2012-11-29 15:28:45 +000090#endif
91
bsalomon@google.com67b915d2013-02-04 16:13:32 +000092GrContextFactory* GpuTest::GetGrContextFactory() {
djsollen@google.com0945bde2012-11-29 15:28:45 +000093#if SK_SUPPORT_GPU
bsalomon@google.com67b915d2013-02-04 16:13:32 +000094 return &gGrContextFactory;
95#else
96 return NULL;
djsollen@google.com0945bde2012-11-29 15:28:45 +000097#endif
98}
99
bsalomon@google.com67b915d2013-02-04 16:13:32 +0000100void GpuTest::DestroyContexts() {
bsalomon@google.comcf8fb1f2012-08-02 14:03:32 +0000101#if SK_SUPPORT_GPU
bsalomon@google.com67b915d2013-02-04 16:13:32 +0000102 gGrContextFactory.destroyContexts();
bsalomon@google.comcf8fb1f2012-08-02 14:03:32 +0000103#endif
bsalomon@google.coma8e686e2011-08-16 15:45:58 +0000104}