From ed673310e2551e64d8196f7776d7d4c92085f8c2 Mon Sep 17 00:00:00 2001 From: "reed@android.com" Date: Fri, 27 Feb 2009 16:24:51 +0000 Subject: add initial unittest framework (tests) move some previous unittests out of core classes and into tests git-svn-id: http://skia.googlecode.com/svn/trunk@96 2bbb7eff-a529-9590-31e7-b0007b416f81 --- tests/Test.h | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 tests/Test.h (limited to 'tests/Test.h') diff --git a/tests/Test.h b/tests/Test.h new file mode 100644 index 0000000000..8d2eb87468 --- /dev/null +++ b/tests/Test.h @@ -0,0 +1,98 @@ +#ifndef skiatest_Test_DEFINED +#define skiatest_Test_DEFINED + +#include "SkRefCnt.h" +#include "SkString.h" +#include "SkTRegistry.h" + +namespace skiatest { + + class Test; + + class Reporter : public SkRefCnt { + public: + Reporter(); + + enum Result { + kPassed, // must begin with 0 + kFailed, + ///// + kLastResult = kFailed + }; + + void resetReporting(); + int countTests() const { return fTestCount; } + int countResults(Result r) { + SkASSERT((unsigned)r <= kLastResult); + return fResultCount[r]; + } + + void startTest(Test*); + void report(const char testDesc[], Result); + void endTest(Test*); + + // helpers for tests + void assertTrue(bool cond, const char desc[]) { + if (!cond) { + this->report(desc, kFailed); + } + } + void assertFalse(bool cond, const char desc[]) { + if (cond) { + this->report(desc, kFailed); + } + } + void reportFailed(const char desc[]) { + this->report(desc, kFailed); + } + void reportFailed(const SkString& desc) { + this->report(desc.c_str(), kFailed); + } + + protected: + virtual void onStart(Test*) {} + virtual void onReport(const char desc[], Result) {} + virtual void onEnd(Test*) {} + + private: + Test* fCurrTest; + int fTestCount; + int fResultCount[kLastResult+1]; + + typedef SkRefCnt INHERITED; + }; + + class Test { + public: + Test(); + virtual ~Test(); + + Reporter* getReporter() const { return fReporter; } + void setReporter(Reporter*); + + const char* getName(); + void run(); + + protected: + virtual void onGetName(SkString*) = 0; + virtual void onRun(Reporter*) = 0; + + private: + Reporter* fReporter; + SkString fName; + }; + + typedef SkTRegistry TestRegistry; +} + +#define REPORTER_ASSERT(r, cond) \ + do { \ + if (!(cond)) { \ + SkString desc; \ + desc.printf("%s:%d: %s", __FILE__, __LINE__, #cond); \ + r->reportFailed(desc); \ + } \ + } while(0) + + +#endif -- cgit v1.2.3