Wire Sysio Wire Sysion 1.0.0
Loading...
Searching...
No Matches
catch_assertionhandler.h
Go to the documentation of this file.
1/*
2 * Created by Phil on 8/8/2017.
3 * Copyright 2017 Two Blue Cubes Ltd. All rights reserved.
4 *
5 * Distributed under the Boost Software License, Version 1.0. (See accompanying
6 * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7 */
8#ifndef TWOBLUECUBES_CATCH_ASSERTIONHANDLER_H_INCLUDED
9#define TWOBLUECUBES_CATCH_ASSERTIONHANDLER_H_INCLUDED
10
11#include "catch_assertioninfo.h"
12#include "catch_decomposer.h"
14
15namespace Catch {
16
17 struct TestFailureException{};
18 struct AssertionResultData;
19 struct IResultCapture;
20 class RunContext;
21
22 class LazyExpression {
23 friend class AssertionHandler;
24 friend struct AssertionStats;
25 friend class RunContext;
26
27 ITransientExpression const* m_transientExpression = nullptr;
28 bool m_isNegated;
29 public:
30 LazyExpression( bool isNegated );
31 LazyExpression( LazyExpression const& other );
33
34 explicit operator bool() const;
35
36 friend auto operator << ( std::ostream& os, LazyExpression const& lazyExpr ) -> std::ostream&;
37 };
38
39 struct AssertionReaction {
40 bool shouldDebugBreak = false;
41 bool shouldThrow = false;
42 };
43
44 class AssertionHandler {
45 AssertionInfo m_assertionInfo;
46 AssertionReaction m_reaction;
47 bool m_completed = false;
48 IResultCapture& m_resultCapture;
49
50 public:
52 ( StringRef const& macroName,
53 SourceLineInfo const& lineInfo,
54 StringRef capturedExpression,
55 ResultDisposition::Flags resultDisposition );
57 if ( !m_completed ) {
58 m_resultCapture.handleIncomplete( m_assertionInfo );
59 }
60 }
61
62
63 template<typename T>
64 void handleExpr( ExprLhs<T> const& expr ) {
65 handleExpr( expr.makeUnaryExpr() );
66 }
67 void handleExpr( ITransientExpression const& expr );
68
69 void handleMessage(ResultWas::OfType resultType, StringRef const& message);
70
76
77 void complete();
78 void setCompleted();
79
80 // query
81 auto allowThrows() const -> bool;
82 };
83
84 void handleExceptionMatchExpr( AssertionHandler& handler, std::string const& str, StringRef const& matcherString );
85
86} // namespace Catch
87
88#endif // TWOBLUECUBES_CATCH_ASSERTIONHANDLER_H_INCLUDED
void handleExpr(ExprLhs< T > const &expr)
AssertionHandler(StringRef const &macroName, SourceLineInfo const &lineInfo, StringRef capturedExpression, ResultDisposition::Flags resultDisposition)
void handleMessage(ResultWas::OfType resultType, StringRef const &message)
auto makeUnaryExpr() const -> UnaryExpr< LhsT >
LazyExpression & operator=(LazyExpression const &)=delete
friend auto operator<<(std::ostream &os, LazyExpression const &lazyExpr) -> std::ostream &
os_t os
void handleExceptionMatchExpr(AssertionHandler &handler, std::string const &str, StringRef const &matcherString)
Definition name.hpp:106
virtual void handleIncomplete(AssertionInfo const &info)=0