summaryrefslogtreecommitdiff
path: root/libadhocutil/unittests/testResourcePool.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libadhocutil/unittests/testResourcePool.cpp')
-rw-r--r--libadhocutil/unittests/testResourcePool.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/libadhocutil/unittests/testResourcePool.cpp b/libadhocutil/unittests/testResourcePool.cpp
index 3af149b..d7547d4 100644
--- a/libadhocutil/unittests/testResourcePool.cpp
+++ b/libadhocutil/unittests/testResourcePool.cpp
@@ -38,6 +38,16 @@ class TRPSmall : public AdHoc::ResourcePool<MockResource> {
}
};
+class TRPFail : public AdHoc::ResourcePool<MockResource> {
+ public:
+ TRPFail() : AdHoc::ResourcePool<MockResource>(3, 1) { }
+ protected:
+ MockResource * createResource() const override
+ {
+ throw std::exception();
+ }
+};
+
BOOST_AUTO_TEST_CASE ( get )
{
{
@@ -311,3 +321,25 @@ BOOST_AUTO_TEST_CASE( test )
}
}
+BOOST_AUTO_TEST_CASE( createFail )
+{
+ TRPFail pool;
+ BOOST_REQUIRE_EQUAL(0, MockResource::count);
+ BOOST_REQUIRE_EQUAL(0, pool.availableCount());
+ BOOST_REQUIRE_EQUAL(0, pool.inUseCount());
+ BOOST_REQUIRE_EQUAL(3, pool.freeCount());
+ BOOST_REQUIRE_THROW(pool.get(), std::exception);
+ BOOST_REQUIRE_EQUAL(3, pool.freeCount());
+ BOOST_REQUIRE_THROW(pool.get(0), std::exception);
+ BOOST_REQUIRE_EQUAL(3, pool.freeCount());
+ BOOST_REQUIRE_THROW(pool.get(100), std::exception);
+ BOOST_REQUIRE_EQUAL(3, pool.freeCount());
+ BOOST_REQUIRE_EQUAL(0, MockResource::count);
+ BOOST_REQUIRE_EQUAL(0, pool.availableCount());
+ BOOST_REQUIRE_EQUAL(0, pool.inUseCount());
+ BOOST_REQUIRE_THROW(pool.get(), std::exception);
+ BOOST_REQUIRE_EQUAL(3, pool.freeCount());
+ BOOST_REQUIRE_THROW(pool.get(), std::exception);
+ BOOST_REQUIRE_EQUAL(3, pool.freeCount());
+}
+