110 lines
2.7 KiB
C++
110 lines
2.7 KiB
C++
// Copyright Pacificao. All Rights Reserved.
|
|
|
|
#if WITH_EDITOR && WITH_DEV_AUTOMATION_TESTS
|
|
|
|
#include "AgrarianEditorAutomationLibrary.h"
|
|
#include "HAL/PlatformTime.h"
|
|
#include "Misc/AutomationTest.h"
|
|
#include "Tests/AutomationEditorCommon.h"
|
|
|
|
namespace
|
|
{
|
|
constexpr const TCHAR* ShelterClassPath = TEXT("/Game/Agrarian/Blueprints/Structures/BP_PrimitiveShelter.BP_PrimitiveShelter_C");
|
|
constexpr const TCHAR* PersistenceTestSlot = TEXT("AgrarianAutomationPersistence");
|
|
|
|
class FAgrarianCreateBlankMapCommand final : public IAutomationLatentCommand
|
|
{
|
|
public:
|
|
explicit FAgrarianCreateBlankMapCommand(FAutomationTestBase* InTest)
|
|
: Test(InTest)
|
|
{
|
|
}
|
|
|
|
virtual bool Update() override
|
|
{
|
|
UWorld* EditorWorld = FAutomationEditorCommonUtils::CreateNewMap();
|
|
if (!EditorWorld && Test)
|
|
{
|
|
Test->AddError(TEXT("Could not create blank editor map for persistence subsystem test"));
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
private:
|
|
FAutomationTestBase* Test = nullptr;
|
|
};
|
|
|
|
class FAgrarianWaitSecondsCommand final : public IAutomationLatentCommand
|
|
{
|
|
public:
|
|
explicit FAgrarianWaitSecondsCommand(const double InWaitSeconds)
|
|
: EndTime(FPlatformTime::Seconds() + InWaitSeconds)
|
|
{
|
|
}
|
|
|
|
virtual bool Update() override
|
|
{
|
|
return FPlatformTime::Seconds() >= EndTime;
|
|
}
|
|
|
|
private:
|
|
double EndTime = 0.0;
|
|
};
|
|
|
|
class FAgrarianRunPersistenceSubsystemCommand final : public IAutomationLatentCommand
|
|
{
|
|
public:
|
|
explicit FAgrarianRunPersistenceSubsystemCommand(FAutomationTestBase* InTest)
|
|
: Test(InTest)
|
|
{
|
|
}
|
|
|
|
virtual bool Update() override
|
|
{
|
|
if (!Test)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
UClass* ShelterClass = StaticLoadClass(AActor::StaticClass(), nullptr, ShelterClassPath);
|
|
if (!ShelterClass)
|
|
{
|
|
Test->AddError(FString::Printf(TEXT("Could not load shelter class: %s"), ShelterClassPath));
|
|
return true;
|
|
}
|
|
|
|
const FString Result = UAgrarianEditorAutomationLibrary::RunPersistenceSubsystemSmokeTest(ShelterClass, PersistenceTestSlot);
|
|
if (!Result.StartsWith(TEXT("PASS:")))
|
|
{
|
|
Test->AddError(Result);
|
|
return true;
|
|
}
|
|
|
|
Test->AddInfo(Result);
|
|
return true;
|
|
}
|
|
|
|
private:
|
|
FAutomationTestBase* Test = nullptr;
|
|
};
|
|
}
|
|
|
|
IMPLEMENT_SIMPLE_AUTOMATION_TEST(
|
|
FAgrarianPersistenceSubsystemAutomationTest,
|
|
"Agrarian.PersistenceSubsystem.LiveGameInstance",
|
|
EAutomationTestFlags::EditorContext | EAutomationTestFlags::EngineFilter)
|
|
|
|
bool FAgrarianPersistenceSubsystemAutomationTest::RunTest(const FString& Parameters)
|
|
{
|
|
ADD_LATENT_AUTOMATION_COMMAND(FAgrarianCreateBlankMapCommand(this));
|
|
ADD_LATENT_AUTOMATION_COMMAND(FStartPIECommand(true));
|
|
ADD_LATENT_AUTOMATION_COMMAND(FAgrarianWaitSecondsCommand(1.0));
|
|
ADD_LATENT_AUTOMATION_COMMAND(FAgrarianRunPersistenceSubsystemCommand(this));
|
|
ADD_LATENT_AUTOMATION_COMMAND(FEndPlayMapCommand());
|
|
|
|
return true;
|
|
}
|
|
|
|
#endif
|