| 30 | namespace { |
| 31 | |
| 32 | TEST(PoolTest, AcquireUsesFactory) { |
| 33 | size_t created = 0; |
| 34 | Pool<size_t> pool([&created] { |
| 35 | ++created; |
| 36 | return std::make_unique<size_t>(created); |
| 37 | }); |
| 38 | |
| 39 | size_t *first_ptr = nullptr; |
| 40 | { |
| 41 | auto first = pool.acquire(); |
| 42 | ASSERT_TRUE(first); |
| 43 | first_ptr = first.get(); |
| 44 | EXPECT_EQ(*first, 1U); |
| 45 | } |
| 46 | |
| 47 | { |
| 48 | auto second = pool.acquire(); |
| 49 | ASSERT_TRUE(second); |
| 50 | EXPECT_EQ(second.get(), first_ptr); |
| 51 | EXPECT_EQ(*second, 1U); |
| 52 | EXPECT_EQ(created, 1U); |
| 53 | } |
| 54 | } |
| 55 | |
| 56 | TEST(PoolTest, BorrowReturnsValue) { |
| 57 | Pool<int> pool([] { return std::make_unique<int>(3); }); |