1#include "Test.h" 2 3using namespace skiatest; 4 5Reporter::Reporter() { 6 this->resetReporting(); 7} 8 9void Reporter::resetReporting() { 10 fCurrTest = NULL; 11 fTestCount = 0; 12 sk_bzero(fResultCount, sizeof(fResultCount)); 13} 14 15void Reporter::startTest(Test* test) { 16 SkASSERT(NULL == fCurrTest); 17 fCurrTest = test; 18 this->onStart(test); 19 fTestCount += 1; 20 fCurrTestSuccess = true; // we're optimistic 21} 22 23void Reporter::report(const char desc[], Result result) { 24 if (NULL == desc) { 25 desc = "<no description>"; 26 } 27 this->onReport(desc, result); 28 fResultCount[result] += 1; 29 if (kFailed == result) { 30 fCurrTestSuccess = false; 31 } 32} 33 34void Reporter::endTest(Test* test) { 35 SkASSERT(test == fCurrTest); 36 this->onEnd(test); 37 fCurrTest = NULL; 38} 39 40/////////////////////////////////////////////////////////////////////////////// 41 42Test::Test() : fReporter(NULL) {} 43 44Test::~Test() { 45 SkSafeUnref(fReporter); 46} 47 48void Test::setReporter(Reporter* r) { 49 SkRefCnt_SafeAssign(fReporter, r); 50} 51 52const char* Test::getName() { 53 if (fName.size() == 0) { 54 this->onGetName(&fName); 55 } 56 return fName.c_str(); 57} 58 59bool Test::run() { 60 fReporter->startTest(this); 61 this->onRun(fReporter); 62 fReporter->endTest(this); 63 return fReporter->getCurrSuccess(); 64} 65 66