// Copyright (c) 2020 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include #include BOOST_AUTO_TEST_SUITE(ref_tests) BOOST_AUTO_TEST_CASE(ref_test) { util::Ref ref; BOOST_CHECK(!ref.Has()); BOOST_CHECK_THROW(ref.Get(), NonFatalCheckError); int value = 5; ref.Set(value); BOOST_CHECK(ref.Has()); BOOST_CHECK_EQUAL(ref.Get(), 5); ++ref.Get(); BOOST_CHECK_EQUAL(ref.Get(), 6); BOOST_CHECK_EQUAL(value, 6); ++value; BOOST_CHECK_EQUAL(value, 7); BOOST_CHECK_EQUAL(ref.Get(), 7); BOOST_CHECK(!ref.Has()); BOOST_CHECK_THROW(ref.Get(), NonFatalCheckError); ref.Clear(); BOOST_CHECK(!ref.Has()); BOOST_CHECK_THROW(ref.Get(), NonFatalCheckError); } BOOST_AUTO_TEST_SUITE_END()