瀏覽代碼

Test tags updated.

main
offa 8 年之前
父節點
當前提交
e369b880f0
共有 1 個檔案被更改,包括 8 行新增8 行删除
  1. +8
    -8
      test/ScopeGuardTest.cpp

+ 8
- 8
test/ScopeGuardTest.cpp 查看文件

} }




TEST_CASE("deleter called on destruction", "[ScopeGuard]")
TEST_CASE("deleter called on destruction", "[ScopeExit]")
{ {
REQUIRE_CALL(m, deleter()); REQUIRE_CALL(m, deleter());
auto guard = sr::make_scope_exit(deleter); auto guard = sr::make_scope_exit(deleter);
static_cast<void>(guard); static_cast<void>(guard);
} }


TEST_CASE("deleter lambda called on destruction", "[ScopeGuard]")
TEST_CASE("deleter lambda called on destruction", "[ScopeExit]")
{ {
CallMock cm; CallMock cm;
REQUIRE_CALL(cm, deleter()); REQUIRE_CALL(cm, deleter());
static_cast<void>(guard); static_cast<void>(guard);
} }


TEST_CASE("deleter called and rethrow on copy exception", "[ScopeGuard]")
TEST_CASE("deleter called and rethrow on copy exception", "[ScopeExit]")
{ {
REQUIRE_THROWS([] { REQUIRE_THROWS([] {
const ThrowOnCopyMock noMove; const ThrowOnCopyMock noMove;
}()); }());
} }


TEST_CASE("deleter is not called if released", "[ScopeGuard]")
TEST_CASE("deleter is not called if released", "[ScopeExit]")
{ {
REQUIRE_CALL(m, deleter()).TIMES(0); REQUIRE_CALL(m, deleter()).TIMES(0);
auto guard = sr::make_scope_exit(deleter); auto guard = sr::make_scope_exit(deleter);
guard.release(); guard.release();
} }


TEST_CASE("move releases moved-from object", "[ScopeGuard]")
TEST_CASE("move releases moved-from object", "[ScopeExit]")
{ {
REQUIRE_CALL(m, deleter()); REQUIRE_CALL(m, deleter());
auto movedFrom = sr::make_scope_exit(deleter); auto movedFrom = sr::make_scope_exit(deleter);
static_cast<void>(guard); static_cast<void>(guard);
} }


TEST_CASE("move transfers state", "[ScopeGuard]")
TEST_CASE("move transfers state", "[ScopeExit]")
{ {
REQUIRE_CALL(m, deleter()); REQUIRE_CALL(m, deleter());
auto movedFrom = sr::make_scope_exit(deleter); auto movedFrom = sr::make_scope_exit(deleter);
static_cast<void>(guard); static_cast<void>(guard);
} }


TEST_CASE("move transfers state if released", "[ScopeGuard]")
TEST_CASE("move transfers state if released", "[ScopeExit]")
{ {
REQUIRE_CALL(m, deleter()).TIMES(0); REQUIRE_CALL(m, deleter()).TIMES(0);
auto movedFrom = sr::make_scope_exit(deleter); auto movedFrom = sr::make_scope_exit(deleter);
static_cast<void>(guard); static_cast<void>(guard);
} }


TEST_CASE("no exception propagation from deleter", "[ScopeGuard]")
TEST_CASE("no exception propagation from deleter", "[ScopeExit]")
{ {
REQUIRE_NOTHROW([] { REQUIRE_NOTHROW([] {
auto guard = sr::make_scope_exit([] { throw std::exception{}; }); auto guard = sr::make_scope_exit([] { throw std::exception{}; });

Loading…
取消
儲存