19 import Ubuntu.Components 0.1
20 import Unity.Test 0.1 as UT
26 property var fakeDateTime:
new function() {
27 this.currentTimeMs = 0
28 this.getCurrentTimeMs =
function() {
return this.currentTimeMs}
35 function mouseFlick(item, x, y, toX, toY, pressMouse, releaseMouse,
37 pressMouse = ((pressMouse != null) ? pressMouse :
true);
38 releaseMouse = ((releaseMouse != null) ? releaseMouse :
true);
41 speed = (speed != null) ? speed : units.gu(10);
44 iterations = (iterations !== undefined) ? iterations : 5
46 var distance = Math.sqrt(Math.pow(toX - x, 2) + Math.pow(toY - y, 2))
47 var totalTime = (distance / speed) * 1000
49 var timeStep = totalTime / iterations
50 var diffX = (toX - x) / iterations
51 var diffY = (toY - y) / iterations
53 fakeDateTime.currentTimeMs += timeStep
54 mousePress(item, x, y)
56 for (var i = 0; i < iterations; ++i) {
57 fakeDateTime.currentTimeMs += timeStep
58 if (i === iterations - 1) {
61 mouseMove(item, toX, toY, iterations / speed)
63 mouseMove(item, x + (i + 1) * diffX, y + (i + 1) * diffY, iterations / speed)
67 fakeDateTime.currentTimeMs += timeStep
68 mouseRelease(item, toX, toY)
74 function findChild(obj, objectName) {
75 return findChildIn(obj,
"children", objectName);
83 function findInvisibleChild(obj, objectName) {
84 return findChildIn(obj,
"data", objectName);
88 function findChildIn(obj, prop, objectName) {
89 var childs =
new Array(0);
91 while (childs.length > 0) {
92 if (childs[0].objectName == objectName) {
95 for (var i in childs[0][prop]) {
96 childs.push(childs[0][prop][i])
107 function typeString(str) {
173 for (var i = 0; i < str.length; i++) {
174 keyClick(keyMap[str[i]])
181 function tryCompareFunction(func, expectedResult) {
186 while (timeSpent < timeout && !success) {
187 actualResult = func()
188 success = qtest_compareInternal(actualResult, expectedResult)
189 if (success === false) {
195 var act = qtest_results.stringify(actualResult)
196 var exp = qtest_results.stringify(expectedResult)
197 if (!qtest_results.compare(success,
198 "function returned unexpected result",
200 util.callerFile(), util.callerLine())) {
201 throw new Error(
"QtQuickTest::fail")
205 function touchEvent() {
206 return UT.Util.touchEvent()
210 function touchFlick(item, x, y, toX, toY, beginTouch, endTouch, speed, iterations) {
212 waitForRendering(item);
215 beginTouch = (beginTouch !== undefined) ? beginTouch :
true
218 endTouch = (endTouch !== undefined) ? endTouch :
true
221 speed = (speed !== undefined) ? speed : units.gu(10)
224 var iterations = (iterations !== undefined) ? iterations : 5
226 var distance = Math.sqrt(Math.pow(toX - x, 2) + Math.pow(toY - y, 2))
227 var totalTime = (distance / speed) * 1000
229 var timeStep = totalTime / iterations
230 var diffX = (toX - x) / iterations
231 var diffY = (toY - y) / iterations
233 fakeDateTime.currentTimeMs += timeStep
235 var
event = touchEvent()
236 event.press(0 , x, y)
239 for (var i = 0; i < iterations; ++i) {
240 fakeDateTime.currentTimeMs += timeStep
241 if (i === iterations - 1) {
244 wait(iterations / speed)
245 var event = touchEvent()
246 event.move(0 , toX, toY)
249 wait(iterations / speed)
250 var event = touchEvent()
251 event.move(0 , x + (i + 1) * diffX, y + (i + 1) * diffY)
256 fakeDateTime.currentTimeMs += timeStep
257 var
event = touchEvent()
258 event.release(0 , toX, toY)
263 function fetchRootItem(item) {
265 return fetchRootItem(item.parent)
270 function touchPress(item, x, y) {
271 var root = fetchRootItem(item)
272 var rootPoint = item.mapToItem(root, x, y)
274 var event = touchEvent()
275 event.press(0 , rootPoint.x, rootPoint.y)
279 function touchRelease(item, x, y) {
280 var root = fetchRootItem(item)
281 var rootPoint = item.mapToItem(root, x, y)
283 var event = touchEvent()
284 event.release(0 , rootPoint.x, rootPoint.y)
288 function tap(item, x, y) {
289 var
event = touchEvent()
290 event.press(0 , x, y)
294 event.release(0 , x, y)
298 Component.onCompleted: {
299 var rootItem = parent;
300 while (rootItem.parent != undefined) {
301 rootItem = rootItem.parent;
303 removeTimeConstraintsFromDirectionalDragAreas(rootItem);
315 function removeTimeConstraintsFromDirectionalDragAreas(item) {
318 if (item.minSpeed != undefined
319 && item.maxSilenceTime != undefined
320 && item.compositionTime != undefined) {
322 item.maxSilenceTime = 60 * 60 * 1000;
323 item.compositionTime = 0;
325 for (var i in item.children) {
326 removeTimeConstraintsFromDirectionalDragAreas(item.children[i]);