/** @file * @author Edouard DUPIN * @copyright 2016, Edouard DUPIN, all right reserved * @license MPL v2.0 (see license file) */ #include #include #include "main.hpp" TEST(TestWeak, createAndDestroy) { ememory::SharedPtr data = ememory::makeShared("coucou"); 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(TestWeak, retrive) { ememory::SharedPtr data = ememory::makeShared("coucou"); EXPECT_EQ(data.useCount(), 1); ememory::WeakPtr dataWeak = data; EXPECT_EQ(data.useCount(), 1); EXPECT_EQ(dataWeak.useCount(), 1); ememory::SharedPtr dataRetrive = dataWeak.lock(); EXPECT_EQ(data.useCount(), 2); EXPECT_EQ(dataWeak.useCount(), 2); data.reset(); EXPECT_EQ(data.useCount(), 0); EXPECT_EQ(dataRetrive.useCount(), 1); EXPECT_EQ(dataWeak.useCount(), 1); EXPECT_EQ(*dataRetrive, "coucou"); dataRetrive.reset(); EXPECT_EQ(dataRetrive.useCount(), 0); EXPECT_EQ(dataWeak.useCount(), 0); dataRetrive = dataWeak.lock(); EXPECT_EQ(dataRetrive == null, true); EXPECT_EQ(dataRetrive.useCount(), 0); EXPECT_EQ(dataWeak.useCount(), 0); }