|
|
@@ -39,7 +39,7 @@ namespace |
|
|
|
TEST_CASE("exit function called on destruction", "[ScopeExit]") |
|
|
|
{ |
|
|
|
REQUIRE_CALL(m, deleter()); |
|
|
|
auto guard = sr::scope_exit(deleter); |
|
|
|
auto guard = sr::scope_exit{deleter}; |
|
|
|
static_cast<void>(guard); |
|
|
|
} |
|
|
|
|
|
|
@@ -47,7 +47,7 @@ TEST_CASE("exit function lambda called on destruction", "[ScopeExit]") |
|
|
|
{ |
|
|
|
CallMock cm; |
|
|
|
REQUIRE_CALL(cm, deleter()); |
|
|
|
auto guard = sr::make_scope_exit([&cm] { cm.deleter(); }); |
|
|
|
auto guard = sr::scope_exit{[&cm] { cm.deleter(); }}; |
|
|
|
static_cast<void>(guard); |
|
|
|
} |
|
|
|
|
|
|
@@ -57,21 +57,21 @@ TEST_CASE("exit function called and rethrow on copy exception", "[ScopeExit]") |
|
|
|
const ThrowOnCopyMock noMove; |
|
|
|
REQUIRE_CALL(noMove, deleter()); |
|
|
|
|
|
|
|
sr::scope_exit<decltype(noMove)> guard{noMove}; |
|
|
|
sr::scope_exit guard{noMove}; |
|
|
|
}()); |
|
|
|
} |
|
|
|
|
|
|
|
TEST_CASE("exit function is not called if released", "[ScopeExit]") |
|
|
|
{ |
|
|
|
REQUIRE_CALL(m, deleter()).TIMES(0); |
|
|
|
auto guard = sr::make_scope_exit(deleter); |
|
|
|
auto guard = sr::scope_exit{deleter}; |
|
|
|
guard.release(); |
|
|
|
} |
|
|
|
|
|
|
|
TEST_CASE("move releases moved-from object", "[ScopeExit]") |
|
|
|
{ |
|
|
|
REQUIRE_CALL(m, deleter()); |
|
|
|
auto movedFrom = sr::make_scope_exit(deleter); |
|
|
|
auto movedFrom = sr::scope_exit{deleter}; |
|
|
|
auto guard = std::move(movedFrom); |
|
|
|
static_cast<void>(guard); |
|
|
|
} |
|
|
@@ -81,14 +81,14 @@ TEST_CASE("move with copy init releases moved-from object", "[ScopeExit]") |
|
|
|
CallMock mock; |
|
|
|
const NotNothrowMoveMock notNothrow{&mock}; |
|
|
|
REQUIRE_CALL(mock, deleter()); |
|
|
|
sr::scope_exit<decltype(notNothrow)> movedFrom{notNothrow}; |
|
|
|
sr::scope_exit movedFrom{notNothrow}; |
|
|
|
auto guard = std::move(movedFrom); |
|
|
|
} |
|
|
|
|
|
|
|
TEST_CASE("move transfers state", "[ScopeExit]") |
|
|
|
{ |
|
|
|
REQUIRE_CALL(m, deleter()); |
|
|
|
auto movedFrom = sr::make_scope_exit(deleter); |
|
|
|
auto movedFrom = sr::scope_exit{deleter}; |
|
|
|
auto guard = std::move(movedFrom); |
|
|
|
static_cast<void>(guard); |
|
|
|
} |
|
|
@@ -96,7 +96,7 @@ TEST_CASE("move transfers state", "[ScopeExit]") |
|
|
|
TEST_CASE("move transfers state if released", "[ScopeExit]") |
|
|
|
{ |
|
|
|
REQUIRE_CALL(m, deleter()).TIMES(0); |
|
|
|
auto movedFrom = sr::make_scope_exit(deleter); |
|
|
|
auto movedFrom = sr::scope_exit{deleter}; |
|
|
|
movedFrom.release(); |
|
|
|
auto guard = std::move(movedFrom); |
|
|
|
static_cast<void>(guard); |