#define BOOST_TEST_MODULE ScopeExit #include #include "scopeExit.h" #include #include using namespace AdHoc; BOOST_AUTO_TEST_CASE(cleanexit) { std::string log; { ScopeExit se( [&log] { log += "before"; }, [&log] { log += "clean"; }, [&log] { log += "error"; }, [&log] { log += "after"; }); } BOOST_REQUIRE_EQUAL(log, "beforecleanafter"); } BOOST_AUTO_TEST_CASE(uncaught) { BOOST_REQUIRE_THROW( { std::string log; { ScopeExit se( [&log] { log += "before"; }, [&log] { log += "clean"; }, [&log] { log += "error"; }, [&log] { log += "after"; }); throw std::runtime_error("test unclean exit"); } BOOST_REQUIRE_EQUAL(log, "beforeerrorafter"); }, std::runtime_error); }