@@ -19,6 +19,7 @@
20import QtQuick 2.0
20import QtQuick 2.0
21import QtTest 1.0
21import QtTest 1.0
22import Ubuntu.Application 0.1
23import Ubuntu.Application 0.1
23import Unity.Test 0.1 as UT
24import Unity.Test 0.1 as UT
@@ -48,234 +49,264 @@ Item {
53+ id: backgroundSettings
54+ schema.id: "org.gnome.desktop.background"
51 UT.UnityTestCase {
57 UT.UnityTestCase {
52 name: "Shell"
58 name: "Shell"
53 when: windowShown
59 when: windowShown
55− function initTestCase() {
61+// function initTestCase() {
56− // swipe away the greeter/lockscreen
62+// // swipe away the greeter/lockscreen
57− var touchX = shell.width - (shell.edgeSize / 2);
63+// var touchX = shell.width - (shell.edgeSize / 2);
58− var touchY = shell.height / 2;
64+// var touchY = shell.height / 2;
59− touchFlick(shell, touchX, touchY, shell.width * 0.1, touchY);
65+// touchFlick(shell, touchX, touchY, shell.width * 0.1, touchY);
61− var dash = findChild(shell, "dash");
62− // wait until the animation has finished
63− tryCompare(dash, "contentScale", 1.0);
64− tryCompare(dash, "opacity", 1.0);
68− // kill all (fake) running apps
69− ApplicationManager.mainStageApplications.clear();
70− ApplicationManager.sideStageApplications.clear();
72− var dashHome = findChild(shell, "DashHome");
73− swipeUntilScopeViewIsReached(dashHome);
77− Test the effect of a right-edge drag on the dash in 3 situations:
78− 1 - when no application has been launched yet
79− 2 - when there's a minimized application
80− 3 - after the last running application has been closed/stopped
82− The behavior of Dash on 3 should be the same as on 1.
84− function test_rightEdgeDrag() {
85− checkRightEdgeDragWithNoRunningApps();
87− dragLauncherIntoView();
89− // Launch an app from the launcher
90− tapOnAppIconInLauncher();
91− waitUntilApplicationWindowIsFullyVisible();
93− // Minimize the application we just launched
98− checkRightEdgeDragWithMinimizedApp();
100− // Minimize that application once again
101− swipeFromLeftEdge();
104− ApplicationManager.mainStageApplications.clear();
106− waitForUIToSettle();
108− // Right edge behavior should now be the same as before that app was launched
109− checkRightEdgeDragWithNoRunningApps();
113− Perform a right-edge drag when the Dash is being show and there are
114− no running/minimized apps to be restored.
116− The expected behavior is that an animation should be played to hint the
117− user that his right-edge drag gesture has been successfully recognized
118− but there is no application to be brought to foreground.
120− function checkRightEdgeDragWithNoRunningApps() {
121− var touchX = shell.width - (shell.edgeSize / 2);
122− var touchY = shell.height / 2;
124− var dash = findChild(shell, "dash");
125− // check that dash has normal scale and opacity
126− compare(dash.contentScale, 1.0);
127− compare(dash.opacity, 1.0);
129− touchFlick(shell, touchX, touchY, shell.width * 0.1, touchY,
130− true /* beginTouch */, false /* endTouch */);
132− // check that Dash has been scaled down and had its opacity reduced
133− tryCompareFunction(function() { return dash.contentScale <= 0.9; }, true);
134− tryCompareFunction(function() { return dash.opacity <= 0.5; }, true);
136− touchRelease(shell, shell.width * 0.1, touchY);
138− // and now everything should have gone back to normal
139− tryCompare(dash, "contentScale", 1.0);
140− tryCompare(dash, "opacity", 1.0);
144− Perform a right-edge drag when the Dash is being show and there is
145− a running/minimized app to be restored.
147− The expected behavior is that the dash should fade away and ultimately be
67+// var dash = findChild(shell, "dash");
148− made invisible once the gesture is finished as the restored app will now
68+// // wait until the animation has finished
149− be on foreground.
69+// tryCompare(dash, "contentScale", 1.0);
150− */
70+// tryCompare(dash, "opacity", 1.0);
151− function checkRightEdgeDragWithMinimizedApp() {
71+// }
152− var touchX = shell.width - (shell.edgeSize / 2);
153− var touchY = shell.height / 2;
155− var dash = findChild(shell, "dash");
73+// function cleanup() {
156− // check that dash has normal scale and opacity
74+// // kill all (fake) running apps
157− tryCompare(dash, "contentScale", 1.0);
75+// ApplicationManager.mainStageApplications.clear();
158− tryCompare(dash, "opacity", 1.0);
76+// ApplicationManager.sideStageApplications.clear();
160− touchFlick(shell, touchX, touchY, shell.width * 0.1, touchY,
161− true /* beginTouch */, false /* endTouch */);
163− // check that Dash has been scaled down and had its opacity reduced
164− tryCompareFunction(function() { return dash.contentScale <= 0.9; }, true);
165− tryCompareFunction(function() { return dash.opacity <= 0.5; }, true);
167− touchRelease(shell, shell.width * 0.1, touchY);
169− // dash should have gone away, now that the app is on foreground
170− tryCompare(dash, "visible", false);
173− // Wait for the whole UI to settle down
174− function waitForUIToSettle() {
175− waitUntilApplicationWindowIsFullyHidden();
176− var dashContentList = findChild(shell, "dashContentList");
78+// var dashHome = findChild(shell, "DashHome");
177− tryCompare(dashContentList, "moving", false);
180− function dragLauncherIntoView() {
181− var launcherPanel = findChild(shell, "launcherPanel");
182− verify(launcherPanel.x = - launcherPanel.width);
183− swipeFromLeftEdge();
184− tryCompare(launcherPanel, "x", 0);
187− function tapOnAppIconInLauncher() {
188− var launcherPanel = findChild(shell, "launcherPanel");
190− // pick the first icon, the one at the bottom.
191− var appIcon = findChild(launcherPanel, "launcherDelegate0")
193− // Swipe upwards over the launcher to ensure that this icon
194− // at the bottom is not folded and faded away.
195− var touchStartX = launcherPanel.width / 2;
196− var touchStartY = launcherPanel.height / 2;
197− touchFlick(launcherPanel, touchStartX, touchStartY, touchStartX, 0);
198− tryCompare(launcherPanel, "moving", false);
200− // NB tapping (i.e., using touch events) doesn't activate the icon... go figure...
201− mouseClick(appIcon, appIcon.width / 2, appIcon.height / 2);
204− function waitUntilApplicationWindowIsFullyVisible() {
205− var underlay = findChild(shell, "underlay");
206− tryCompare(underlay, "visible", false);
209− function waitUntilApplicationWindowIsFullyHidden() {
210− var stages = findChild(shell, "stages");
211− tryCompare(stages, "fullyHidden", true);
214− function swipeUntilScopeViewIsReached(scopeView) {
79+// swipeUntilScopeViewIsReached(dashHome);
215− while (!itemIsOnScreen(scopeView)) {
216− if (itemIsToLeftOfScreen(scopeView)) {
217− swipeRightFromCenter();
219− swipeLeftFromCenter();
221− waitUntilItemStopsMoving(scopeView);
225− function swipeFromLeftEdge() {
226− var touchStartX = 2;
227− var touchStartY = shell.height / 2;
228− touchFlick(shell, touchStartX, touchStartY, shell.width * 0.75, touchStartY);
231− function swipeLeftFromCenter() {
232− var touchStartX = shell.width / 2;
233− var touchStartY = shell.height / 2;
234− touchFlick(shell, touchStartX, touchStartY, 0, touchStartY);
237− function swipeRightFromCenter() {
238− var touchStartX = shell.width / 2;
239− var touchStartY = shell.height / 2;
240− touchFlick(shell, touchStartX, touchStartY, shell.width, touchStartY);
243− function swipeUpFromCenter() {
244− var touchStartX = shell.width / 2;
245− var touchStartY = shell.height / 2;
246− touchFlick(shell, touchStartX, touchStartY, touchStartX, 0);
249− function itemIsOnScreen(item) {
82+// /*
250− var itemRectInShell = item.mapToItem(shell, 0, 0, item.width, item.height);
83+// Test the effect of a right-edge drag on the dash in 3 situations:
84+// 1 - when no application has been launched yet
85+// 2 - when there's a minimized application
86+// 3 - after the last running application has been closed/stopped
88+// The behavior of Dash on 3 should be the same as on 1.
90+// function test_rightEdgeDrag() {
91+// checkRightEdgeDragWithNoRunningApps();
93+// dragLauncherIntoView();
95+// // Launch an app from the launcher
96+// tapOnAppIconInLauncher();
97+// waitUntilApplicationWindowIsFullyVisible();
99+// // Minimize the application we just launched
100+// swipeFromLeftEdge();
102+// waitForUIToSettle();
104+// checkRightEdgeDragWithMinimizedApp();
106+// // Minimize that application once again
107+// swipeFromLeftEdge();
110+// ApplicationManager.mainStageApplications.clear();
112+// waitForUIToSettle();
114+// // Right edge behavior should now be the same as before that app was launched
115+// checkRightEdgeDragWithNoRunningApps();
119+// Perform a right-edge drag when the Dash is being show and there are
120+// no running/minimized apps to be restored.
122+// The expected behavior is that an animation should be played to hint the
123+// user that his right-edge drag gesture has been successfully recognized
124+// but there is no application to be brought to foreground.
126+// function checkRightEdgeDragWithNoRunningApps() {
127+// var touchX = shell.width - (shell.edgeSize / 2);
128+// var touchY = shell.height / 2;
130+// var dash = findChild(shell, "dash");
131+// // check that dash has normal scale and opacity
132+// compare(dash.contentScale, 1.0);
133+// compare(dash.opacity, 1.0);
135+// touchFlick(shell, touchX, touchY, shell.width * 0.1, touchY,
136+// true /* beginTouch */, false /* endTouch */);
138+// // check that Dash has been scaled down and had its opacity reduced
139+// tryCompareFunction(function() { return dash.contentScale <= 0.9; }, true);
140+// tryCompareFunction(function() { return dash.opacity <= 0.5; }, true);
142+// touchRelease(shell, shell.width * 0.1, touchY);
144+// // and now everything should have gone back to normal
145+// tryCompare(dash, "contentScale", 1.0);
146+// tryCompare(dash, "opacity", 1.0);
150+// Perform a right-edge drag when the Dash is being show and there is
151+// a running/minimized app to be restored.
153+// The expected behavior is that the dash should fade away and ultimately be
154+// made invisible once the gesture is finished as the restored app will now
157+// function checkRightEdgeDragWithMinimizedApp() {
158+// var touchX = shell.width - (shell.edgeSize / 2);
159+// var touchY = shell.height / 2;
161+// var dash = findChild(shell, "dash");
162+// // check that dash has normal scale and opacity
163+// tryCompare(dash, "contentScale", 1.0);
164+// tryCompare(dash, "opacity", 1.0);
166+// touchFlick(shell, touchX, touchY, shell.width * 0.1, touchY,
167+// true /* beginTouch */, false /* endTouch */);
169+// // check that Dash has been scaled down and had its opacity reduced
170+// tryCompareFunction(function() { return dash.contentScale <= 0.9; }, true);
171+// tryCompareFunction(function() { return dash.opacity <= 0.5; }, true);
173+// touchRelease(shell, shell.width * 0.1, touchY);
175+// // dash should have gone away, now that the app is on foreground
176+// tryCompare(dash, "visible", false);
179+// // Wait for the whole UI to settle down
180+// function waitForUIToSettle() {
181+// waitUntilApplicationWindowIsFullyHidden();
182+// var dashContentList = findChild(shell, "dashContentList");
183+// tryCompare(dashContentList, "moving", false);
186+// function dragLauncherIntoView() {
187+// var launcherPanel = findChild(shell, "launcherPanel");
188+// verify(launcherPanel.x = - launcherPanel.width);
189+// swipeFromLeftEdge();
190+// tryCompare(launcherPanel, "x", 0);
193+// function tapOnAppIconInLauncher() {
194+// var launcherPanel = findChild(shell, "launcherPanel");
196+// // pick the first icon, the one at the bottom.
197+// var appIcon = findChild(launcherPanel, "launcherDelegate0")
199+// // Swipe upwards over the launcher to ensure that this icon
200+// // at the bottom is not folded and faded away.
201+// var touchStartX = launcherPanel.width / 2;
202+// var touchStartY = launcherPanel.height / 2;
203+// touchFlick(launcherPanel, touchStartX, touchStartY, touchStartX, 0);
204+// tryCompare(launcherPanel, "moving", false);
206+// // NB tapping (i.e., using touch events) doesn't activate the icon... go figure...
207+// mouseClick(appIcon, appIcon.width / 2, appIcon.height / 2);
210+// function waitUntilApplicationWindowIsFullyVisible() {
211+// var underlay = findChild(shell, "underlay");
212+// tryCompare(underlay, "visible", false);
215+// function waitUntilApplicationWindowIsFullyHidden() {
216+// var stages = findChild(shell, "stages");
217+// tryCompare(stages, "fullyHidden", true);
220+// function swipeUntilScopeViewIsReached(scopeView) {
221+// while (!itemIsOnScreen(scopeView)) {
222+// if (itemIsToLeftOfScreen(scopeView)) {
223+// swipeRightFromCenter();
225+// swipeLeftFromCenter();
227+// waitUntilItemStopsMoving(scopeView);
231+// function swipeFromLeftEdge() {
232+// var touchStartX = 2;
233+// var touchStartY = shell.height / 2;
234+// touchFlick(shell, touchStartX, touchStartY, shell.width * 0.75, touchStartY);
237+// function swipeLeftFromCenter() {
238+// var touchStartX = shell.width / 2;
239+// var touchStartY = shell.height / 2;
240+// touchFlick(shell, touchStartX, touchStartY, 0, touchStartY);
243+// function swipeRightFromCenter() {
244+// var touchStartX = shell.width / 2;
245+// var touchStartY = shell.height / 2;
246+// touchFlick(shell, touchStartX, touchStartY, shell.width, touchStartY);
249+// function swipeUpFromCenter() {
250+// var touchStartX = shell.width / 2;
251+// var touchStartY = shell.height / 2;
252+// touchFlick(shell, touchStartX, touchStartY, touchStartX, 0);
255+// function itemIsOnScreen(item) {
256+// var itemRectInShell = item.mapToItem(shell, 0, 0, item.width, item.height);
252− return itemRectInShell.x >= 0
258+// return itemRectInShell.x >= 0
253− && itemRectInShell.y >= 0
259+// && itemRectInShell.y >= 0
254− && itemRectInShell.x + itemRectInShell.width <= shell.width
260+// && itemRectInShell.x + itemRectInShell.width <= shell.width
255− && itemRectInShell.y + itemRectInShell.height <= shell.height;
261+// && itemRectInShell.y + itemRectInShell.height <= shell.height;
264+// function itemIsToLeftOfScreen(item) {
265+// var itemRectInShell = item.mapToItem(shell, 0, 0, item.width, item.height);
266+// return itemRectInShell.x < 0;
269+// function waitUntilItemStopsMoving(item) {
270+// var itemRectInShell = item.mapToItem(shell, 0, 0, item.width, item.height);
271+// var previousX = itemRectInShell.x;
272+// var previousY = itemRectInShell.y;
273+// var isStill = false;
277+// itemRectInShell = item.mapToItem(shell, 0, 0, item.width, item.height);
278+// if (itemRectInShell.x == previousX && itemRectInShell.y == previousY) {
281+// previousX = itemRectInShell.x;
282+// previousY = itemRectInShell.y;
284+// } while (!isStill);
287+ function test_wallpaper_data() {
289+ {tag: "red", url: "tests/data/unity/backgrounds/red.png"},
290+ {tag: "blue", url: "tests/data/unity/backgrounds/blue.png"}
258− function itemIsToLeftOfScreen(item) {
294+ function test_wallpaper(data) {
259− var itemRectInShell = item.mapToItem(shell, 0, 0, item.width, item.height);
295+ var backgroundImage = findChild(shell, "backgroundImage")
260− return itemRectInShell.x < 0;
296+ GSettingsController.setPictureUri(data.url)
297+ tryCompareFunction(function() { return backgroundImage.source.toString().indexOf(data.url) !== -1; }, true)
298+ tryCompare(backgroundImage, "status", Image.Ready)
263− function waitUntilItemStopsMoving(item) {
301+ function test_wallpaper_wrong() {
264− var itemRectInShell = item.mapToItem(shell, 0, 0, item.width, item.height);
302+ var backgroundImage = findChild(shell, "backgroundImage")
265− var previousX = itemRectInShell.x;
303+ var oldGSettingsBackground = backgroundSettings.pictureUri
266− var previousY = itemRectInShell.y;
304+ var oldShellBackground = shell.background
267− var isStill = false;
270− wait(100);
305+ wait(2000)
271− itemRectInShell = item.mapToItem(shell, 0, 0, item.width, item.height);
306+ GSettingsController.setPictureUri("wrong")
272− if (itemRectInShell.x == previousX && itemRectInShell.y == previousY) {
307+ console.log("WRONG ", oldGSettingsBackground, backgroundSettings.pictureUri)
273− isStill = true;
308+ //tryCompareFunction(function() { return oldGSettingsBackground == backgroundSettings.pictureUri; }, true)
274− } else {
309+// tryCompareFunction(function() { return backgroundImage.source.toString().indexOf(data.url) !== -1; }, true)
275− previousX = itemRectInShell.x;
276− previousY = itemRectInShell.y;