##// END OF EJS Templates
Implements unit test (3)...
Alexandre Leroux -
r745:e4699d579435
parent child
Show More
@@ -33,8 +33,9 std::shared_ptr<IDataSeries> CosinusProvider::retrieveData(QUuid acqIdentifier,
33 std::swap(start, end);
33 std::swap(start, end);
34 }
34 }
35
35
36 // Generates scalar series containing cosinus values (one value per second)
36 // Generates scalar series containing cosinus values (one value per second, end value is
37 auto dataCount = end - start;
37 // included)
38 auto dataCount = end - start + 1;
38
39
39 auto xAxisData = std::vector<double>{};
40 auto xAxisData = std::vector<double>{};
40 xAxisData.resize(dataCount);
41 xAxisData.resize(dataCount);
@@ -44,7 +45,7 std::shared_ptr<IDataSeries> CosinusProvider::retrieveData(QUuid acqIdentifier,
44
45
45 int progress = 0;
46 int progress = 0;
46 auto progressEnd = dataCount;
47 auto progressEnd = dataCount;
47 for (auto time = start; time < end; ++time, ++dataIndex) {
48 for (auto time = start; time <= end; ++time, ++dataIndex) {
48 auto it = m_VariableToEnableProvider.find(acqIdentifier);
49 auto it = m_VariableToEnableProvider.find(acqIdentifier);
49 if (it != m_VariableToEnableProvider.end() && it.value()) {
50 if (it != m_VariableToEnableProvider.end() && it.value()) {
50 const auto timeOnFreq = time / freq;
51 const auto timeOnFreq = time / freq;
@@ -26,6 +26,33 const auto DATETIME_FORMAT = QStringLiteral("yyyy/MM/dd hh:mm:ss:zzz");
26 /// Delay after each operation on the variable before validating it (in ms)
26 /// Delay after each operation on the variable before validating it (in ms)
27 const auto OPERATION_DELAY = 250;
27 const auto OPERATION_DELAY = 250;
28
28
29 /**
30 * Verifies that the data in the candidate series are identical to the data in the reference series
31 * in a specific range
32 * @param candidate the candidate data series
33 * @param range the range to check
34 * @param reference the reference data series
35 * @return true if the data of the candidate series and the reference series are identical in the
36 * range, false otherwise
37 */
38 bool checkDataSeries(std::shared_ptr<IDataSeries> candidate, const SqpRange &range,
39 std::shared_ptr<IDataSeries> reference)
40 {
41 if (candidate == nullptr || reference == nullptr) {
42 return candidate == reference;
43 }
44
45 auto referenceIt = reference->xAxisRange(range.m_TStart, range.m_TEnd);
46
47 return std::equal(candidate->cbegin(), candidate->cend(), referenceIt.first, referenceIt.second,
48 [](const auto &it1, const auto &it2) {
49 // - milliseconds precision for time
50 // - 1e-6 precision for value
51 return std::abs(it1.x() - it2.x()) < 1e-3
52 && std::abs(it1.value() - it2.value()) < 1e-6;
53 });
54 }
55
29 /// Generates the data series from the reading of a data stream
56 /// Generates the data series from the reading of a data stream
30 std::shared_ptr<IDataSeries> readDataStream(QTextStream &stream)
57 std::shared_ptr<IDataSeries> readDataStream(QTextStream &stream)
31 {
58 {
@@ -89,6 +116,16 void TestCosinusAcquisition::testAcquisition()
89 QTextStream dataStream{&dataFile};
116 QTextStream dataStream{&dataFile};
90 auto dataSeries = readDataStream(dataStream);
117 auto dataSeries = readDataStream(dataStream);
91
118
119 /// Lambda used to validate a variable at each step
120 auto validateVariable = [dataSeries](std::shared_ptr<Variable> variable,
121 const SqpRange &range) {
122 // Checks that the variable's range has changed
123 QCOMPARE(variable->range(), range);
124
125 // Checks the variable's data series
126 QVERIFY(checkDataSeries(variable->dataSeries(), variable->cacheRange(), dataSeries));
127 };
128
92 // Creates variable
129 // Creates variable
93 QFETCH(SqpRange, initialRange);
130 QFETCH(SqpRange, initialRange);
94 sqpApp->timeController().onTimeToUpdate(initialRange);
131 sqpApp->timeController().onTimeToUpdate(initialRange);
@@ -96,6 +133,8 void TestCosinusAcquisition::testAcquisition()
96 auto variable = sqpApp->variableController().createVariable("MMS", {}, provider);
133 auto variable = sqpApp->variableController().createVariable("MMS", {}, provider);
97
134
98 QTest::qWait(OPERATION_DELAY);
135 QTest::qWait(OPERATION_DELAY);
136 validateVariable(variable, initialRange);
137
99 // Makes operations on the variable
138 // Makes operations on the variable
100 QFETCH(std::vector<SqpRange>, operations);
139 QFETCH(std::vector<SqpRange>, operations);
101 for (const auto &operation : operations) {
140 for (const auto &operation : operations) {
@@ -104,6 +143,7 void TestCosinusAcquisition::testAcquisition()
104 variable->range(), true);
143 variable->range(), true);
105
144
106 QTest::qWait(OPERATION_DELAY);
145 QTest::qWait(OPERATION_DELAY);
146 validateVariable(variable, operation);
107 }
147 }
108 }
148 }
109 else {
149 else {
General Comments 0
You need to be logged in to leave comments. Login now