2011-12-28 10:23:32 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 /*
 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-09 23:24:00 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								 *   Created  by  Phil  on  22 / 10 / 2010. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *   Copyright  2010  Two  Blue  Cubes  Ltd .  All  rights  reserved . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *   Distributed  under  the  Boost  Software  License ,  Version  1.0 .  ( See  accompanying 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *   file  LICENSE_1_0 . txt  or  copy  at  http : //www.boost.org/LICENSE_1_0.txt)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2012-09-17 01:42:29 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# ifndef TWOBLUECUBES_CATCH_RUNNER_IMPL_HPP_INCLUDED 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define TWOBLUECUBES_CATCH_RUNNER_IMPL_HPP_INCLUDED 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-09 23:24:00 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-01-11 09:13:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "catch_interfaces_runner.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-31 22:46:51 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "catch_interfaces_reporter.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-11 08:16:39 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "catch_interfaces_exception.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-01 00:29:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "catch_config.hpp" 
 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-05 21:16:54 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "catch_test_registry.hpp" 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-08-14 19:30:30 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "catch_test_case_info.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-09 23:24:00 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								# include  "catch_capture.hpp" 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-23 08:49:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "catch_totals.hpp" 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-05 19:32:52 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "catch_running_test.hpp" 
 
							 
						 
					
						
							
								
									
										
										
										
											2012-08-14 19:35:30 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  "catch_test_spec.h" 
 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-09 23:24:00 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-08 08:42:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# include  <set> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  <string> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 08:02:20 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								namespace  Catch  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    class  StreamRedirect  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    
							 
						 
					
						
							
								
									
										
										
										
											2011-02-21 08:50:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    public : 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 08:02:20 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        StreamRedirect (  std : : ostream &  stream ,  std : : string &  targetString  ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-21 08:50:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        :    m_stream (  stream  ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            m_prevBuf (  stream . rdbuf ( )  ) , 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 08:02:20 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_targetString (  targetString  )  
							 
						 
					
						
							
								
									
										
										
										
											2011-02-21 08:50:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        {             
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            stream . rdbuf (  m_oss . rdbuf ( )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 08:02:20 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        ~ StreamRedirect ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-12-28 10:23:32 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_targetString  + =  m_oss . str ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-21 08:50:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_stream . rdbuf (  m_prevBuf  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    private : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        std : : ostream &  m_stream ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        std : : streambuf *  m_prevBuf ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        std : : ostringstream  m_oss ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        std : : string &  m_targetString ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-04 21:09:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-01-28 18:56:26 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    ///////////////////////////////////////////////////////////////////////////
 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 08:02:20 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    class  Runner  :  public  IResultCapture ,  public  IRunner  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    
							 
						 
					
						
							
								
									
										
										
										
											2013-04-23 18:58:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        Runner (  Runner  const &  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        void  operator  = (  Runner  const &  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-29 23:18:16 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        
							 
						 
					
						
							
								
									
										
										
										
											2010-11-09 23:24:00 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    public : 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-11 19:48:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-04-23 18:58:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        explicit  Runner (  Config  const &  config ,  Ptr < IStreamingReporter >  const &  reporter  ) 
							 
						 
					
						
							
								
									
										
										
										
											2012-12-01 23:54:17 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        :    m_runInfo (  config . data ( ) . name  ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            m_context (  getCurrentMutableContext ( )  ) , 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-21 18:52:09 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_runningTest (  NULL  ) , 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-21 08:50:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_config (  config  ) , 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-30 19:15:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_reporter (  reporter  ) , 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-21 18:52:09 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_prevRunner (  & m_context . getRunner ( )  ) , 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-08 08:22:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_prevResultCapture (  & m_context . getResultCapture ( )  ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            m_prevConfig (  m_context . getConfig ( )  ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-09 23:24:00 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        { 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-21 18:52:09 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_context . setRunner (  this  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-05 20:50:47 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_context . setConfig (  & m_config  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-21 18:52:09 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_context . setResultCapture (  this  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-12-01 23:54:17 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_reporter - > testRunStarting (  m_runInfo  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-09 23:24:00 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        
							 
						 
					
						
							
								
									
										
										
										
											2012-08-13 07:46:10 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        virtual  ~ Runner ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-03 09:04:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_reporter - > testRunEnded (  TestRunStats (  m_runInfo ,  m_totals ,  aborting ( )  )  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-21 18:52:09 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_context . setRunner (  m_prevRunner  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-05 20:50:47 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_context . setConfig (  NULL  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-21 18:52:09 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_context . setResultCapture (  m_prevResultCapture  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-08 08:22:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_context . setConfig (  m_prevConfig  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-09 23:24:00 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2012-07-16 08:58:28 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-01-13 21:51:44 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        void  testGroupStarting (  std : : string  const &  testSpec ,  std : : size_t  groupIndex ,  std : : size_t  groupsCount  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            m_reporter - > testGroupStarting (  GroupInfo (  testSpec ,  groupIndex ,  groupsCount  )  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-30 09:13:27 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2013-01-13 21:51:44 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        void  testGroupEnded (  std : : string  const &  testSpec ,  Totals  const &  totals ,  std : : size_t  groupIndex ,  std : : size_t  groupsCount  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            m_reporter - > testGroupEnded (  TestGroupStats (  GroupInfo (  testSpec ,  groupIndex ,  groupsCount  ) ,  totals ,  aborting ( )  )  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-30 09:13:27 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-04-23 18:58:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        Totals  runMatching (  std : : string  const &  testSpec ,  std : : size_t  groupIndex ,  std : : size_t  groupsCount  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-07-16 08:58:28 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-11-22 19:17:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            std : : vector < TestCase >  matchingTests  =  getRegistryHub ( ) . getTestCaseRegistry ( ) . getMatchingTestCases (  testSpec  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-08-15 19:12:51 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-08-23 20:08:50 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            Totals  totals ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-25 21:43:36 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            
							 
						 
					
						
							
								
									
										
										
										
											2013-01-13 21:51:44 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            testGroupStarting (  testSpec ,  groupIndex ,  groupsCount  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-08-15 19:12:51 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-11-22 19:17:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            std : : vector < TestCase > : : const_iterator  it  =  matchingTests . begin ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            std : : vector < TestCase > : : const_iterator  itEnd  =  matchingTests . end ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-08-23 20:08:50 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            for ( ;  it  ! =  itEnd ;  + + it  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                totals  + =  runTest (  * it  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-08-15 19:12:51 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-01-13 21:51:44 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            testGroupEnded (  testSpec ,  totals ,  groupIndex ,  groupsCount  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-08-15 19:12:51 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            return  totals ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-09 23:24:00 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2012-08-15 19:12:51 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-04-23 18:58:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        Totals  runTest (  TestCase  const &  testCase  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-23 08:49:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            Totals  prevTotals  =  m_totals ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-19 19:30:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            std : : string  redirectedCout ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            std : : string  redirectedCerr ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-25 11:19:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            TestCaseInfo  testInfo  =  testCase . getTestCaseInfo ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-25 21:43:36 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-11-30 19:15:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_reporter - > testCaseStarting (  testInfo  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-19 19:30:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            
							 
						 
					
						
							
								
									
										
										
										
											2012-11-29 09:05:51 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_runningTest  =  new  RunningTest (  testCase  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-30 06:48:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 08:02:20 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            do  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                do  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-26 23:23:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    runCurrentTest (  redirectedCout ,  redirectedCerr  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-01 19:40:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                while (  m_runningTest - > hasUntestedSections ( )  & &  ! aborting ( )  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-09 23:24:00 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-01 19:40:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            while (  getCurrentContext ( ) . advanceGeneratorsForCurrentTest ( )  & &  ! aborting ( )  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-19 08:52:25 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-11-21 08:19:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            Totals  deltaTotals  =  m_totals . delta (  prevTotals  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-26 23:28:00 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            bool  missingAssertions  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-21 08:19:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if (  deltaTotals . assertions . total ( )  = =  0   & & 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								               (  m_config . data ( ) . warnings  &  ConfigData : : WarnAbout : : NoAssertions  )  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                m_totals . assertions . failed + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                deltaTotals  =  m_totals . delta (  prevTotals  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-26 23:28:00 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                missingAssertions  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-21 08:19:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-26 23:28:00 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-11-21 08:19:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_totals . testCases  + =  deltaTotals . testCases ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-01-03 09:04:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_reporter - > testCaseEnded (  TestCaseStats (    testInfo , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                        deltaTotals , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                        redirectedCout , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                        redirectedCerr , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                        missingAssertions , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                        aborting ( )  )  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-21 08:19:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-02-21 08:50:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            delete  m_runningTest ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            m_runningTest  =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-19 19:30:01 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-08-15 19:12:51 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            return  deltaTotals ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-09 23:24:00 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-17 19:50:59 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-04-23 18:58:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        Config  const &  config ( )  const  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-05 20:50:47 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            return  m_config ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        
							 
						 
					
						
							
								
									
										
										
										
											2011-01-11 09:13:31 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    private :  // IResultCapture
 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-31 20:49:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-04-23 18:58:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        virtual  void  acceptMessage (  MessageBuilder  const &  messageBuilder  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-02 19:58:04 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_messages . push_back (  messageBuilder . build ( )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-04-23 18:58:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        virtual  ResultAction : : Value  acceptExpression (  ExpressionResultBuilder  const &  assertionResult ,  AssertionInfo  const &  assertionInfo  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-04 21:09:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_lastAssertionInfo  =  assertionInfo ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            return  actOnCurrentResult (  assertionResult . buildResult (  assertionInfo  )  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-31 20:49:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-04-23 18:58:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        virtual  void  assertionEnded (  AssertionResult  const &  result  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 08:02:20 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if (  result . getResultType ( )  = =  ResultWas : : Ok  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-23 08:49:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                m_totals . assertions . passed + + ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-27 22:18:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-13 09:44:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            else  if (  ! result . isOk ( )  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-23 08:49:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                m_totals . assertions . failed + + ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-27 22:05:13 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-27 22:18:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            
							 
						 
					
						
							
								
									
										
										
										
											2013-02-02 20:36:36 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_reporter - > assertionEnded (  AssertionStats (  result ,  m_messages ,  m_totals  )  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-17 17:22:37 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-02-02 20:36:36 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            // Reset working state
 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-02 19:58:04 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_lastAssertionInfo  =  AssertionInfo (  " " ,  m_lastAssertionInfo . lineInfo ,  " {Unknown expression after the reported line} "  ,  m_lastAssertionInfo . resultDisposition  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            m_messages . clear ( ) ;             
							 
						 
					
						
							
								
									
										
										
										
											2010-11-09 23:24:00 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-01 19:40:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 08:02:20 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        virtual  bool  sectionStarted  ( 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-30 08:58:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            SectionInfo  const &  sectionInfo , 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-23 08:57:51 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            Counts &  assertions 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-11 19:48:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-29 19:40:44 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        { 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-21 19:43:55 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            std : : ostringstream  oss ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-30 08:58:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            oss  < <  sectionInfo . name  < <  " @ "  < <  sectionInfo . lineInfo ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-21 19:43:55 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-11-04 21:09:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-04-21 19:43:55 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if (  ! m_runningTest - > addSection (  oss . str ( )  )  ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-19 08:52:25 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-11-30 08:58:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_lastAssertionInfo . lineInfo  =  sectionInfo . lineInfo ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-04 21:39:16 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-11-30 19:15:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_reporter - > sectionStarting (  sectionInfo  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-29 09:05:51 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-02-23 08:57:51 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            assertions  =  m_totals . assertions ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-29 22:52:27 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            
							 
						 
					
						
							
								
									
										
										
										
											2010-11-29 19:40:44 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        
							 
						 
					
						
							
								
									
										
										
										
											2012-11-30 08:58:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        virtual  void  sectionEnded (  SectionInfo  const &  info ,  Counts  const &  prevAssertions  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-19 19:45:09 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if (  std : : uncaught_exception ( )  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                m_unfinishedSections . push_back (  UnfinishedSections (  info ,  prevAssertions  )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            
							 
						 
					
						
							
								
									
										
										
										
											2012-08-31 08:10:36 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            Counts  assertions  =  m_totals . assertions  -  prevAssertions ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-30 08:58:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            bool  missingAssertions  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-21 08:49:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if (  assertions . total ( )  = =  0  & & 
							 
						 
					
						
							
								
									
										
										
										
											2012-08-31 08:10:36 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								               (  m_config . data ( ) . warnings  &  ConfigData : : WarnAbout : : NoAssertions  )  & & 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								               ! m_runningTest - > isBranchSection ( )  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                m_totals . assertions . failed + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                assertions . failed + + ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-30 08:58:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                missingAssertions  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-08-31 08:10:36 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2013-03-04 12:19:15 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_runningTest - > endSection (  info . name ,  false  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-30 08:58:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-01-03 09:04:46 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_reporter - > sectionEnded (  SectionStats (  info ,  assertions ,  missingAssertions  )  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-02 19:58:04 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_messages . clear ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-29 19:40:44 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-27 11:09:34 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-02-02 19:58:04 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        virtual  void  pushScopedMessage (  ScopedMessageBuilder  const &  _builder  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            m_messages . push_back (  _builder . build ( )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        virtual  void  popScopedMessage (  ScopedMessageBuilder  const &  _builder  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            m_messages . erase (  std : : remove (  m_messages . begin ( ) ,  m_messages . end ( ) ,  _builder  ) ,  m_messages . end ( )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-11 19:48:48 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-02-02 19:58:04 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        virtual  bool  shouldDebugBreak ( )  const  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-27 20:49:19 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            return  m_config . shouldDebugBreak ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-26 23:23:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 08:02:20 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        virtual  std : : string  getCurrentTestName ( )  const  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-21 08:50:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            return  m_runningTest 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-25 11:19:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                ?  m_runningTest - > getTestCase ( ) . getTestCaseInfo ( ) . name 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-21 08:50:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                :  " " ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-26 23:23:33 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-10 08:30:13 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-10-16 08:27:21 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        virtual  const  AssertionResult *  getLastResult ( )  const  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-10 08:30:13 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            return  & m_lastResult ;             
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-01 19:40:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-08-23 20:08:50 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    public : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // !TBD We need to do this another way!
 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-01 19:40:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        bool  aborting ( )  const  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-02 23:08:07 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            return  m_totals . assertions . failed  = =  static_cast < std : : size_t > (  m_config . getCutoff ( )  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-01 19:40:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2012-08-23 20:08:50 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    private : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-04-23 18:58:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        ResultAction : : Value  actOnCurrentResult (  AssertionResult  const &  result  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-04 21:09:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_lastResult  =  result ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-02 19:58:04 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            assertionEnded (  m_lastResult  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-10-05 18:35:01 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-06-01 19:40:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            ResultAction : : Value  action  =  ResultAction : : None ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            
							 
						 
					
						
							
								
									
										
										
										
											2012-11-13 09:44:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            if (  ! m_lastResult . isOk ( )  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-01 19:40:27 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                action  =  ResultAction : : Failed ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if (  shouldDebugBreak ( )  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    action  =  ( ResultAction : : Value ) (  action  |  ResultAction : : Debug  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                if (  aborting ( )  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    action  =  ( ResultAction : : Value ) (  action  |  ResultAction : : Abort  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            return  action ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-03-15 18:01:44 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 08:02:20 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        void  runCurrentTest (  std : : string &  redirectedCout ,  std : : string &  redirectedCerr  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            try  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-25 11:19:55 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                m_lastAssertionInfo  =  AssertionInfo (  " TEST_CASE " ,  m_runningTest - > getTestCase ( ) . getTestCaseInfo ( ) . lineInfo ,  " " ,  ResultDisposition : : Normal  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-21 08:50:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                m_runningTest - > reset ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-04 00:05:16 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                
							 
						 
					
						
							
								
									
										
										
										
											2012-11-30 19:15:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                if (  m_reporter - > getPreferences ( ) . shouldRedirectStdOut  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-17 09:28:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    StreamRedirect  coutRedir (  std : : cout ,  redirectedCout  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    StreamRedirect  cerrRedir (  std : : cerr ,  redirectedCerr  ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-22 19:17:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    m_runningTest - > getTestCase ( ) . invoke ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-17 09:28:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 08:02:20 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                else  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-22 19:17:20 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                    m_runningTest - > getTestCase ( ) . invoke ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-17 09:28:21 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-21 08:50:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                m_runningTest - > ranToCompletion ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-19 08:52:25 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 08:02:20 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            catch (  TestFailureException &  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-19 08:52:25 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                // This just means the test was aborted due to failure
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-16 08:02:20 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            catch ( . . . )  { 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-04 21:09:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                ExpressionResultBuilder  exResult (  ResultWas : : ThrewException  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                exResult  < <  translateActiveException ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                actOnCurrentResult (  exResult . buildResult (  m_lastAssertionInfo  )   ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-19 08:52:25 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-19 19:45:09 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            for (  std : : vector < UnfinishedSections > : : const_iterator  it  =  m_unfinishedSections . begin ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                        itEnd  =  m_unfinishedSections . end ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    it  ! =  itEnd ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    + + it  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                sectionEnded (  it - > info ,  it - > prevAssertions  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            m_unfinishedSections . clear ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-04 00:05:16 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            m_messages . clear ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-19 08:52:25 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-10 21:46:46 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-09 23:24:00 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    private : 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-19 19:45:09 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        struct  UnfinishedSections  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            UnfinishedSections (  SectionInfo  const &  _info ,  Counts  const &  _prevAssertions  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            :  info (  _info  ) ,  prevAssertions (  _prevAssertions  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            SectionInfo  info ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            Counts  prevAssertions ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-12-01 23:54:17 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        TestRunInfo  m_runInfo ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-21 18:52:09 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        IMutableContext &  m_context ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-02-21 08:50:05 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        RunningTest *  m_runningTest ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-10-16 08:27:21 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        AssertionResult  m_lastResult ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-12-31 20:49:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-04-23 18:58:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        Config  const &  m_config ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-02-23 08:49:52 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        Totals  m_totals ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-30 19:15:23 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        Ptr < IStreamingReporter >  m_reporter ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-02 19:58:04 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        std : : vector < MessageInfo >  m_messages ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-01-14 08:26:58 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        IRunner *  m_prevRunner ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        IResultCapture *  m_prevResultCapture ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-06-08 08:22:56 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        const  IConfig *  m_prevConfig ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-11-04 21:09:22 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        AssertionInfo  m_lastAssertionInfo ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-02-19 19:45:09 +00:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        std : : vector < UnfinishedSections >  m_unfinishedSections ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-09 23:24:00 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    } ; 
							 
						 
					
						
							
								
									
										
										
										
											2012-05-21 18:52:09 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  // end namespace Catch
 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-09 23:24:00 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2012-09-17 01:42:29 -04:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# endif  // TWOBLUECUBES_CATCH_RUNNER_IMPL_HPP_INCLUDED