6namespace CppSpec::Matchers {
8enum class RangeMode { exclusive, inclusive };
10template <
typename A,
typename E>
11class BeBetween :
public MatcherBase<A, E> {
15 enum class LtOp { lt, lt_eq } lt_op;
16 enum class GtOp { gt, gt_eq } gt_op;
22 BeBetween(
Expectation<A>& expectation, E min, E max, RangeMode mode = RangeMode::inclusive)
23 : MatcherBase<A, E>(expectation), min(min), max(max), mode(mode) {
25 case RangeMode::inclusive:
29 case RangeMode::exclusive:
36 bool match()
override;
37 std::string verb()
override {
return "be between"; }
41template <
typename A,
typename E>
42bool BeBetween<A, E>::match() {
43 auto actual = this->actual();
47 result1 = actual > min;
50 result1 = actual >= min;
56 result2 = actual < max;
59 result2 = actual <= max;
62 return result1 && result2;
65template <
typename A,
typename E>
67 return std::format(
"be between {} and {} ({})", min, max, (mode == RangeMode::exclusive ?
"exclusive" :
"inclusive"));
Wraps the target of an expectation.
Definition expectation.hpp:47
std::string description() override
Get the description of the Matcher.
Definition be_between.hpp:66
Contains the base class for all Matchers.