mirror of
https://github.com/UberGames/rpgxEF.git
synced 2024-11-13 00:24:06 +00:00
37f1a0edd9
- started adding some new common types - removed some unused files - added some missing files to ui project - added a unit test runner - added some unit tests
63 lines
1.4 KiB
C++
63 lines
1.4 KiB
C++
#include <cstdlib>
|
|
#include <windows.h>
|
|
#include <filesystem>
|
|
#include <iostream>
|
|
#include <tchar.h>
|
|
|
|
#include "../doctest/runner.h"
|
|
|
|
#ifdef _MSC_VER
|
|
namespace std
|
|
{
|
|
namespace filesystem = experimental::filesystem;
|
|
}
|
|
#endif
|
|
|
|
constexpr const TCHAR* ARG_AUTO_1 = _T("-autoclose");
|
|
constexpr const TCHAR* ARG_AUTO_2 = _T("/autoclose");
|
|
|
|
struct Settings
|
|
{
|
|
bool m_AutoClose = false;
|
|
};
|
|
|
|
int main(int argc, TCHAR* argv[])
|
|
{
|
|
Settings Settings;
|
|
auto Result = EXIT_SUCCESS;
|
|
std::filesystem::path CurrentPath(argv[0]);
|
|
CurrentPath = CurrentPath.remove_filename();
|
|
|
|
for(auto i = 0; i < argc; i++)
|
|
{
|
|
if(_tcsicmp(ARG_AUTO_1, argv[i]) == 0 || _tcsicmp(ARG_AUTO_2, argv[i]) == 0)
|
|
Settings.m_AutoClose = true;
|
|
}
|
|
|
|
for(const auto& Path : std::filesystem::directory_iterator(CurrentPath))
|
|
{
|
|
if(!is_regular_file(Path) || Path.path().extension() != _T(".dll"))
|
|
continue;
|
|
|
|
const auto Lib = LoadLibraryW(Path.path().c_str());
|
|
if(Lib == NULL)
|
|
continue;
|
|
|
|
const auto Func = reinterpret_cast<UnitTestRun>(GetProcAddress(Lib, RUNNER_FUNC_NAME));
|
|
if(Func == nullptr)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
std::cout << _T("Running unit test in: ") << Path.path().filename() << _T("\n");
|
|
if(Func(argc, argv) != 0)
|
|
Result = EXIT_FAILURE;
|
|
std::cout << _T("\n\n");
|
|
}
|
|
|
|
if(!Settings.m_AutoClose)
|
|
getchar();
|
|
|
|
return Result;
|
|
}
|
|
|