2023-01-30 13:40:49 -05:00
|
|
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
|
|
|
|
|
|
#if WITH_LOW_LEVEL_TESTS
|
|
|
|
|
|
|
|
|
|
#include "TestHarness.h"
|
|
|
|
|
#include "TestMacros/Assertions.h"
|
|
|
|
|
#include "ObjectPtrTestClass.h"
|
|
|
|
|
#include "UObject/Package.h"
|
|
|
|
|
#include "Misc/ScopeExit.h"
|
|
|
|
|
#include "UObject/UnrealType.h"
|
|
|
|
|
#include "UObject/LinkerPlaceholderExportObject.h"
|
|
|
|
|
#include "UObject/LinkerPlaceholderClass.h"
|
|
|
|
|
#include "UObject/ObjectHandleTracking.h"
|
|
|
|
|
#include "LowLevelTestsRunner/WarnFilterScope.h"
|
|
|
|
|
|
|
|
|
|
TEST_CASE("UE::CoreUObject::FClassProperty::Identical")
|
|
|
|
|
{
|
|
|
|
|
#if UE_WITH_OBJECT_HANDLE_TRACKING
|
2023-04-27 17:20:13 -04:00
|
|
|
auto CallbackHandle = UE::CoreUObject::AddObjectHandleReferenceResolvedCallback([](const FObjectRef&, UPackage*, UObject*)
|
2023-01-30 13:40:49 -05:00
|
|
|
{
|
2023-04-27 17:20:13 -04:00
|
|
|
FAIL("Unexpected resolve during CheckValidObject");
|
2023-01-30 13:40:49 -05:00
|
|
|
});
|
|
|
|
|
ON_SCOPE_EXIT
|
|
|
|
|
{
|
2023-04-27 17:20:13 -04:00
|
|
|
UE::CoreUObject::RemoveObjectHandleReferenceResolvedCallback(CallbackHandle);
|
2023-01-30 13:40:49 -05:00
|
|
|
};
|
|
|
|
|
#endif
|
|
|
|
|
UClass* Class = UObjectWithClassProperty::StaticClass();
|
|
|
|
|
FObjectProperty* Property = CastField<FObjectProperty>(Class->FindPropertyByName(TEXT("ClassPtr")));
|
|
|
|
|
REQUIRE(Property != nullptr);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
UPackage* TestPackage = NewObject<UPackage>(nullptr, TEXT("TestPackageName"), RF_Transient);
|
|
|
|
|
TestPackage->AddToRoot();
|
|
|
|
|
ON_SCOPE_EXIT
|
|
|
|
|
{
|
|
|
|
|
TestPackage->RemoveFromRoot();
|
|
|
|
|
};
|
|
|
|
|
UObjectWithClassProperty* Obj = NewObject<UObjectWithClassProperty>(TestPackage, TEXT("UObjectWithClassProperty"));
|
|
|
|
|
|
|
|
|
|
CHECK(Property->Identical(Obj, Obj, 0u));
|
|
|
|
|
|
|
|
|
|
}
|
2023-04-27 17:20:13 -04:00
|
|
|
#endif
|