| 
									
										
										
										
											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"
 | 
					
						
							| 
									
										
										
										
											2013-04-22 08:19:17 +01:00
										 |  |  | #include "catch_compiler_capabilities.h"
 | 
					
						
							| 
									
										
										
										
											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: | 
					
						
							| 
									
										
										
										
											2013-04-23 18:58:56 +01:00
										 |  |  |         Section(    SourceLineInfo const& lineInfo, | 
					
						
							|  |  |  |                     std::string const& name, | 
					
						
							|  |  |  |                     std::string const& description = "" ) | 
					
						
							| 
									
										
										
										
											2012-11-30 08:58:46 +00:00
										 |  |  |         :   m_info( name, description, lineInfo ), | 
					
						
							|  |  |  |             m_sectionIncluded( getCurrentContext().getResultCapture().sectionStarted( m_info, 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-11-30 08:58:46 +00:00
										 |  |  |                 getCurrentContext().getResultCapture().sectionEnded( m_info, m_assertions ); | 
					
						
							| 
									
										
										
										
											2010-11-19 08:30:45 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2013-07-03 19:14:59 +01: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: | 
					
						
							| 
									
										
										
										
											2012-11-30 08:58:46 +00:00
										 |  |  |         SectionInfo m_info; | 
					
						
							| 
									
										
										
										
											2013-07-03 19:14:59 +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
										 |  |  |     }; | 
					
						
							| 
									
										
										
										
											2013-07-03 19:14:59 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-11-09 23:24:00 +00:00
										 |  |  | } // end namespace Catch
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-16 20:18:52 +00:00
										 |  |  | #ifdef CATCH_CONFIG_VARIADIC_MACROS
 | 
					
						
							|  |  |  |     #define INTERNAL_CATCH_SECTION( ... ) \
 | 
					
						
							|  |  |  |         if( Catch::Section INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::Section( CATCH_INTERNAL_LINEINFO, __VA_ARGS__ ) ) | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  |     #define INTERNAL_CATCH_SECTION( name, desc ) \
 | 
					
						
							|  |  |  |         if( Catch::Section INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::Section( CATCH_INTERNAL_LINEINFO, name, desc ) ) | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2010-11-09 23:24:00 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #endif // TWOBLUECUBES_CATCH_SECTION_HPP_INCLUDED
 |