/* * iTchRunnerReporter.h * iTchRunner * * Created by Phil on 07/02/2011. * Copyright 2011 Two Blue Cubes Ltd. All rights reserved. * */ #ifndef TWOBLUECUBES_ITCHRUNNERREPORTER_H_INCLUDED #define TWOBLUECUBES_ITCHRUNNERREPORTER_H_INCLUDED #include "catch.hpp" @protocol iTchRunnerDelegate -(void) testWasRun: (const Catch::AssertionResult*) result; @end namespace Catch { class iTchRunnerReporter : public SharedImpl { public: /////////////////////////////////////////////////////////////////////////// iTchRunnerReporter ( id delegate ) : m_delegate( delegate ) { } /////////////////////////////////////////////////////////////////////////// virtual bool shouldRedirectStdout () const { return true; } /////////////////////////////////////////////////////////////////////////// static std::string getDescription () { return "Captures results for iOS runner"; } /////////////////////////////////////////////////////////////////////////// size_t getSucceeded () const { return m_totals.assertions.passed; } /////////////////////////////////////////////////////////////////////////// size_t getFailed () const { return m_totals.assertions.failed; } /////////////////////////////////////////////////////////////////////////// void reset() { m_totals = Totals(); } private: // IReporter /////////////////////////////////////////////////////////////////////////// virtual void StartTesting () {} /////////////////////////////////////////////////////////////////////////// virtual void EndTesting ( const Totals& totals ) { m_totals = totals; } /////////////////////////////////////////////////////////////////////////// virtual void Result ( const AssertionResult& result ) { [m_delegate testWasRun: &result]; } /////////////////////////////////////////////////////////////////////////// // Deliberately unimplemented: virtual void StartGroup( const std::string& ){} virtual void EndGroup( const std::string&, const Totals& ){} virtual void StartTestCase( const TestCaseInfo& ){} virtual void StartSection( const std::string& sectionName, const std::string& description ) {} virtual void EndSection( const std::string&, const Counts& ){} virtual void EndTestCase( const TestCaseInfo&, const Totals&, const std::string&, const std::string& ){} virtual void Aborted() {} virtual void NoAssertionsInSection( std::string const& sectionName ) {} virtual void NoAssertionsInTestCase( std::string const& testName ) {} private: Totals m_totals; id m_delegate; }; } #endif // TWOBLUECUBES_ITCHRUNNERREPORTER_H_INCLUDED