From 667d9441772accfc5dde5042beeb8f399dba81b0 Mon Sep 17 00:00:00 2001 From: Sebastian Eibl <sebastian.eibl@fau.de> Date: Wed, 10 Jun 2020 10:39:08 +0200 Subject: [PATCH] [IMPROVEMENT] use mock in timer test Please use mocks for these kind of tests. a) deterministic b) faster --- src/core/timing/StaticPolicy.cpp | 2 +- tests/core/timing/TimerTest.cpp | 53 ++++++++++++++++---------------- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/src/core/timing/StaticPolicy.cpp b/src/core/timing/StaticPolicy.cpp index 0908dacbf..03ed3b9ff 100644 --- a/src/core/timing/StaticPolicy.cpp +++ b/src/core/timing/StaticPolicy.cpp @@ -25,7 +25,7 @@ namespace walberla { namespace timing { -double StaticPolicy::time_; +double StaticPolicy::time_ = 0; } // namespace timing } // namespace walberla diff --git a/tests/core/timing/TimerTest.cpp b/tests/core/timing/TimerTest.cpp index b9ee91ec1..3a08eb409 100644 --- a/tests/core/timing/TimerTest.cpp +++ b/tests/core/timing/TimerTest.cpp @@ -16,63 +16,64 @@ //! \file TimingPoolTest.cpp //! \ingroup core //! \author Christian Godenschwager <christian.godenschwager@fau.de> +//! \author Sebastian Eibl <sebastian.eibl@fau.de> // //====================================================================================================================== #include "core/debug/TestSubsystem.h" -#include "core/math/Constants.h" +#include "core/timing/StaticPolicy.h" #include "core/timing/Timer.h" -#include <cmath> - namespace walberla { -static double burnTime() -{ - double sum = 0.0; - for( double d = 0.0; d < math::pi; d += 0.000001 ) - { - sum += std::atan( std::tan( d ) ); - sum += std::asin( std::sin( d ) ); - sum += std::acos( std::cos( d ) ); - } - - return sum; -} - void mergeTest() { - WcTimer t0, t1, t2, t_all; + timing::Timer<timing::StaticPolicy> t0, t1, t2, t_all; t0.start(); t_all.start(); - burnTime(); + timing::StaticPolicy::addTime(1.23); t0.end(); t_all.end(); t1.start(); t_all.start(); - burnTime(); + timing::StaticPolicy::addTime(1.23); t1.end(); t_all.end(); t2.start(); t_all.start(); - burnTime(); + timing::StaticPolicy::addTime(1.23); t2.end(); t_all.end(); t0.merge( t1 ); t0.merge( t2 ); - WALBERLA_CHECK_LESS( t0.average() - t_all.average(), 1e-4 ); - WALBERLA_CHECK_LESS( t0.sumOfSquares() - t_all.sumOfSquares(), 3e-2 ); - WALBERLA_CHECK_LESS( t0.total() - t_all.total(), 3e-4 ); + WALBERLA_CHECK_FLOAT_EQUAL( t0.average(), t_all.average() ); + WALBERLA_CHECK_FLOAT_EQUAL( t1.average(), t_all.average() ); + WALBERLA_CHECK_FLOAT_EQUAL( t2.average(), t_all.average() ); + + WALBERLA_CHECK_FLOAT_EQUAL( t0.sumOfSquares(), t_all.sumOfSquares() ); + WALBERLA_CHECK_FLOAT_EQUAL( t1.sumOfSquares(), t2.sumOfSquares() ); + + WALBERLA_CHECK_FLOAT_EQUAL( t1.total(), t2.total() ); + WALBERLA_CHECK_FLOAT_EQUAL( t0.total(), t_all.total() ); WALBERLA_CHECK_EQUAL( t0.getCounter(), t_all.getCounter() ); - WALBERLA_CHECK_LESS( t0.max() - t_all.max(), 1e-4 ); - WALBERLA_CHECK_LESS( t0.min() - t_all.min(), 1e-4 ); - WALBERLA_CHECK_LESS( t0.variance() - t_all.variance(), 1e-4 ); + WALBERLA_CHECK_EQUAL( t1.getCounter(), t2.getCounter() ); + + WALBERLA_CHECK_FLOAT_EQUAL( t0.max(), t_all.max() ); + WALBERLA_CHECK_FLOAT_EQUAL( t0.min(), t_all.min() ); + WALBERLA_CHECK_FLOAT_EQUAL( t1.max(), t_all.max() ); + WALBERLA_CHECK_FLOAT_EQUAL( t1.min(), t_all.min() ); + WALBERLA_CHECK_FLOAT_EQUAL( t2.max(), t_all.max() ); + WALBERLA_CHECK_FLOAT_EQUAL( t2.min(), t_all.min() ); + + WALBERLA_CHECK_FLOAT_EQUAL( t0.variance(), t_all.variance() ); + WALBERLA_CHECK_FLOAT_EQUAL( t1.variance(), t_all.variance() ); + WALBERLA_CHECK_FLOAT_EQUAL( t2.variance(), t_all.variance() ); } } -- GitLab