26class SharedResourcePointerTest final :
public UnitTest
29 SharedResourcePointerTest()
30 :
UnitTest (
"SharedResourcePointer", UnitTestCategories::memory) {}
34 beginTest (
"Only one instance is created");
37 struct CountIncrementer { CountIncrementer() { ++count; } };
40 const SharedResourcePointer<CountIncrementer> instance1;
43 const SharedResourcePointer<CountIncrementer> instance2;
46 expect (&instance1.get() == &instance2.get());
49 beginTest (
"The shared object is destroyed when the reference count reaches 0");
52 struct ReferenceCounter
54 ReferenceCounter() { ++count; }
55 ~ReferenceCounter() { --count; }
61 const SharedResourcePointer<ReferenceCounter> instance1;
62 const SharedResourcePointer<ReferenceCounter> instance2;
69 beginTest (
"getInstanceWithoutCreating()");
76 const SharedResourcePointer<Object> instance;
83 beginTest (
"Create objects with private constructors");
85 class ObjectWithPrivateConstructor
88 ObjectWithPrivateConstructor() =
default;
89 friend SharedResourcePointer<ObjectWithPrivateConstructor>;
92 SharedResourcePointer<ObjectWithPrivateConstructor> instance;
97static SharedResourcePointerTest sharedResourcePointerTest;
static std::optional< SharedResourcePointer > getSharedObjectWithoutCreating()
UnitTest(const String &name, const String &category=String())
void beginTest(const String &testName)
void expect(bool testResult, const String &failureMessage=String())