/ src / test / util_check_tests.cpp
util_check_tests.cpp
 1  // Copyright (c) The Bitcoin Core developers
 2  // Distributed under the MIT software license, see the accompanying
 3  // file COPYING or http://www.opensource.org/licenses/mit-license.php.
 4  
 5  #include <util/check.h>
 6  
 7  #include <boost/test/unit_test.hpp>
 8  #include <test/util/common.h>
 9  
10  BOOST_AUTO_TEST_SUITE(util_check_tests)
11  
12  BOOST_AUTO_TEST_CASE(check_pass)
13  {
14      Assume(true);
15      Assert(true);
16      CHECK_NONFATAL(true);
17  }
18  
19  BOOST_AUTO_TEST_CASE(check_fail)
20  {
21      // Disable aborts for easier testing here
22      test_only_CheckFailuresAreExceptionsNotAborts mock_checks{};
23  
24      if constexpr (G_ABORT_ON_FAILED_ASSUME) {
25          BOOST_CHECK_EXCEPTION(Assume(false), NonFatalCheckError, HasReason{"Internal bug detected: false"});
26      } else {
27          BOOST_CHECK_NO_THROW(Assume(false));
28      }
29      BOOST_CHECK_EXCEPTION(Assert(false), NonFatalCheckError, HasReason{"Internal bug detected: false"});
30      BOOST_CHECK_EXCEPTION(CHECK_NONFATAL(false), NonFatalCheckError, HasReason{"Internal bug detected: false"});
31  }
32  
33  BOOST_AUTO_TEST_SUITE_END()