diff --git a/src/test/miner_tests.cpp b/src/test/miner_tests.cpp --- a/src/test/miner_tests.cpp +++ b/src/test/miner_tests.cpp @@ -45,18 +45,6 @@ BOOST_FIXTURE_TEST_SUITE(miner_tests, MinerTestingSetup) -// BOOST_CHECK_EXCEPTION predicates to check the specific validation error -class HasReason { -public: - explicit HasReason(const std::string &reason) : m_reason(reason) {} - bool operator()(const std::runtime_error &e) const { - return std::string(e.what()).find(m_reason) != std::string::npos; - }; - -private: - const std::string m_reason; -}; - static CFeeRate blockMinFeeRate = CFeeRate(DEFAULT_BLOCK_MIN_TX_FEE_PER_KB); BlockAssembler MinerTestingSetup::AssemblerForTest(const CChainParams ¶ms) { diff --git a/src/test/util/setup_common.h b/src/test/util/setup_common.h --- a/src/test/util/setup_common.h +++ b/src/test/util/setup_common.h @@ -201,4 +201,20 @@ CBlock getBlock13b8a(); +/** + * 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 bool operator()(const E &e) const { + return std::string(e.what()).find(m_reason) != std::string::npos; + }; + +private: + const std::string m_reason; +}; + #endif // BITCOIN_TEST_UTIL_SETUP_COMMON_H