diff options
Diffstat (limited to 'libadhocutil/unittests/testResourcePool.cpp')
-rw-r--r-- | libadhocutil/unittests/testResourcePool.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/libadhocutil/unittests/testResourcePool.cpp b/libadhocutil/unittests/testResourcePool.cpp index 6e62730..349ea00 100644 --- a/libadhocutil/unittests/testResourcePool.cpp +++ b/libadhocutil/unittests/testResourcePool.cpp @@ -245,3 +245,40 @@ BOOST_AUTO_TEST_CASE( threading2 ) BOOST_REQUIRE_EQUAL(1, pool.availableCount()); } +class TTRP : public TRP { + public: + TTRP() : n(0) { } + void testResource(const MockResource *) const override + { + n += 1; + if (n % 2) { + throw std::exception(); + } + } + private: + mutable int n; +}; + +BOOST_AUTO_TEST_CASE( test ) +{ + TTRP pool; + MockResource * rp; + { + auto r = pool.get(); + rp = r.get(); + } + { + auto r = pool.get(); + BOOST_REQUIRE(r.get()); + BOOST_REQUIRE(rp != r.get()); + BOOST_REQUIRE_EQUAL(1, MockResource::count); + rp = r.get(); + } + { + auto r = pool.get(); + BOOST_REQUIRE(r.get()); + BOOST_REQUIRE(rp == r.get()); + BOOST_REQUIRE_EQUAL(1, MockResource::count); + } +} + |