mirror of
https://github.com/catchorg/Catch2.git
synced 2025-04-28 19:53:52 +00:00
Apart from being clearer, it also improves the overall codesize of the implementation library, and should improve the performance as well, by removing one level of indirection.
72 lines
2.1 KiB
C++
72 lines
2.1 KiB
C++
|
|
// Copyright Catch2 Authors
|
|
// Distributed under the Boost Software License, Version 1.0.
|
|
// (See accompanying file LICENSE_1_0.txt or copy at
|
|
// https://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
// SPDX-License-Identifier: BSL-1.0
|
|
#ifndef CATCH_ASSERTION_HANDLER_HPP_INCLUDED
|
|
#define CATCH_ASSERTION_HANDLER_HPP_INCLUDED
|
|
|
|
#include <catch2/catch_assertion_info.hpp>
|
|
#include <catch2/internal/catch_decomposer.hpp>
|
|
#include <catch2/interfaces/catch_interfaces_capture.hpp>
|
|
#include <catch2/internal/catch_lazy_expr.hpp>
|
|
|
|
namespace Catch {
|
|
|
|
struct AssertionResultData;
|
|
struct IResultCapture;
|
|
class RunContext;
|
|
|
|
struct AssertionReaction {
|
|
bool shouldDebugBreak = false;
|
|
bool shouldThrow = false;
|
|
};
|
|
|
|
class AssertionHandler {
|
|
AssertionInfo m_assertionInfo;
|
|
AssertionReaction m_reaction;
|
|
bool m_completed = false;
|
|
IResultCapture& m_resultCapture;
|
|
|
|
public:
|
|
AssertionHandler
|
|
( StringRef macroName,
|
|
SourceLineInfo const& lineInfo,
|
|
StringRef capturedExpression,
|
|
ResultDisposition::Flags resultDisposition );
|
|
~AssertionHandler() {
|
|
if ( !m_completed ) {
|
|
m_resultCapture.handleIncomplete( m_assertionInfo );
|
|
}
|
|
}
|
|
|
|
|
|
template<typename T>
|
|
void handleExpr( ExprLhs<T> const& expr ) {
|
|
handleExpr( expr.makeUnaryExpr() );
|
|
}
|
|
void handleExpr( ITransientExpression const& expr );
|
|
|
|
void handleMessage(ResultWas::OfType resultType, StringRef message);
|
|
|
|
void handleExceptionThrownAsExpected();
|
|
void handleUnexpectedExceptionNotThrown();
|
|
void handleExceptionNotThrownAsExpected();
|
|
void handleThrowingCallSkipped();
|
|
void handleUnexpectedInflightException();
|
|
|
|
void complete();
|
|
void setCompleted();
|
|
|
|
// query
|
|
auto allowThrows() const -> bool;
|
|
};
|
|
|
|
void handleExceptionMatchExpr( AssertionHandler& handler, std::string const& str, StringRef matcherString );
|
|
|
|
} // namespace Catch
|
|
|
|
#endif // CATCH_ASSERTION_HANDLER_HPP_INCLUDED
|