diff --git a/default.nix b/default.nix index 6a5ee5753b59b2b455afe8f1bb1e9137141f3127..fa7de3d3f58e2ff7a377407b8d43b2d81343d332 100644 --- a/default.nix +++ b/default.nix @@ -56,6 +56,7 @@ let self = rec { pkg-config ninja zeromq + gtest.dev ]; }; client-cpp = pkgs.stdenv.mkDerivation { diff --git a/simgrid-simulator/meson.build b/simgrid-simulator/meson.build index 6de27345adb2a435a692efa6ee00c762e3f0542e..c316e14762b7f50bda56bbf1fd6bf98f7cdbc04e 100644 --- a/simgrid-simulator/meson.build +++ b/simgrid-simulator/meson.build @@ -24,3 +24,19 @@ simulator = executable('simulator', [ dependencies: deps, install: true ) + +# unit tests with gtest +if get_option('do_unit_tests') + gtest_dep = dependency('gtest_main', version: '>=1.8.0', required: true) + test_incdir = include_directories('test', 'src') + test_src = [ + 'test/flop_conversion.cpp', + 'src/compute.cpp', 'src/compute.hpp' + ] + unittest = executable('simulator-unit-tester', + test_src, + dependencies: [gtest_dep], + include_directories: [test_incdir] + ) + test('unittest', unittest) +endif diff --git a/simgrid-simulator/meson_options.txt b/simgrid-simulator/meson_options.txt new file mode 100644 index 0000000000000000000000000000000000000000..618662e1df6a8928ef2bddddb35b90ccf6e552dc --- /dev/null +++ b/simgrid-simulator/meson_options.txt @@ -0,0 +1,2 @@ +option('do_unit_tests', type : 'boolean', value : false, + description : 'Enable unit tests (requires gtest)') diff --git a/simgrid-simulator/test/flop_conversion.cpp b/simgrid-simulator/test/flop_conversion.cpp new file mode 100644 index 0000000000000000000000000000000000000000..50121f40dbc2676ed91d34db6ebbe1b91c61964b --- /dev/null +++ b/simgrid-simulator/test/flop_conversion.cpp @@ -0,0 +1,29 @@ +#include <gtest/gtest.h> + +#include "compute.hpp" + +void test_wrapper_flop_conversion(float desired, float actual) +{ + float got = desired_flops_to_simulated_flops(desired); + EXPECT_FLOAT_EQ(got, actual); +} + +TEST(flop_conversion, small) +{ + test_wrapper_flop_conversion(1.0f, 1.0f); + test_wrapper_flop_conversion(5.0f, 5.0f); + test_wrapper_flop_conversion(10.0f, 10.0f); + test_wrapper_flop_conversion(100.0f, 100.0f); +} + +TEST(flop_conversion, big) +{ + test_wrapper_flop_conversion(1e6, 1e6); + test_wrapper_flop_conversion(1e9, 1e9); + test_wrapper_flop_conversion(1e18, 1e18); +} + +TEST(flop_conversion, wrong) +{ + test_wrapper_flop_conversion(1e26, 1e27); +}