aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/controls/data/tst_spinbox.qml
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/controls/data/tst_spinbox.qml')
-rw-r--r--tests/auto/controls/data/tst_spinbox.qml295
1 files changed, 261 insertions, 34 deletions
diff --git a/tests/auto/controls/data/tst_spinbox.qml b/tests/auto/controls/data/tst_spinbox.qml
index cdea8b66..f2d8d3ef 100644
--- a/tests/auto/controls/data/tst_spinbox.qml
+++ b/tests/auto/controls/data/tst_spinbox.qml
@@ -40,7 +40,7 @@
import QtQuick 2.2
import QtTest 1.0
-import Qt.labs.controls 1.0
+import QtQuick.Controls 2.0
TestCase {
id: testCase
@@ -50,14 +50,9 @@ TestCase {
when: windowShown
name: "SpinBox"
- SignalSpy{
- id: upPressedSpy
- signalName: "pressedChanged"
- }
-
- SignalSpy{
- id: downPressedSpy
- signalName: "pressedChanged"
+ Component {
+ id: signalSpy
+ SignalSpy { }
}
Component {
@@ -65,20 +60,6 @@ TestCase {
SpinBox { }
}
- function init() {
- verify(!upPressedSpy.target)
- compare(upPressedSpy.count, 0)
- verify(!downPressedSpy.target)
- compare(downPressedSpy.count, 0)
- }
-
- function cleanup() {
- upPressedSpy.target = null
- upPressedSpy.clear()
- downPressedSpy.target = null
- downPressedSpy.clear()
- }
-
function test_defaults() {
var control = spinBox.createObject(testCase)
verify(control)
@@ -87,8 +68,11 @@ TestCase {
compare(control.to, 99)
compare(control.value, 0)
compare(control.stepSize, 1)
+ compare(control.editable, false)
compare(control.up.pressed, false)
+ compare(control.up.indicator.enabled, true)
compare(control.down.pressed, false)
+ compare(control.down.indicator.enabled, false)
control.destroy()
}
@@ -117,23 +101,40 @@ TestCase {
compare(control.from, 0)
compare(control.to, 100)
compare(control.value, 50)
+ compare(control.up.indicator.enabled, true)
+ compare(control.down.indicator.enabled, true)
control.value = 1000
compare(control.value, 100)
+ compare(control.up.indicator.enabled, false)
+ compare(control.down.indicator.enabled, true)
control.value = -1
compare(control.value, 0)
+ compare(control.up.indicator.enabled, true)
+ compare(control.down.indicator.enabled, false)
control.from = 25
compare(control.from, 25)
compare(control.value, 25)
+ compare(control.up.indicator.enabled, true)
+ compare(control.down.indicator.enabled, false)
control.to = 75
compare(control.to, 75)
compare(control.value, 25)
+ compare(control.up.indicator.enabled, true)
+ compare(control.down.indicator.enabled, false)
control.value = 50
compare(control.value, 50)
+ compare(control.up.indicator.enabled, true)
+ compare(control.down.indicator.enabled, true)
+
+ control.to = 40;
+ compare(control.value, 40)
+ compare(control.up.indicator.enabled, false)
+ compare(control.down.indicator.enabled, true)
control.destroy()
}
@@ -145,15 +146,23 @@ TestCase {
compare(control.from, 100)
compare(control.to, -100)
compare(control.value, 0)
+ compare(control.up.indicator.enabled, true)
+ compare(control.down.indicator.enabled, true)
control.value = 200
compare(control.value, 100)
+ compare(control.up.indicator.enabled, true)
+ compare(control.down.indicator.enabled, false)
control.value = -200
compare(control.value, -100)
+ compare(control.up.indicator.enabled, false)
+ compare(control.down.indicator.enabled, true)
control.value = 0
compare(control.value, 0)
+ compare(control.up.indicator.enabled, true)
+ compare(control.down.indicator.enabled, true)
control.destroy()
}
@@ -162,9 +171,12 @@ TestCase {
var control = spinBox.createObject(testCase, {stepSize: 50})
verify(control)
- upPressedSpy.target = control.up
+ var upPressedSpy = signalSpy.createObject(control, {target: control.up, signalName: "pressedChanged"})
verify(upPressedSpy.valid)
+ var downPressedSpy = signalSpy.createObject(control, {target: control.down, signalName: "pressedChanged"})
+ verify(downPressedSpy.valid)
+
mousePress(control.up.indicator)
compare(upPressedSpy.count, 1)
compare(control.up.pressed, true)
@@ -179,9 +191,25 @@ TestCase {
compare(control.down.pressed, false)
compare(control.value, 50)
- downPressedSpy.target = control.down
- verify(downPressedSpy.valid)
+ // Disable the up button and try again.
+ control.value = control.to
+ compare(control.up.indicator.enabled, false)
+ mousePress(control.up.indicator)
+ compare(upPressedSpy.count, 2)
+ compare(control.up.pressed, false)
+ compare(downPressedSpy.count, 0)
+ compare(control.down.pressed, false)
+ compare(control.value, control.to)
+
+ mouseRelease(control.up.indicator)
+ compare(upPressedSpy.count, 2)
+ compare(control.up.pressed, false)
+ compare(downPressedSpy.count, 0)
+ compare(control.down.pressed, false)
+ compare(control.value, control.to)
+
+ control.value = 50;
mousePress(control.down.indicator)
compare(downPressedSpy.count, 1)
compare(control.down.pressed, true)
@@ -196,6 +224,24 @@ TestCase {
compare(control.up.pressed, false)
compare(control.value, 0)
+ // Disable the down button and try again.
+ control.value = control.from
+ compare(control.down.indicator.enabled, false)
+
+ mousePress(control.down.indicator)
+ compare(downPressedSpy.count, 2)
+ compare(control.down.pressed, false)
+ compare(upPressedSpy.count, 2)
+ compare(control.up.pressed, false)
+ compare(control.value, control.from)
+
+ mouseRelease(control.down.indicator)
+ compare(downPressedSpy.count, 2)
+ compare(control.down.pressed, false)
+ compare(upPressedSpy.count, 2)
+ compare(control.up.pressed, false)
+ compare(control.value, control.from)
+
control.destroy()
}
@@ -206,10 +252,10 @@ TestCase {
var upPressedCount = 0
var downPressedCount = 0
- upPressedSpy.target = control.up
+ var upPressedSpy = signalSpy.createObject(control, {target: control.up, signalName: "pressedChanged"})
verify(upPressedSpy.valid)
- downPressedSpy.target = control.down
+ var downPressedSpy = signalSpy.createObject(control, {target: control.down, signalName: "pressedChanged"})
verify(downPressedSpy.valid)
control.forceActiveFocus()
@@ -252,32 +298,42 @@ TestCase {
compare(control.stepSize, 25)
for (var d2 = 1; d2 <= 10; ++d2) {
+ var wasDownEnabled = control.value > control.from
keyPress(Qt.Key_Down)
- compare(control.down.pressed, true)
+ compare(control.down.pressed, wasDownEnabled)
compare(control.up.pressed, false)
- compare(downPressedSpy.count, ++downPressedCount)
+ if (wasDownEnabled)
+ ++downPressedCount
+ compare(downPressedSpy.count, downPressedCount)
compare(control.value, Math.max(0, 50 - d2 * 25))
keyRelease(Qt.Key_Down)
compare(control.down.pressed, false)
compare(control.up.pressed, false)
- compare(downPressedSpy.count, ++downPressedCount)
+ if (wasDownEnabled)
+ ++downPressedCount
+ compare(downPressedSpy.count, downPressedCount)
}
compare(control.value, 0)
for (var i2 = 1; i2 <= 10; ++i2) {
+ var wasUpEnabled = control.value < control.to
keyPress(Qt.Key_Up)
- compare(control.up.pressed, true)
+ compare(control.up.pressed, wasUpEnabled)
compare(control.down.pressed, false)
- compare(upPressedSpy.count, ++upPressedCount)
+ if (wasUpEnabled)
+ ++upPressedCount
+ compare(upPressedSpy.count, upPressedCount)
compare(control.value, Math.min(99, i2 * 25))
keyRelease(Qt.Key_Up)
compare(control.down.pressed, false)
compare(control.up.pressed, false)
- compare(upPressedSpy.count, ++upPressedCount)
+ if (wasUpEnabled)
+ ++upPressedCount
+ compare(upPressedSpy.count, upPressedCount)
}
compare(control.value, 99)
@@ -326,4 +382,175 @@ TestCase {
control.destroy()
}
+
+ function test_editable() {
+ var control = spinBox.createObject(testCase)
+ verify(control)
+
+ control.contentItem.forceActiveFocus()
+ compare(control.contentItem.activeFocus, true)
+
+ compare(control.editable, false)
+ control.contentItem.selectAll()
+ keyClick(Qt.Key_5)
+ keyClick(Qt.Key_Return)
+ compare(control.value, 0)
+
+ control.editable = true
+ compare(control.editable, true)
+ control.contentItem.selectAll()
+ keyClick(Qt.Key_5)
+ keyClick(Qt.Key_Return)
+ compare(control.value, 5)
+
+ control.destroy()
+ }
+
+ function test_wheel(data) {
+ var control = spinBox.createObject(testCase, {wheelEnabled: true})
+ verify(control)
+
+ var delta = 120
+
+ compare(control.value, 0)
+
+ mouseWheel(control, control.width / 2, control.height / 2, delta, delta)
+ compare(control.value, 1)
+
+ control.stepSize = 2
+
+ mouseWheel(control, control.width / 2, control.height / 2, delta, delta)
+ compare(control.value, 3)
+
+ control.stepSize = 10
+
+ mouseWheel(control, control.width / 2, control.height / 2, -delta, -delta)
+ compare(control.value, 0)
+
+ control.stepSize = 5
+
+ mouseWheel(control, control.width / 2, control.height / 2, delta, delta)
+ compare(control.value, 5)
+
+ mouseWheel(control, control.width / 2, control.height / 2, 0.5 * delta, 0.5 * delta)
+ compare(control.value, 8)
+
+ mouseWheel(control, control.width / 2, control.height / 2, -delta, -delta)
+ compare(control.value, 3)
+
+ control.destroy()
+ }
+
+ function test_initiallyDisabledIndicators_data() {
+ return [
+ { tag: "down disabled", from: 0, value: 0, to: 99, upEnabled: true, downEnabled: false },
+ { tag: "up disabled", from: 0, value: 99, to: 99, upEnabled: false, downEnabled: true },
+ { tag: "inverted, down disabled", from: 99, value: 99, to: 0, upEnabled: true, downEnabled: false },
+ { tag: "inverted, up disabled", from: 99, value: 0, to: 0, upEnabled: false, downEnabled: true }
+ ]
+ }
+
+ function test_initiallyDisabledIndicators(data) {
+ var control = spinBox.createObject(testCase, { from: data.from, value: data.value, to: data.to })
+ verify(control)
+
+ compare(control.up.indicator.enabled, data.upEnabled)
+ compare(control.down.indicator.enabled, data.downEnabled)
+
+ control.destroy()
+ }
+
+ function test_valueFromText_data() {
+ return [
+ { tag: "editable", editable: true },
+ { tag: "non-editable", editable: false }
+ ]
+ }
+
+ function test_valueFromText(data) {
+ var control = spinBox.createObject(testCase, {editable: data.editable})
+ verify(control)
+
+ control.forceActiveFocus()
+ verify(control.activeFocus)
+
+ var valueFromTextCalls = 0
+ control.valueFromText = function(text, locale) {
+ ++valueFromTextCalls
+ return Number.fromLocaleString(locale, text);
+ }
+
+ keyClick(Qt.Key_Enter)
+ compare(valueFromTextCalls, data.editable ? 1 : 0)
+
+ keyClick(Qt.Key_Return)
+ compare(valueFromTextCalls, data.editable ? 2 : 0)
+
+ control.focus = false
+ compare(valueFromTextCalls, data.editable ? 3 : 0)
+
+ 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()
+ }
}