summaryrefslogtreecommitdiff
path: root/Runtime/Testing/ConsoleTestReporter.h
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-08-14 22:50:43 +0800
committerchai <chaifix@163.com>2019-08-14 22:50:43 +0800
commit15740faf9fe9fe4be08965098bbf2947e096aeeb (patch)
treea730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/Testing/ConsoleTestReporter.h
+Unity Runtime codeHEADmaster
Diffstat (limited to 'Runtime/Testing/ConsoleTestReporter.h')
-rw-r--r--Runtime/Testing/ConsoleTestReporter.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/Runtime/Testing/ConsoleTestReporter.h b/Runtime/Testing/ConsoleTestReporter.h
new file mode 100644
index 0000000..37f296b
--- /dev/null
+++ b/Runtime/Testing/ConsoleTestReporter.h
@@ -0,0 +1,63 @@
+#pragma once
+
+#include "External/UnitTest++/src/TestReporter.h"
+#include "External/UnitTest++/src/TestDetails.h"
+
+
+/// Unit test reporter that logs to console output.
+class ConsoleTestReporter : public UnitTest::TestReporter
+{
+public:
+
+ ConsoleTestReporter ();
+ virtual ~ConsoleTestReporter ();
+
+ virtual void ReportTestStart (UnitTest::TestDetails const& test);
+ virtual void ReportFailure (UnitTest::TestDetails const& test, char const* failure);
+ virtual void ReportTestFinish (UnitTest::TestDetails const& test, float secondsElapsed);
+ virtual void ReportSummary (int totalTestCount, int failedTestCount, int failureCount, float secondsElapsed);
+ void ReportMessage (LogType type, std::string message);
+
+ void ExpectLogMessage (LogType type, const char* logFragment);
+
+ void SetShowOnlySummary (bool value) { m_ShowOnlySummary = value; }
+ void SetTestNameColumnIndex (int value) { m_TestNameColumnIndex = value; }
+ void SetResultColumnIndex (int value) { m_ResultColumnIndex = value; }
+
+ bool IsCurrentlyRunningTest () const { return m_IsCurrentlyRunningTest; }
+
+ static ConsoleTestReporter* GetInstance();
+
+private:
+
+ bool m_IsCurrentlyRunningTest;
+ bool m_ShowOnlySummary;
+ int m_TestNameColumnIndex;
+ int m_ResultColumnIndex;
+
+ struct Failure
+ {
+ std::string text;
+ std::string fileName;
+ int lineNumber;
+ };
+
+ typedef std::pair<LogType, std::string> LogMessage;
+
+ std::vector<UnitTest::TestDetails> m_FailedTests;
+
+ bool m_CurrentTestIsFailure;
+ UnitTest::TestDetails m_CurrentTest;
+ std::vector<Failure> m_CurrentTestFailures;
+ std::vector<LogMessage> m_UnexpectedLogMessagesForCurrentTest;
+ std::vector<LogMessage> m_ExpectedLogMessagesForCurrentTest;
+
+ void MarkCurrentTestAsFailure ()
+ {
+ if (m_CurrentTestIsFailure)
+ return;
+
+ m_CurrentTestIsFailure = true;
+ m_FailedTests.push_back (m_CurrentTest);
+ }
+};