JD2022-TU1/main/extern/Raki/Source/RakiTests/TestSerialization/TestSerialization.cpp

106 lines
1.8 KiB
C++

#include "Precompiled.h"
#include "RakiEngine/Data/MemoryBlock/MemoryBlock.h"
#include "RakiEngine/Data/Serialization/Serializer.h"
#include "RakiEngine/Data/Serialization/SerializedObject.h"
#include "RakiEngine/Data/Stream/MemoryStream/MemoryStream.h"
#include "RakiEngine/Initializer/TestInitializer.h"
namespace raki
{
class TestObject : public SerializedObject
{
public:
virtual void serialize( Serializer & serializer )
{
serializer % a;
serializer % b;
serializer % c;
serializer % d;
}
int a;
u64 b;
int c;
u64 d;
};
void TestSerialization()
{
TestInitializer initializer;
RAKI_OUTPUT("entering TestSerialization...\n");
/*
raki::ms_stlAllocator = system.getAllocator();
{
std::list<char, raki::StlAllocator<char> > intList;
intList.push_back( 3 );
intList.push_back( 5 );
}
*/
MemoryBlock memBlock( 0x1000 );
MemoryStream memStream( &memBlock, false );
//int intParam = 3;
Serializer serializer( &memStream );
serializer.setIsWriting();
TestObject object;
object.a = 1;
object.b = 2;
object.c = 3;
object.d = 4;
object.serialize( serializer );
object.a = -1;
object.b = (u64)-2;
object.c = -3;
object.d = (u64)-4;
serializer.setIsReading();
memStream.seekBeginning();
object.serialize( serializer );
RAKI_ASSERT( object.a == 1 );
RAKI_ASSERT( object.b == 2 );
RAKI_ASSERT( object.c == 3 );
RAKI_ASSERT( object.d == 4 );
RAKI_OUTPUT("leaving TestSerialization...\n");
}
} // namespace raki
#if defined ( RAKI_USING_XAUDIO2 )
int _tmain(int argc, _TCHAR* argv[])
#else // RAKI_USING_XAUDIO2
int main( int argc, char *argv[] )
#endif // RAKI_USING_XAUDIO2
{
raki::TestSerialization();
return 0;
}