tstTime.cpp

./Core/dc/tests/tstTime.cpp

#include "Nemesis/gtest/nemesis_gtest.hh"
#include "Nemesis/harness/DBC.hh"
#include "Standard/Interface/jdebug.h"
using namespace Origen;
TEST( Time, Accessors )
{
EXPECT_EQ( 3600., Time::base<Time::HOURS>() );
EXPECT_EQ( Time::HOURS, Time::units( 2 ) );
EXPECT_EQ( 3600., Time::base<Time::units( 2 )>() );
EXPECT_EQ( Time::HOURS, Time::units( "h" ) );
EXPECT_EQ( "y", Time::name( Time::YEARS ) );
{
std::string y( "y" );
Time::UNITS u = Time::units( y.c_str() );
EXPECT_EQ( 60 * 60 * 24 * 365.25, Time::base( u ) );
EXPECT_EQ( 1. / ( 24 * 365.25 ), Time::factor( u, Time::HOURS ) );
}
}
TEST( Time, ConversionFactor )
{
{
const double f = Time::factor<Time::SECONDS, Time::MINUTES>();
EXPECT_EQ( 60., f );
}
{
const double f = Time::factor<Time::SECONDS>( Time::MINUTES );
EXPECT_EQ( 60., f );
}
{
EXPECT_EQ( 60., f );
}
}
TEST( Quantity_Time, Basic )
{
// check default value of zero is set
EXPECT_EQ( 0.0, q.value() );
// start with 34 minutes
EXPECT_EQ( 34., q.value() );
EXPECT_EQ( Time::MINUTES, q.units() );
// check in seconds
EXPECT_EQ( 34. * 60., q.valueAs( Time::SECONDS ) ) << q.toString();
// check relative
// now change to relative
q.setValue( 0.333333 );
// value is now
EXPECT_FLOAT_EQ( 0.333333, q.value() );
// but valueAs() is in minutes
EXPECT_FLOAT_EQ( 0.333333 * 33.0 / 60., q.valueAs() );
// now get in seconds
EXPECT_FLOAT_EQ( 0.333333 * 33.0, q.valueAs( Time::SECONDS ) );
// now change forever to seconds
EXPECT_FLOAT_EQ( 0.333333 * 33.0, q.valueAs() );
// std::cout << q.toString() << std::endl;
}