diff options
author | Manoj Srivastava <srivasta@debian.org> | 2020-05-22 19:57:41 -0700 |
---|---|---|
committer | Manoj Srivastava <srivasta@debian.org> | 2020-05-22 20:02:19 -0700 |
commit | c3d2579ad8d7eb33059aa8fdbaf5b564411a57f2 (patch) | |
tree | 1570cda0676fdcf4171a69a7fe313c1b89a52b0c /vendor/bandit/bandit/assertion_frameworks/matchers/Equal.h | |
parent | 986b7742bf244b4073ecca0723615f70be8a1ab6 (diff) | |
parent | 4e9b9c402ed95bf9a17fd6d795bc49bb4128a6fa (diff) |
Merge branch 'upstream' into debian-cmake-fixes
Diffstat (limited to 'vendor/bandit/bandit/assertion_frameworks/matchers/Equal.h')
-rw-r--r-- | vendor/bandit/bandit/assertion_frameworks/matchers/Equal.h | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/vendor/bandit/bandit/assertion_frameworks/matchers/Equal.h b/vendor/bandit/bandit/assertion_frameworks/matchers/Equal.h new file mode 100644 index 00000000..521c6008 --- /dev/null +++ b/vendor/bandit/bandit/assertion_frameworks/matchers/Equal.h @@ -0,0 +1,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 |