2
* Copyright 2013 Canonical Ltd.
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License as published by
6
* the Free Software Foundation; version 3.
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU General Public License for more details.
13
* You should have received a copy of the GNU General Public License
14
* along with this program. If not, see <http://www.gnu.org/licenses/>.
20
import "../../../qml/Greeter"
21
import AccountsService 0.1
22
import LightDM 0.1 as LightDM
23
import Ubuntu.Components 0.1
24
import Unity.Test 0.1 as UT
32
anchors.centerIn: parent
35
if (greeterLoader.item)
36
greeterLoader.item.show();
44
property bool itemDestroyed: false
46
sourceComponent: Component {
48
width: greeterLoader.width
49
height: greeterLoader.height
51
Component.onDestruction: {
52
greeterLoader.itemDestroyed = true;
55
objectName: "selectedSpy"
57
signalName: "selected"
65
target: greeterLoader.item
66
signalName: "unlocked"
71
target: greeterLoader.item
76
id: infographicDataChangedSpy
77
target: LightDM.Infographic
78
signalName: "dataChanged"
85
property Greeter greeter: greeterLoader.item
88
AccountsService.statsWelcomeScreen = true
90
// force a reload so that we get a fresh Greeter for the next test
91
greeterLoader.itemDestroyed = false;
92
greeterLoader.active = false;
93
tryCompare(greeterLoader, "itemDestroyed", true);
98
greeterLoader.active = true;
99
tryCompare(greeterLoader, "status", Loader.Ready);
100
removeTimeConstraintsFromDirectionalDragAreas(greeterLoader.item);
103
function test_properties() {
104
compare(greeter.multiUser, false)
105
compare(greeter.narrowMode, true)
108
function test_teasingArea_data() {
110
{tag: "left", posX: units.gu(2), leftPressed: true, rightPressed: false},
111
{tag: "right", posX: greeter.width - units.gu(2), leftPressed: false, rightPressed: true}
115
function test_teasingArea(data) {
117
tap(greeter, data.posX, greeter.height - units.gu(1))
119
tryCompare(tappedSpy, "count", 1)
122
function test_statsWelcomeScreen() {
123
// Test logic in greeter that turns statsWelcomeScreen setting into infographic changes
124
compare(AccountsService.statsWelcomeScreen, true)
125
tryCompare(LightDM.Infographic, "username", "single")
126
AccountsService.statsWelcomeScreen = false
127
tryCompare(LightDM.Infographic, "username", "")
128
AccountsService.statsWelcomeScreen = true
129
tryCompare(LightDM.Infographic, "username", "single")
132
function test_initial_selected_signal() {
133
var selectedSpy = findChild(greeter, "selectedSpy");
135
tryCompare(selectedSpy, "count", 1);
139
Regression test for https://bugs.launchpad.net/ubuntu/+source/unity8/+bug/1388359
140
"User metrics can no longer be changed by double tap"
142
function test_doubleTapSwitchesToNextInfographic() {
143
infographicDataChangedSpy.clear();
145
var infographicPrivate = findInvisibleChild(greeter, "infographicPrivate");
146
verify(infographicPrivate);
148
// wait for the UI to settle down before double tapping it
149
tryCompare(infographicPrivate, "animating", false);
151
var dataCircle = findChild(greeter, "dataCircle");
158
tryCompare(infographicDataChangedSpy, "count", 1);
161
function test_movesBackIntoPlaceWhenNotDraggedFarEnough() {
163
var dragEvaluator = findInvisibleChild(greeter, "edgeDragEvaluator");
164
verify(dragEvaluator);
166
// Make it easier to get a rejection/rollback. Otherwise would have to inject
167
// a fake timer into dragEvaluator.
168
// Afterall, we are testing if the Greeter indeed moves back on a
169
// rollback decision, not the drag evaluation itself.
170
dragEvaluator.minDragDistance = dragEvaluator.maxDragDistance / 2;
172
// it starts as fully shown
173
compare(greeter.x, 0);
175
// then we drag it a bit
176
var startX = greeter.width - 1;
177
var touchY = greeter.height / 2;
178
var dragXDelta = -(dragEvaluator.minDragDistance * 0.3);
180
startX , touchY, // start pos
181
startX + dragXDelta, touchY, // end pos
182
true /* beginTouch */, false /* endTouch */);
184
// which should make it move a bit
185
tryCompareFunction(function(){return greeter.x < 0;}, true);
187
// then we release it
188
touchRelease(greeter, startX + dragXDelta, touchY);
190
// which should make it move back into its original position as it didn't move
191
// far enough to have it hidden
192
tryCompare(greeter, "x", 0);
195
function test_dragToHide_data() {
197
{tag: "left", startX: greeter.width * 0.95, endX: greeter.width * 0.1, hiddenX: -greeter.width},
198
{tag: "right", startX: greeter.width * 0.1, endX: greeter.width * 0.95, hiddenX: greeter.width},
201
function test_dragToHide(data) {
202
compare(greeter.x, 0);
203
compare(greeter.visible, true);
204
compare(greeter.shown, true);
205
compare(greeter.showProgress, 1);
208
data.startX, greeter.height / 2, // start pos
209
data.endX, greeter.height / 2); // end pos
211
tryCompare(greeter, "x", data.hiddenX);
212
tryCompare(greeter, "visible", false);
213
tryCompare(greeter, "shown", false);
214
tryCompare(greeter, "showProgress", 0);
217
function test_hiddenGreeterRemainsHiddenAfterResize_data() {
219
{tag: "left", startX: greeter.width * 0.95, endX: greeter.width * 0.1},
220
{tag: "right", startX: greeter.width * 0.1, endX: greeter.width * 0.95},
223
function test_hiddenGreeterRemainsHiddenAfterResize(data) {
225
data.startX, greeter.height / 2, // start pos
226
data.endX, greeter.height / 2); // end pos
228
tryCompare(greeter, "x", data.tag == "left" ? -greeter.width : greeter.width);
229
tryCompare(greeter, "visible", false);
230
tryCompare(greeter, "shown", false);
231
tryCompare(greeter, "showProgress", 0);
233
// flip dimensions to simulate an orientation change
234
greeter.width = greeterLoader.height;
235
greeter.height = greeterLoader.width;
237
// All properties should remain consistent
238
tryCompare(greeter, "x", data.tag == "left" ? -greeter.width : greeter.width);
239
tryCompare(greeter, "visible", false);
240
tryCompare(greeter, "shown", false);
241
tryCompare(greeter, "showProgress", 0);