diff --git a/meson.build b/meson.build index d177d3146401ceb334e5557ef21c49853a7047e9..255d5b44269b42cb490259867884fd133e33a664 100644 --- a/meson.build +++ b/meson.build @@ -19,3 +19,4 @@ should_install = not meson.is_subproject() loadleveller_deps = [ fmt_dep, yamlcpp_dep, mpi_dep, hdf5_lib ] subdir('src') +subdir('test') diff --git a/src/runner.cpp b/src/runner.cpp index 1e53a993c45cac9c43cf7a5139c5e620c3b9ebf4..2b9ecc0fc2e43cdbb3cd3e51718eafae4e48073b 100644 --- a/src/runner.cpp +++ b/src/runner.cpp @@ -26,7 +26,7 @@ enum { // parses the duration '[[hours:]minutes:]seconds' into seconds // replace as soon as there is an alternative -static double parse_duration(std::string str) { +static int parse_duration(const std::string &str) { size_t idx; try { @@ -46,7 +46,7 @@ static double parse_duration(std::string str) { throw std::runtime_error{"minutes"}; } - return 24 * 60 * i1 + 60 * i2 + i3; + return 60 * 60 * i1 + 60 * i2 + i3; } else { throw std::runtime_error{"hours"}; } diff --git a/test/duration_parser.cpp b/test/duration_parser.cpp new file mode 100644 index 0000000000000000000000000000000000000000..243ff8307436cfb411173fab960cb06c4e85bae8 --- /dev/null +++ b/test/duration_parser.cpp @@ -0,0 +1,17 @@ +#include "runner.cpp" + +int main() { + using namespace loadl; + + if(parse_duration("20") != 20) { + return 1; + } + if(parse_duration("10:03") != 10*60+3) { + return 2; + } + if(parse_duration("24:06:10") != 60*60*24+60*6+10) { + return 3; + } + + return 0; +} diff --git a/test/meson.build b/test/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..0b4807bc9f0e8c5e4c51d3fc10b4c57bf71c96d8 --- /dev/null +++ b/test/meson.build @@ -0,0 +1,8 @@ + +t1 = executable('test_duration_parser', 'duration_parser.cpp', + dependencies : loadleveller_dep, + include_directories : include_directories('../src') +) + +test('test duration parser', t1) +