on xenial help sign in
Make UnityTestCase.touchFlick properly map event coordinates
e3a18fdDaniel d'Andrada
tests/utils/modules/Unity/Test/UnityTestCase.qml+11−7
@@ -221,6 +221,10 @@ TestCase {
221 // Make sure the item is rendered
221 // Make sure the item is rendered
222 waitForRendering(item);
222 waitForRendering(item);
223
223
224+ var root = fetchRootItem(item);
225+ var rootFrom = item.mapToItem(root, x, y);
226+ var rootTo = item.mapToItem(root, toX, toY);
227+
224 // Default to true for beginTouch if not present
228 // Default to true for beginTouch if not present
225 beginTouch = (beginTouch !== undefined) ? beginTouch : true
229 beginTouch = (beginTouch !== undefined) ? beginTouch : true
226
230
@@ -233,17 +237,17 @@ TestCase {
233 // Set a default iterations if not specified
237 // Set a default iterations if not specified
234 var iterations = (iterations !== undefined) ? iterations : 5
238 var iterations = (iterations !== undefined) ? iterations : 5
235
239
236− var distance = Math.sqrt(Math.pow(toX - x, 2) + Math.pow(toY - y, 2))
240+ var distance = Math.sqrt(Math.pow(rootTo.x - rootFrom.x, 2) + Math.pow(rootTo.Y - rootFrom.y, 2))
237 var totalTime = (distance / speed) * 1000 /* converting speed to pixels/ms */
241 var totalTime = (distance / speed) * 1000 /* converting speed to pixels/ms */
238
242
239 var timeStep = totalTime / iterations
243 var timeStep = totalTime / iterations
240− var diffX = (toX - x) / iterations
244+ var diffX = (rootTo.x - rootFrom.x) / iterations
241− var diffY = (toY - y) / iterations
245+ var diffY = (rootTo.y - rootFrom.y) / iterations
242 if (beginTouch) {
246 if (beginTouch) {
243 fakeDateTime.currentTimeMs += timeStep
247 fakeDateTime.currentTimeMs += timeStep
244
248
245 var event = touchEvent()
249 var event = touchEvent()
246− event.press(0 /* touchId */, x, y)
250+ event.press(0 /* touchId */, rootFrom.x, rootFrom.y)
247 event.commit()
251 event.commit()
248 }
252 }
249 for (var i = 0; i < iterations; ++i) {
253 for (var i = 0; i < iterations; ++i) {
@@ -253,19 +257,19 @@ TestCase {
253 // the point specified
257 // the point specified
254 wait(iterations / speed)
258 wait(iterations / speed)
255 var event = touchEvent()
259 var event = touchEvent()
256− event.move(0 /* touchId */, toX, toY)
260+ event.move(0 /* touchId */, rootTo.x, rootTo.y)
257 event.commit()
261 event.commit()
258 } else {
262 } else {
259 wait(iterations / speed)
263 wait(iterations / speed)
260 var event = touchEvent()
264 var event = touchEvent()
261− event.move(0 /* touchId */, x + (i + 1) * diffX, y + (i + 1) * diffY)
265+ event.move(0 /* touchId */, rootFrom.x + (i + 1) * diffX, rootFrom.y + (i + 1) * diffY)
262 event.commit()
266 event.commit()
263 }
267 }
264 }
268 }
265 if (endTouch) {
269 if (endTouch) {
266 fakeDateTime.currentTimeMs += timeStep
270 fakeDateTime.currentTimeMs += timeStep
267 var event = touchEvent()
271 var event = touchEvent()
268− event.release(0 /* touchId */, toX, toY)
272+ event.release(0 /* touchId */, rootTo.x, rootTo.y)
269 event.commit()
273 event.commit()
270 }
274 }
271 }
275 }