UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SerializationTestUtility.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
8#include "HAL/FileManager.h"
9
10#if UE_BUILD_SHIPPING == 0
11namespace Chaos
12{
23 template <class T, class U>
25 {
26 // Get Test object for memory serialization
27 {
28 // Write to memory
29 TArray<uint8> Data;
30 {
31 FMemoryWriter Ar(Data);
32 FChaosArchive Writer(Ar);
33
34 Writer << ObjectToSave;
35 }
36
37 // Read from Memory
39 {
40 FMemoryReader Ar(Data);
41 FChaosArchive Reader(Ar);
42
43
44 Reader << ReadFromMemory;
45 }
46
48 }
49
50#if 0 // TODO: Fix archive level versioning? Remove?
51
52 // Get files from binary folder.
54 IFileManager &FileManager = IFileManager::Get();
57
58 // Add binaries in folder to results
59 {
60 for (FString File : FilesFound)
61 {
63
65 FArchive *Ar = FileManager.CreateFileReader(*File, FILEREAD_None);
66 if (Ar)
67 {
68 TArray<uint8> Data;
70 FChaosArchive Reader(MemoryAr);
71
72 // Retrieve version and set on archive.
74 Version.Serialize(*Ar);
75 Reader.SetCustomVersions(Version);
76
77 // Retrieve memory blob from disk.
78 *Ar << Data;
79
80 // Serialize into object.
81 Reader << ReadFromDisk;
82 Ar->Close();
83 }
84 else
85 {
86 // Fail on failing to read test binaries.
87 return false;
88 }
89
91 }
92 }
93
94 if(bSave)
95 {
96 FString FilePath = TestBinaryFolder / BinaryFolderName;
97 FilePath.AppendInt(FilesFound.Num());
98 FilePath.Append(TEXT(".bin"));
99
100 FArchive *Ar = FileManager.CreateFileWriter(*FilePath, FILEWRITE_None);
101 if (Ar)
102 {
103 TArray<uint8> Data;
105 FChaosArchive Writer(MemoryAr);
106
107
108 // Serialize into Data array first, then serialize that to disk.
109 // Cannot use FArchive directly as FChaosArchive's proxy archive because it does not implement
110 // some required serialization functions. (FMemoryArchive does implement these).
111
112
113 // Serialize object to memory buffer
114 Writer << ObjectToSave;
115
116 // Get version from serialization, and serialize to file archive.
118 Version.Serialize(*Ar);
119
120 // Serialize object from memory buffer to file archive.
121 *Ar << Data;
122 Ar->Close();
123 }
124 }
125#endif
126
127 return true;
128 }
129}
130
131#endif
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
@ FILEWRITE_None
Definition FileManager.h:16
@ FILEREAD_None
Definition FileManager.h:28
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition ChaosArchive.h:167
virtual const FCustomVersionContainer & GetCustomVersions() const override
Definition ArchiveProxy.h:204
virtual void SetCustomVersions(const FCustomVersionContainer &NewVersions) override
Definition ArchiveProxy.h:209
Definition Archive.h:1208
virtual bool Close()
Definition Archive.h:1847
Definition CustomVersion.h:111
Definition MemoryReader.h:17
Definition MemoryWriter.h:101
Definition FileManager.h:57
virtual FArchive * CreateFileWriter(const TCHAR *Filename, uint32 WriteFlags=0)=0
static CORE_API IFileManager & Get()
Definition FileManagerGeneric.cpp:1072
virtual FArchive * CreateFileReader(const TCHAR *Filename, uint32 ReadFlags=0)=0
virtual void FindFiles(TArray< FString > &FileNames, const TCHAR *Filename, bool Files, bool Directories)=0
Definition Array.h:670
Definition SkeletalMeshComponent.h:307
bool SaveLoadUtility(U &ObjectToSave, TCHAR const *SerializedBinaryDirectory, TCHAR const *BinaryFolderName, bool bSave, TArray< U > &ObjectsToTest)
Definition SerializationTestUtility.h:24