// // Copyright 2019 Ettus Research, a National Instruments Brand // // SPDX-License-Identifier: GPL-3.0-or-later // #include #include #include BOOST_AUTO_TEST_CASE(test_scope_exit) { bool flag = false; { auto flag_setter = uhd::utils::scope_exit::make([&flag]() { flag = true; }); BOOST_CHECK(!flag); } BOOST_CHECK(flag); } BOOST_AUTO_TEST_CASE(test_scope_exit_function_object) { bool flag = false; std::function resetter = [&flag]() { flag = true; }; { auto flag_setter = uhd::utils::scope_exit::make(std::move(resetter)); BOOST_CHECK(!flag); } BOOST_CHECK(flag); } BOOST_AUTO_TEST_CASE(test_scope_exit_function_named_lambda) { bool flag = false; auto resetter = [&flag]() { flag = true; }; { // Note: Does not require std::move() auto flag_setter = uhd::utils::scope_exit::make(resetter); BOOST_CHECK(!flag); } BOOST_CHECK(flag); }