// Copyright Epic Games, Inc. All Rights Reserved. #include #include #include namespace zen { ////////////////////////////////////////////////////////////////////////// // // Testing related code follows... // #if ZEN_WITH_TESTS struct TestRefClass : public RefCounted { ~TestRefClass() { if (OnDestroy) OnDestroy(); } using RefCounted::RefCount; std::function OnDestroy; }; void refcount_forcelink() { } TEST_SUITE_BEGIN("core.refcount"); TEST_CASE("Ref") { Ref RefA; RefA = new TestRefClass; bool IsDestroyed = false; RefA->OnDestroy = [&] { IsDestroyed = true; }; CHECK(IsDestroyed == false); CHECK(RefA->RefCount() == 1); Ref RefB; RefB = RefA; CHECK(IsDestroyed == false); CHECK(RefA->RefCount() == 2); Ref RefC; RefB = RefC; CHECK(IsDestroyed == false); CHECK(RefA->RefCount() == 1); RefA = RefC; CHECK(IsDestroyed == true); } TEST_SUITE_END(); #endif } // namespace zen