@@ -185,7 +185,76 void TestVariableSync::testSync_data() | |||||
185 | // Test cases // |
|
185 | // Test cases // | |
186 | // ////////// // |
|
186 | // ////////// // | |
187 |
|
187 | |||
188 | /// @todo |
|
188 | // Id used to synchronize variables in the controller | |
|
189 | auto syncId = QUuid::createUuid(); | |||
|
190 | ||||
|
191 | /// Generates a range according to a start time and a end time (the date is the same) | |||
|
192 | auto range = [](const QTime &startTime, const QTime &endTime) { | |||
|
193 | return SqpRange{DateUtils::secondsSinceEpoch(QDateTime{{2017, 1, 1}, startTime, Qt::UTC}), | |||
|
194 | DateUtils::secondsSinceEpoch(QDateTime{{2017, 1, 1}, endTime, Qt::UTC})}; | |||
|
195 | }; | |||
|
196 | ||||
|
197 | auto initialRange = range({12, 0}, {13, 0}); | |||
|
198 | ||||
|
199 | Iterations iterations{}; | |||
|
200 | // Creates variables var0, var1 and var2 | |||
|
201 | iterations.push_back({std::make_shared<Create>(0), {{0, initialRange}}}); | |||
|
202 | iterations.push_back({std::make_shared<Create>(1), {{0, initialRange}, {1, initialRange}}}); | |||
|
203 | iterations.push_back( | |||
|
204 | {std::make_shared<Create>(2), {{0, initialRange}, {1, initialRange}, {2, initialRange}}}); | |||
|
205 | ||||
|
206 | // Adds variables into the sync group (ranges don't need to be tested here) | |||
|
207 | iterations.push_back({std::make_shared<Synchronize>(0, syncId)}); | |||
|
208 | iterations.push_back({std::make_shared<Synchronize>(1, syncId)}); | |||
|
209 | iterations.push_back({std::make_shared<Synchronize>(2, syncId)}); | |||
|
210 | ||||
|
211 | // Moves var0: ranges of var0, var1 and var2 change | |||
|
212 | auto newRange = range({12, 30}, {13, 30}); | |||
|
213 | iterations.push_back( | |||
|
214 | {std::make_shared<Move>(0, newRange), {{0, newRange}, {1, newRange}, {2, newRange}}}); | |||
|
215 | ||||
|
216 | // Moves var1: ranges of var0, var1 and var2 change | |||
|
217 | newRange = range({13, 0}, {14, 0}); | |||
|
218 | iterations.push_back( | |||
|
219 | {std::make_shared<Move>(0, newRange), {{0, newRange}, {1, newRange}, {2, newRange}}}); | |||
|
220 | ||||
|
221 | // Moves var2: ranges of var0, var1 and var2 change | |||
|
222 | newRange = range({13, 30}, {14, 30}); | |||
|
223 | iterations.push_back( | |||
|
224 | {std::make_shared<Move>(0, newRange), {{0, newRange}, {1, newRange}, {2, newRange}}}); | |||
|
225 | ||||
|
226 | // Desyncs var2 and moves var0: | |||
|
227 | // - ranges of var0 and var1 change | |||
|
228 | // - range of var2 doesn't change anymore | |||
|
229 | auto var2Range = newRange; | |||
|
230 | newRange = range({13, 45}, {14, 45}); | |||
|
231 | iterations.push_back({std::make_shared<Synchronize>(2, syncId, false)}); | |||
|
232 | iterations.push_back( | |||
|
233 | {std::make_shared<Move>(0, newRange), {{0, newRange}, {1, newRange}, {2, var2Range}}}); | |||
|
234 | ||||
|
235 | // Shifts var0: although var1 is synchronized with var0, its range doesn't change | |||
|
236 | auto var1Range = newRange; | |||
|
237 | newRange = range({14, 45}, {15, 45}); | |||
|
238 | iterations.push_back({std::make_shared<Move>(0, newRange, true), | |||
|
239 | {{0, newRange}, {1, var1Range}, {2, var2Range}}}); | |||
|
240 | ||||
|
241 | // Moves var0 through several operations: | |||
|
242 | // - range of var0 changes | |||
|
243 | // - range or var1 changes according to the previous shift (one hour) | |||
|
244 | auto moveVar0 = [&iterations](const auto &var0NewRange, const auto &var1ExpectedRange) { | |||
|
245 | iterations.push_back( | |||
|
246 | {std::make_shared<Move>(0, var0NewRange), {{0, var0NewRange}, {1, var1ExpectedRange}}}); | |||
|
247 | }; | |||
|
248 | // Pan left | |||
|
249 | moveVar0(range({14, 30}, {15, 30}), range({13, 30}, {14, 30})); | |||
|
250 | // Pan right | |||
|
251 | moveVar0(range({16, 0}, {17, 0}), range({15, 0}, {16, 0})); | |||
|
252 | // Zoom in | |||
|
253 | moveVar0(range({16, 30}, {16, 45}), range({15, 30}, {15, 45})); | |||
|
254 | // Zoom out | |||
|
255 | moveVar0(range({12, 0}, {18, 0}), range({11, 0}, {17, 0})); | |||
|
256 | ||||
|
257 | QTest::newRow("sync1") << syncId << initialRange << std::move(iterations); | |||
189 | } |
|
258 | } | |
190 |
|
259 | |||
191 | void TestVariableSync::testSync() |
|
260 | void TestVariableSync::testSync() |
General Comments 0
You need to be logged in to leave comments.
Login now