8#if WITH_LOW_LEVEL_TESTS
9#include "TestCommon/Expectations.h"
14template<
class PathType,
class StringType>
24 const bool bAllCollapsed = PathType::CollapseRelativeDirectories(
38 FAIL_CHECK(FString::Printf(
TEXT(
"CollapseRelativeDirectories('%s', false) failed (got (%s, '%s'), expected (%s, '%s'))."),
43 FAIL_CHECK(FString::Printf(
TEXT(
"CollapseRelativeDirectories('%s', true) failed (got (%s, '%s'), expected (%s, '%s'))."),
57 FAIL_CHECK(FString::Printf(
TEXT(
"Path '%s' failed CollapseRelativeDirectories (got (%s, '%s'), expected (%s, '<anyvalue>'))."),
62 FAIL_CHECK(FString::Printf(
TEXT(
"Path '%s' failed CollapseRelativeDirectoriesIfPossible (got (%s, '%s'), expected (%s, '%s'))."),
78 Run(
TEXT(
"C:/Folder/../file.txt"),
true,
TEXT(
"C:/file.txt"));
81 Run(
TEXT(
"Folder/../file.txt"),
true,
TEXT(
"file.txt"));
84 Run(
TEXT(
"/Folder/../file.txt"),
true,
TEXT(
"/file.txt"));
87 Run(
TEXT(
"Folder/../../file.txt"),
false,
TEXT(
"../file.txt"));
91 Run(
TEXT(
"C:/./file.txt"),
true,
TEXT(
"C:/file.txt"));
92 Run(
TEXT(
"C:/Folder1/../Folder2"),
true,
TEXT(
"C:/Folder2"));
93 Run(
TEXT(
"C:/Folder1/../Folder2/"),
true,
TEXT(
"C:/Folder2/"));
94 Run(
TEXT(
"C:/Folder1/../Folder2/file.txt"),
true,
TEXT(
"C:/Folder2/file.txt"));
95 Run(
TEXT(
"C:/Folder1/../Folder2/../.."),
false,
TEXT(
"C:/.."));
96 Run(
TEXT(
"C:/Folder1/../Folder2/../Folder3"),
true,
TEXT(
"C:/Folder3"));
97 Run(
TEXT(
"C:/Folder1/../Folder2/../Folder3/"),
true,
TEXT(
"C:/Folder3/"));
98 Run(
TEXT(
"C:/Folder1/../Folder2/../Folder3/file.txt"),
true,
TEXT(
"C:/Folder3/file.txt"));
99 Run(
TEXT(
"C:/Folder1/Folder2/../../Folder3"),
true,
TEXT(
"C:/Folder3"));
100 Run(
TEXT(
"C:/Folder1/Folder2/../../Folder3/"),
true,
TEXT(
"C:/Folder3/"));
101 Run(
TEXT(
"C:/Folder1/Folder2/../../Folder3/file.txt"),
true,
TEXT(
"C:/Folder3/file.txt"));
102 Run(
TEXT(
"C:/Folder1/Folder2/../../Folder3/../Folder4"),
true,
TEXT(
"C:/Folder4"));
103 Run(
TEXT(
"C:/Folder1/Folder2/../../Folder3/../Folder4/"),
true,
TEXT(
"C:/Folder4/"));
104 Run(
TEXT(
"C:/Folder1/Folder2/../../Folder3/../Folder4/file.txt"),
true,
TEXT(
"C:/Folder4/file.txt"));
105 Run(
TEXT(
"C:/Folder1/Folder2/../Folder3/../../Folder4"),
true,
TEXT(
"C:/Folder4"));
106 Run(
TEXT(
"C:/Folder1/Folder2/../Folder3/../../Folder4/"),
true,
TEXT(
"C:/Folder4/"));
107 Run(
TEXT(
"C:/Folder1/Folder2/../Folder3/../../Folder4/file.txt"),
true,
TEXT(
"C:/Folder4/file.txt"));
108 Run(
TEXT(
"C:/Folder1/Folder2/.././../Folder4"),
true,
TEXT(
"C:/Folder4"));
109 Run(
TEXT(
"C:/Folder1/Folder2/.././../Folder4/"),
true,
TEXT(
"C:/Folder4/"));
110 Run(
TEXT(
"C:/Folder1/Folder2/.././../Folder4/file.txt"),
true,
TEXT(
"C:/Folder4/file.txt"));
112 Run(
TEXT(
"C:/A/B/.././../C/"),
true,
TEXT(
"C:/C/"));
113 Run(
TEXT(
"C:/A/B/.././../C/file.txt"),
true,
TEXT(
"C:/C/file.txt"));
116 Run(
TEXT(
"./Folder/.svn"),
true,
TEXT(
"Folder/.svn"));
118 Run(
TEXT(
".svn/./.svn/.././../.svn"),
true,
TEXT(
".svn"));
119 Run(
TEXT(
"C:/Folder1/./Folder2/..Folder3"),
true,
TEXT(
"C:/Folder1/Folder2/..Folder3"));
120 Run(
TEXT(
"C:/Folder1/./Folder2/..Folder3/Folder4"),
true,
TEXT(
"C:/Folder1/Folder2/..Folder3/Folder4"));
121 Run(
TEXT(
"C:/Folder1/./Folder2/..Folder3/..Folder4"),
true,
TEXT(
"C:/Folder1/Folder2/..Folder3/..Folder4"));
122 Run(
TEXT(
"C:/Folder1/./Folder2/..Folder3/Folder4/../Folder5"),
true,
TEXT(
"C:/Folder1/Folder2/..Folder3/Folder5"));
123 Run(
TEXT(
"C:/Folder1/..Folder2/Folder3/..Folder4/../Folder5"),
true,
TEXT(
"C:/Folder1/..Folder2/Folder3/Folder5"));
125 Run(
TEXT(
"D:/Root/Engine//../.."),
true,
TEXT(
"D:"));
126 Run(
TEXT(
"D:/Root/Engine////////../.."),
true,
TEXT(
"D:"));
127 Run(
TEXT(
"D:/Root/Engine//../../"),
true,
TEXT(
"D:/"));
128 Run(
TEXT(
"D:/Root/Engine////////../../"),
true,
TEXT(
"D:/"));
130 Run(
TEXT(
"D:/Root////////../.."),
false,
TEXT(
"D:/.."));
136template<
class PathType,
class StringType>
143 PathType::RemoveDuplicateSlashes(
Actual);
148 Run(
TEXT(
"C:/Folder/File.txt"),
TEXT(
"C:/Folder/File.txt"));
149 Run(
TEXT(
"C:/Folder/File/"),
TEXT(
"C:/Folder/File/"));
155 Run(
TEXT(
"/////Folder//////File/////"),
TEXT(
"/Folder/File/"));
156 Run(
TEXT(
"\\\\Folder\\\\File\\\\"),
TEXT(
"\\\\Folder\\\\File\\\\"));
157 Run(
TEXT(
"//\\\\//Folder//\\\\//File//\\\\//"),
TEXT(
"/\\\\/Folder/\\\\/File/\\\\/"));
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
const TCHAR * LexToString(EAnalyticsRecordEventMode Mode)
Definition IAnalyticsProvider.cpp:5
#define CHECK_EQUALS(What, X, Y)
Definition LowLevelTestAdapter.h:143
#define FAIL_CHECK(Message)
Definition LowLevelTestAdapter.h:149
const FColor Path(255, 255, 255)
void Run(FMassRuntimePipeline &RuntimePipeline, FProcessingContext &ProcessingContext)
Definition MassExecutor.cpp:25
static UE_FORCEINLINE_HINT int32 Strcmp(const CharType *String1, const CharType *String2)
Definition CString.h:1018