variables (fixes #118).main
| @@ -39,16 +39,14 @@ namespace | |||
| TEST_CASE("exit function called on destruction", "[ScopeExit]") | |||
| { | |||
| REQUIRE_CALL(m, deleter()); | |||
| auto guard = sr::scope_exit{deleter}; | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = sr::scope_exit{deleter}; | |||
| } | |||
| TEST_CASE("exit function lambda called on destruction", "[ScopeExit]") | |||
| { | |||
| CallMock cm; | |||
| REQUIRE_CALL(cm, deleter()); | |||
| auto guard = sr::scope_exit{[&cm] { cm.deleter(); }}; | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = sr::scope_exit{[&cm] { cm.deleter(); }}; | |||
| } | |||
| TEST_CASE("exit function called and rethrow on copy exception", "[ScopeExit]") | |||
| @@ -72,8 +70,7 @@ TEST_CASE("move releases moved-from object", "[ScopeExit]") | |||
| { | |||
| REQUIRE_CALL(m, deleter()); | |||
| auto movedFrom = sr::scope_exit{deleter}; | |||
| auto guard = std::move(movedFrom); | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = std::move(movedFrom); | |||
| } | |||
| TEST_CASE("move with copy init releases moved-from object", "[ScopeExit]") | |||
| @@ -89,8 +86,7 @@ TEST_CASE("move transfers state", "[ScopeExit]") | |||
| { | |||
| REQUIRE_CALL(m, deleter()); | |||
| auto movedFrom = sr::scope_exit{deleter}; | |||
| auto guard = std::move(movedFrom); | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = std::move(movedFrom); | |||
| } | |||
| TEST_CASE("move transfers state if released", "[ScopeExit]") | |||
| @@ -98,7 +94,6 @@ TEST_CASE("move transfers state if released", "[ScopeExit]") | |||
| REQUIRE_CALL(m, deleter()).TIMES(0); | |||
| auto movedFrom = sr::scope_exit{deleter}; | |||
| movedFrom.release(); | |||
| auto guard = std::move(movedFrom); | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = std::move(movedFrom); | |||
| } | |||
| @@ -39,16 +39,14 @@ namespace | |||
| TEST_CASE("exit function called on destruction", "[ScopeFail]") | |||
| { | |||
| REQUIRE_CALL(m, deleter()).TIMES(0); | |||
| auto guard = sr::scope_fail{deleter}; | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = sr::scope_fail{deleter}; | |||
| } | |||
| TEST_CASE("exit function lambda called on destruction", "[ScopeFail]") | |||
| { | |||
| CallMock cm; | |||
| REQUIRE_CALL(cm, deleter()).TIMES(0); | |||
| auto guard = sr::scope_fail{[&cm] { cm.deleter(); }}; | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = sr::scope_fail{[&cm] { cm.deleter(); }}; | |||
| } | |||
| TEST_CASE("exit function called and rethrow on copy exception", "[ScopeFail]") | |||
| @@ -72,8 +70,7 @@ TEST_CASE("move releases moved-from object", "[ScopeFail]") | |||
| { | |||
| REQUIRE_CALL(m, deleter()).TIMES(0); | |||
| auto movedFrom = sr::scope_fail{deleter}; | |||
| auto guard = std::move(movedFrom); | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = std::move(movedFrom); | |||
| } | |||
| TEST_CASE("move with copy init releases moved-from object", "[ScopeFail]") | |||
| @@ -89,8 +86,7 @@ TEST_CASE("move transfers state", "[ScopeFail]") | |||
| { | |||
| REQUIRE_CALL(m, deleter()).TIMES(0); | |||
| auto movedFrom = sr::scope_fail{deleter}; | |||
| auto guard = std::move(movedFrom); | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = std::move(movedFrom); | |||
| } | |||
| TEST_CASE("move transfers state if released", "[ScopeFail]") | |||
| @@ -98,8 +94,7 @@ TEST_CASE("move transfers state if released", "[ScopeFail]") | |||
| REQUIRE_CALL(m, deleter()).TIMES(0); | |||
| auto movedFrom = sr::scope_fail{deleter}; | |||
| movedFrom.release(); | |||
| auto guard = std::move(movedFrom); | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = std::move(movedFrom); | |||
| } | |||
| TEST_CASE("exit function called on exception", "[ScopeFail]") | |||
| @@ -107,8 +102,7 @@ TEST_CASE("exit function called on exception", "[ScopeFail]") | |||
| try | |||
| { | |||
| REQUIRE_CALL(m, deleter()); | |||
| auto guard = sr::scope_fail{deleter}; | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = sr::scope_fail{deleter}; | |||
| throw 3; | |||
| } | |||
| catch( ... ) | |||
| @@ -124,8 +118,7 @@ TEST_CASE("exit function not called on pending exception", "[ScopeFail]") | |||
| } | |||
| catch( ... ) | |||
| { | |||
| auto guard = sr::scope_fail{deleter}; | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = sr::scope_fail{deleter}; | |||
| } | |||
| } | |||
| @@ -39,16 +39,14 @@ namespace | |||
| TEST_CASE("exit function called on destruction", "[ScopeSuccess]") | |||
| { | |||
| REQUIRE_CALL(m, deleter()); | |||
| auto guard = sr::scope_success{deleter}; | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = sr::scope_success{deleter}; | |||
| } | |||
| TEST_CASE("exit function lambda called on destruction", "[ScopeSuccess]") | |||
| { | |||
| CallMock cm; | |||
| REQUIRE_CALL(cm, deleter()); | |||
| auto guard = sr::scope_success{[&cm] { cm.deleter(); }}; | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = sr::scope_success{[&cm] { cm.deleter(); }}; | |||
| } | |||
| TEST_CASE("exit function not called and rethrow on copy exception", "[ScopeSuccess]") | |||
| @@ -71,8 +69,7 @@ TEST_CASE("move releases moved-from object", "[ScopeSuccess]") | |||
| { | |||
| REQUIRE_CALL(m, deleter()); | |||
| auto movedFrom = sr::scope_success{deleter}; | |||
| auto guard = std::move(movedFrom); | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = std::move(movedFrom); | |||
| } | |||
| TEST_CASE("move with copy init releases moved-from object", "[ScopeSuccess]") | |||
| @@ -81,15 +78,14 @@ TEST_CASE("move with copy init releases moved-from object", "[ScopeSuccess]") | |||
| const NotNothrowMoveMock notNothrow{&mock}; | |||
| REQUIRE_CALL(mock, deleter()); | |||
| sr::scope_success movedFrom{notNothrow}; | |||
| auto guard = std::move(movedFrom); | |||
| [[maybe_unused]] auto guard = std::move(movedFrom); | |||
| } | |||
| TEST_CASE("move transfers state", "[ScopeSuccess]") | |||
| { | |||
| REQUIRE_CALL(m, deleter()); | |||
| auto movedFrom = sr::scope_success{deleter}; | |||
| auto guard = std::move(movedFrom); | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = std::move(movedFrom); | |||
| } | |||
| TEST_CASE("move transfers state if released", "[ScopeSuccess]") | |||
| @@ -97,16 +93,14 @@ TEST_CASE("move transfers state if released", "[ScopeSuccess]") | |||
| REQUIRE_CALL(m, deleter()).TIMES(0); | |||
| auto movedFrom = sr::scope_success{deleter}; | |||
| movedFrom.release(); | |||
| auto guard = std::move(movedFrom); | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = std::move(movedFrom); | |||
| } | |||
| TEST_CASE("exit function not called on exception", "[ScopeFail]") | |||
| { | |||
| try | |||
| { | |||
| auto guard = sr::scope_success{deleter}; | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = sr::scope_success{deleter}; | |||
| throw 3; | |||
| } | |||
| catch( ... ) | |||
| @@ -123,8 +117,7 @@ TEST_CASE("exit function called on pending exception", "[ScopeFail]") | |||
| catch( ... ) | |||
| { | |||
| REQUIRE_CALL(m, deleter()); | |||
| auto guard = sr::scope_success{deleter}; | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = sr::scope_success{deleter}; | |||
| } | |||
| } | |||
| @@ -39,8 +39,7 @@ namespace | |||
| TEST_CASE("construction with move", "[UniqueResource]") | |||
| { | |||
| REQUIRE_CALL(m, deleter(3)); | |||
| auto guard = sr::unique_resource{Handle{3}, deleter}; | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = sr::unique_resource{Handle{3}, deleter}; | |||
| } | |||
| TEST_CASE("construction with copy", "[UniqueResource]") | |||
| @@ -48,8 +47,7 @@ TEST_CASE("construction with copy", "[UniqueResource]") | |||
| REQUIRE_CALL(m, deleter(3)); | |||
| const Handle h{3}; | |||
| const auto d = [](auto v) { m.deleter(v); }; | |||
| auto guard = sr::unique_resource{h, d}; | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = sr::unique_resource{h, d}; | |||
| } | |||
| TEST_CASE("construction with copy calls deleter and rethrows on failed copy", "[UniqueResource]") | |||
| @@ -59,8 +57,7 @@ TEST_CASE("construction with copy calls deleter and rethrows on failed copy", "[ | |||
| const auto d = [](const auto&) { m.deleter(3); }; | |||
| REQUIRE_CALL(m, deleter(3)); | |||
| sr::unique_resource guard{noMove, d}; | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] sr::unique_resource guard{noMove, d}; | |||
| }()); | |||
| } | |||
| @@ -79,8 +76,7 @@ TEST_CASE("move-construction with copy", "[UniqueResource]") | |||
| const CopyMock copyMock; | |||
| sr::unique_resource movedFrom{copyMock, d}; | |||
| auto guard = std::move(movedFrom); | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = std::move(movedFrom); | |||
| } | |||
| TEST_CASE("move assignment calls deleter", "[UniqueResource]") | |||
| @@ -98,8 +94,7 @@ TEST_CASE("move assignment calls deleter", "[UniqueResource]") | |||
| TEST_CASE("deleter called on destruction", "[UniqueResource]") | |||
| { | |||
| REQUIRE_CALL(m, deleter(3)); | |||
| auto guard = sr::unique_resource{Handle{3}, deleter}; | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = sr::unique_resource{Handle{3}, deleter}; | |||
| } | |||
| TEST_CASE("reset calls deleter", "[UniqueResource]") | |||
| @@ -190,28 +185,24 @@ TEST_CASE("deleter access", "[UniqueResource]") | |||
| TEST_CASE("make unique resource", "[UniqueResource]") | |||
| { | |||
| REQUIRE_CALL(m, deleter(7)); | |||
| auto guard = sr::unique_resource{Handle{7}, deleter}; | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = sr::unique_resource{Handle{7}, deleter}; | |||
| } | |||
| TEST_CASE("make unique resource with reference wrapper", "[UniqueResource]") | |||
| { | |||
| REQUIRE_CALL(m, deleter(3)); | |||
| Handle h{3}; | |||
| auto guard = sr::unique_resource{std::ref(h), deleter}; | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = sr::unique_resource{std::ref(h), deleter}; | |||
| } | |||
| TEST_CASE("make unique resource checked", "[UniqueResource]") | |||
| { | |||
| REQUIRE_CALL(m, deleter(4)); | |||
| auto guard = sr::make_unique_resource_checked(Handle{4}, Handle{-1}, deleter); | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = sr::make_unique_resource_checked(Handle{4}, Handle{-1}, deleter); | |||
| } | |||
| TEST_CASE("make unique resource checked releases if invalid", "[UniqueResource]") | |||
| { | |||
| auto guard = sr::make_unique_resource_checked(Handle{-1}, Handle{-1}, deleter); | |||
| static_cast<void>(guard); | |||
| [[maybe_unused]] auto guard = sr::make_unique_resource_checked(Handle{-1}, Handle{-1}, deleter); | |||
| } | |||