Move UnitTest stuff

This commit is contained in:
momo5502 2016-09-17 14:05:01 +02:00
parent d0f2da8f61
commit d64589f6e8
8 changed files with 71 additions and 41 deletions

2
deps/protobuf vendored

@ -1 +1 @@
Subproject commit 3b001ca6ba6fb51f5e55b1596fb3ce09ee9981e8
Subproject commit c44ca26fe89ed8a81d3ee475a2ccc1797141dbce

View File

@ -12,6 +12,11 @@ namespace Components
return (IsWindow(*reinterpret_cast<HWND*>(0x64A3288)) != FALSE || (Dedicated::IsEnabled() && !Flags::HasFlag("console")));
}
void Logger::PrintStub(int channel, const char* message, ...)
{
return Logger::MessagePrint(channel, Logger::Format(&message));
}
void Logger::Print(const char* message, ...)
{
return Logger::MessagePrint(0, Logger::Format(&message));
@ -176,6 +181,11 @@ namespace Components
Utils::Hook(0x4B0218, Logger::GameLogStub, HOOK_CALL).Install()->Quick();
Utils::Hook(Game::Com_PrintMessage, Logger::PrintMessageStub, HOOK_JUMP).Install()->Quick();
if (Loader::PerformingUnitTests())
{
Utils::Hook(Game::Com_Printf, Logger::PrintStub, HOOK_JUMP).Install()->Quick();
}
Dvar::OnInit([] ()
{
Command::AddSV("log_add", [] (Command::Params params)

View File

@ -19,6 +19,8 @@ namespace Components
static void SoftError(const char* message, ...);
static bool IsConsoleReady();
static void PrintStub(int channel, const char* message, ...);
static void PipeOutput(void(*callback)(std::string));
private:

View File

@ -831,7 +831,7 @@ namespace Components
printf("ECDSA key seems invalid!\n");
return false;
}
printf("Success\n");
printf("Testing 10 valid signatures...");
@ -885,45 +885,6 @@ namespace Components
}
printf("Success\n");
uint32_t randIntCount = 4'000'000;
printf("Generating %d random integers...", randIntCount);
auto startTime = std::chrono::high_resolution_clock::now();
for (uint32_t i = 0; i < randIntCount; ++i)
{
Utils::Cryptography::Rand::GenerateInt();
}
auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now() - startTime).count();
Logger::Print("took %llims\n", duration);
printf("Testing ZLib compression...");
std::string test = fmt::sprintf("%c", Utils::Cryptography::Rand::GenerateInt());
for (int i = 0; i < 21; ++i)
{
std::string compressed = Utils::Compression::ZLib::Compress(test);
std::string decompressed = Utils::Compression::ZLib::Decompress(compressed);
if (test != decompressed)
{
printf("Error\n");
printf("Compressing %d bytes and decompressing failed!\n", test.size());
return false;
}
auto size = test.size();
for (unsigned int j = 0; j < size; ++j)
{
test.append(fmt::sprintf("%c", Utils::Cryptography::Rand::GenerateInt()));
}
}
printf("Success\n");
return true;
}
}

View File

@ -424,4 +424,46 @@ namespace Components
{
QuickPatch::ShutdownSignal.clear();
}
bool QuickPatch::UnitTest()
{
uint32_t randIntCount = 4'000'000;
printf("Generating %d random integers...", randIntCount);
auto startTime = std::chrono::high_resolution_clock::now();
for (uint32_t i = 0; i < randIntCount; ++i)
{
Utils::Cryptography::Rand::GenerateInt();
}
auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now() - startTime).count();
Logger::Print("took %llims\n", duration);
printf("Testing ZLib compression...");
std::string test = fmt::sprintf("%c", Utils::Cryptography::Rand::GenerateInt());
for (int i = 0; i < 21; ++i)
{
std::string compressed = Utils::Compression::ZLib::Compress(test);
std::string decompressed = Utils::Compression::ZLib::Decompress(compressed);
if (test != decompressed)
{
printf("Error\n");
printf("Compressing %d bytes and decompressing failed!\n", test.size());
return false;
}
auto size = test.size();
for (unsigned int j = 0; j < size; ++j)
{
test.append(fmt::sprintf("%c", Utils::Cryptography::Rand::GenerateInt()));
}
}
printf("Success\n");
return true;
}
}

View File

@ -12,6 +12,8 @@ namespace Components
const char* GetName() { return "QuickPatch"; };
#endif
bool UnitTest();
static void UnlockStats();
static void OnShutdown(Callback* callback);

View File

@ -22,6 +22,7 @@ namespace Game
Cmd_AddCommand_t Cmd_AddCommand = (Cmd_AddCommand_t)0x470090;
Cmd_AddServerCommand_t Cmd_AddServerCommand = (Cmd_AddServerCommand_t)0x4DCE00;
Cmd_ExecuteSingleCommand_t Cmd_ExecuteSingleCommand = (Cmd_ExecuteSingleCommand_t)0x609540;
Com_ClientPacketEvent_t Com_ClientPacketEvent = (Com_ClientPacketEvent_t)0x49F0B0;
Com_Error_t Com_Error = (Com_Error_t)0x4B22D0;
Com_Printf_t Com_Printf = (Com_Printf_t)0x402500;
@ -92,6 +93,8 @@ namespace Game
Image_LoadFromFileWithReader_t Image_LoadFromFileWithReader = (Image_LoadFromFileWithReader_t)0x53ABF0;
Image_Release_t Image_Release = (Image_Release_t)0x51F010;
LargeLocalInit_t LargeLocalInit = (LargeLocalInit_t)0x4A62A0;
Menus_CloseAll_t Menus_CloseAll = (Menus_CloseAll_t)0x4BA5B0;
Menus_OpenByName_t Menus_OpenByName = (Menus_OpenByName_t)0x4CCE60;
Menus_FindByName_t Menus_FindByName = (Menus_FindByName_t)0x487240;
@ -115,6 +118,7 @@ namespace Game
NET_AdrToString_t NET_AdrToString = (NET_AdrToString_t)0x469880;
NET_CompareAdr_t NET_CompareAdr = (NET_CompareAdr_t)0x4D0AA0;
NET_Init_t NET_Init = (NET_Init_t)0x491860;
NET_IsLocalAddress_t NET_IsLocalAddress = (NET_IsLocalAddress_t)0x402BD0;
NET_StringToAdr_t NET_StringToAdr = (NET_StringToAdr_t)0x409010;
NET_OutOfBandPrint_t NET_OutOfBandPrint = (NET_OutOfBandPrint_t)0x4AEF00;

View File

@ -45,6 +45,9 @@ namespace Game
typedef void(__cdecl * Cmd_ExecuteSingleCommand_t)(int localClientNum, int controllerIndex, const char* cmd);
extern Cmd_ExecuteSingleCommand_t Cmd_ExecuteSingleCommand;
typedef void(__cdecl * Com_ClientPacketEvent_t)();
extern Com_ClientPacketEvent_t Com_ClientPacketEvent;
typedef void(__cdecl * Com_Error_t)(int type, char* message, ...);
extern Com_Error_t Com_Error;
@ -218,6 +221,9 @@ namespace Game
typedef void(__cdecl * Image_Release_t)(GfxImage* image);
extern Image_Release_t Image_Release;
typedef void(__cdecl * LargeLocalInit_t)();
extern LargeLocalInit_t LargeLocalInit;
typedef void(__cdecl * Menus_CloseAll_t)(UiContext *dc);
extern Menus_CloseAll_t Menus_CloseAll;
@ -278,6 +284,9 @@ namespace Game
typedef bool(__cdecl * NET_CompareAdr_t)(netadr_t a, netadr_t b);
extern NET_CompareAdr_t NET_CompareAdr;
typedef void(__cdecl * NET_Init_t)();
extern NET_Init_t NET_Init;
typedef bool(__cdecl * NET_IsLocalAddress_t)(netadr_t adr);
extern NET_IsLocalAddress_t NET_IsLocalAddress;