#define BOOST_TEST_MODULE ScopeExit #include #include "scopeExit.h" #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); }