Browse Source

Reset and get implemented.

main
offa 8 years ago
parent
commit
7988145317
2 changed files with 49 additions and 0 deletions
  1. +11
    -0
      include/unique_resource.h
  2. +38
    -0
      test/UniqueResourceTest.cpp

+ 11
- 0
include/unique_resource.h View File

return m_resource; return m_resource;
} }


void reset(Ressource&& res) noexcept
{
invoke(invoke_it::again);
m_resource = std::move(res);
}

const Ressource& get() const noexcept
{
return m_resource;
}



unique_resource_t& operator=(unique_resource_t&& other) noexcept unique_resource_t& operator=(unique_resource_t&& other) noexcept
{ {

+ 38
- 0
test/UniqueResourceTest.cpp View File

REQUIRE_NOTHROW(guard.invoke()); REQUIRE_NOTHROW(guard.invoke());
} }


TEST_CASE("reset releases old ressource", "[UniqueResource]")
{
std::size_t calls{0};

{
auto d = [&calls](auto v)
{
if( calls == 0 )
{
REQUIRE(v == 3);
}
else
{
REQUIRE(v == 7);
}
++calls;
};

auto guard = sr::unique_resource(Handle{3}, d);
guard.reset(Handle{7});
}

REQUIRE(calls == 2);
}

TEST_CASE("reset sets ressource", "[UniqueResource]")
{
auto guard = sr::unique_resource(Handle{3}, [](auto) { });
guard.reset(Handle{7});
REQUIRE(guard.get() == 7);
}

TEST_CASE("get returns ressource", "[UniqueResource]")
{
auto guard = sr::unique_resource(Handle{3}, [](auto) { });
REQUIRE(guard.get() == 3);
}


Loading…
Cancel
Save