1 #define CATCH_CONFIG_RUNNER
3 #include "sopt/config.h"
4 #include <catch2/catch_all.hpp>
12 std::unique_ptr<std::mt19937_64>
mersenne(
new std::mt19937_64(0));
14 int main(
int argc,
const char **argv) {
15 Catch::Session session;
21 std::vector<std::string> arguments(argv, argv + argc);
22 auto output_opt = std::find_if(arguments.begin(), arguments.end(), [](std::string
const &arg) {
23 if (arg ==
"-o" or arg ==
"--out") return true;
24 auto const N = std::string(
"--out=").size();
25 return arg.size() > N and arg.substr(0, N) ==
"--out=";
27 if (output_opt != arguments.end()) {
28 if (*output_opt ==
"-o" or *output_opt ==
"--out") output_opt += 1;
29 if (output_opt != arguments.end()) {
31 MPI_Comm_rank(MPI_COMM_WORLD, &rank);
34 std::regex_replace(*output_opt, std::regex(
"\\.xml"), std::to_string(rank) +
".xml");
39 std::vector<char const *>
cargs(arguments.size());
40 std::transform(arguments.begin(), arguments.end(),
cargs.begin(),
41 [](std::string
const &c) { return c.c_str(); });
43 int const returnCode = session.applyCommandLine(argc,
const_cast<char **
>(
cargs.data()));
46 mersenne.reset(
new std::mt19937_64(session.configData().rngSeed));
48 auto const result = session.run();
int main(int argc, const char **argv)
std::unique_ptr< std::mt19937_64 > mersenne(new std::mt19937_64(0))
std::vector< char const * > cargs
std::shared_ptr< details::initializer > init(int argc, const char **argv)