blob: e1246c34d6a0219be89548675e9be39d79d5f80d [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
10using namespace skiatest;
11
12Reporter::Reporter() {
13 this->resetReporting();
14}
15
16void Reporter::resetReporting() {
17 fCurrTest = NULL;
18 fTestCount = 0;
reed@android.com4516f472009-06-29 16:25:36 +000019 sk_bzero(fResultCount, sizeof(fResultCount));
reed@android.comed673312009-02-27 16:24:51 +000020}
21
22void Reporter::startTest(Test* test) {
23 SkASSERT(NULL == fCurrTest);
24 fCurrTest = test;
25 this->onStart(test);
26 fTestCount += 1;
reed@android.comeeb3b7f2009-04-09 04:06:54 +000027 fCurrTestSuccess = true; // we're optimistic
reed@android.comed673312009-02-27 16:24:51 +000028}
29
30void Reporter::report(const char desc[], Result result) {
31 if (NULL == desc) {
32 desc = "<no description>";
33 }
34 this->onReport(desc, result);
35 fResultCount[result] += 1;
reed@android.comeeb3b7f2009-04-09 04:06:54 +000036 if (kFailed == result) {
37 fCurrTestSuccess = false;
38 }
reed@android.comed673312009-02-27 16:24:51 +000039}
40
41void Reporter::endTest(Test* test) {
42 SkASSERT(test == fCurrTest);
43 this->onEnd(test);
44 fCurrTest = NULL;
45}
46
47///////////////////////////////////////////////////////////////////////////////
48
49Test::Test() : fReporter(NULL) {}
50
51Test::~Test() {
reed@google.com82065d62011-02-07 15:30:46 +000052 SkSafeUnref(fReporter);
reed@android.comed673312009-02-27 16:24:51 +000053}
54
55void Test::setReporter(Reporter* r) {
56 SkRefCnt_SafeAssign(fReporter, r);
57}
58
59const char* Test::getName() {
60 if (fName.size() == 0) {
61 this->onGetName(&fName);
62 }
63 return fName.c_str();
64}
65
reed@android.comeeb3b7f2009-04-09 04:06:54 +000066bool Test::run() {
reed@android.comed673312009-02-27 16:24:51 +000067 fReporter->startTest(this);
68 this->onRun(fReporter);
69 fReporter->endTest(this);
reed@android.comeeb3b7f2009-04-09 04:06:54 +000070 return fReporter->getCurrSuccess();
reed@android.comed673312009-02-27 16:24:51 +000071}
72