diff --git a/core/tests/Variable/TestVariableSync.cpp b/core/tests/Variable/TestVariableSync.cpp index 120e416..2d44c43 100644 --- a/core/tests/Variable/TestVariableSync.cpp +++ b/core/tests/Variable/TestVariableSync.cpp @@ -3,6 +3,9 @@ #include +#include +#include +#include #include #include #include @@ -10,6 +13,57 @@ namespace { /** + * Generates values according to a range. The value generated for a time t is the number of seconds + * of difference between t and a reference value (which is midnight -> 00:00:00) + * + * Example: For a range between 00:00:10 and 00:00:20, the generated values are + * {10,11,12,13,14,15,16,17,18,19,20} + */ +std::vector values(const SqpRange &range) +{ + QTime referenceTime{0, 0}; + + std::vector result{}; + + for (auto i = range.m_TStart; i <= range.m_TEnd; ++i) { + auto time = DateUtils::dateTime(i).time(); + result.push_back(referenceTime.secsTo(time)); + } + + return result; +} + +/// Provider used for the tests +class TestProvider : public IDataProvider { + std::shared_ptr clone() const { return std::make_shared(); } + + void requestDataLoading(QUuid acqIdentifier, const DataProviderParameters ¶meters) override + { + const auto &ranges = parameters.m_Times; + + for (const auto &range : ranges) { + // Generates data series + auto valuesData = values(range); + + std::vector xAxisData{}; + for (auto i = range.m_TStart; i <= range.m_TEnd; ++i) { + xAxisData.push_back(i); + } + + auto dataSeries = std::make_shared( + std::move(xAxisData), std::move(valuesData), Unit{"t", true}, Unit{}); + + emit dataProvided(acqIdentifier, dataSeries, range); + } + } + + void requestDataAborting(QUuid acqIdentifier) override + { + // Does nothing + } +}; + +/** * Interface representing an operation performed on a variable controller. * This interface is used in tests to apply a set of operations and check the status of the * controller after each operation