#include #include #include "ScopeGuard.h" using namespace testing; TEST(ScopeGuard, normal_run_fun_on_destruction_1) { bool result = false; auto sg = scopeGuard([&result]() { result = true; }); ASSERT_THAT(result, Eq(false)); } TEST(ScopeGuard, normal_run_fun_on_destruction_2) { bool result = false; { auto sg = scopeGuard([&result]() { result = true; }); } ASSERT_EQ(result, true); } TEST(ScopeGuard, dismiss) { bool result = false; { auto sg = scopeGuard([&result]() { result = true; }); sg.dismiss(); } ASSERT_THAT(result, Eq(false)); } TEST(ScopeGuard, SCOPE_EXIT_macro_1) { bool result = false; { SCOPE_EXIT { result = true; }; ASSERT_THAT(result, Eq(false)); // prove previous statement hasn't run yet } } TEST(ScopeGuard, SCOPE_EXIT_macro_2) { bool result = false; { SCOPE_EXIT { result = true; }; } ASSERT_THAT(result, Eq(true)); } //TEST(expected, get_when_valid_returns_value) //{ // Expected v = getAnswerToEverything(); // ASSERT_THAT(v.get(), Eq(42)); //}