blob: 521c60089f0188ed9292a1cc392f1e81c51ea505 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
#ifndef BANDIT_EQUAL_H
#define BANDIT_EQUAL_H
#include <cstring>
#include <memory>
#include "Matcher.h"
namespace bandit { namespace Matchers {
template<typename T>
std::ostream& operator<<(std::ostream& os, const std::unique_ptr<T>& obj)
{
return os << *obj;
}
template<typename T>
class Equal : public Matcher
{
public:
explicit Equal(const T& expectedValue) : Matcher(), _expectedValue(expectedValue) {}
template<typename U>
bool matches(const U& actualValue) const
{
return actualValue == _expectedValue;
}
bool matches(char* actualValue) const
{
return strcmp(actualValue, &*_expectedValue) == 0;
}
bool matches(const char* actualValue) const
{
return strcmp(actualValue, &*_expectedValue) == 0;
}
template<typename U>
bool matches(const std::unique_ptr<U>& pointer) const
{
return matches(pointer.get());
}
protected:
virtual std::string failure_message_end() const
{
std::ostringstream ss;
ss << "equal <" << _expectedValue << ">";
return ss.str();
}
private:
const T& _expectedValue;
};
template<typename T>
Equal<T> equal(const T& expectedValue)
{
return Equal<T>(expectedValue);
}
template<typename T, typename U>
bool operator==(const ValueProxy<T>& actualValue, const U& expectedValue)
{
return actualValue.to == expectedValue;
}
template<typename T, typename U>
bool operator==(const MatchProxy<T>& matchProxy, const U& expectedValue)
{
matchProxy(equal(expectedValue));
return true;
}
template<typename T, typename U>
bool operator!=(const ValueProxy<T>& actualValue, const U& expectedValue)
{
return actualValue.to != expectedValue;
}
template<typename T, typename U>
bool operator!=(const MatchProxy<T>& matchProxy, const U& expectedValue)
{
matchProxy.negate()(equal(expectedValue));
return true;
}
}}
#endif // BANDIT_EQUAL_H
|