From 2959730c5d4caef539015755ce5adbddfed8afb4 Mon Sep 17 00:00:00 2001 From: Egor Yusov Date: Sat, 15 Jun 2019 14:42:51 -0700 Subject: Updated smart pointer test --- Tests/TestApp/src/SmartPointerTest.cpp | 62 +++++++++++++++++++++++++--------- 1 file changed, 46 insertions(+), 16 deletions(-) (limited to 'Tests/TestApp/src/SmartPointerTest.cpp') diff --git a/Tests/TestApp/src/SmartPointerTest.cpp b/Tests/TestApp/src/SmartPointerTest.cpp index 7b0fb23..c43fbee 100644 --- a/Tests/TestApp/src/SmartPointerTest.cpp +++ b/Tests/TestApp/src/SmartPointerTest.cpp @@ -552,9 +552,9 @@ SmartPointerTest::SmartPointerTest() : wpSelf( this ) {} - virtual void QueryInterface( const Diligent::INTERFACE_ID &IID, IObject **ppInterface ){} + virtual void QueryInterface( const INTERFACE_ID &IID, IObject **ppInterface ){} private: - Diligent::RefCntWeakPtr wpSelf; + RefCntWeakPtr wpSelf; }; SelfRefTest *pSelfRefTest = MakeNewObj(); @@ -573,9 +573,9 @@ SmartPointerTest::SmartPointerTest() : throw std::runtime_error("test exception"); } - virtual void QueryInterface( const Diligent::INTERFACE_ID &IID, IObject **ppInterface ){} + virtual void QueryInterface( const INTERFACE_ID &IID, IObject **ppInterface ){} private: - Diligent::RefCntWeakPtr wpSelf; + RefCntWeakPtr wpSelf; }; try @@ -600,9 +600,9 @@ SmartPointerTest::SmartPointerTest() : throw std::runtime_error("test exception"); } - virtual void QueryInterface( const Diligent::INTERFACE_ID &IID, IObject **ppInterface ){} + virtual void QueryInterface( const INTERFACE_ID &IID, IObject **ppInterface ){} private: - Diligent::RefCntWeakPtr wpSelf; + RefCntWeakPtr wpSelf; }; try @@ -635,9 +635,9 @@ SmartPointerTest::SmartPointerTest() : throw std::runtime_error("test exception"); } private: - Diligent::RefCntWeakPtr wpSelf; + RefCntWeakPtr wpSelf; }; - virtual void QueryInterface( const Diligent::INTERFACE_ID &IID, IObject **ppInterface ){} + virtual void QueryInterface( const INTERFACE_ID &IID, IObject **ppInterface ){} private: Subclass m_Member; }; @@ -672,7 +672,7 @@ SmartPointerTest::SmartPointerTest() : } } - virtual void QueryInterface( const Diligent::INTERFACE_ID &IID, IObject **ppInterface ){} + virtual void QueryInterface( const INTERFACE_ID &IID, IObject **ppInterface ){} class ExceptionTest4 : public RefCountedObject { @@ -693,10 +693,10 @@ SmartPointerTest::SmartPointerTest() : throw std::runtime_error("test exception"); } private: - Diligent::RefCntWeakPtr wpParent; - Diligent::RefCntWeakPtr wpOwner; + RefCntWeakPtr wpParent; + RefCntWeakPtr wpOwner; }; - virtual void QueryInterface( const Diligent::INTERFACE_ID &IID, IObject **ppInterface ){} + virtual void QueryInterface( const INTERFACE_ID &IID, IObject **ppInterface ){} private: Subclass m_Member; }; @@ -719,7 +719,7 @@ SmartPointerTest::SmartPointerTest() : m_pMember = NEW_RC_OBJ( DefaultRawMemoryAllocator::GetAllocator(), "Test object", ExceptionTest4, this)(*this); } - virtual void QueryInterface( const Diligent::INTERFACE_ID &IID, IObject **ppInterface ){} + virtual void QueryInterface( const INTERFACE_ID &IID, IObject **ppInterface ){} class ExceptionTest4 : public RefCountedObject { @@ -740,10 +740,10 @@ SmartPointerTest::SmartPointerTest() : throw std::runtime_error("test exception"); } private: - Diligent::RefCntWeakPtr wpParent; - Diligent::RefCntWeakPtr wpOwner; + RefCntWeakPtr wpParent; + RefCntWeakPtr wpOwner; }; - virtual void QueryInterface( const Diligent::INTERFACE_ID &IID, IObject **ppInterface ){} + virtual void QueryInterface( const INTERFACE_ID &IID, IObject **ppInterface ){} private: Subclass m_Member; }; @@ -761,6 +761,36 @@ SmartPointerTest::SmartPointerTest() : } } + { + class TestObject : public RefCountedObject + { + public: + TestObject(IReferenceCounters *pRefCounters) : + RefCountedObject(pRefCounters) + { + } + + virtual void QueryInterface( const INTERFACE_ID &IID, IObject **ppInterface ){} + + inline virtual Atomics::Long Release()override final + { + return RefCountedObject::Release( + [&]() + { + ppWeakPtr->Release(); + } + ); + } + RefCntWeakPtr* ppWeakPtr = nullptr; + }; + + RefCntAutoPtr pObj( NEW_RC_OBJ( DefaultRawMemoryAllocator::GetAllocator(), "Test object", TestObject)() ); + RefCntWeakPtr pWeakPtr(pObj); + + pObj->ppWeakPtr = &pWeakPtr; + pObj.Release(); + } + StartConcurrencyTest(); RunConcurrencyTest(); } -- cgit v1.2.3