Auto status change to "Under Review"
@@ -536,8 +536,8 void VariableController::onRequestDataLoading(QVector<std::shared_ptr<Variable> | |||||
536 | } |
|
536 | } | |
537 | impl->m_VarGroupIdToVarIds.insert(std::make_pair(varRequestId, varIds)); |
|
537 | impl->m_VarGroupIdToVarIds.insert(std::make_pair(varRequestId, varIds)); | |
538 | for (const auto &var : variables) { |
|
538 | for (const auto &var : variables) { | |
539 |
qC |
|
539 | qCDebug(LOG_VariableController()) << "processRequest for" << var->name() << varRequestId | |
540 | << varIds.size(); |
|
540 | << varIds.size(); | |
541 | impl->processRequest(var, range, varRequestId); |
|
541 | impl->processRequest(var, range, varRequestId); | |
542 | } |
|
542 | } | |
543 | } |
|
543 | } |
@@ -198,15 +198,9 private slots: | |||||
198 | /// Input data for @sa testSync() |
|
198 | /// Input data for @sa testSync() | |
199 | void testSync_data(); |
|
199 | void testSync_data(); | |
200 |
|
200 | |||
201 | /// Input data for @sa testSyncWithAborting() |
|
|||
202 | void testSyncWithAborting_data(); |
|
|||
203 |
|
||||
204 | /// Input data for @sa testSyncOneVar() |
|
201 | /// Input data for @sa testSyncOneVar() | |
205 | void testSyncOneVar_data(); |
|
202 | void testSyncOneVar_data(); | |
206 |
|
203 | |||
207 | /// Tests synchronization between variables through several operations with automatic aborting |
|
|||
208 | void testSyncWithAborting(); |
|
|||
209 |
|
||||
210 | /// Tests synchronization between variables through several operations |
|
204 | /// Tests synchronization between variables through several operations | |
211 | void testSync(); |
|
205 | void testSync(); | |
212 |
|
206 | |||
@@ -291,78 +285,6 void testSyncCase1() | |||||
291 | QTest::newRow("sync1") << syncId << initialRange << std::move(iterations) << 200; |
|
285 | QTest::newRow("sync1") << syncId << initialRange << std::move(iterations) << 200; | |
292 | } |
|
286 | } | |
293 |
|
287 | |||
294 | void testSyncCase1WithAborting() |
|
|||
295 | { |
|
|||
296 | // Id used to synchronize variables in the controller |
|
|||
297 | auto syncId = QUuid::createUuid(); |
|
|||
298 |
|
||||
299 | /// Generates a range according to a start time and a end time (the date is the same) |
|
|||
300 | auto range = [](const QTime &startTime, const QTime &endTime) { |
|
|||
301 | return SqpRange{DateUtils::secondsSinceEpoch(QDateTime{{2017, 1, 1}, startTime, Qt::UTC}), |
|
|||
302 | DateUtils::secondsSinceEpoch(QDateTime{{2017, 1, 1}, endTime, Qt::UTC})}; |
|
|||
303 | }; |
|
|||
304 |
|
||||
305 | auto initialRange = range({12, 0}, {13, 0}); |
|
|||
306 |
|
||||
307 | Iterations creations{}; |
|
|||
308 | // Creates variables var0, var1 and var2 |
|
|||
309 | creations.push_back({std::make_shared<Create>(0), {{0, initialRange}}}); |
|
|||
310 | creations.push_back({std::make_shared<Create>(1), {{0, initialRange}, {1, initialRange}}}); |
|
|||
311 |
|
||||
312 | // Adds variables into the sync group (ranges don't need to be tested here) |
|
|||
313 | Iterations iterations{}; |
|
|||
314 | iterations.push_back({std::make_shared<Synchronize>(0, syncId)}); |
|
|||
315 | iterations.push_back({std::make_shared<Synchronize>(1, syncId)}); |
|
|||
316 |
|
||||
317 | // Moves var0: ranges of var0, var1 |
|
|||
318 | auto currentRange = range({12, 30}, {13, 30}); |
|
|||
319 | iterations.push_back( |
|
|||
320 | {std::make_shared<Move>(0, currentRange), {{0, currentRange}, {1, currentRange}}}); |
|
|||
321 |
|
||||
322 | // Moves var0: ranges of var0, var1 |
|
|||
323 | auto pendingRange = range({13, 0}, {14, 0}); |
|
|||
324 | iterations.push_back( |
|
|||
325 | {std::make_shared<Move>(0, pendingRange), {{0, pendingRange}, {1, pendingRange}}}); |
|
|||
326 |
|
||||
327 | // Moves var0: ranges of var0, var1 |
|
|||
328 | pendingRange = range({13, 30}, {14, 30}); |
|
|||
329 | iterations.push_back( |
|
|||
330 | {std::make_shared<Move>(0, pendingRange), {{0, pendingRange}, {1, pendingRange}}}); |
|
|||
331 |
|
||||
332 | // moves var0: |
|
|||
333 | // - ranges of var0 and var1 change |
|
|||
334 | auto var2Range = pendingRange; |
|
|||
335 | pendingRange = range({13, 45}, {14, 45}); |
|
|||
336 | iterations.push_back( |
|
|||
337 | {std::make_shared<Move>(0, pendingRange), {{0, pendingRange}, {1, pendingRange}}}); |
|
|||
338 |
|
||||
339 | // Shifts var0: although var1 is synchronized with var0, its range doesn't change |
|
|||
340 | auto var1Range = pendingRange; |
|
|||
341 | pendingRange = range({14, 45}, {15, 45}); |
|
|||
342 | iterations.push_back( |
|
|||
343 | {std::make_shared<Move>(0, pendingRange, false), {{0, pendingRange}, {1, pendingRange}}}); |
|
|||
344 |
|
||||
345 | // Moves var0 through several operations: |
|
|||
346 | // - range of var0 changes |
|
|||
347 | // - range or var1 changes according to the previous shift (one hour) |
|
|||
348 | auto moveVar0 = [&iterations](const auto &var0NewRange, const auto &var1ExpectedRange) { |
|
|||
349 | iterations.push_back( |
|
|||
350 | {std::make_shared<Move>(0, var0NewRange), {{0, var0NewRange}, {1, var1ExpectedRange}}}); |
|
|||
351 | }; |
|
|||
352 |
|
||||
353 | // Pan left |
|
|||
354 | moveVar0(range({14, 30}, {15, 30}), range({14, 30}, {15, 30})); |
|
|||
355 | // Pan right |
|
|||
356 | moveVar0(range({16, 0}, {17, 0}), range({16, 0}, {17, 0})); |
|
|||
357 | // Zoom in |
|
|||
358 | moveVar0(range({16, 30}, {16, 45}), range({16, 30}, {16, 45})); |
|
|||
359 | // Zoom out |
|
|||
360 | moveVar0(range({16, 15}, {17, 0}), range({16, 15}, {17, 0})); |
|
|||
361 |
|
||||
362 | QTest::newRow("syncWithAborting1") << syncId << currentRange << std::move(creations) |
|
|||
363 | << std::move(iterations) << 200; |
|
|||
364 | } |
|
|||
365 |
|
||||
366 | void testSyncCase2() |
|
288 | void testSyncCase2() | |
367 | { |
|
289 | { | |
368 | // Id used to synchronize variables in the controller |
|
290 | // Id used to synchronize variables in the controller | |
@@ -500,25 +422,6 void TestVariableSync::testSync_data() | |||||
500 | testSyncCase2(); |
|
422 | testSyncCase2(); | |
501 | } |
|
423 | } | |
502 |
|
424 | |||
503 | void TestVariableSync::testSyncWithAborting_data() |
|
|||
504 | { |
|
|||
505 | // ////////////// // |
|
|||
506 | // Test structure // |
|
|||
507 | // ////////////// // |
|
|||
508 |
|
||||
509 | QTest::addColumn<QUuid>("syncId"); |
|
|||
510 | QTest::addColumn<SqpRange>("initialRange"); |
|
|||
511 | QTest::addColumn<Iterations>("creations"); |
|
|||
512 | QTest::addColumn<Iterations>("iterations"); |
|
|||
513 | QTest::addColumn<int>("operationDelay"); |
|
|||
514 |
|
||||
515 | // ////////// // |
|
|||
516 | // Test cases // |
|
|||
517 | // ////////// // |
|
|||
518 |
|
||||
519 | testSyncCase1WithAborting(); |
|
|||
520 | } |
|
|||
521 |
|
||||
522 | void TestVariableSync::testSyncOneVar_data() |
|
425 | void TestVariableSync::testSyncOneVar_data() | |
523 | { |
|
426 | { | |
524 | // ////////////// // |
|
427 | // ////////////// // | |
@@ -564,40 +467,6 void TestVariableSync::testSync() | |||||
564 | } |
|
467 | } | |
565 | } |
|
468 | } | |
566 |
|
469 | |||
567 | void TestVariableSync::testSyncWithAborting() |
|
|||
568 | { |
|
|||
569 | // Inits controllers |
|
|||
570 | TimeController timeController{}; |
|
|||
571 | VariableController variableController{}; |
|
|||
572 | variableController.setTimeController(&timeController); |
|
|||
573 |
|
||||
574 | QFETCH(QUuid, syncId); |
|
|||
575 | QFETCH(SqpRange, initialRange); |
|
|||
576 | timeController.onTimeToUpdate(initialRange); |
|
|||
577 |
|
||||
578 | // Synchronization group used |
|
|||
579 | variableController.onAddSynchronizationGroupId(syncId); |
|
|||
580 |
|
||||
581 | // For each iteration: |
|
|||
582 | // - execute operation |
|
|||
583 | // - compare the variables' state to the expected states |
|
|||
584 | QFETCH(Iterations, iterations); |
|
|||
585 | QFETCH(Iterations, creations); |
|
|||
586 | QFETCH(int, operationDelay); |
|
|||
587 |
|
||||
588 | for (const auto &creation : creations) { |
|
|||
589 | creation.m_Operation->exec(variableController); |
|
|||
590 | QTest::qWait(operationDelay); |
|
|||
591 | } |
|
|||
592 |
|
||||
593 | for (const auto &iteration : iterations) { |
|
|||
594 | iteration.m_Operation->exec(variableController); |
|
|||
595 | } |
|
|||
596 |
|
||||
597 | QTest::qWait(operationDelay); |
|
|||
598 | validateRanges(variableController, iterations.back().m_ExpectedRanges); |
|
|||
599 | } |
|
|||
600 |
|
||||
601 | void TestVariableSync::testSyncOneVar() |
|
470 | void TestVariableSync::testSyncOneVar() | |
602 | { |
|
471 | { | |
603 | // Inits controllers |
|
472 | // Inits controllers |
@@ -55,7 +55,12 struct ExpectedResults { | |||||
55 | { |
|
55 | { | |
56 | if (m_ParsingOK) { |
|
56 | if (m_ParsingOK) { | |
57 | auto dataSeries = dynamic_cast<T *>(results.get()); |
|
57 | auto dataSeries = dynamic_cast<T *>(results.get()); | |
58 |
|
|
58 | if (dataSeries == nullptr) { | |
|
59 | ||||
|
60 | // No unit detected, parsink ok but data is nullptr | |||
|
61 | // TODO, improve the test to verify that the data is null | |||
|
62 | return; | |||
|
63 | } | |||
59 |
|
64 | |||
60 | // Checks units |
|
65 | // Checks units | |
61 | QVERIFY(dataSeries->xAxisUnit() == m_XAxisUnit); |
|
66 | QVERIFY(dataSeries->xAxisUnit() == m_XAxisUnit); |
General Comments 3
Merge lasted acquisition developpement on main Sciqlop branch
You need to be logged in to leave comments.
Login now