diff options
| author | Baruch Burstein | 2017-07-09 12:48:29 +0300 |
|---|---|---|
| committer | Baruch Burstein | 2017-07-09 12:48:29 +0300 |
| commit | af05ccfe5d9096e203f63e5cde07e6767f532334 (patch) | |
| tree | de302ee0ef9b1cb671ad81e4a19716e37f6e6f2b /include/internal/catch_section.cpp | |
| parent | 058b21e604dd3486fe4f7957e4a4485104943905 (diff) | |
| parent | fc32165d48f0a46a60ac02e0e52f8c89adafd8be (diff) | |
| download | catch3-af05ccfe5d9096e203f63e5cde07e6767f532334.tar.gz | |
Merge remote-tracking branch 'upstream/dev-modernize' into dev-better-verbosity
Diffstat (limited to 'include/internal/catch_section.cpp')
| -rw-r--r-- | include/internal/catch_section.cpp | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/include/internal/catch_section.cpp b/include/internal/catch_section.cpp new file mode 100644 index 00000000..8c300415 --- /dev/null +++ b/include/internal/catch_section.cpp @@ -0,0 +1,54 @@ +/* + * 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) + */ + +#include "catch_section.h" +#include "catch_capture.hpp" +#include "catch_compiler_capabilities.h" + +namespace Catch { + + SectionInfo::SectionInfo + ( SourceLineInfo const& _lineInfo, + std::string const& _name, + std::string const& _description ) + : name( _name ), + description( _description ), + lineInfo( _lineInfo ) + {} + + Section::Section( SectionInfo const& info ) + : m_info( info ), + m_sectionIncluded( getResultCapture().sectionStarted( m_info, m_assertions ) ) + { + m_timer.start(); + } + +#if defined(_MSC_VER) +#pragma warning(push) +#pragma warning(disable:4996) // std::uncaught_exception is deprecated in C++17 +#endif + Section::~Section() { + if( m_sectionIncluded ) { + SectionEndInfo endInfo( m_info, m_assertions, m_timer.getElapsedSeconds() ); + if( std::uncaught_exception() ) + getResultCapture().sectionEndedEarly( endInfo ); + else + getResultCapture().sectionEnded( endInfo ); + } + } +#if defined(_MSC_VER) +#pragma warning(pop) +#endif + + // This indicates whether the section should be executed or not + Section::operator bool() const { + return m_sectionIncluded; + } + + +} // end namespace Catch |