aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2016-11-17 17:03:08 +0100
committerJ-P Nurmi <jpnurmi@qt.io>2016-11-17 17:03:08 +0100
commit7903979d3585b73adf3c2c2b88b5c94c303b8302 (patch)
tree5e7b1b6ec6025778002f9312de7a14acf39011dc /tests/auto
parentaf9729ecf4434c5884cb61b990b819aaccd3af9b (diff)
parent2202d79b39ff90eed19fb8106f79d4604e47acfd (diff)
Merge remote-tracking branch 'origin/5.7' into 5.8
Conflicts: tests/auto/controls/data/tst_button.qml Change-Id: I5c97b3c1944e52dba44fd3c7d6d9a255c5e08cf7
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/controls/data/tst_button.qml163
-rw-r--r--tests/auto/controls/data/tst_checkbox.qml126
-rw-r--r--tests/auto/controls/data/tst_radiobutton.qml80
-rw-r--r--tests/auto/controls/data/tst_spinbox.qml62
4 files changed, 268 insertions, 163 deletions
diff --git a/tests/auto/controls/data/tst_button.qml b/tests/auto/controls/data/tst_button.qml
index 16d1bb94..dcce20d7 100644
--- a/tests/auto/controls/data/tst_button.qml
+++ b/tests/auto/controls/data/tst_button.qml
@@ -52,13 +52,13 @@ TestCase {
Component {
id: button
- Button {
- id: control
+ Button { }
+ }
- property SignalSequenceSpy spy: SignalSequenceSpy {
- target: control
- signals: ["pressed", "released", "canceled", "clicked", "doubleClicked", "pressedChanged", "downChanged", "checkedChanged"]
- }
+ Component {
+ id: signalSequenceSpy
+ SignalSequenceSpy {
+ signals: ["pressed", "released", "canceled", "clicked", "doubleClicked", "pressedChanged", "downChanged", "checkedChanged"]
}
}
@@ -84,52 +84,54 @@ TestCase {
var control = button.createObject(testCase)
verify(control)
+ var sequenceSpy = signalSequenceSpy.createObject(control, {target: control})
+
// click
- control.spy.expectedSequence = [["pressedChanged", { "pressed": true }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": true }],
["downChanged", { "down": true }],
"pressed"]
mousePress(control, control.width / 2, control.height / 2, Qt.LeftButton)
compare(control.pressed, true)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
- control.spy.expectedSequence = [["pressedChanged", { "pressed": false }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": false }],
["downChanged", { "down": false }],
"released",
"clicked"]
mouseRelease(control, control.width / 2, control.height / 2, Qt.LeftButton)
compare(control.pressed, false)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
// release outside
- control.spy.expectedSequence = [["pressedChanged", { "pressed": true }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": true }],
["downChanged", { "down": true }],
"pressed"]
mousePress(control, control.width / 2, control.height / 2, Qt.LeftButton)
compare(control.pressed, true)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
- control.spy.expectedSequence = [["pressedChanged", { "pressed": false }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": false }],
["downChanged", { "down": false }]]
mouseMove(control, control.width * 2, control.height * 2, 0, Qt.LeftButton)
compare(control.pressed, false)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
- control.spy.expectedSequence = [["canceled", { "pressed": false }]]
+ sequenceSpy.expectedSequence = [["canceled", { "pressed": false }]]
mouseRelease(control, control.width * 2, control.height * 2, Qt.LeftButton)
compare(control.pressed, false)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
// right button
- control.spy.expectedSequence = []
+ sequenceSpy.expectedSequence = []
mousePress(control, control.width / 2, control.height / 2, Qt.RightButton)
compare(control.pressed, false)
mouseRelease(control, control.width / 2, control.height / 2, Qt.RightButton)
compare(control.pressed, false)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
// double click
- control.spy.expectedSequence = [["pressedChanged", { "pressed": true }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": true }],
["downChanged", { "down": true }],
"pressed",
["pressedChanged", { "pressed": false }],
@@ -145,7 +147,7 @@ TestCase {
"released",
"clicked"]
mouseDoubleClickSequence(control, control.width / 2, control.height / 2, Qt.LeftButton)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
control.destroy()
}
@@ -157,8 +159,10 @@ TestCase {
control.forceActiveFocus()
verify(control.activeFocus)
+ var sequenceSpy = signalSequenceSpy.createObject(control, {target: control})
+
// click
- control.spy.expectedSequence = [["pressedChanged", { "pressed": true }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": true }],
["downChanged", { "down": true }],
"pressed",
["pressedChanged", { "pressed": false }],
@@ -166,15 +170,15 @@ TestCase {
"released",
"clicked"]
keyClick(Qt.Key_Space)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
// no change
- control.spy.expectedSequence = []
+ sequenceSpy.expectedSequence = []
var keys = [Qt.Key_Enter, Qt.Key_Return, Qt.Key_Escape, Qt.Key_Tab]
for (var i = 0; i < keys.length; ++i) {
- control.spy.reset()
+ sequenceSpy.reset()
keyClick(keys[i])
- verify(control.spy.success)
+ verify(sequenceSpy.success)
}
control.destroy()
@@ -197,54 +201,75 @@ TestCase {
var clickSpy = signalSpy.createObject(control, {target: control, signalName: "clicked"})
verify(clickSpy.valid)
+ var pressSpy = signalSpy.createObject(control, {target: control, signalName: "pressed"})
+ verify(pressSpy.valid)
+ var releaseSpy = signalSpy.createObject(control, {target: control, signalName: "released"})
+ verify(releaseSpy.valid)
- var repeatCount = 2
- var repeatSequence = [["pressedChanged", { "pressed": true }],
- ["downChanged", { "down": true }],
- "pressed",
- "released",
- "clicked",
- "pressed",
- "released",
- "clicked",
- "pressed"]
-
- // auto-repeat a couple of mouse clicks
- control.spy.expectedSequence = repeatSequence
+ // auto-repeat mouse click
mousePress(control)
compare(control.pressed, true)
- tryVerify(function() { return clickSpy.count >= repeatCount })
- if (clickSpy.count > repeatCount)
- warn("Expected auto-repeat count " + repeatCount + " exceeded (" + clickSpy.count + ") - busy CI?")
- else
- verify(control.spy.success)
-
- control.spy.expectedSequence = [["pressedChanged", { "pressed": false }],
- ["downChanged", { "down": false }],
- "released",
- "clicked"]
+ clickSpy.wait()
+ clickSpy.wait()
+ compare(pressSpy.count, clickSpy.count + 1)
+ compare(releaseSpy.count, clickSpy.count)
mouseRelease(control)
compare(control.pressed, false)
- verify(control.spy.success)
+ compare(clickSpy.count, pressSpy.count)
+ compare(releaseSpy.count, pressSpy.count)
- // auto-repeat a couple of key clicks
clickSpy.clear()
- control.spy.expectedSequence = repeatSequence
+ pressSpy.clear()
+ releaseSpy.clear()
+
+ // auto-repeat key click
keyPress(Qt.Key_Space)
compare(control.pressed, true)
- tryVerify(function() { return clickSpy.count >= repeatCount })
- if (clickSpy.count > repeatCount)
- warn("Expected auto-repeat count " + repeatCount + " exceeded (" + clickSpy.count + ") - busy CI?")
- else
- verify(control.spy.success)
-
- control.spy.expectedSequence = [["pressedChanged", { "pressed": false }],
- ["downChanged", { "down": false }],
- "released",
- "clicked"]
+ clickSpy.wait()
+ clickSpy.wait()
+ compare(pressSpy.count, clickSpy.count + 1)
+ compare(releaseSpy.count, clickSpy.count)
keyRelease(Qt.Key_Space)
compare(control.pressed, false)
- verify(control.spy.success)
+ compare(clickSpy.count, pressSpy.count)
+ compare(releaseSpy.count, pressSpy.count)
+
+ clickSpy.clear()
+ pressSpy.clear()
+ releaseSpy.clear()
+
+ mousePress(control)
+ compare(control.pressed, true)
+ clickSpy.wait()
+ compare(pressSpy.count, clickSpy.count + 1)
+ compare(releaseSpy.count, clickSpy.count)
+
+ // move inside during repeat -> continue repeat
+ mouseMove(control, control.width / 4, control.height / 4)
+ clickSpy.wait()
+ compare(pressSpy.count, clickSpy.count + 1)
+ compare(releaseSpy.count, clickSpy.count)
+
+ clickSpy.clear()
+ pressSpy.clear()
+ releaseSpy.clear()
+
+ // move outside during repeat -> stop repeat
+ mouseMove(control, -1, -1)
+ // NOTE: The following wait() is NOT a reliable way to test that the
+ // auto-repeat timer is not running, but there's no way dig into the
+ // private APIs from QML. If this test ever fails in the future, it
+ // indicates that the auto-repeat timer logic is broken.
+ wait(125)
+ compare(clickSpy.count, 0)
+ compare(pressSpy.count, 0)
+ compare(releaseSpy.count, 0)
+
+ mouseRelease(control, -1, -1)
+ compare(control.pressed, false)
+ compare(clickSpy.count, 0)
+ compare(pressSpy.count, 0)
+ compare(releaseSpy.count, 0)
control.destroy()
}
@@ -262,7 +287,9 @@ TestCase {
verify(control.hasOwnProperty("checkable"))
verify(!control.checkable)
- control.spy.expectedSequence = [["pressedChanged", { "pressed": true }],
+ var sequenceSpy = signalSequenceSpy.createObject(control, {target: control})
+
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": true }],
["downChanged", { "down": true }],
"pressed",
["pressedChanged", { "pressed": false }],
@@ -271,9 +298,9 @@ TestCase {
"clicked"]
mouseClick(control)
verify(!control.checked)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
- control.spy.expectedSequence = [["pressedChanged", { "pressed": true }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": true }],
["downChanged", { "down": true }],
"pressed",
["pressedChanged", { "pressed": false }],
@@ -284,9 +311,9 @@ TestCase {
control.checkable = true
mouseClick(control)
verify(control.checked)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
- control.spy.expectedSequence = [["pressedChanged", { "pressed": true }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": true }],
["downChanged", { "down": true }],
"pressed",
["pressedChanged", { "pressed": false }],
@@ -296,7 +323,7 @@ TestCase {
"clicked"]
mouseClick(control)
verify(!control.checked)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
control.destroy()
}
diff --git a/tests/auto/controls/data/tst_checkbox.qml b/tests/auto/controls/data/tst_checkbox.qml
index d1b590e4..b88e6deb 100644
--- a/tests/auto/controls/data/tst_checkbox.qml
+++ b/tests/auto/controls/data/tst_checkbox.qml
@@ -52,13 +52,13 @@ TestCase {
Component {
id: checkBox
- CheckBox {
- id: control
+ CheckBox { }
+ }
- property SignalSequenceSpy spy: SignalSequenceSpy {
- target: control
- signals: ["pressed", "released", "canceled", "clicked", "pressedChanged", "checkedChanged", "checkStateChanged"]
- }
+ Component {
+ id: signalSequenceSpy
+ SignalSequenceSpy {
+ signals: ["pressed", "released", "canceled", "clicked", "pressedChanged", "checkedChanged", "checkStateChanged"]
}
}
@@ -79,24 +79,26 @@ TestCase {
var control = checkBox.createObject(testCase)
verify(control)
- control.spy.expectedSequence = []
+ var sequenceSpy = signalSequenceSpy.createObject(control, {target: control})
+
+ sequenceSpy.expectedSequence = []
compare(control.checked, false)
compare(control.checkState, Qt.Unchecked)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
- control.spy.expectedSequence = [["checkStateChanged", { "checked": true, "checkState": Qt.Checked }],
+ sequenceSpy.expectedSequence = [["checkStateChanged", { "checked": true, "checkState": Qt.Checked }],
["checkedChanged", { "checked": true, "checkState": Qt.Checked }]]
control.checked = true
compare(control.checked, true)
compare(control.checkState, Qt.Checked)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
- control.spy.expectedSequence = [["checkStateChanged", { "checked": false, "checkState": Qt.Unchecked }],
+ sequenceSpy.expectedSequence = [["checkStateChanged", { "checked": false, "checkState": Qt.Unchecked }],
["checkedChanged", { "checked": false, "checkState": Qt.Unchecked }]]
control.checked = false
compare(control.checked, false)
compare(control.checkState, Qt.Unchecked)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
control.destroy()
}
@@ -105,24 +107,26 @@ TestCase {
var control = checkBox.createObject(testCase)
verify(control)
- control.spy.expectedSequence = []
+ var sequenceSpy = signalSequenceSpy.createObject(control, {target: control})
+
+ sequenceSpy.expectedSequence = []
compare(control.checked, false)
compare(control.checkState, Qt.Unchecked)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
- control.spy.expectedSequence = [["checkStateChanged", { "checked": true, "checkState": Qt.Checked }],
+ sequenceSpy.expectedSequence = [["checkStateChanged", { "checked": true, "checkState": Qt.Checked }],
["checkedChanged", { "checked": true, "checkState": Qt.Checked }]]
control.checkState = Qt.Checked
compare(control.checked, true)
compare(control.checkState, Qt.Checked)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
- control.spy.expectedSequence = [["checkStateChanged", { "checked": false, "checkState": Qt.Unchecked }],
+ sequenceSpy.expectedSequence = [["checkStateChanged", { "checked": false, "checkState": Qt.Unchecked }],
["checkedChanged", { "checked": false, "checkState": Qt.Unchecked }]]
control.checkState = Qt.Unchecked
compare(control.checked, false)
compare(control.checkState, Qt.Unchecked)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
control.destroy()
}
@@ -131,14 +135,16 @@ TestCase {
var control = checkBox.createObject(testCase)
verify(control)
+ var sequenceSpy = signalSequenceSpy.createObject(control, {target: control})
+
// check
- control.spy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": false, "checkState": Qt.Unchecked }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": false, "checkState": Qt.Unchecked }],
"pressed"]
mousePress(control, control.width / 2, control.height / 2, Qt.LeftButton)
compare(control.pressed, true)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
- control.spy.expectedSequence = [["pressedChanged", { "pressed": false, "checked": false, "checkState": Qt.Unchecked }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": false, "checked": false, "checkState": Qt.Unchecked }],
["checkStateChanged", { "pressed": false, "checked": true, "checkState": Qt.Checked }],
["checkedChanged", { "pressed": false, "checked": true, "checkState": Qt.Checked }],
"released",
@@ -147,15 +153,15 @@ TestCase {
compare(control.checked, true)
compare(control.checkState, Qt.Checked)
compare(control.pressed, false)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
// uncheck
- control.spy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": true, "checkState": Qt.Checked }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": true, "checkState": Qt.Checked }],
"pressed"]
mousePress(control, control.width / 2, control.height / 2, Qt.LeftButton)
compare(control.pressed, true)
- verify(control.spy.success)
- control.spy.expectedSequence = [["pressedChanged", { "pressed": false, "checked": true, "checkState": Qt.Checked }],
+ verify(sequenceSpy.success)
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": false, "checked": true, "checkState": Qt.Checked }],
["checkStateChanged", { "pressed": false, "checked": false, "checkState": Qt.Unchecked }],
["checkedChanged", { "pressed": false, "checked": false, "checkState": Qt.Unchecked }],
"released",
@@ -164,34 +170,34 @@ TestCase {
compare(control.checked, false)
compare(control.checkState, Qt.Unchecked)
compare(control.pressed, false)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
// release outside
- control.spy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": false, "checkState": Qt.Unchecked }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": false, "checkState": Qt.Unchecked }],
"pressed"]
mousePress(control, control.width / 2, control.height / 2, Qt.LeftButton)
compare(control.pressed, true)
- verify(control.spy.success)
- control.spy.expectedSequence = [["pressedChanged", { "pressed": false, "checked": false, "checkState": Qt.Unchecked }]]
+ verify(sequenceSpy.success)
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": false, "checked": false, "checkState": Qt.Unchecked }]]
mouseMove(control, control.width * 2, control.height * 2, 0, Qt.LeftButton)
compare(control.pressed, false)
- verify(control.spy.success)
- control.spy.expectedSequence = [["canceled", { "pressed": false, "checked": false, "checkState": Qt.Unchecked }]]
+ verify(sequenceSpy.success)
+ sequenceSpy.expectedSequence = [["canceled", { "pressed": false, "checked": false, "checkState": Qt.Unchecked }]]
mouseRelease(control, control.width * 2, control.height * 2, Qt.LeftButton)
compare(control.checked, false)
compare(control.checkState, Qt.Unchecked)
compare(control.pressed, false)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
// right button
- control.spy.expectedSequence = []
+ sequenceSpy.expectedSequence = []
mousePress(control, control.width / 2, control.height / 2, Qt.RightButton)
compare(control.pressed, false)
mouseRelease(control, control.width / 2, control.height / 2, Qt.RightButton)
compare(control.checked, false)
compare(control.checkState, Qt.Unchecked)
compare(control.pressed, false)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
control.destroy()
}
@@ -200,13 +206,15 @@ TestCase {
var control = checkBox.createObject(testCase)
verify(control)
- control.spy.expectedSequence = []
+ var sequenceSpy = signalSequenceSpy.createObject(control, {target: control})
+
+ sequenceSpy.expectedSequence = []
control.forceActiveFocus()
verify(control.activeFocus)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
// check
- control.spy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": false, "checkState": Qt.Unchecked }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": false, "checkState": Qt.Unchecked }],
"pressed",
["pressedChanged", { "pressed": false, "checked": false, "checkState": Qt.Unchecked }],
["checkStateChanged", { "pressed": false, "checked": true, "checkState": Qt.Checked }],
@@ -216,10 +224,10 @@ TestCase {
keyClick(Qt.Key_Space)
compare(control.checked, true)
compare(control.checkState, Qt.Checked)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
// uncheck
- control.spy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": true, "checkState": Qt.Checked }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": true, "checkState": Qt.Checked }],
"pressed",
["pressedChanged", { "pressed": false, "checked": true, "checkState": Qt.Checked }],
["checkStateChanged", { "pressed": false, "checked": false, "checkState": Qt.Unchecked }],
@@ -229,16 +237,16 @@ TestCase {
keyClick(Qt.Key_Space)
compare(control.checked, false)
compare(control.checkState, Qt.Unchecked)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
// no change
- control.spy.expectedSequence = []
+ sequenceSpy.expectedSequence = []
var keys = [Qt.Key_Enter, Qt.Key_Return, Qt.Key_Escape, Qt.Key_Tab]
for (var i = 0; i < keys.length; ++i) {
- control.spy.reset()
+ sequenceSpy.reset()
keyClick(keys[i])
compare(control.checked, false)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
}
control.destroy()
@@ -323,7 +331,9 @@ TestCase {
function test_tristate() {
var control = checkBox.createObject(testCase)
- control.spy.expectedSequence = []
+ var sequenceSpy = signalSequenceSpy.createObject(control, {target: control})
+
+ sequenceSpy.expectedSequence = []
control.forceActiveFocus()
verify(control.activeFocus)
@@ -331,16 +341,16 @@ TestCase {
compare(control.checked, false)
compare(control.checkState, Qt.Unchecked)
- control.spy.expectedSequence = [["checkStateChanged", { "pressed": false, "checked": true, "checkState": Qt.PartiallyChecked }],
+ sequenceSpy.expectedSequence = [["checkStateChanged", { "pressed": false, "checked": true, "checkState": Qt.PartiallyChecked }],
["checkedChanged", { "pressed": false, "checked": true, "checkState": Qt.PartiallyChecked }]]
control.checkState = Qt.PartiallyChecked
compare(control.tristate, true)
compare(control.checked, true)
compare(control.checkState, Qt.PartiallyChecked)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
// key: partial -> checked
- control.spy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": true, "checkState": Qt.PartiallyChecked }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": true, "checkState": Qt.PartiallyChecked }],
"pressed",
["pressedChanged", { "pressed": false, "checked": true, "checkState": Qt.PartiallyChecked }],
["checkStateChanged", { "pressed": false, "checked": true, "checkState": Qt.Checked }],
@@ -349,10 +359,10 @@ TestCase {
keyClick(Qt.Key_Space)
compare(control.checked, true)
compare(control.checkState, Qt.Checked)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
// key: checked -> unchecked
- control.spy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": true, "checkState": Qt.Checked }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": true, "checkState": Qt.Checked }],
"pressed",
["pressedChanged", { "pressed": false, "checked": true, "checkState": Qt.Checked }],
["checkStateChanged", { "pressed": false, "checked": false, "checkState": Qt.Unchecked }],
@@ -362,10 +372,10 @@ TestCase {
keyClick(Qt.Key_Space)
compare(control.checked, false)
compare(control.checkState, Qt.Unchecked)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
// key: unchecked -> partial
- control.spy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": false, "checkState": Qt.Unchecked }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": false, "checkState": Qt.Unchecked }],
"pressed",
["pressedChanged", { "pressed": false, "checked": false, "checkState": Qt.Unchecked }],
["checkStateChanged", { "pressed": false, "checked": true, "checkState": Qt.PartiallyChecked }],
@@ -375,10 +385,10 @@ TestCase {
keyClick(Qt.Key_Space)
compare(control.checked, true)
compare(control.checkState, Qt.PartiallyChecked)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
// mouse: partial -> checked
- control.spy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": true, "checkState": Qt.PartiallyChecked }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": true, "checkState": Qt.PartiallyChecked }],
"pressed",
["pressedChanged", { "pressed": false, "checked": true, "checkState": Qt.PartiallyChecked }],
["checkStateChanged", { "pressed": false, "checked": true, "checkState": Qt.Checked }],
@@ -387,10 +397,10 @@ TestCase {
mouseClick(control)
compare(control.checked, true)
compare(control.checkState, Qt.Checked)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
// mouse: checked -> unchecked
- control.spy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": true, "checkState": Qt.Checked }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": true, "checkState": Qt.Checked }],
"pressed",
["pressedChanged", { "pressed": false, "checked": true, "checkState": Qt.Checked }],
["checkStateChanged", { "pressed": false, "checked": false, "checkState": Qt.Unchecked }],
@@ -400,10 +410,10 @@ TestCase {
mouseClick(control)
compare(control.checked, false)
compare(control.checkState, Qt.Unchecked)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
// mouse: unchecked -> partial
- control.spy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": false, "checkState": Qt.Unchecked }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": false, "checkState": Qt.Unchecked }],
"pressed",
["pressedChanged", { "pressed": false, "checked": false, "checkState": Qt.Unchecked }],
["checkStateChanged", { "pressed": false, "checked": true, "checkState": Qt.PartiallyChecked }],
@@ -413,7 +423,7 @@ TestCase {
mouseClick(control)
compare(control.checked, true)
compare(control.checkState, Qt.PartiallyChecked)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
control.destroy()
}
diff --git a/tests/auto/controls/data/tst_radiobutton.qml b/tests/auto/controls/data/tst_radiobutton.qml
index 94e3a2cb..9b6a2ae5 100644
--- a/tests/auto/controls/data/tst_radiobutton.qml
+++ b/tests/auto/controls/data/tst_radiobutton.qml
@@ -52,13 +52,13 @@ TestCase {
Component {
id: radioButton
- RadioButton {
- id: control
+ RadioButton { }
+ }
- property SignalSequenceSpy spy: SignalSequenceSpy {
- target: control
- signals: ["pressed", "released", "canceled", "clicked", "pressedChanged", "checkedChanged"]
- }
+ Component {
+ id: signalSequenceSpy
+ SignalSequenceSpy {
+ signals: ["pressed", "released", "canceled", "clicked", "pressedChanged", "checkedChanged"]
}
}
@@ -79,19 +79,21 @@ TestCase {
var control = radioButton.createObject(testCase)
verify(control)
- control.spy.expectedSequence = [] // No change expected
+ var sequenceSpy = signalSequenceSpy.createObject(control, {target: control})
+
+ sequenceSpy.expectedSequence = [] // No change expected
compare(control.checked, false)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
- control.spy.expectedSequence = ["checkedChanged"]
+ sequenceSpy.expectedSequence = ["checkedChanged"]
control.checked = true
compare(control.checked, true)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
- control.spy.reset()
+ sequenceSpy.reset()
control.checked = false
compare(control.checked, false)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
control.destroy()
}
@@ -100,59 +102,61 @@ TestCase {
var control = radioButton.createObject(testCase)
verify(control)
+ var sequenceSpy = signalSequenceSpy.createObject(control, {target: control})
+
// check
- control.spy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": false }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": false }],
"pressed"]
mousePress(control, control.width / 2, control.height / 2, Qt.LeftButton)
compare(control.pressed, true)
- verify(control.spy.success)
- control.spy.expectedSequence = [["pressedChanged", { "pressed": false, "checked": false }],
+ verify(sequenceSpy.success)
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": false, "checked": false }],
["checkedChanged", { "pressed": false, "checked": true }],
"released",
"clicked"]
mouseRelease(control, control.width / 2, control.height / 2, Qt.LeftButton)
compare(control.checked, true)
compare(control.pressed, false)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
// attempt uncheck
- control.spy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": true }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": true }],
"pressed"]
mousePress(control, control.width / 2, control.height / 2, Qt.LeftButton)
compare(control.pressed, true)
- verify(control.spy.success)
- control.spy.expectedSequence = [["pressedChanged", { "pressed": false, "checked": true }],
+ verify(sequenceSpy.success)
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": false, "checked": true }],
"released",
"clicked"]
mouseRelease(control, control.width / 2, control.height / 2, Qt.LeftButton)
compare(control.checked, true)
compare(control.pressed, false)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
// release outside
- control.spy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": true }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": true }],
"pressed"]
mousePress(control, control.width / 2, control.height / 2, Qt.LeftButton)
compare(control.pressed, true)
- verify(control.spy.success)
- control.spy.expectedSequence = [["pressedChanged", { "pressed": false, "checked": true }]]
+ verify(sequenceSpy.success)
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": false, "checked": true }]]
mouseMove(control, control.width * 2, control.height * 2, 0, Qt.LeftButton)
compare(control.pressed, false)
- control.spy.expectedSequence = [["canceled", { "pressed": false, "checked": true }]]
+ sequenceSpy.expectedSequence = [["canceled", { "pressed": false, "checked": true }]]
mouseRelease(control, control.width * 2, control.height * 2, Qt.LeftButton)
compare(control.checked, true)
compare(control.pressed, false)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
// right button
- control.spy.expectedSequence = []
+ sequenceSpy.expectedSequence = []
mousePress(control, control.width / 2, control.height / 2, Qt.RightButton)
compare(control.pressed, false)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
mouseRelease(control, control.width / 2, control.height / 2, Qt.RightButton)
compare(control.checked, true)
compare(control.pressed, false)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
control.destroy()
}
@@ -161,13 +165,15 @@ TestCase {
var control = radioButton.createObject(testCase)
verify(control)
- control.spy.expectedSequence = []
+ var sequenceSpy = signalSequenceSpy.createObject(control, {target: control})
+
+ sequenceSpy.expectedSequence = []
control.forceActiveFocus()
verify(control.activeFocus)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
// check
- control.spy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": false }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": false }],
"pressed",
["pressedChanged", { "pressed": false, "checked": false }],
["checkedChanged", { "pressed": false, "checked": true }],
@@ -175,26 +181,26 @@ TestCase {
"clicked"]
keyClick(Qt.Key_Space)
compare(control.checked, true)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
// attempt uncheck
- control.spy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": true }],
+ sequenceSpy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": true }],
"pressed",
["pressedChanged", { "pressed": false, "checked": true }],
"released",
"clicked"]
keyClick(Qt.Key_Space)
compare(control.checked, true)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
// no change
- control.spy.expectedSequence = []
+ sequenceSpy.expectedSequence = []
var keys = [Qt.Key_Enter, Qt.Key_Return, Qt.Key_Escape, Qt.Key_Tab]
for (var i = 0; i < keys.length; ++i) {
- control.spy.reset()
+ sequenceSpy.reset()
keyClick(keys[i])
compare(control.checked, true)
- verify(control.spy.success)
+ verify(sequenceSpy.success)
}
control.destroy()
diff --git a/tests/auto/controls/data/tst_spinbox.qml b/tests/auto/controls/data/tst_spinbox.qml
index 30db246f..de44415d 100644
--- a/tests/auto/controls/data/tst_spinbox.qml
+++ b/tests/auto/controls/data/tst_spinbox.qml
@@ -520,4 +520,66 @@ TestCase {
control.destroy()
}
+
+ function test_autoRepeat() {
+ var control = spinBox.createObject(testCase)
+ verify(control)
+
+ compare(control.value, 0)
+
+ var valueSpy = signalSpy.createObject(control, {target: control, signalName: "valueChanged"})
+ verify(valueSpy.valid)
+
+ var countBefore = 0
+
+ // repeat up
+ mousePress(control.up.indicator)
+ verify(control.up.pressed)
+ compare(valueSpy.count, 0)
+ valueSpy.wait()
+ valueSpy.wait()
+ countBefore = valueSpy.count
+ mouseRelease(control.up.indicator)
+ verify(!control.up.pressed)
+ compare(valueSpy.count, countBefore)
+
+ valueSpy.clear()
+
+ // repeat down
+ mousePress(control.down.indicator)
+ verify(control.down.pressed)
+ compare(valueSpy.count, 0)
+ valueSpy.wait()
+ valueSpy.wait()
+ countBefore = valueSpy.count
+ mouseRelease(control.down.indicator)
+ verify(!control.down.pressed)
+ compare(valueSpy.count, countBefore)
+
+ mousePress(control.up.indicator)
+ verify(control.up.pressed)
+ valueSpy.wait()
+
+ // move inside during repeat -> continue repeat (QTBUG-57085)
+ mouseMove(control.up.indicator, control.up.indicator.width / 4, control.up.indicator.height / 4)
+ verify(control.up.pressed)
+ valueSpy.wait()
+
+ valueSpy.clear()
+
+ // move outside during repeat -> stop repeat
+ mouseMove(control.up.indicator, -1, -1)
+ verify(!control.up.pressed)
+ // NOTE: The following wait() is NOT a reliable way to test that the
+ // auto-repeat timer is not running, but there's no way dig into the
+ // private APIs from QML. If this test ever fails in the future, it
+ // indicates that the auto-repeat timer logic is broken.
+ wait(125)
+ compare(valueSpy.count, 0)
+
+ mouseRelease(control.up.indicator, -1, -1)
+ verify(!control.up.pressed)
+
+ control.destroy()
+ }
}