Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #include "CoreMinimal.h"
- #include "Misc/AutomationTest.h"
- #include "FormID.h"
- #include "FormIDHelper.h" // Includes FExtendedFormID and UFormIDHelper
- FORCEINLINE uint32 GetTypeHash(const FExtendedFormID& ExtendedFormID)
- {
- return GetTypeHash(ExtendedFormID.FormID) ^ GetTypeHash(ExtendedFormID.ParentPluginName) ^ GetTypeHash(ExtendedFormID.Masters);
- }
- IMPLEMENT_SIMPLE_AUTOMATION_TEST(FFormIDTest, "UnrealCreationEngine.FormIDTest", EAutomationTestFlags::EditorContext | EAutomationTestFlags::EngineFilter)
- bool FFormIDTest::RunTest(const FString& Parameters)
- {
- FString ParentPluginName = UFormIDHelper::NormalizePluginName(TEXT("plugin1"));
- TArray<FString> Masters = {
- UFormIDHelper::NormalizePluginName(TEXT("plugin2")),
- UFormIDHelper::NormalizePluginName(TEXT("plugin3"))
- };
- {
- FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01);
- TestEqual(TEXT("Zero mod index object index"), UFormIDHelper::GetObjectIndex(FormID), 0x01);
- }
- {
- FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01000001);
- TestEqual(TEXT("Non-zero mod index object index"), UFormIDHelper::GetObjectIndex(FormID), 0x01);
- }
- {
- FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, TArray<FString>(), 0x05000001);
- TestEqual(TEXT("Zero mod index no masters plugin"), UFormIDHelper::GetPluginName(FormID), ParentPluginName);
- }
- {
- FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, TArray<FString>(), 0x05000001);
- TestEqual(TEXT("Non-zero mod index no masters plugin"), UFormIDHelper::GetPluginName(FormID), ParentPluginName);
- }
- {
- FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01);
- TestEqual(TEXT("Zero mod index with masters plugin"), UFormIDHelper::GetPluginName(FormID), Masters[0]);
- }
- {
- FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01000001);
- TestEqual(TEXT("Mod index less than masters plugin"), UFormIDHelper::GetPluginName(FormID), Masters[1]);
- }
- {
- FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x02000001);
- TestEqual(TEXT("Mod index greater than masters plugin"), UFormIDHelper::GetPluginName(FormID), ParentPluginName);
- }
- {
- FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01);
- FExtendedFormID OtherFormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x05000001);
- TestFalse(TEXT("Different mod indices not equal"), UFormIDHelper::Equals(FormID.FormID, OtherFormID.FormID));
- }
- {
- FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x05000001);
- FExtendedFormID OtherFormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x05000002);
- TestFalse(TEXT("Different object indices not equal"), UFormIDHelper::Equals(FormID.FormID, OtherFormID.FormID));
- }
- {
- FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, TArray<FString>(), 0x01);
- FExtendedFormID OtherFormID = UFormIDHelper::CreateExtendedFormID(UFormIDHelper::NormalizePluginName(TEXT("plugin1.ghost")), TArray<FString>(), 0x01);
- TestNotEqual(TEXT("Different parent plugin names not equal"), FormID, OtherFormID);
- }
- {
- FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01);
- FExtendedFormID OtherFormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01);
- TestTrue(TEXT("Identical FormIDs equal"), UFormIDHelper::Equals(FormID.FormID, OtherFormID.FormID));
- }
- {
- FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01);
- FExtendedFormID OtherFormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x02);
- TestTrue(TEXT("Lower object index less than"), UFormIDHelper::IsLessThan(FormID, OtherFormID));
- TestFalse(TEXT("Higher object index not less than"), UFormIDHelper::IsLessThan(OtherFormID, FormID));
- }
- {
- FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(UFormIDHelper::NormalizePluginName(TEXT("A")), TArray<FString>(), 0x01);
- FExtendedFormID OtherFormID = UFormIDHelper::CreateExtendedFormID(UFormIDHelper::NormalizePluginName(TEXT("b")), TArray<FString>(), 0x01);
- TestTrue(TEXT("Lexicographically lower plugin less than"), UFormIDHelper::IsLessThan(FormID, OtherFormID));
- TestFalse(TEXT("Lexicographically higher plugin not less than"), UFormIDHelper::IsLessThan(OtherFormID, FormID));
- }
- {
- FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01);
- FExtendedFormID OtherFormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01);
- TestFalse(TEXT("Identical FormID not less than"), UFormIDHelper::IsLessThan(FormID, OtherFormID));
- TestFalse(TEXT("Identical FormID not less than reverse"), UFormIDHelper::IsLessThan(OtherFormID, FormID));
- }
- {
- FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01);
- TArray<FString> Expected = { ParentPluginName, Masters[0], Masters[1] };
- TestEqual(TEXT("All plugin names correct"), UFormIDHelper::GetAllPluginNames(FormID), Expected);
- }
- {
- FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01);
- TestTrue(TEXT("HasMaster detects plugin2"), UFormIDHelper::HasMaster(FormID, TEXT("plugin2")));
- TestFalse(TEXT("HasMaster rejects non-master"), UFormIDHelper::HasMaster(FormID, TEXT("plugin4")));
- }
- {
- TestTrue(TEXT("Valid .esp extension"), UFormIDHelper::IsValidPluginExtension(TEXT("test.esp")));
- TestTrue(TEXT("Valid .esm extension"), UFormIDHelper::IsValidPluginExtension(TEXT("test.esm")));
- TestTrue(TEXT("Valid .esl extension"), UFormIDHelper::IsValidPluginExtension(TEXT("test.esl")));
- TestFalse(TEXT("Invalid extension"), UFormIDHelper::IsValidPluginExtension(TEXT("test.txt")));
- }
- {
- FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01);
- TestEqual(TEXT("Load order index matches masters count"), UFormIDHelper::GetPluginLoadOrderIndex(FormID), 2);
- }
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement