| 
									
										
										
										
											2010-11-09 23:24:00 +00:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  *  Created by Phil on 03/11/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)
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #ifndef TWOBLUECUBES_CATCH_SECTION_HPP_INCLUDED
 | 
					
						
							|  |  |  | #define TWOBLUECUBES_CATCH_SECTION_HPP_INCLUDED
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-11-29 19:40:44 +00:00
										 |  |  | #include "catch_capture.hpp"
 | 
					
						
							| 
									
										
										
										
											2012-02-23 08:57:51 +00:00
										 |  |  | #include "catch_totals.hpp"
 | 
					
						
							| 
									
										
										
										
											2010-11-29 19:40:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-11-09 23:24:00 +00:00
										 |  |  | #include <string>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-16 08:02:20 +01:00
										 |  |  | namespace Catch { | 
					
						
							| 
									
										
										
										
											2012-05-15 07:42:26 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     class Section { | 
					
						
							| 
									
										
										
										
											2010-11-09 23:24:00 +00:00
										 |  |  |     public: | 
					
						
							| 
									
										
										
										
											2012-05-15 07:42:26 +01:00
										 |  |  |         Section(    const std::string& name,  | 
					
						
							|  |  |  |                     const std::string& description, | 
					
						
							|  |  |  |                     const SourceLineInfo& lineInfo ) | 
					
						
							| 
									
										
										
										
											2010-11-29 19:40:44 +00:00
										 |  |  |         :   m_name( name ), | 
					
						
							| 
									
										
										
										
											2012-05-10 07:58:48 +01:00
										 |  |  |             m_sectionIncluded( Context::getResultCapture().sectionStarted( name, description, lineInfo, m_assertions ) ) | 
					
						
							| 
									
										
										
										
											2012-05-15 07:42:26 +01:00
										 |  |  |         {} | 
					
						
							| 
									
										
										
										
											2011-01-26 23:23:33 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-15 07:42:26 +01:00
										 |  |  |         ~Section() { | 
					
						
							| 
									
										
										
										
											2011-01-19 08:52:25 +00:00
										 |  |  |             if( m_sectionIncluded ) | 
					
						
							| 
									
										
										
										
											2012-05-10 07:58:48 +01:00
										 |  |  |                 Context::getResultCapture().sectionEnded( m_name, m_assertions ); | 
					
						
							| 
									
										
										
										
											2010-11-19 08:30:45 +00:00
										 |  |  |         } | 
					
						
							|  |  |  |          | 
					
						
							| 
									
										
										
										
											2010-11-29 19:40:44 +00:00
										 |  |  |         // This indicates whether the section should be executed or not
 | 
					
						
							| 
									
										
										
										
											2012-05-15 07:42:26 +01:00
										 |  |  |         operator bool() { | 
					
						
							| 
									
										
										
										
											2010-11-29 19:40:44 +00:00
										 |  |  |             return m_sectionIncluded; | 
					
						
							| 
									
										
										
										
											2010-11-09 23:24:00 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2010-11-29 22:33:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-11-19 08:30:45 +00:00
										 |  |  |     private: | 
					
						
							| 
									
										
										
										
											2011-04-21 19:43:55 +01:00
										 |  |  |          | 
					
						
							| 
									
										
										
										
											2010-11-19 08:30:45 +00:00
										 |  |  |         std::string m_name; | 
					
						
							| 
									
										
										
										
											2012-02-23 08:57:51 +00:00
										 |  |  |         Counts m_assertions; | 
					
						
							| 
									
										
										
										
											2010-11-29 19:40:44 +00:00
										 |  |  |         bool m_sectionIncluded; | 
					
						
							| 
									
										
										
										
											2010-11-09 23:24:00 +00:00
										 |  |  |     }; | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  | } // end namespace Catch
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-21 19:43:55 +01:00
										 |  |  | #define INTERNAL_CATCH_SECTION( name, desc ) \
 | 
					
						
							| 
									
										
										
										
											2012-05-08 19:16:18 +01:00
										 |  |  |     if( Catch::Section INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::Section( name, desc, CATCH_INTERNAL_LINEINFO ) ) | 
					
						
							| 
									
										
										
										
											2010-11-09 23:24:00 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #endif // TWOBLUECUBES_CATCH_SECTION_HPP_INCLUDED
 |