mimic++ v5
Loading...
Searching...
No Matches
Catch2.hpp
Go to the documentation of this file.
1// // Copyright Dominic (DNKpp) Koepke 2024 - 2024.
2// // Distributed under the Boost Software License, Version 1.0.
3// // (See accompanying file LICENSE_1_0.txt or copy at
4// // https://www.boost.org/LICENSE_1_0.txt)
5
6#ifndef MIMICPP_ADAPTERS_CATCH2_HPP
7#define MIMICPP_ADAPTERS_CATCH2_HPP
8
9#pragma once
10
11#include "mimic++/Reporter.hpp"
12
13#include <iterator>
14
15#if __has_include(<catch2/catch_test_macros.hpp>)
16 #include <catch2/catch_test_macros.hpp>
17#else
18 #error "Unable to find catch2 includes."
19#endif
20
21namespace mimicpp::detail::catch2
22{
23 [[noreturn]]
24 inline void send_fail(const StringViewT msg)
25 {
26#ifdef CATCH_CONFIG_PREFIX_ALL
27 CATCH_FAIL(msg);
28#else
29 FAIL(msg);
30#endif
31
33 }
34
35 inline void send_success(const StringViewT msg)
36 {
37#ifdef CATCH_CONFIG_PREFIX_ALL
38 CATCH_SUCCEED(msg);
39#else
40 SUCCEED(msg);
41#endif
42 }
43
44 inline void send_warning(const StringViewT msg)
45 {
46#ifdef CATCH_CONFIG_PREFIX_MESSAGES
47 CATCH_WARN(msg);
48#else
49 WARN(msg);
50#endif
51 }
52}
53
54namespace mimicpp
55{
71 &detail::catch2::send_success,
72 &detail::catch2::send_warning,
73 &detail::catch2::send_fail>;
74}
75
76namespace mimicpp::detail::catch2
77{
78 inline const ReporterInstaller<Catch2ReporterT> installer{};
79}
80
81#ifdef MIMICPP_CONFIG_EXPERIMENTAL_CATCH2_MATCHER_INTEGRATION
82
83 #include <catch2/matchers/catch_matchers_templated.hpp>
84
85template <typename Matcher>
86 requires std::derived_from<Matcher, Catch::Matchers::MatcherGenericBase> // new style
87 || std::derived_from<Matcher, Catch::Matchers::MatcherUntypedBase> // old style
89{
90 template <typename T>
91 [[nodiscard]]
92 static constexpr bool matches(const Matcher& matcher, T& value)
93 requires requires { { matcher.match(value) } -> std::convertible_to<bool>; }
94 {
95 return matcher.match(value);
96 }
97};
98
99#endif
100
101#endif
A reporter, which creates text messages and reports them via the provided callbacks.
Definition Reporter.hpp:328
Definition BoostTest.hpp:20
void unreachable()
Invokes undefined behavior.
Definition Utility.hpp:89
std::basic_string_view< CharT, CharTraitsT > StringViewT
Definition Fwd.hpp:343
Definition Matcher.hpp:28