Advertisement
malice936

FormIDTest.h

Apr 13th, 2025
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.60 KB | Gaming | 0 0
  1. #pragma once
  2.  
  3. #include "CoreMinimal.h"
  4. #include "Misc/AutomationTest.h"
  5. #include "FormID.h"
  6. #include "FormIDHelper.h" // Includes FExtendedFormID and UFormIDHelper
  7.  
  8. FORCEINLINE uint32 GetTypeHash(const FExtendedFormID& ExtendedFormID)
  9. {
  10.     return GetTypeHash(ExtendedFormID.FormID) ^ GetTypeHash(ExtendedFormID.ParentPluginName) ^ GetTypeHash(ExtendedFormID.Masters);
  11. }
  12.  
  13. IMPLEMENT_SIMPLE_AUTOMATION_TEST(FFormIDTest, "UnrealCreationEngine.FormIDTest", EAutomationTestFlags::EditorContext | EAutomationTestFlags::EngineFilter)
  14.  
  15. bool FFormIDTest::RunTest(const FString& Parameters)
  16. {
  17.     FString ParentPluginName = UFormIDHelper::NormalizePluginName(TEXT("plugin1"));
  18.     TArray<FString> Masters = {
  19.         UFormIDHelper::NormalizePluginName(TEXT("plugin2")),
  20.         UFormIDHelper::NormalizePluginName(TEXT("plugin3"))
  21.     };
  22.  
  23.     {
  24.         FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01);
  25.         TestEqual(TEXT("Zero mod index object index"), UFormIDHelper::GetObjectIndex(FormID), 0x01);
  26.     }
  27.  
  28.     {
  29.         FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01000001);
  30.         TestEqual(TEXT("Non-zero mod index object index"), UFormIDHelper::GetObjectIndex(FormID), 0x01);
  31.     }
  32.  
  33.     {
  34.         FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, TArray<FString>(), 0x05000001);
  35.         TestEqual(TEXT("Zero mod index no masters plugin"), UFormIDHelper::GetPluginName(FormID), ParentPluginName);
  36.     }
  37.  
  38.     {
  39.         FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, TArray<FString>(), 0x05000001);
  40.         TestEqual(TEXT("Non-zero mod index no masters plugin"), UFormIDHelper::GetPluginName(FormID), ParentPluginName);
  41.     }
  42.  
  43.     {
  44.         FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01);
  45.         TestEqual(TEXT("Zero mod index with masters plugin"), UFormIDHelper::GetPluginName(FormID), Masters[0]);
  46.     }
  47.  
  48.     {
  49.         FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01000001);
  50.         TestEqual(TEXT("Mod index less than masters plugin"), UFormIDHelper::GetPluginName(FormID), Masters[1]);
  51.     }
  52.  
  53.     {
  54.         FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x02000001);
  55.         TestEqual(TEXT("Mod index greater than masters plugin"), UFormIDHelper::GetPluginName(FormID), ParentPluginName);
  56.     }
  57.  
  58.     {
  59.         FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01);
  60.         FExtendedFormID OtherFormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x05000001);
  61.         TestFalse(TEXT("Different mod indices not equal"), UFormIDHelper::Equals(FormID.FormID, OtherFormID.FormID));
  62.     }
  63.  
  64.     {
  65.         FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x05000001);
  66.         FExtendedFormID OtherFormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x05000002);
  67.         TestFalse(TEXT("Different object indices not equal"), UFormIDHelper::Equals(FormID.FormID, OtherFormID.FormID));
  68.     }
  69.  
  70.     {
  71.         FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, TArray<FString>(), 0x01);
  72.         FExtendedFormID OtherFormID = UFormIDHelper::CreateExtendedFormID(UFormIDHelper::NormalizePluginName(TEXT("plugin1.ghost")), TArray<FString>(), 0x01);
  73.         TestNotEqual(TEXT("Different parent plugin names not equal"), FormID, OtherFormID);
  74.     }
  75.  
  76.     {
  77.         FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01);
  78.         FExtendedFormID OtherFormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01);
  79.         TestTrue(TEXT("Identical FormIDs equal"), UFormIDHelper::Equals(FormID.FormID, OtherFormID.FormID));
  80.     }
  81.  
  82.     {
  83.         FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01);
  84.         FExtendedFormID OtherFormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x02);
  85.         TestTrue(TEXT("Lower object index less than"), UFormIDHelper::IsLessThan(FormID, OtherFormID));
  86.         TestFalse(TEXT("Higher object index not less than"), UFormIDHelper::IsLessThan(OtherFormID, FormID));
  87.     }
  88.  
  89.     {
  90.         FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(UFormIDHelper::NormalizePluginName(TEXT("A")), TArray<FString>(), 0x01);
  91.         FExtendedFormID OtherFormID = UFormIDHelper::CreateExtendedFormID(UFormIDHelper::NormalizePluginName(TEXT("b")), TArray<FString>(), 0x01);
  92.         TestTrue(TEXT("Lexicographically lower plugin less than"), UFormIDHelper::IsLessThan(FormID, OtherFormID));
  93.         TestFalse(TEXT("Lexicographically higher plugin not less than"), UFormIDHelper::IsLessThan(OtherFormID, FormID));
  94.     }
  95.  
  96.     {
  97.         FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01);
  98.         FExtendedFormID OtherFormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01);
  99.         TestFalse(TEXT("Identical FormID not less than"), UFormIDHelper::IsLessThan(FormID, OtherFormID));
  100.         TestFalse(TEXT("Identical FormID not less than reverse"), UFormIDHelper::IsLessThan(OtherFormID, FormID));
  101.     }
  102.  
  103.     {
  104.         FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01);
  105.         TArray<FString> Expected = { ParentPluginName, Masters[0], Masters[1] };
  106.         TestEqual(TEXT("All plugin names correct"), UFormIDHelper::GetAllPluginNames(FormID), Expected);
  107.     }
  108.  
  109.     {
  110.         FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01);
  111.         TestTrue(TEXT("HasMaster detects plugin2"), UFormIDHelper::HasMaster(FormID, TEXT("plugin2")));
  112.         TestFalse(TEXT("HasMaster rejects non-master"), UFormIDHelper::HasMaster(FormID, TEXT("plugin4")));
  113.     }
  114.  
  115.     {
  116.         TestTrue(TEXT("Valid .esp extension"), UFormIDHelper::IsValidPluginExtension(TEXT("test.esp")));
  117.         TestTrue(TEXT("Valid .esm extension"), UFormIDHelper::IsValidPluginExtension(TEXT("test.esm")));
  118.         TestTrue(TEXT("Valid .esl extension"), UFormIDHelper::IsValidPluginExtension(TEXT("test.esl")));
  119.         TestFalse(TEXT("Invalid extension"), UFormIDHelper::IsValidPluginExtension(TEXT("test.txt")));
  120.     }
  121.  
  122.     {
  123.         FExtendedFormID FormID = UFormIDHelper::CreateExtendedFormID(ParentPluginName, Masters, 0x01);
  124.         TestEqual(TEXT("Load order index matches masters count"), UFormIDHelper::GetPluginLoadOrderIndex(FormID), 2);
  125.     }
  126.  
  127.     return true;
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement