diff options
| author | Martin Hořeňovský | 2017-07-06 22:28:42 +0200 |
|---|---|---|
| committer | Martin Hořeňovský | 2017-07-06 22:28:42 +0200 |
| commit | fc32165d48f0a46a60ac02e0e52f8c89adafd8be (patch) | |
| tree | acf2c6dc020615db581ce425b7ce0a424d801f83 /include/internal/catch_section.cpp | |
| parent | 0016362f69804ae18953a0ec11d0c108e8402e1d (diff) | |
| download | catch3-fc32165d48f0a46a60ac02e0e52f8c89adafd8be.tar.gz | |
Started work on splitting out .cpp files from header files
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 |