blob: 7975de0e54d4c9965058b943b5c8e84984e6fc17 [file] [log] [blame]
reed@android.comed673312009-02-27 16:24:51 +00001#include <iostream>
reed@android.com5e5adfd2009-03-07 03:39:23 +00002#include "SkGraphics.h"
reed@android.comed673312009-02-27 16:24:51 +00003#include "Test.h"
4
5using namespace skiatest;
6
7class Iter {
8public:
9 Iter(Reporter* r) : fReporter(r) {
10 r->ref();
11 fReg = TestRegistry::Head();
12 }
13
14 ~Iter() {
15 fReporter->unref();
16 }
17
18 Test* next() {
19 if (fReg) {
20 TestRegistry::Factory fact = fReg->factory();
21 fReg = fReg->next();
22 Test* test = fact(NULL);
23 test->setReporter(fReporter);
24 return test;
25 }
26 return NULL;
27 }
28
29private:
30 Reporter* fReporter;
31 const TestRegistry* fReg;
32};
33
34static const char* result2string(Reporter::Result result) {
35 return result == Reporter::kPassed ? "passed" : "FAILED";
36}
37
38class PrintfReporter : public Reporter {
39protected:
40 virtual void onStart(Test* test) {
41 printf("Running %s...\n", test->getName());
42 }
43 virtual void onReport(const char desc[], Reporter::Result result) {
44 printf("\t%s: %s\n", result2string(result), desc);
45 }
46 virtual void onEnd(Test* test) {}
47};
48
reed@android.com5e5adfd2009-03-07 03:39:23 +000049class SkAutoGraphics {
50public:
51 SkAutoGraphics() {
52 SkGraphics::Init();
53 }
54 ~SkAutoGraphics() {
55 SkGraphics::Term();
56 }
57};
58
reed@android.comed673312009-02-27 16:24:51 +000059int main (int argc, char * const argv[]) {
reed@android.com5e5adfd2009-03-07 03:39:23 +000060 SkAutoGraphics ag;
61
reed@android.comed673312009-02-27 16:24:51 +000062 PrintfReporter reporter;
63 Iter iter(&reporter);
64 Test* test;
65
66 while ((test = iter.next()) != NULL) {
67 test->run();
68 SkDELETE(test);
69 }
70
71 int total = reporter.countTests();
72 int passed = reporter.countResults(Reporter::kPassed);
73 int failed = reporter.countResults(Reporter::kFailed);
74 printf("Tests=%d Passed=%d (%g%%) Failed=%d (%g%%)\n", total,
75 passed, passed * 100.f / total,
76 failed, failed * 100.f / total);
77
78 return 0;
79}