diff options
Diffstat (limited to 'libadhocutil/unittests/testResourcePool.cpp')
-rw-r--r-- | libadhocutil/unittests/testResourcePool.cpp | 32 |
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()); +} + |