1 #ifndef UNITTEST_SCOPEDCURRENTTEST_H 2 #define UNITTEST_SCOPEDCURRENTTEST_H 3 4 #include "UnitTest++/CurrentTest.h" 5 #include <cstddef> 6 7 class ScopedCurrentTest 8 { 9 public: ScopedCurrentTest()10 ScopedCurrentTest() 11 : m_oldTestResults(UnitTest::CurrentTest::Results()) 12 , m_oldTestDetails(UnitTest::CurrentTest::Details()) 13 { 14 } 15 16 explicit ScopedCurrentTest(UnitTest::TestResults& newResults, const UnitTest::TestDetails* newDetails = NULL) m_oldTestResults(UnitTest::CurrentTest::Results ())17 : m_oldTestResults(UnitTest::CurrentTest::Results()) 18 , m_oldTestDetails(UnitTest::CurrentTest::Details()) 19 { 20 UnitTest::CurrentTest::Results() = &newResults; 21 22 if (newDetails != NULL) 23 UnitTest::CurrentTest::Details() = newDetails; 24 } 25 ~ScopedCurrentTest()26 ~ScopedCurrentTest() 27 { 28 UnitTest::CurrentTest::Results() = m_oldTestResults; 29 UnitTest::CurrentTest::Details() = m_oldTestDetails; 30 } 31 32 private: 33 UnitTest::TestResults* m_oldTestResults; 34 const UnitTest::TestDetails* m_oldTestDetails; 35 }; 36 37 #endif 38