#ifndef TESTPROVIDER_H #define TESTPROVIDER_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include template class SimpleRange : public IDataProvider { public: SimpleRange() = default; int callCounter = 0; std::shared_ptr clone() const override { return std::make_shared(); } TimeSeries::ITimeSerie* getData(const DataProviderParameters& parameters) override { callCounter += 1; std::size_t size = static_cast(floor(parameters.m_Range.m_TEnd) - ceil(parameters.m_Range.m_TStart) + 1.); auto serie = new ScalarTimeSerie(size); std::generate(std::begin(*serie), std::end(*serie), [i = ceil(parameters.m_Range.m_TStart)]() mutable { return std::pair{i, i++ * slope}; }); return serie; } }; template auto sumdiff(T begin, T end) { std::vector diff_vect(end - begin - 1); auto diff = [](auto next, auto item) { return next.value() - item.value(); }; std::transform(begin + 1, end, begin, diff_vect.begin(), diff); return std::accumulate(diff_vect.cbegin(), diff_vect.cend(), 0); } template struct RangeType { static void check_properties(std::shared_ptr v, DateTimeRange r) { // TODO } }; template void check_variable_state(std::shared_ptr v, DateTimeRange r) { auto range = v->data()->axis_range(0); QVERIFY(range.first >= r.m_TStart); QVERIFY(range.second <= r.m_TEnd); T::check_properties(v, r); } #endif