summaryrefslogtreecommitdiff
path: root/libadhocutil/unittests/testScopeExit.cpp
blob: 66f4c4800de9fa4e72e5f06645c04d9c530f2197 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#define BOOST_TEST_MODULE ScopeExit
#include <boost/test/unit_test.hpp>

#include "scopeExit.h"
#include <string>

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);
}