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
No related merge requests found
......@@ -25,7 +25,7 @@
namespace walberla {
namespace timing {
double StaticPolicy::time_;
double StaticPolicy::time_ = 0;
} // namespace timing
} // namespace walberla
......@@ -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() );
}
}
......
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