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);
39 EXPECT_EQ(pool.
GetSize(), 123u);
41 auto grabbed = pool.
Grab();
42 EXPECT_EQ(grabbed->GetSize(), 123u);
43 EXPECT_TRUE(grabbed->GetIsReset());
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);
A thread-safe pool with a limited byte size.
std::shared_ptr< T > Grab()
void Recycle(std::shared_ptr< T > object)
ScopedObject< Object > Create(CtorArgs &&... args)
TEST(AllocationSizeTest, CanCreateTypedAllocations)