Files
UnrealEngine/Engine/Plugins/Runtime/ReplicationSystemTestPlugin/Source/Private/NetworkAutomationTestMacros.cpp
2025-05-18 13:04:45 +08:00

102 lines
2.1 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "NetworkAutomationTestMacros.h"
#include "NetworkAutomationTest.h"
#include "Misc/AssertionMacros.h"
#include "ReplicationSystemTestPlugin/NetworkAutomationTest.h"
DEFINE_LOG_CATEGORY(LogNetworkAutomationTest);
namespace UE::Net
{
FTestEnsureScope::FTestEnsureScope()
: FEnsureScope(
[](const FEnsureHandlerArgs& Args)
{
UE_LOG(LogNetworkAutomationTest, Display, TEXT("Ensure condition failed: %hs\n%s\n"), Args.Expression, Args.Message);
return true;
}
)
{
}
FTestResult::FTestResult()
: TestResult(ETestResult_Success)
{
}
class FTestResultSuccess final : public FTestResult
{
public:
FTestResultSuccess() { TestResult = ETestResult_Success; }
};
class FTestResultFailure final : public FTestResult
{
public:
FTestResultFailure() { TestResult = ETestResult_FatalError; }
};
FTestResult
CreateTestSuccess()
{
return FTestResultSuccess();
}
FTestResult
CreateTestFailure()
{
return FTestResultFailure();
}
FTestMessageLog::FTestMessageLog(FNetworkAutomationTestSuiteFixture& InTest, ELogVerbosity::Type InLogVerbosity)
: Test(InTest)
, LogVerbosity(InLogVerbosity)
{
}
#define UE_TEST_MESSAGE_LOG_(Verbosity) UE_LOG(LogNetworkAutomationTest, Verbosity, TEXT("TestCase %ls: %ls"), Test.GetName(), Message.C_Str())
FTestMessageLog::~FTestMessageLog()
{
// UE_LOG requires a ELogVerbosity literal, without the namespace. Since we don't want a separate class per log verbosity we switch on the verbosity instead.
switch (LogVerbosity)
{
case ELogVerbosity::Fatal:
UE_TEST_MESSAGE_LOG_(Fatal);
break;
case ELogVerbosity::Error:
UE_TEST_MESSAGE_LOG_(Error);
break;
case ELogVerbosity::Warning:
UE_TEST_MESSAGE_LOG_(Warning);
break;
case ELogVerbosity::Display:
UE_TEST_MESSAGE_LOG_(Display);
break;
case ELogVerbosity::Log:
UE_TEST_MESSAGE_LOG_(Log);
break;
case ELogVerbosity::Verbose:
UE_TEST_MESSAGE_LOG_(Verbose);
break;
case ELogVerbosity::VeryVerbose:
UE_TEST_MESSAGE_LOG_(VeryVerbose);
break;
default:
break;
}
}
#undef UE_TEST_MESSAGE_LOG_
void
FTestMessageLog::operator=(const FTestMessage& InMessage)
{
Message << InMessage;
}
}