tstHistory.cpp

./Core/dc/tests/tstHistory.cpp

#include "Nemesis/gtest/nemesis_gtest.hh"
#include "Nemesis/harness/DBC.hh"
#include "Standard/Interface/jdebug.h"
using namespace Origen;
typedef Quantity<Time> T;
TEST( History_P, Basic )
{
// test initial time
ASSERT_TRUE( h.t0() == nullptr );
// add a single point
h.add( T::sp( 0.0, Time::SECONDS ), P::sp( 5, Power::WATT ) );
EXPECT_EQ( 1, h.n() );
EXPECT_EQ( 0.0, h.t( 0 )->value() );
EXPECT_EQ( 5.0, h.q( 0 )->value() );
// dt==0 for a single point
EXPECT_EQ( 0.0, h.dt( 0, Time::SECONDS ) );
// add a second point (we now have an interval)
h.add( T::sp( 10.0, Time::SECONDS ), P::sp( 15, Power::WATT ) );
EXPECT_EQ( 2, h.n() );
EXPECT_EQ( 10.0, h.t( 1 )->value() );
EXPECT_EQ( 15.0, h.q( 1 )->value() );
// dt>0 now for 1st interval
EXPECT_EQ( 10.0, h.dt( 0, Time::SECONDS ) );
// some dummy variables
auto t = T::sp();
auto p = P::sp();
// add a power with a base
auto pbase = P::sp( 70, Power::WATT );
p->setRelativeTo( pbase ).setValue( 0.5 ); // 50%
t->setValue( 20 ).setUnits( Time::MINUTES );
h.add( t, p );
EXPECT_FLOAT_EQ( 35.0, h.q( 2 )->valueAs() );
EXPECT_NE( "", h.toString() );
}
TEST( History_P, Incremental )
{
auto t0 = T::sp( 0.0, Time::SECONDS );
auto p0 = P::sp( 5.0, Power::WATT );
h.add( t0, p0 );
auto t1 = T::sp( 20.0, Time::SECONDS );
auto p1 = P::sp( 5.0, Power::WATT );
h.add( t1, p1 );
// this time is incremental
auto t2 = T::sp( 10.0, Time::SECONDS );
t2->setIncrementalFrom( t1 );
auto p2 = P::sp( 5.0, Power::WATT );
h.add( t2, p2 );
EXPECT_FLOAT_EQ( 30.0, h.t( 2 )->valueAs( Time::SECONDS ) );
EXPECT_NE( "", h.toString() );
}