94 lines
2.7 KiB
C++
94 lines
2.7 KiB
C++
// OpenAI, Copyright LifeEXE. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#if WITH_AUTOMATION_TESTS
|
|
|
|
#include "TestUtils.h"
|
|
#include "FuncLib\ModelTypes.h"
|
|
#include "Internationalization/Regex.h"
|
|
|
|
using namespace OpenAI::Tests;
|
|
|
|
FString TestUtils::RemovePunctuation(const FString& Input)
|
|
{
|
|
FRegexPattern Pattern(TEXT("[\\p{P}\\p{S}]"));
|
|
FRegexMatcher Matcher(Pattern, Input);
|
|
|
|
FString Result;
|
|
int32 LastPosition = 0;
|
|
|
|
while (Matcher.FindNext())
|
|
{
|
|
Result.Append(Input.Mid(LastPosition, Matcher.GetMatchBeginning() - LastPosition));
|
|
LastPosition = Matcher.GetMatchEnding();
|
|
}
|
|
|
|
Result.Append(Input.Mid(LastPosition));
|
|
|
|
return Result;
|
|
}
|
|
|
|
FString TestUtils::PluginEnumToOpenAIModelName(EAllModelEnum PluginEnum)
|
|
{
|
|
const FString EnumAsString = UEnum::GetValueAsString(PluginEnum);
|
|
|
|
// EAllModelEnum::GPT_3_5_Turbo_0301 -> EAllModelEnum, GPT_3_5_Turbo_0301
|
|
FString EnumName, EnumElementName;
|
|
EnumAsString.Split("::", &EnumName, &EnumElementName);
|
|
|
|
// GPT_3_5_Turbo_0301 -> gpt-3-5-turbo-0301
|
|
EnumElementName = EnumElementName.ToLower().Replace(TEXT("_"), TEXT("-"));
|
|
|
|
// special case: gpt-3-5-turbo-0301 -> gpt-3.5-turbo-0301
|
|
EnumElementName = EnumElementName.Replace(TEXT("3-5"), TEXT("3.5"));
|
|
|
|
return EnumElementName;
|
|
}
|
|
|
|
FString TestUtils::OpenAIModelNameToPluginEnum(const FString& ModelName)
|
|
{
|
|
// gpt-3.5-turbo-0301 -> gpt_3.5_turbo_0301
|
|
FString EnumName = ModelName.ToLower().Replace(TEXT("-"), TEXT("_"));
|
|
|
|
// special case: gpt-3.5-turbo-0301 -> gpt_3_5_turbo_0301
|
|
EnumName = EnumName.Replace(TEXT("3.5"), TEXT("3_5"));
|
|
|
|
// gpt-3.5-turbo-0301 -> GPT_3_5_turbo_0301
|
|
EnumName = EnumName.Replace(TEXT("gpt"), TEXT("GPT"));
|
|
|
|
// GPT_3_5_turbo_super_turbo_0301 -> GPT_3_5_Turbo_Super_Turbo_0301
|
|
FString Result;
|
|
bool bMakeNextUpperCase{true};
|
|
for (TCHAR Char : EnumName)
|
|
{
|
|
if (bMakeNextUpperCase && FChar::IsAlpha(Char))
|
|
{
|
|
Char = FChar::ToUpper(Char);
|
|
bMakeNextUpperCase = false;
|
|
}
|
|
else if (Char == TEXT('_'))
|
|
{
|
|
bMakeNextUpperCase = true;
|
|
}
|
|
Result += Char;
|
|
}
|
|
|
|
return FString::Format(TEXT("EAllModelEnum::{0}"), {Result});
|
|
}
|
|
|
|
FString TestUtils::FileFullPath(const FString& FileName)
|
|
{
|
|
return FPaths::ConvertRelativePathToFull(FPaths::ProjectPluginsDir().Append("OpenAI/Source/OpenAITestRunner/Data/").Append(FileName));
|
|
}
|
|
|
|
bool TestUtils::IsValidURL(const FString& URL)
|
|
{
|
|
const FString URLPattern = "^((http|https)://)[-a-zA-Z0-9@:%._\\+~#?&//=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%._\\+~#?&//=]*)$";
|
|
const FRegexPattern Pattern(URLPattern);
|
|
FRegexMatcher Matcher(Pattern, URL);
|
|
|
|
return Matcher.FindNext();
|
|
}
|
|
|
|
#endif |