/** @file * @author Edouard DUPIN * @copyright 2016, Edouard DUPIN, all right reserved * @license MPL v2.0 (see license file) */ #include #include #include "main.hpp" namespace testESFT { class TestClassBase : public ememory::EnableSharedFromThis { public: TestClassBase() { EMEMORY_INFO("create TestClassBase"); } ~TestClassBase() { EMEMORY_INFO("delete TestClassBase"); } }; class TestClass : public testESFT::TestClassBase { public: TestClass() { EMEMORY_INFO("create TestClass"); } ~TestClass() { EMEMORY_INFO("delete TestClass"); } }; } TEST(TestEnableSharedFromThis, testClassBase) { ememory::SharedPtr data = ememory::makeShared(); EXPECT_EQ(data.useCount(), 1); ememory::WeakPtr dataWeak = data; EXPECT_EQ(data.useCount(), 1); EXPECT_EQ(dataWeak.useCount(), 1); data.reset(); EXPECT_EQ(data.useCount(), 0); EXPECT_EQ(dataWeak.useCount(), 0); } TEST(TestEnableSharedFromThis, testClass) { ememory::SharedPtr data = ememory::makeShared(); EXPECT_EQ(data.useCount(), 1); ememory::WeakPtr dataWeak = data; EXPECT_EQ(data.useCount(), 1); EXPECT_EQ(dataWeak.useCount(), 1); data.reset(); EXPECT_EQ(data.useCount(), 0); EXPECT_EQ(dataWeak.useCount(), 0); }