Skip to content
Snippets Groups Projects
Commit 667d9441 authored by Sebastian Eibl's avatar Sebastian Eibl
Browse files

[IMPROVEMENT] use mock in timer test

Please use mocks for these kind of tests.
a) deterministic
b) faster
parent e52da5c2
Branches
Tags
No related merge requests found
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
namespace walberla { namespace walberla {
namespace timing { namespace timing {
double StaticPolicy::time_; double StaticPolicy::time_ = 0;
} // namespace timing } // namespace timing
} // namespace walberla } // namespace walberla
...@@ -16,63 +16,64 @@ ...@@ -16,63 +16,64 @@
//! \file TimingPoolTest.cpp //! \file TimingPoolTest.cpp
//! \ingroup core //! \ingroup core
//! \author Christian Godenschwager <christian.godenschwager@fau.de> //! \author Christian Godenschwager <christian.godenschwager@fau.de>
//! \author Sebastian Eibl <sebastian.eibl@fau.de>
// //
//====================================================================================================================== //======================================================================================================================
#include "core/debug/TestSubsystem.h" #include "core/debug/TestSubsystem.h"
#include "core/math/Constants.h" #include "core/timing/StaticPolicy.h"
#include "core/timing/Timer.h" #include "core/timing/Timer.h"
#include <cmath>
namespace walberla { 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() void mergeTest()
{ {
WcTimer t0, t1, t2, t_all; timing::Timer<timing::StaticPolicy> t0, t1, t2, t_all;
t0.start(); t0.start();
t_all.start(); t_all.start();
burnTime(); timing::StaticPolicy::addTime(1.23);
t0.end(); t0.end();
t_all.end(); t_all.end();
t1.start(); t1.start();
t_all.start(); t_all.start();
burnTime(); timing::StaticPolicy::addTime(1.23);
t1.end(); t1.end();
t_all.end(); t_all.end();
t2.start(); t2.start();
t_all.start(); t_all.start();
burnTime(); timing::StaticPolicy::addTime(1.23);
t2.end(); t2.end();
t_all.end(); t_all.end();
t0.merge( t1 ); t0.merge( t1 );
t0.merge( t2 ); t0.merge( t2 );
WALBERLA_CHECK_LESS( t0.average() - t_all.average(), 1e-4 ); WALBERLA_CHECK_FLOAT_EQUAL( t0.average(), t_all.average() );
WALBERLA_CHECK_LESS( t0.sumOfSquares() - t_all.sumOfSquares(), 3e-2 ); WALBERLA_CHECK_FLOAT_EQUAL( t1.average(), t_all.average() );
WALBERLA_CHECK_LESS( t0.total() - t_all.total(), 3e-4 ); 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_EQUAL( t0.getCounter(), t_all.getCounter() );
WALBERLA_CHECK_LESS( t0.max() - t_all.max(), 1e-4 ); WALBERLA_CHECK_EQUAL( t1.getCounter(), t2.getCounter() );
WALBERLA_CHECK_LESS( t0.min() - t_all.min(), 1e-4 );
WALBERLA_CHECK_LESS( t0.variance() - t_all.variance(), 1e-4 ); 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() );
} }
} }
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment