5 #include "gtest/gtest.h"
15 static std::shared_ptr<Foobar> Create() {
return std::make_shared<Foobar>(); }
17 size_t GetSize()
const {
return size_; }
19 void SetSize(
size_t size) { size_ = size; }
21 void Reset() { is_reset_ =
true; }
23 bool GetIsReset()
const {
return is_reset_; }
25 void SetIsReset(
bool is_reset) { is_reset_ = is_reset; }
29 bool is_reset_ =
false;
36 auto grabbed = pool.Grab();
37 grabbed->SetSize(123);
38 pool.Recycle(grabbed);
39 EXPECT_EQ(pool.GetSize(), 123u);
41 auto grabbed = pool.Grab();
42 EXPECT_EQ(grabbed->GetSize(), 123u);
43 EXPECT_TRUE(grabbed->GetIsReset());
44 EXPECT_EQ(pool.GetSize(), 0u);
47 TEST(PoolTest, Overload) {
48 Pool<Foobar> pool(1'000);
50 std::vector<std::shared_ptr<Foobar>> values;
52 for (
int i = 0; i < 20; i++) {
53 values.push_back(pool.Grab());
55 for (
const auto& value : values) {
60 EXPECT_EQ(pool.GetSize(), 1
'000u);
63 } // namespace testing
64 } // namespace impeller