mimic++ v2
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}
76
77namespace mimicpp::detail::catch2
78{
79 inline const ReporterInstaller<Catch2ReporterT> installer{};
80}
81
82#ifdef MIMICPP_CONFIG_EXPERIMENTAL_CATCH2_MATCHER_INTEGRATION
83
84#include <catch2/matchers/catch_matchers_templated.hpp>
85
86template <typename Matcher>
87 requires std::derived_from<Matcher, Catch::Matchers::MatcherGenericBase> // new style
88 || std::derived_from<Matcher, Catch::Matchers::MatcherUntypedBase> // old style
90{
91 template <typename T>
92 [[nodiscard]]
93 static constexpr bool matches(const Matcher& matcher, T& value)
94 requires requires { { matcher.match(value) } -> std::convertible_to<bool>; }
95 {
96 return matcher.match(value);
97 }
98};
99
100#endif
101
102#endif
A reporter, which creates text messages and reports them via the provided callbacks.
Definition Reporter.hpp:206
Definition BoostTest.hpp:20
void unreachable()
Invokes undefined behavior.
Definition Utility.hpp:93
std::basic_string_view< CharT, CharTraitsT > StringViewT
Definition Printer.hpp:40
Definition Matcher.hpp:28