1 #ifndef UNITTEST_RECORDINGREPORTER_H 2 #define UNITTEST_RECORDINGREPORTER_H 3 4 #include "UnitTest++/TestReporter.h" 5 #include <cstring> 6 7 #include "UnitTest++/TestDetails.h" 8 9 struct RecordingReporter : public UnitTest::TestReporter 10 { 11 private: 12 enum { kMaxStringLength = 256 }; 13 14 public: RecordingReporterRecordingReporter15 RecordingReporter() 16 : testRunCount(0) 17 , testFailedCount(0) 18 , lastFailedLine(0) 19 , testFinishedCount(0) 20 , lastFinishedTestTime(0) 21 , summaryTotalTestCount(0) 22 , summaryFailedTestCount(0) 23 , summaryFailureCount(0) 24 , summarySecondsElapsed(0) 25 { 26 lastStartedSuite[0] = '\0'; 27 lastStartedTest[0] = '\0'; 28 lastFailedFile[0] = '\0'; 29 lastFailedSuite[0] = '\0'; 30 lastFailedTest[0] = '\0'; 31 lastFailedMessage[0] = '\0'; 32 lastFinishedSuite[0] = '\0'; 33 lastFinishedTest[0] = '\0'; 34 } 35 ReportTestStartRecordingReporter36 virtual void ReportTestStart(UnitTest::TestDetails const& test) 37 { 38 using namespace std; 39 40 ++testRunCount; 41 strcpy(lastStartedSuite, test.suiteName); 42 strcpy(lastStartedTest, test.testName); 43 } 44 ReportFailureRecordingReporter45 virtual void ReportFailure(UnitTest::TestDetails const& test, char const* failure) 46 { 47 using namespace std; 48 49 ++testFailedCount; 50 strcpy(lastFailedFile, test.filename); 51 lastFailedLine = test.lineNumber; 52 strcpy(lastFailedSuite, test.suiteName); 53 strcpy(lastFailedTest, test.testName); 54 strcpy(lastFailedMessage, failure); 55 } 56 ReportTestFinishRecordingReporter57 virtual void ReportTestFinish(UnitTest::TestDetails const& test, float testDuration) 58 { 59 using namespace std; 60 61 ++testFinishedCount; 62 strcpy(lastFinishedSuite, test.suiteName); 63 strcpy(lastFinishedTest, test.testName); 64 lastFinishedTestTime = testDuration; 65 } 66 ReportSummaryRecordingReporter67 virtual void ReportSummary(int totalTestCount, int failedTestCount, int failureCount, float secondsElapsed) 68 { 69 summaryTotalTestCount = totalTestCount; 70 summaryFailedTestCount = failedTestCount; 71 summaryFailureCount = failureCount; 72 summarySecondsElapsed = secondsElapsed; 73 } 74 75 int testRunCount; 76 char lastStartedSuite[kMaxStringLength]; 77 char lastStartedTest[kMaxStringLength]; 78 79 int testFailedCount; 80 char lastFailedFile[kMaxStringLength]; 81 int lastFailedLine; 82 char lastFailedSuite[kMaxStringLength]; 83 char lastFailedTest[kMaxStringLength]; 84 char lastFailedMessage[kMaxStringLength]; 85 86 int testFinishedCount; 87 char lastFinishedSuite[kMaxStringLength]; 88 char lastFinishedTest[kMaxStringLength]; 89 float lastFinishedTestTime; 90 91 int summaryTotalTestCount; 92 int summaryFailedTestCount; 93 int summaryFailureCount; 94 float summarySecondsElapsed; 95 }; 96 97 98 #endif 99