C++Spec 1.0.0
BDD testing for C++
Loading...
Searching...
No Matches
equal.hpp
Go to the documentation of this file.
1
2#pragma once
3
4#include <string>
5
6#include "matcher_base.hpp"
7
8namespace CppSpec::Matchers {
9
16template <typename A, typename E>
17class Equal : public MatcherBase<A, E> {
18 public:
19 Equal(Expectation<A>& expectation, E expected) : MatcherBase<A, E>(expectation, expected) {}
20
21 std::string verb() override { return "equal"; }
22 std::string failure_message() override;
23 std::string failure_message_when_negated() override;
24 bool diffable();
25
26 protected:
27 bool match() override;
28 bool expected_is_a_literal();
29 std::string actual_inspected();
30 std::string simple_failure_message();
31 // std::string detailed_failure_message();
32};
33
34template <typename A, typename E>
36 // if (expected_is_a_literal()) {
37 // return simple_failure_message();
38 // } else {
39 // return detailed_failure_message();
40 // }
41 return simple_failure_message();
42}
43
44template <typename A, typename E>
46 std::stringstream ss;
47 ss << "expected not " << Pretty::inspect_object(MatcherBase<A, E>::expected()) << std::endl;
48 ss << " got " << actual_inspected() << std::endl;
49 ss << "Compared using `==`";
50 return ss.str();
51}
52
53template <typename A, typename E>
54std::string Equal<A, E>::simple_failure_message() {
55 std::stringstream ss;
56 ss << "expected " << Pretty::inspect_object(MatcherBase<A, E>::expected()) << std::endl;
57 ss << " got " << actual_inspected() << std::endl;
58 ss << "Compared using `==`";
59 return ss.str();
60}
61
62template <typename A, typename E>
63bool Equal<A, E>::diffable() {
64 return !expected_is_a_literal();
65}
66
67template <typename A, typename E>
68bool Equal<A, E>::match() {
69 return this->expected() == this->actual();
70}
71
72template <typename A, typename E>
73bool Equal<A, E>::expected_is_a_literal() {
74 return (typeid(E) == typeid(bool));
75}
76
77// template <typename E>
78// std::string Equal<bool, E>::actual_inspected() {
79// std::stringstream ss;
80// ss << std::boolalpha << BaseMatcher<bool,E>::actual();
81// return ss.str();
82// }
83
84template <typename A, typename E>
85std::string Equal<A, E>::actual_inspected() {
86 return Pretty::inspect_object(MatcherBase<A, E>::actual());
87}
88
89// template <typename A, bool E>
90// std::string Equal<A, bool>::simple_failure_message() {
91// std::stringstream ss;
92// ss << "\nexpected " << std::boolalpha <<
93// BaseMatcher<A,bool>::expected() << "\n"
94// " got " << Equal<A,bool>::actual_inspected() << "\n";
95// return ss.str();
96// }
97
98// template <>
99// std::string Equal<bool>::inspect_object(bool o) {
100// std::stringstream ss;
101// ss << "#<#" << Util::demangle(typeid(o).name()) <<
102// "> => " << std::boolalpha << o;
103// return ss.str();
104// }
105
106} // namespace CppSpec::Matchers
Wraps the target of an expectation.
Definition expectation.hpp:47
std::string failure_message_when_negated() override
Get message to give on match failure when negated.
Definition equal.hpp:45
std::string failure_message() override
Get message to give on match failure.
Definition equal.hpp:35
Definition have_error.hpp:9
Contains the base class for all Matchers.