mimic++
v10.0.1
Toggle main menu visibility
Loading...
Searching...
No Matches
Common.hpp
Go to the documentation of this file.
1
// Copyright Dominic (DNKpp) Koepke 2026.
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_EXPECTATION_COMMON_HPP
7
#define MIMICPP_EXPECTATION_COMMON_HPP
8
9
#pragma once
10
11
#include "
mimic++/Call.hpp
"
12
#include "
mimic++/Fwd.hpp
"
13
#include "
mimic++/config/Config.hpp
"
14
#include "
mimic++/reporting/ExpectationReport.hpp
"
15
#include "
mimic++/utilities/Concepts.hpp
"
16
17
#ifndef MIMICPP_DETAIL_IS_MODULE
18
#include <concepts>
19
#include <type_traits>
20
#include <utility>
21
#include <variant>
22
#endif
23
24
MIMICPP_DETAIL_MODULE_EXPORT
namespace
mimicpp::expectation
25
{
26
struct
MatchSuccess
27
{
28
std::optional<StringT>
description
{};
29
30
[[nodiscard]]
31
friend
bool
operator==
(
MatchSuccess
const
&,
MatchSuccess
const
&) =
default
;
32
};
33
34
struct
MatchFailure
35
{
36
std::optional<StringT>
description
{};
37
38
friend
bool
operator==
(
MatchFailure
const
&,
MatchFailure
const
&) =
default
;
39
};
40
41
using
MatchResult
= std::variant<MatchSuccess, MatchFailure>;
42
using
MatchResults
= std::vector<MatchResult>;
43
48
template
<
typename
T,
typename
Signature>
49
concept
expectation_policy_for
= std::is_move_constructible_v<T>
50
&& std::is_destructible_v<T>
51
&& std::same_as<T, std::remove_cvref_t<T>>
52
&&
requires
(T& policy,
call::info_for_signature_t<Signature>
const
& info) {
53
{ std::as_const(policy).is_satisfied() }
noexcept
->
util::boolean_testable
;
54
{ std::as_const(policy).matches(info) } -> std::convertible_to<MatchResult>;
55
{ policy.consume(info) };
56
};
57
62
template
<
typename
T,
typename
Signature>
63
concept
finalize_policy_for
= std::is_move_constructible_v<T>
64
&& std::is_destructible_v<T>
65
&& std::same_as<T, std::remove_cvref_t<T>>
66
&&
requires
(T& policy,
call::info_for_signature_t<Signature>
const
& info) {
67
{ policy.finalize_call(info) } -> std::convertible_to<signature_return_type_t<Signature>>;
68
};
69
74
template
<
typename
T>
75
concept
control_policy
= std::is_move_constructible_v<T>
76
&& std::is_destructible_v<T>
77
&& std::same_as<T, std::remove_cvref_t<T>>
78
&&
requires
(T& policy) {
79
{ std::as_const(policy).is_satisfied() }
noexcept
->
util::boolean_testable
;
80
{ std::as_const(policy).state() } -> std::convertible_to<reporting::control_state_t>;
81
policy.consume();
82
};
83
}
84
85
#endif
Call.hpp
Concepts.hpp
Config.hpp
MIMICPP_DETAIL_MODULE_EXPORT
#define MIMICPP_DETAIL_MODULE_EXPORT
Definition
Config.hpp:19
ExpectationReport.hpp
Fwd.hpp
mimicpp::expectation::control_policy
Determines whether the given type satisfies the requirements of a control-policy.
Definition
Common.hpp:75
mimicpp::expectation::expectation_policy_for
Determines whether the given type satisfies the requirements of an expectation-policy for the given s...
Definition
Common.hpp:49
mimicpp::expectation::finalize_policy_for
Determines whether the given type satisfies the requirements of a finalize-policy for the given signa...
Definition
Common.hpp:63
mimicpp::util::boolean_testable
Determines, whether B behaves as a the builtin type bool.
Definition
Concepts.hpp:66
mimicpp::call::info_for_signature_t
typename info_for_signature< Signature >::type info_for_signature_t
Definition
Call.hpp:47
mimicpp::expectation
Definition
Builder.hpp:33
mimicpp::expectation::MatchResult
std::variant< MatchSuccess, MatchFailure > MatchResult
Definition
Common.hpp:41
mimicpp::expectation::MatchResults
std::vector< MatchResult > MatchResults
Definition
Common.hpp:42
mimicpp::expectation::MatchFailure
Definition
Common.hpp:35
mimicpp::expectation::MatchFailure::operator==
friend bool operator==(MatchFailure const &, MatchFailure const &)=default
mimicpp::expectation::MatchFailure::description
std::optional< StringT > description
Definition
Common.hpp:36
mimicpp::expectation::MatchSuccess
Definition
Common.hpp:27
mimicpp::expectation::MatchSuccess::operator==
friend bool operator==(MatchSuccess const &, MatchSuccess const &)=default
mimicpp::expectation::MatchSuccess::description
std::optional< StringT > description
Definition
Common.hpp:28
mimic++
expectation
Common.hpp
Generated on
for mimic++ by
1.18.0