|
|
|
@ -11,16 +11,16 @@ static int SECS_PER_DAY = 60 * 60 * 24;
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
|
/// Helpers
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
|
static time_t toTime_t( const QString& timeString )
|
|
|
|
|
static time_t toSecsSinceEpoch( const QString& timeString )
|
|
|
|
|
{
|
|
|
|
|
return RiaQDateTimeTools::fromString( timeString, "yyyy-MM-dd" ).toTime_t();
|
|
|
|
|
return RiaQDateTimeTools::fromString( timeString, "yyyy-MM-dd" ).toSecsSinceEpoch();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static std::vector<time_t> toTime_tVector( const std::vector<QString>& timeStrings )
|
|
|
|
|
static std::vector<time_t> toSecsSinceEpochVector( const std::vector<QString>& timeStrings )
|
|
|
|
|
{
|
|
|
|
|
std::vector<time_t> tv;
|
|
|
|
|
for ( auto& ts : timeStrings )
|
|
|
|
|
tv.push_back( toTime_t( ts ) );
|
|
|
|
|
tv.push_back( toSecsSinceEpoch( ts ) );
|
|
|
|
|
return tv;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -34,11 +34,11 @@ TEST( RiaTimeHistoryCurveResampler, Test_Resampling_NoPeriod )
|
|
|
|
|
std::vector<double> dataValues( { 3.0, 5.0 } );
|
|
|
|
|
|
|
|
|
|
RiaTimeHistoryCurveResampler resampler;
|
|
|
|
|
resampler.setCurveData( dataValues, toTime_tVector( timeStrings ) );
|
|
|
|
|
resampler.setCurveData( dataValues, toSecsSinceEpochVector( timeStrings ) );
|
|
|
|
|
resampler.resampleAndComputeWeightedMeanValues( RiaQDateTimeTools::DateTimePeriod::MONTH );
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ( 1, (int)resampler.resampledTimeSteps().size() );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-03-01" ), resampler.resampledTimeSteps()[0] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-03-01" ), resampler.resampledTimeSteps()[0] );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
@ -51,14 +51,14 @@ TEST( RiaTimeHistoryCurveResampler, Test_Resampling_Decade )
|
|
|
|
|
std::vector<double> dataValues( { 0.0, 0.0, 0.0 } );
|
|
|
|
|
|
|
|
|
|
RiaTimeHistoryCurveResampler resampler;
|
|
|
|
|
resampler.setCurveData( dataValues, toTime_tVector( timeStrings ) );
|
|
|
|
|
resampler.setCurveData( dataValues, toSecsSinceEpochVector( timeStrings ) );
|
|
|
|
|
resampler.resampleAndComputeWeightedMeanValues( RiaQDateTimeTools::DateTimePeriod::DECADE );
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ( 4, (int)resampler.resampledTimeSteps().size() );
|
|
|
|
|
EXPECT_EQ( toTime_t( "1990-01-01" ), resampler.resampledTimeSteps()[0] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2000-01-01" ), resampler.resampledTimeSteps()[1] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2010-01-01" ), resampler.resampledTimeSteps()[2] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2020-01-01" ), resampler.resampledTimeSteps()[3] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "1990-01-01" ), resampler.resampledTimeSteps()[0] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2000-01-01" ), resampler.resampledTimeSteps()[1] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2010-01-01" ), resampler.resampledTimeSteps()[2] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2020-01-01" ), resampler.resampledTimeSteps()[3] );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
@ -71,15 +71,15 @@ TEST( RiaTimeHistoryCurveResampler, Test_Resampling_Year )
|
|
|
|
|
std::vector<double> dataValues( { 0.0, 0.0, 0.0 } );
|
|
|
|
|
|
|
|
|
|
RiaTimeHistoryCurveResampler resampler;
|
|
|
|
|
resampler.setCurveData( dataValues, toTime_tVector( timeStrings ) );
|
|
|
|
|
resampler.setCurveData( dataValues, toSecsSinceEpochVector( timeStrings ) );
|
|
|
|
|
resampler.resampleAndComputeWeightedMeanValues( RiaQDateTimeTools::DateTimePeriod::YEAR );
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ( 5, (int)resampler.resampledTimeSteps().size() );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2015-01-01" ), resampler.resampledTimeSteps()[0] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2016-01-01" ), resampler.resampledTimeSteps()[1] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2017-01-01" ), resampler.resampledTimeSteps()[2] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-01-01" ), resampler.resampledTimeSteps()[3] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2019-01-01" ), resampler.resampledTimeSteps()[4] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2015-01-01" ), resampler.resampledTimeSteps()[0] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2016-01-01" ), resampler.resampledTimeSteps()[1] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2017-01-01" ), resampler.resampledTimeSteps()[2] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-01-01" ), resampler.resampledTimeSteps()[3] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2019-01-01" ), resampler.resampledTimeSteps()[4] );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
@ -92,15 +92,15 @@ TEST( RiaTimeHistoryCurveResampler, Test_Resampling_HalfYear )
|
|
|
|
|
std::vector<double> dataValues( { 0.0, 0.0, 0.0 } );
|
|
|
|
|
|
|
|
|
|
RiaTimeHistoryCurveResampler resampler;
|
|
|
|
|
resampler.setCurveData( dataValues, toTime_tVector( timeStrings ) );
|
|
|
|
|
resampler.setCurveData( dataValues, toSecsSinceEpochVector( timeStrings ) );
|
|
|
|
|
resampler.resampleAndComputeWeightedMeanValues( RiaQDateTimeTools::DateTimePeriod::HALFYEAR );
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ( 5, (int)resampler.resampledTimeSteps().size() );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2016-07-01" ), resampler.resampledTimeSteps()[0] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2017-01-01" ), resampler.resampledTimeSteps()[1] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2017-07-01" ), resampler.resampledTimeSteps()[2] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-01-01" ), resampler.resampledTimeSteps()[3] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-07-01" ), resampler.resampledTimeSteps()[4] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2016-07-01" ), resampler.resampledTimeSteps()[0] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2017-01-01" ), resampler.resampledTimeSteps()[1] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2017-07-01" ), resampler.resampledTimeSteps()[2] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-01-01" ), resampler.resampledTimeSteps()[3] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-07-01" ), resampler.resampledTimeSteps()[4] );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
@ -113,17 +113,17 @@ TEST( RiaTimeHistoryCurveResampler, Test_Resampling_Quarter )
|
|
|
|
|
std::vector<double> dataValues( { 0.0, 0.0, 0.0 } );
|
|
|
|
|
|
|
|
|
|
RiaTimeHistoryCurveResampler resampler;
|
|
|
|
|
resampler.setCurveData( dataValues, toTime_tVector( timeStrings ) );
|
|
|
|
|
resampler.setCurveData( dataValues, toSecsSinceEpochVector( timeStrings ) );
|
|
|
|
|
resampler.resampleAndComputeWeightedMeanValues( RiaQDateTimeTools::DateTimePeriod::QUARTER );
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ( 7, (int)resampler.resampledTimeSteps().size() );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2016-10-01" ), resampler.resampledTimeSteps()[0] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2017-01-01" ), resampler.resampledTimeSteps()[1] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2017-04-01" ), resampler.resampledTimeSteps()[2] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2017-07-01" ), resampler.resampledTimeSteps()[3] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2017-10-01" ), resampler.resampledTimeSteps()[4] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-01-01" ), resampler.resampledTimeSteps()[5] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-04-01" ), resampler.resampledTimeSteps()[6] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2016-10-01" ), resampler.resampledTimeSteps()[0] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2017-01-01" ), resampler.resampledTimeSteps()[1] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2017-04-01" ), resampler.resampledTimeSteps()[2] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2017-07-01" ), resampler.resampledTimeSteps()[3] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2017-10-01" ), resampler.resampledTimeSteps()[4] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-01-01" ), resampler.resampledTimeSteps()[5] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-04-01" ), resampler.resampledTimeSteps()[6] );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
@ -136,16 +136,16 @@ TEST( RiaTimeHistoryCurveResampler, Test_Resampling_Month )
|
|
|
|
|
std::vector<double> dataValues( { 0.0, 0.0, 0.0 } );
|
|
|
|
|
|
|
|
|
|
RiaTimeHistoryCurveResampler resampler;
|
|
|
|
|
resampler.setCurveData( dataValues, toTime_tVector( timeStrings ) );
|
|
|
|
|
resampler.setCurveData( dataValues, toSecsSinceEpochVector( timeStrings ) );
|
|
|
|
|
resampler.resampleAndComputeWeightedMeanValues( RiaQDateTimeTools::DateTimePeriod::MONTH );
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ( 6, (int)resampler.resampledTimeSteps().size() );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2017-10-01" ), resampler.resampledTimeSteps()[0] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2017-11-01" ), resampler.resampledTimeSteps()[1] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2017-12-01" ), resampler.resampledTimeSteps()[2] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-01-01" ), resampler.resampledTimeSteps()[3] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-02-01" ), resampler.resampledTimeSteps()[4] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-03-01" ), resampler.resampledTimeSteps()[5] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2017-10-01" ), resampler.resampledTimeSteps()[0] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2017-11-01" ), resampler.resampledTimeSteps()[1] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2017-12-01" ), resampler.resampledTimeSteps()[2] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-01-01" ), resampler.resampledTimeSteps()[3] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-02-01" ), resampler.resampledTimeSteps()[4] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-03-01" ), resampler.resampledTimeSteps()[5] );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
@ -158,20 +158,20 @@ TEST( RiaTimeHistoryCurveResampler, Test_Resampling_Week )
|
|
|
|
|
std::vector<double> dataValues( { 0.0, 0.0, 0.0 } );
|
|
|
|
|
|
|
|
|
|
RiaTimeHistoryCurveResampler resampler;
|
|
|
|
|
resampler.setCurveData( dataValues, toTime_tVector( timeStrings ) );
|
|
|
|
|
resampler.setCurveData( dataValues, toSecsSinceEpochVector( timeStrings ) );
|
|
|
|
|
resampler.resampleAndComputeWeightedMeanValues( RiaQDateTimeTools::DateTimePeriod::WEEK );
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ( 10, (int)resampler.resampledTimeSteps().size() );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2017-11-06" ), resampler.resampledTimeSteps()[0] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2017-11-13" ), resampler.resampledTimeSteps()[1] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2017-11-20" ), resampler.resampledTimeSteps()[2] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2017-11-27" ), resampler.resampledTimeSteps()[3] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2017-12-04" ), resampler.resampledTimeSteps()[4] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2017-12-11" ), resampler.resampledTimeSteps()[5] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2017-12-18" ), resampler.resampledTimeSteps()[6] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2017-12-25" ), resampler.resampledTimeSteps()[7] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-01-01" ), resampler.resampledTimeSteps()[8] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-01-08" ), resampler.resampledTimeSteps()[9] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2017-11-06" ), resampler.resampledTimeSteps()[0] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2017-11-13" ), resampler.resampledTimeSteps()[1] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2017-11-20" ), resampler.resampledTimeSteps()[2] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2017-11-27" ), resampler.resampledTimeSteps()[3] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2017-12-04" ), resampler.resampledTimeSteps()[4] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2017-12-11" ), resampler.resampledTimeSteps()[5] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2017-12-18" ), resampler.resampledTimeSteps()[6] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2017-12-25" ), resampler.resampledTimeSteps()[7] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-01-01" ), resampler.resampledTimeSteps()[8] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-01-08" ), resampler.resampledTimeSteps()[9] );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
@ -184,11 +184,11 @@ TEST( RiaTimeHistoryCurveResampler, Test_Resampling_NoSampleCrossingPeriodBounda
|
|
|
|
|
std::vector<double> dataValues( { 0.0, 0.0, 0.0 } );
|
|
|
|
|
|
|
|
|
|
RiaTimeHistoryCurveResampler resampler;
|
|
|
|
|
resampler.setCurveData( dataValues, toTime_tVector( timeStrings ) );
|
|
|
|
|
resampler.setCurveData( dataValues, toSecsSinceEpochVector( timeStrings ) );
|
|
|
|
|
resampler.resampleAndComputeWeightedMeanValues( RiaQDateTimeTools::DateTimePeriod::YEAR );
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ( 1, (int)resampler.resampledTimeSteps().size() );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-01-01" ), resampler.resampledTimeSteps()[0] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-01-01" ), resampler.resampledTimeSteps()[0] );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
@ -201,11 +201,11 @@ TEST( RiaTimeHistoryCurveResampler, Test_WeightedMean_SingleSample )
|
|
|
|
|
std::vector<double> dataValues( { 3.0 } );
|
|
|
|
|
|
|
|
|
|
RiaTimeHistoryCurveResampler resampler;
|
|
|
|
|
resampler.setCurveData( dataValues, toTime_tVector( timeStrings ) );
|
|
|
|
|
resampler.setCurveData( dataValues, toSecsSinceEpochVector( timeStrings ) );
|
|
|
|
|
resampler.resampleAndComputeWeightedMeanValues( RiaQDateTimeTools::DateTimePeriod::MONTH );
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ( 1, (int)resampler.resampledTimeSteps().size() );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-03-01" ), resampler.resampledTimeSteps()[0] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-03-01" ), resampler.resampledTimeSteps()[0] );
|
|
|
|
|
|
|
|
|
|
double value = 0.0;
|
|
|
|
|
EXPECT_NEAR( value, resampler.resampledValues()[0], 1e-12 );
|
|
|
|
@ -221,15 +221,15 @@ TEST( RiaTimeHistoryCurveResampler, Test_WeightedMean_Days )
|
|
|
|
|
std::vector<double> dataValues( { 3.0, 5.0 } );
|
|
|
|
|
|
|
|
|
|
RiaTimeHistoryCurveResampler resampler;
|
|
|
|
|
resampler.setCurveData( dataValues, toTime_tVector( timeStrings ) );
|
|
|
|
|
resampler.setCurveData( dataValues, toSecsSinceEpochVector( timeStrings ) );
|
|
|
|
|
resampler.resampleAndComputeWeightedMeanValues( RiaQDateTimeTools::DateTimePeriod::DAY );
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ( 5, (int)resampler.resampledTimeSteps().size() );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-02-03" ), resampler.resampledTimeSteps()[0] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-02-04" ), resampler.resampledTimeSteps()[1] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-02-05" ), resampler.resampledTimeSteps()[2] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-02-06" ), resampler.resampledTimeSteps()[3] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-02-07" ), resampler.resampledTimeSteps()[4] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-02-03" ), resampler.resampledTimeSteps()[0] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-02-04" ), resampler.resampledTimeSteps()[1] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-02-05" ), resampler.resampledTimeSteps()[2] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-02-06" ), resampler.resampledTimeSteps()[3] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-02-07" ), resampler.resampledTimeSteps()[4] );
|
|
|
|
|
|
|
|
|
|
EXPECT_NEAR( 3.0, resampler.resampledValues()[0], 1e-12 );
|
|
|
|
|
EXPECT_NEAR( 5.0, resampler.resampledValues()[1], 1e-12 );
|
|
|
|
@ -247,15 +247,15 @@ TEST( RiaTimeHistoryCurveResampler, Test_WeightedMean_Decade )
|
|
|
|
|
|
|
|
|
|
std::vector<double> dataValues( { 3.0, 5.0, 7.0 } );
|
|
|
|
|
|
|
|
|
|
time_t t0 = toTime_t( "1999-02-03" );
|
|
|
|
|
time_t t1 = toTime_t( "2005-06-06" );
|
|
|
|
|
time_t t2 = toTime_t( "2012-02-07" );
|
|
|
|
|
time_t tp0 = toTime_t( "2000-01-01" );
|
|
|
|
|
time_t tp1 = toTime_t( "2010-01-01" );
|
|
|
|
|
time_t tp2 = toTime_t( "2020-01-01" );
|
|
|
|
|
time_t t0 = toSecsSinceEpoch( "1999-02-03" );
|
|
|
|
|
time_t t1 = toSecsSinceEpoch( "2005-06-06" );
|
|
|
|
|
time_t t2 = toSecsSinceEpoch( "2012-02-07" );
|
|
|
|
|
time_t tp0 = toSecsSinceEpoch( "2000-01-01" );
|
|
|
|
|
time_t tp1 = toSecsSinceEpoch( "2010-01-01" );
|
|
|
|
|
time_t tp2 = toSecsSinceEpoch( "2020-01-01" );
|
|
|
|
|
|
|
|
|
|
RiaTimeHistoryCurveResampler resampler;
|
|
|
|
|
resampler.setCurveData( dataValues, toTime_tVector( timeStrings ) );
|
|
|
|
|
resampler.setCurveData( dataValues, toSecsSinceEpochVector( timeStrings ) );
|
|
|
|
|
resampler.resampleAndComputeWeightedMeanValues( RiaQDateTimeTools::DateTimePeriod::DECADE );
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ( 3, (int)resampler.resampledTimeSteps().size() );
|
|
|
|
@ -263,7 +263,7 @@ TEST( RiaTimeHistoryCurveResampler, Test_WeightedMean_Decade )
|
|
|
|
|
EXPECT_EQ( tp1, resampler.resampledTimeSteps()[1] );
|
|
|
|
|
EXPECT_EQ( tp2, resampler.resampledTimeSteps()[2] );
|
|
|
|
|
|
|
|
|
|
double value0 = 5.0 * ( tp0 - t0 ) / ( tp0 - toTime_t( "1990-01-01" ) );
|
|
|
|
|
double value0 = 5.0 * ( tp0 - t0 ) / ( tp0 - toSecsSinceEpoch( "1990-01-01" ) );
|
|
|
|
|
double value1 = ( 5.0 * ( t1 - tp0 ) + 7.0 * ( tp1 - t1 ) ) / ( tp1 - tp0 );
|
|
|
|
|
double value2 = 7.0 * ( t2 - tp1 ) / ( tp2 - tp1 );
|
|
|
|
|
|
|
|
|
@ -281,12 +281,12 @@ TEST( RiaTimeHistoryCurveResampler, Test_WeightedMean_SamplesStartBeforePeriod )
|
|
|
|
|
|
|
|
|
|
std::vector<double> dataValues( { 3.0, 5.0, 7.0, 11.0, 13.0 } );
|
|
|
|
|
|
|
|
|
|
time_t tp0 = toTime_t( "2018-02-01" );
|
|
|
|
|
time_t tp1 = toTime_t( "2018-03-01" );
|
|
|
|
|
time_t tp2 = toTime_t( "2018-04-01" );
|
|
|
|
|
time_t tp0 = toSecsSinceEpoch( "2018-02-01" );
|
|
|
|
|
time_t tp1 = toSecsSinceEpoch( "2018-03-01" );
|
|
|
|
|
time_t tp2 = toSecsSinceEpoch( "2018-04-01" );
|
|
|
|
|
|
|
|
|
|
RiaTimeHistoryCurveResampler resampler;
|
|
|
|
|
resampler.setCurveData( dataValues, toTime_tVector( timeStrings ) );
|
|
|
|
|
resampler.setCurveData( dataValues, toSecsSinceEpochVector( timeStrings ) );
|
|
|
|
|
resampler.resampleAndComputeWeightedMeanValues( RiaQDateTimeTools::DateTimePeriod::MONTH );
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ( 3, (int)resampler.resampledTimeSteps().size() );
|
|
|
|
@ -294,7 +294,7 @@ TEST( RiaTimeHistoryCurveResampler, Test_WeightedMean_SamplesStartBeforePeriod )
|
|
|
|
|
EXPECT_EQ( tp1, resampler.resampledTimeSteps()[1] );
|
|
|
|
|
EXPECT_EQ( tp2, resampler.resampledTimeSteps()[2] );
|
|
|
|
|
|
|
|
|
|
double value0 = ( 5.0 * 9 + 7.0 * 3 ) * SECS_PER_DAY / ( tp0 - toTime_t( "2018-01-01" ) );
|
|
|
|
|
double value0 = ( 5.0 * 9 + 7.0 * 3 ) * SECS_PER_DAY / ( tp0 - toSecsSinceEpoch( "2018-01-01" ) );
|
|
|
|
|
|
|
|
|
|
double value1 = ( 7.0 * 2 + 11.0 * 24 + 13.0 * 2 ) * SECS_PER_DAY / ( tp1 - tp0 );
|
|
|
|
|
|
|
|
|
@ -314,12 +314,12 @@ TEST( RiaTimeHistoryCurveResampler, Test_WeightedMean_SamplesStartBeforePeriod_T
|
|
|
|
|
|
|
|
|
|
std::vector<double> dataValues( { 3.0, 5.0, 7.0, 11.0, 13.0 } );
|
|
|
|
|
|
|
|
|
|
time_t tp0 = toTime_t( "2018-02-01" );
|
|
|
|
|
time_t tp1 = toTime_t( "2018-03-01" );
|
|
|
|
|
time_t tp2 = toTime_t( "2018-04-01" );
|
|
|
|
|
time_t tp0 = toSecsSinceEpoch( "2018-02-01" );
|
|
|
|
|
time_t tp1 = toSecsSinceEpoch( "2018-03-01" );
|
|
|
|
|
time_t tp2 = toSecsSinceEpoch( "2018-04-01" );
|
|
|
|
|
|
|
|
|
|
RiaTimeHistoryCurveResampler resampler;
|
|
|
|
|
resampler.setCurveData( dataValues, toTime_tVector( timeStrings ) );
|
|
|
|
|
resampler.setCurveData( dataValues, toSecsSinceEpochVector( timeStrings ) );
|
|
|
|
|
resampler.resampleAndComputeWeightedMeanValues( RiaQDateTimeTools::DateTimePeriod::MONTH );
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ( 3, (int)resampler.resampledTimeSteps().size() );
|
|
|
|
@ -327,7 +327,7 @@ TEST( RiaTimeHistoryCurveResampler, Test_WeightedMean_SamplesStartBeforePeriod_T
|
|
|
|
|
EXPECT_EQ( tp1, resampler.resampledTimeSteps()[1] );
|
|
|
|
|
EXPECT_EQ( tp2, resampler.resampledTimeSteps()[2] );
|
|
|
|
|
|
|
|
|
|
double value0 = ( 5.0 * 12 ) * SECS_PER_DAY / ( tp0 - toTime_t( "2018-01-01" ) );
|
|
|
|
|
double value0 = ( 5.0 * 12 ) * SECS_PER_DAY / ( tp0 - toSecsSinceEpoch( "2018-01-01" ) );
|
|
|
|
|
|
|
|
|
|
double value1 = ( 7.0 * 2 + 11.0 * 26 ) * SECS_PER_DAY / ( tp1 - tp0 );
|
|
|
|
|
|
|
|
|
@ -348,14 +348,14 @@ TEST( RiaTimeHistoryCurveResampler, Test_WeightedMean_SamplesStartAndEndMatchPer
|
|
|
|
|
std::vector<double> dataValues( { 3.0, 5.0, 7.0 } );
|
|
|
|
|
|
|
|
|
|
RiaTimeHistoryCurveResampler resampler;
|
|
|
|
|
resampler.setCurveData( dataValues, toTime_tVector( timeStrings ) );
|
|
|
|
|
resampler.setCurveData( dataValues, toSecsSinceEpochVector( timeStrings ) );
|
|
|
|
|
resampler.resampleAndComputeWeightedMeanValues( RiaQDateTimeTools::DateTimePeriod::MONTH );
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ( 2, (int)resampler.resampledTimeSteps().size() );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-02-01" ), resampler.resampledTimeSteps().front() );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-03-01" ), resampler.resampledTimeSteps().back() );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-02-01" ), resampler.resampledTimeSteps().front() );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-03-01" ), resampler.resampledTimeSteps().back() );
|
|
|
|
|
|
|
|
|
|
time_t timePeriod = toTime_t( "2018-03-01" ) - toTime_t( "2018-02-01" );
|
|
|
|
|
time_t timePeriod = toSecsSinceEpoch( "2018-03-01" ) - toSecsSinceEpoch( "2018-02-01" );
|
|
|
|
|
|
|
|
|
|
double value1 = 3.0;
|
|
|
|
|
double value2 = ( 5.0 * 9 + 7.0 * 19 ) * SECS_PER_DAY / timePeriod;
|
|
|
|
@ -373,12 +373,12 @@ TEST( RiaTimeHistoryCurveResampler, Test_WeightedMean_SamplesStartMatchPeriodSta
|
|
|
|
|
|
|
|
|
|
std::vector<double> dataValues( { 3.0, 5.0, 7.0, 11.0 } );
|
|
|
|
|
|
|
|
|
|
time_t tp0 = toTime_t( "2018-02-01" );
|
|
|
|
|
time_t tp1 = toTime_t( "2018-03-01" );
|
|
|
|
|
time_t tp2 = toTime_t( "2018-04-01" );
|
|
|
|
|
time_t tp0 = toSecsSinceEpoch( "2018-02-01" );
|
|
|
|
|
time_t tp1 = toSecsSinceEpoch( "2018-03-01" );
|
|
|
|
|
time_t tp2 = toSecsSinceEpoch( "2018-04-01" );
|
|
|
|
|
|
|
|
|
|
RiaTimeHistoryCurveResampler resampler;
|
|
|
|
|
resampler.setCurveData( dataValues, toTime_tVector( timeStrings ) );
|
|
|
|
|
resampler.setCurveData( dataValues, toSecsSinceEpochVector( timeStrings ) );
|
|
|
|
|
resampler.resampleAndComputeWeightedMeanValues( RiaQDateTimeTools::DateTimePeriod::MONTH );
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ( 3, (int)resampler.resampledTimeSteps().size() );
|
|
|
|
@ -404,18 +404,18 @@ TEST( RiaTimeHistoryCurveResampler, Test_WeightedMean_MultipleSamplesInLastPerio
|
|
|
|
|
|
|
|
|
|
std::vector<double> dataValues( { 3.0, 5.0, 7.0, 11.0 } );
|
|
|
|
|
|
|
|
|
|
time_t tp0 = toTime_t( "2018-03-01" );
|
|
|
|
|
time_t tp1 = toTime_t( "2018-04-01" );
|
|
|
|
|
time_t tp0 = toSecsSinceEpoch( "2018-03-01" );
|
|
|
|
|
time_t tp1 = toSecsSinceEpoch( "2018-04-01" );
|
|
|
|
|
|
|
|
|
|
RiaTimeHistoryCurveResampler resampler;
|
|
|
|
|
resampler.setCurveData( dataValues, toTime_tVector( timeStrings ) );
|
|
|
|
|
resampler.setCurveData( dataValues, toSecsSinceEpochVector( timeStrings ) );
|
|
|
|
|
resampler.resampleAndComputeWeightedMeanValues( RiaQDateTimeTools::DateTimePeriod::MONTH );
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ( 2, (int)resampler.resampledTimeSteps().size() );
|
|
|
|
|
EXPECT_EQ( tp0, resampler.resampledTimeSteps()[0] );
|
|
|
|
|
EXPECT_EQ( tp1, resampler.resampledTimeSteps()[1] );
|
|
|
|
|
|
|
|
|
|
double value0 = 5.0 * 19 * SECS_PER_DAY / ( tp0 - toTime_t( "2018-02-01" ) );
|
|
|
|
|
double value0 = 5.0 * 19 * SECS_PER_DAY / ( tp0 - toSecsSinceEpoch( "2018-02-01" ) );
|
|
|
|
|
double value1 = ( 0.0 * 17 + 11.0 * 10 + 7.0 * 3 + 5.0 * 1 ) * SECS_PER_DAY / ( tp1 - tp0 );
|
|
|
|
|
|
|
|
|
|
EXPECT_NEAR( value0, resampler.resampledValues()[0], 1e-12 );
|
|
|
|
@ -432,11 +432,11 @@ TEST( RiaTimeHistoryCurveResampler, Test_PeriodEndValues_SingleSample )
|
|
|
|
|
std::vector<double> dataValues( { 3.0 } );
|
|
|
|
|
|
|
|
|
|
RiaTimeHistoryCurveResampler resampler;
|
|
|
|
|
resampler.setCurveData( dataValues, toTime_tVector( timeStrings ) );
|
|
|
|
|
resampler.setCurveData( dataValues, toSecsSinceEpochVector( timeStrings ) );
|
|
|
|
|
resampler.resampleAndComputePeriodEndValues( RiaQDateTimeTools::DateTimePeriod::MONTH );
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ( 1, (int)resampler.resampledTimeSteps().size() );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-03-01" ), resampler.resampledTimeSteps()[0] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-03-01" ), resampler.resampledTimeSteps()[0] );
|
|
|
|
|
|
|
|
|
|
EXPECT_NEAR( 3.0, resampler.resampledValues()[0], 1e-12 );
|
|
|
|
|
}
|
|
|
|
@ -450,15 +450,15 @@ TEST( RiaTimeHistoryCurveResampler, Test_PeriodEndValues_SamplesStartBeforePerio
|
|
|
|
|
|
|
|
|
|
std::vector<double> dataValues( { 3.0, 5.0, 7.0, 11.0 } );
|
|
|
|
|
|
|
|
|
|
time_t t0 = toTime_t( "2018-01-30" );
|
|
|
|
|
time_t t1 = toTime_t( "2018-02-10" );
|
|
|
|
|
time_t t2 = toTime_t( "2018-03-05" );
|
|
|
|
|
time_t tp0 = toTime_t( "2018-02-01" );
|
|
|
|
|
time_t tp1 = toTime_t( "2018-03-01" );
|
|
|
|
|
time_t tp2 = toTime_t( "2018-04-01" );
|
|
|
|
|
time_t t0 = toSecsSinceEpoch( "2018-01-30" );
|
|
|
|
|
time_t t1 = toSecsSinceEpoch( "2018-02-10" );
|
|
|
|
|
time_t t2 = toSecsSinceEpoch( "2018-03-05" );
|
|
|
|
|
time_t tp0 = toSecsSinceEpoch( "2018-02-01" );
|
|
|
|
|
time_t tp1 = toSecsSinceEpoch( "2018-03-01" );
|
|
|
|
|
time_t tp2 = toSecsSinceEpoch( "2018-04-01" );
|
|
|
|
|
|
|
|
|
|
RiaTimeHistoryCurveResampler resampler;
|
|
|
|
|
resampler.setCurveData( dataValues, toTime_tVector( timeStrings ) );
|
|
|
|
|
resampler.setCurveData( dataValues, toSecsSinceEpochVector( timeStrings ) );
|
|
|
|
|
resampler.resampleAndComputePeriodEndValues( RiaQDateTimeTools::DateTimePeriod::MONTH );
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ( 3, (int)resampler.resampledTimeSteps().size() );
|
|
|
|
@ -485,13 +485,13 @@ TEST( RiaTimeHistoryCurveResampler, Test_PeriodEndValues_SamplesStartMatchPeriod
|
|
|
|
|
std::vector<double> dataValues( { 3.0, 5.0, 7.0, 11.0 } );
|
|
|
|
|
|
|
|
|
|
RiaTimeHistoryCurveResampler resampler;
|
|
|
|
|
resampler.setCurveData( dataValues, toTime_tVector( timeStrings ) );
|
|
|
|
|
resampler.setCurveData( dataValues, toSecsSinceEpochVector( timeStrings ) );
|
|
|
|
|
resampler.resampleAndComputePeriodEndValues( RiaQDateTimeTools::DateTimePeriod::MONTH );
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ( 3, (int)resampler.resampledTimeSteps().size() );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-02-01" ), resampler.resampledTimeSteps()[0] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-03-01" ), resampler.resampledTimeSteps()[1] );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-04-01" ), resampler.resampledTimeSteps()[2] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-02-01" ), resampler.resampledTimeSteps()[0] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-03-01" ), resampler.resampledTimeSteps()[1] );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-04-01" ), resampler.resampledTimeSteps()[2] );
|
|
|
|
|
|
|
|
|
|
EXPECT_NEAR( 3.0, resampler.resampledValues()[0], 1e-12 );
|
|
|
|
|
EXPECT_NEAR( 7.0, resampler.resampledValues()[1], 1e-12 );
|
|
|
|
@ -508,12 +508,12 @@ TEST( RiaTimeHistoryCurveResampler, Test_PeriodEndValues_SamplesStartAndEndMatch
|
|
|
|
|
std::vector<double> dataValues( { 3.0, 5.0, 7.0 } );
|
|
|
|
|
|
|
|
|
|
RiaTimeHistoryCurveResampler resampler;
|
|
|
|
|
resampler.setCurveData( dataValues, toTime_tVector( timeStrings ) );
|
|
|
|
|
resampler.setCurveData( dataValues, toSecsSinceEpochVector( timeStrings ) );
|
|
|
|
|
resampler.resampleAndComputePeriodEndValues( RiaQDateTimeTools::DateTimePeriod::MONTH );
|
|
|
|
|
|
|
|
|
|
EXPECT_EQ( 2, (int)resampler.resampledTimeSteps().size() );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-02-01" ), resampler.resampledTimeSteps().front() );
|
|
|
|
|
EXPECT_EQ( toTime_t( "2018-03-01" ), resampler.resampledTimeSteps().back() );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-02-01" ), resampler.resampledTimeSteps().front() );
|
|
|
|
|
EXPECT_EQ( toSecsSinceEpoch( "2018-03-01" ), resampler.resampledTimeSteps().back() );
|
|
|
|
|
|
|
|
|
|
EXPECT_NEAR( 3.0, resampler.resampledValues()[0], 1e-12 );
|
|
|
|
|
EXPECT_NEAR( 7.0, resampler.resampledValues()[1], 1e-12 );
|
|
|
|
|