aboutsummaryrefslogtreecommitdiff
path: root/src/test/util
diff options
context:
space:
mode:
authorVasil Dimov <vd@FreeBSD.org>2020-08-31 13:16:13 +0200
committerVasil Dimov <vd@FreeBSD.org>2020-09-17 14:45:17 +0200
commitfe42411b4b07b99c591855f5f00ad45dfeec8e30 (patch)
tree9b87f884e89db127a6580319c18868a7b9f74858 /src/test/util
parentd2bb681f96fb327b4c4d5b2b113692ca22fdffbf (diff)
test: move HasReason so it can be reused
Move the class `HasReason` from `miner_tests.cpp` to `setup_common.h` so that it can be reused by other tests.
Diffstat (limited to 'src/test/util')
-rw-r--r--src/test/util/setup_common.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/test/util/setup_common.h b/src/test/util/setup_common.h
index 22f5d6d936..a09c8c122d 100644
--- a/src/test/util/setup_common.h
+++ b/src/test/util/setup_common.h
@@ -153,4 +153,20 @@ CBlock getBlock13b8a();
// define an implicit conversion here so that uint256 may be used directly in BOOST_CHECK_*
std::ostream& operator<<(std::ostream& os, const uint256& num);
+/**
+ * BOOST_CHECK_EXCEPTION predicates to check the specific validation error.
+ * Use as
+ * BOOST_CHECK_EXCEPTION(code that throws, exception type, HasReason("foo"));
+ */
+class HasReason {
+public:
+ explicit HasReason(const std::string& reason) : m_reason(reason) {}
+ template <typename E>
+ bool operator() (const E& e) const {
+ return std::string(e.what()).find(m_reason) != std::string::npos;
+ };
+private:
+ const std::string m_reason;
+};
+
#endif