Files
UnrealEngine/Engine/Source/Programs/ToolMenusTests/Tests/ToolMenuTestInstanceScopedTest.cpp
2025-05-18 13:04:45 +08:00

68 lines
2.0 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "TestHarness.h"
#include "ToolMenus.h"
TEST_CASE("UE::ToolMenus::FToolMenuTestInstanceScoped replaces the singleton while the scope is active", "[ToolMenus]")
{
UToolMenus* const OriginalSingleton = UToolMenus::Get();
{
UE::ToolMenus::FToolMenuTestInstanceScoped Scope1;
UToolMenus* const FirstNestedSingleton = UToolMenus::Get();
CHECK(FirstNestedSingleton != OriginalSingleton);
{
UE::ToolMenus::FToolMenuTestInstanceScoped Scope2;
UToolMenus* const SecondNestedSingleton = UToolMenus::Get();
CHECK(SecondNestedSingleton != FirstNestedSingleton);
CHECK(SecondNestedSingleton != OriginalSingleton);
}
}
}
TEST_CASE("UE::ToolMenus::FToolMenuTestInstanceScoped reinstates the original singleton when the scope is destructed", "[ToolMenus]")
{
UToolMenus* const OriginalSingleton = UToolMenus::Get();
{
UE::ToolMenus::FToolMenuTestInstanceScoped Scope1;
UToolMenus* const FirstNestedSingleton = UToolMenus::Get();
{
UE::ToolMenus::FToolMenuTestInstanceScoped Scope2;
}
CHECK(FirstNestedSingleton == UToolMenus::Get());
}
CHECK(OriginalSingleton == UToolMenus::Get());
}
const FName FToolMenuTestInstanceScopedMenuName =
"FToolMenuTestInstanceScoped_prevents_names_from_leaking_between_tests";
TEST_CASE("UE::ToolMenus::FToolMenuTestInstanceScoped prevents menu names from leaking between tests (test 1 of 2)", "[ToolMenus]")
{
UE::ToolMenus::FToolMenuTestInstanceScoped Scope;
CHECK(!UToolMenus::Get()->IsMenuRegistered(FToolMenuTestInstanceScopedMenuName));
UToolMenus::Get()->RegisterMenu(FToolMenuTestInstanceScopedMenuName);
}
TEST_CASE("UE::ToolMenus::FToolMenuTestInstanceScoped prevents menu names from leaking between tests (test 2 of 2)", "[ToolMenus]")
{
UE::ToolMenus::FToolMenuTestInstanceScoped Scope;
CHECK(!UToolMenus::Get()->IsMenuRegistered(FToolMenuTestInstanceScopedMenuName));
UToolMenus::Get()->RegisterMenu(FToolMenuTestInstanceScopedMenuName);
}