diff options
Diffstat (limited to 'tests/auto/quickcontrols/controls/data/tst_spinbox.qml')
-rw-r--r-- | tests/auto/quickcontrols/controls/data/tst_spinbox.qml | 585 |
1 files changed, 523 insertions, 62 deletions
diff --git a/tests/auto/quickcontrols/controls/data/tst_spinbox.qml b/tests/auto/quickcontrols/controls/data/tst_spinbox.qml index df30ef4beb..ba27aeed77 100644 --- a/tests/auto/quickcontrols/controls/data/tst_spinbox.qml +++ b/tests/auto/quickcontrols/controls/data/tst_spinbox.qml @@ -1,10 +1,11 @@ // Copyright (C) 2017 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only import QtQuick import QtTest import QtQuick.Controls import QtQuick.Window +import QtQuick.Layouts TestCase { id: testCase @@ -29,10 +30,12 @@ TestCase { MouseArea { } } - function test_defaults() { + function init() { failOnWarning(/.?/) + } - var control = createTemporaryObject(spinBox, testCase) + function test_defaults() { + let control = createTemporaryObject(spinBox, testCase) verify(control) compare(control.from, 0) @@ -47,7 +50,7 @@ TestCase { } function test_value() { - var control = createTemporaryObject(spinBox, testCase) + let control = createTemporaryObject(spinBox, testCase) verify(control) compare(control.value, 0) @@ -62,7 +65,7 @@ TestCase { } function test_range() { - var control = createTemporaryObject(spinBox, testCase, {from: 0, to: 100, value: 50}) + let control = createTemporaryObject(spinBox, testCase, {from: 0, to: 100, value: 50}) verify(control) compare(control.from, 0) @@ -132,7 +135,7 @@ TestCase { } function test_inverted() { - var control = createTemporaryObject(spinBox, testCase, {from: 100, to: -100}) + let control = createTemporaryObject(spinBox, testCase, {from: 100, to: -100}) verify(control) compare(control.from, 100) @@ -169,16 +172,16 @@ TestCase { } function test_mouse(data) { - var control = createTemporaryObject(spinBox, testCase, {value: data.value}) + let control = createTemporaryObject(spinBox, testCase, {value: data.value}) verify(control) - var button = control[data.button] + let button = control[data.button] verify(button) - var pressedSpy = signalSpy.createObject(control, {target: button, signalName: "pressedChanged"}) + let pressedSpy = signalSpy.createObject(control, {target: button, signalName: "pressedChanged"}) verify(pressedSpy.valid) - var valueModifiedSpy = signalSpy.createObject(control, {target: control, signalName: "valueModified"}) + let valueModifiedSpy = signalSpy.createObject(control, {target: control, signalName: "valueModified"}) verify(valueModifiedSpy.valid) mousePress(button.indicator) @@ -209,27 +212,27 @@ TestCase { } function test_keys(data) { - var control = createTemporaryObject(spinBox, testCase, data.properties) + let control = createTemporaryObject(spinBox, testCase, data.properties) verify(control) - var upPressedCount = 0 - var downPressedCount = 0 - var valueModifiedCount = 0 + let upPressedCount = 0 + let downPressedCount = 0 + let valueModifiedCount = 0 - var upPressedSpy = signalSpy.createObject(control, {target: control.up, signalName: "pressedChanged"}) + let upPressedSpy = signalSpy.createObject(control, {target: control.up, signalName: "pressedChanged"}) verify(upPressedSpy.valid) - var downPressedSpy = signalSpy.createObject(control, {target: control.down, signalName: "pressedChanged"}) + let downPressedSpy = signalSpy.createObject(control, {target: control.down, signalName: "pressedChanged"}) verify(downPressedSpy.valid) - var valueModifiedSpy = signalSpy.createObject(control, {target: control, signalName: "valueModified"}) + let valueModifiedSpy = signalSpy.createObject(control, {target: control, signalName: "valueModified"}) verify(valueModifiedSpy.valid) control.forceActiveFocus() verify(control.activeFocus) - for (var u = 0; u < data.upSteps.length; ++u) { - var wasUpEnabled = control.wrap || control.value < control.to + for (let u = 0; u < data.upSteps.length; ++u) { + let wasUpEnabled = control.wrap || control.value < control.to keyPress(Qt.Key_Up) compare(control.up.pressed, wasUpEnabled) compare(control.down.pressed, false) @@ -251,8 +254,8 @@ TestCase { compare(valueModifiedSpy.count, valueModifiedCount) } - for (var d = 0; d < data.downSteps.length; ++d) { - var wasDownEnabled = control.wrap || control.value > control.from + for (let d = 0; d < data.downSteps.length; ++d) { + let wasDownEnabled = control.wrap || control.value > control.from keyPress(Qt.Key_Down) compare(control.down.pressed, wasDownEnabled) compare(control.up.pressed, false) @@ -276,26 +279,26 @@ TestCase { } function test_locale() { - var control = createTemporaryObject(spinBox, testCase) + let control = createTemporaryObject(spinBox, testCase) verify(control) control.locale = Qt.locale("ar_EG") // Arabic, Egypt - var numbers = ["٠", "١", "٢", "٣", "٤", "٥", "٦", "٧", "٨", "٩"] - for (var i = 0; i < 10; ++i) { + let numbers = ["٠", "١", "٢", "٣", "٤", "٥", "٦", "٧", "٨", "٩"] + for (let i = 0; i < 10; ++i) { control.value = i compare(control.contentItem.text, numbers[i]) } } function test_baseline() { - var control = createTemporaryObject(spinBox, testCase) + let control = createTemporaryObject(spinBox, testCase) verify(control) compare(control.baselineOffset, control.contentItem.y + control.contentItem.baselineOffset) } function test_focus() { - var control = createTemporaryObject(spinBox, testCase, {from: 10, to: 1000, value: 100, focus: true}) + let control = createTemporaryObject(spinBox, testCase, {from: 10, to: 1000, value: 100, focus: true}) verify(control) control.forceActiveFocus() @@ -314,41 +317,465 @@ TestCase { } function test_initialFocus() { - var window = testCase.Window.window + let window = testCase.Window.window verify(window) compare(window.activeFocusItem, window.contentItem) - var control = createTemporaryObject(spinBox, testCase, { editable: true, focus: true }) + let control = createTemporaryObject(spinBox, testCase, { editable: true, focus: true }) verify(control) tryCompare(control.contentItem, "activeFocus", true) } function test_editable() { - var control = createTemporaryObject(spinBox, testCase) + let control = createTemporaryObject(spinBox, testCase) verify(control) - var valueModifiedSpy = signalSpy.createObject(control, {target: control, signalName: "valueModified"}) + let valueModifiedSpy = signalSpy.createObject(control, {target: control, signalName: "valueModified"}) verify(valueModifiedSpy.valid) + let displayTextChangedSpy = signalSpy.createObject(control, {target: control, signalName: "displayTextChanged"}) + verify(displayTextChangedSpy.valid) + + + control.from = 0 + control.to = 10 + compare(control.from, 0) + compare(control.to, 10) + control.contentItem.forceActiveFocus() compare(control.contentItem.activeFocus, true) compare(control.editable, false) control.contentItem.selectAll() + compare(control.displayText, "0") keyClick(Qt.Key_5) keyClick(Qt.Key_Return) + compare(control.displayText, "0") compare(control.value, 0) compare(valueModifiedSpy.count, 0) control.editable = true compare(control.editable, true) control.contentItem.selectAll() + keyClick(Qt.Key_Backspace) keyClick(Qt.Key_5) + compare(control.displayText, "5") keyClick(Qt.Key_Return) compare(control.value, 5) compare(valueModifiedSpy.count, 1) + compare(displayTextChangedSpy.count, 2) + + keyClick(Qt.Key_0) + compare(control.displayText, "50") + compare(control.value, 5) + compare(valueModifiedSpy.count, 1) + compare(displayTextChangedSpy.count, 3) + keyClick(Qt.Key_Return) //will set the value to maximum = 10 + compare(control.displayText, "10") + compare(control.value, 10) + compare(valueModifiedSpy.count, 2) // 0->5->10 + compare(displayTextChangedSpy.count, 4) //0->5->50->10 } + + function test_editable_liveUpdate() { + let control = createTemporaryObject(spinBox, testCase) + verify(control) + + let valueModifiedSpy = signalSpy.createObject(control, {target: control, signalName: "valueModified"}) + verify(valueModifiedSpy.valid) + + let valueChangedSpy = signalSpy.createObject(control, {target: control, signalName: "valueChanged"}) + verify(valueChangedSpy.valid) + + let displayTextChangedSpy = signalSpy.createObject(control, {target: control, signalName: "displayTextChanged"}) + verify(displayTextChangedSpy.valid) + + control.contentItem.forceActiveFocus() + compare(control.contentItem.activeFocus, true) + + control.editable = true + control.live = true + control.from = -10 + control.to = 10 + compare(control.editable, true) + compare(control.live, true) + compare(control.from, -10) + compare(control.to, 10) + + control.contentItem.selectAll() + keyClick(Qt.Key_5) + compare(control.displayText, "5") + compare(control.value, 5) + compare(valueModifiedSpy.count, 0) + compare(valueChangedSpy.count, 1) + compare(displayTextChangedSpy.count, 1) + + keyClick(Qt.Key_0) + compare(control.displayText, "50") // do not set the value + compare(control.value, 5) // if it is out of bounds + compare(valueModifiedSpy.count, 0) + compare(valueChangedSpy.count, 1) + compare(displayTextChangedSpy.count, 2) + + + keyClick(Qt.Key_Backspace) + compare(control.displayText, "5") + compare(control.value, 5) + compare(valueModifiedSpy.count, 0) + compare(valueChangedSpy.count, 1) + compare(displayTextChangedSpy.count, 3) + + keyClick(Qt.Key_Backspace) + compare(control.displayText, "0") + compare(control.value, 0) + compare(valueModifiedSpy.count, 0) + compare(valueChangedSpy.count, 2) + compare(displayTextChangedSpy.count, 4) + + keyClick(Qt.Key_Backspace) + compare(control.displayText, "") + compare(control.value, 0) + compare(valueModifiedSpy.count, 0) + compare(valueChangedSpy.count, 2) + compare(displayTextChangedSpy.count, 5) + } + + Component { + id: doubleBox + SpinBox { + id: doubleSpinBox + locale: Qt.locale("en_US") + + property int decimals: 2 + property double realValue: value / 10**decimals + validator: DoubleValidator { + bottom: Math.min(doubleSpinBox.from, doubleSpinBox.to) + top: Math.max(doubleSpinBox.from, doubleSpinBox.to) + decimals: doubleSpinBox.decimals + notation: DoubleValidator.StandardNotation + locale: doubleSpinBox.locale.name + } + + textFromValue: function(value, locale) { + let res = Number(value / 10**doubleSpinBox.decimals).toLocaleString(locale, 'f', doubleSpinBox.decimals) + return res + } + + valueFromText: function(text, locale) { + let res = Math.round(Number.fromLocaleString(locale, text) * 10**doubleSpinBox.decimals) + return res + } + + onDisplayTextChanged: { + displayTextChangedWithArg(doubleSpinBox.displayText); + } + + signal displayTextChangedWithArg(text: string) + } + } + + function test_editable_doubleSpinBox() { + let control = createTemporaryObject(doubleBox, testCase) + verify(control) + + control.editable = true + control.from = 0 + control.to = 1000000 + control.value = 500 + control.stepSize = 1 + + compare(control.editable, true) + compare(control.from, 0) + compare(control.to, 1000000) + compare(control.value, 500) + compare(control.realValue, 5.00) + compare(control.displayText, "5.00") + + let valueModifiedSpy = signalSpy.createObject(control, {target: control, signalName: "valueModified"}) + verify(valueModifiedSpy.valid) + + let valueChangedSpy = signalSpy.createObject(control, {target: control, signalName: "valueChanged"}) + verify(valueChangedSpy.valid) + + let displayTextChangedSpy = signalSpy.createObject(control, {target: control, signalName: "displayTextChangedWithArg"}) + verify(displayTextChangedSpy.valid) + + control.contentItem.forceActiveFocus() + compare(control.contentItem.activeFocus, true) + + control.contentItem.selectAll() + compare(displayTextChangedSpy.count, 0) + keyClick(Qt.Key_4) + compare(control.value, 500) + compare(control.realValue, 5.00) + compare(control.displayText, "4") + compare(valueModifiedSpy.count, 0) + compare(valueChangedSpy.count, 0) + compare(displayTextChangedSpy.signalArguments[0][0], "4") + compare(displayTextChangedSpy.count, 1) + + keyClick(Qt.Key_Enter) + compare(control.value, 400) + compare(control.realValue, 4.00) + compare(control.displayText, "4.00") + compare(valueModifiedSpy.count, 1) + compare(valueChangedSpy.count, 1) + compare(displayTextChangedSpy.signalArguments[1][0], "4.00") + compare(displayTextChangedSpy.count, 2) + + keyClick(Qt.Key_Backspace) + compare(control.value, 400) + compare(control.realValue, 4.00) + compare(control.displayText, "4.0") + compare(valueModifiedSpy.count, 1) + compare(valueChangedSpy.count, 1) + compare(displayTextChangedSpy.signalArguments[2][0], "4.0") + compare(displayTextChangedSpy.count, 3) + + keyClick(Qt.Key_Backspace) + compare(control.value, 400) + compare(control.realValue, 4.00) + compare(control.displayText, "4") //The fixup removes the trailing "." + compare(valueModifiedSpy.count, 1) + compare(valueChangedSpy.count, 1) + compare(displayTextChangedSpy.signalArguments[3][0], "4") + compare(displayTextChangedSpy.count, 4) + + keyClick(Qt.Key_0) + compare(control.value, 400) + compare(control.realValue, 4.00) + compare(control.displayText, "40") + compare(valueModifiedSpy.count, 1) + compare(valueChangedSpy.count, 1) + compare(displayTextChangedSpy.signalArguments[4][0], "40") + compare(displayTextChangedSpy.count, 5) + + keyClick(Qt.Key_0) + compare(control.value, 400) + compare(control.realValue, 4.00) + compare(control.displayText, "400") + compare(valueModifiedSpy.count, 1) + compare(valueChangedSpy.count, 1) + compare(displayTextChangedSpy.signalArguments[5][0], "400") + compare(displayTextChangedSpy.count, 6) + + keyClick(Qt.Key_0) + compare(control.value, 400) + compare(control.realValue, 4.00) + compare(control.displayText, "4,000") + compare(valueModifiedSpy.count, 1) + compare(valueChangedSpy.count, 1) + compare(displayTextChangedSpy.signalArguments[6][0], "4,000") + compare(displayTextChangedSpy.count, 7) + + keyClick(Qt.Key_Enter) + compare(control.value, 400000) + compare(control.realValue, 4000.00) + compare(control.displayText, "4,000.00") + compare(valueModifiedSpy.count, 2) + compare(valueChangedSpy.count, 2) + compare(displayTextChangedSpy.signalArguments[7][0], "4,000.00") + compare(displayTextChangedSpy.count, 8) + + // Changing to and testing live mode + control.live = true + compare(control.live, true) + + keyClick(Qt.Key_Backspace) + compare(control.value, 400000) + compare(control.realValue, 4000.00) + compare(control.displayText, "4,000.0") + compare(valueModifiedSpy.count, 2) + compare(valueChangedSpy.count, 2) + compare(displayTextChangedSpy.signalArguments[8][0], "4,000.0") + compare(displayTextChangedSpy.count, 9) + + keyClick(Qt.Key_Backspace) + compare(control.value, 400000) + compare(control.realValue, 4000.00) + compare(control.displayText, "4,000") //The fixup removes the trailing "." + compare(valueModifiedSpy.count, 2) + compare(valueChangedSpy.count, 2) + compare(displayTextChangedSpy.signalArguments[9][0], "4,000") + compare(displayTextChangedSpy.count, 10) + + keyClick(Qt.Key_Backspace) + compare(control.displayText, "400.00") + compare(control.value, 40000) + compare(control.realValue, 400.00) + compare(valueModifiedSpy.count, 2) + compare(valueChangedSpy.count, 3) + compare(displayTextChangedSpy.signalArguments[10][0], "400.00") + compare(displayTextChangedSpy.count, 11) + + // It is a bit unfortunate that we need 3 Backspace to go from + // 400 to 4000 on live editing mode. Maybe think about a fix in + // the future to make it more user friendly + keyClick(Qt.Key_Backspace) + keyClick(Qt.Key_Backspace) + keyClick(Qt.Key_Backspace) + compare(control.displayText, "40.00") + compare(control.value, 4000) + compare(control.realValue, 40.00) + compare(valueModifiedSpy.count, 2) + compare(valueChangedSpy.count, 4) + compare(displayTextChangedSpy.signalArguments[11][0], "400.0") + compare(displayTextChangedSpy.signalArguments[12][0], "400") + compare(displayTextChangedSpy.signalArguments[13][0], "40.00") + compare(displayTextChangedSpy.count, 14) + + keyClick(Qt.Key_Backspace) + keyClick(Qt.Key_Backspace) + keyClick(Qt.Key_Backspace) + compare(control.displayText, "4.00") + compare(control.value, 400) + compare(control.realValue, 4.00) + compare(valueModifiedSpy.count, 2) + compare(valueChangedSpy.count, 5) + compare(displayTextChangedSpy.signalArguments[14][0], "40.0") + compare(displayTextChangedSpy.signalArguments[15][0], "40") + compare(displayTextChangedSpy.signalArguments[16][0], "4.00") + compare(displayTextChangedSpy.count, 17) + + keyClick(Qt.Key_Backspace) + keyClick(Qt.Key_Backspace) + keyClick(Qt.Key_1) + compare(control.displayText, "41.00") + compare(control.value, 4100) + compare(control.realValue, 41.00) + compare(valueModifiedSpy.count, 2) + compare(valueChangedSpy.count, 6) + compare(displayTextChangedSpy.signalArguments[17][0], "4.0") + compare(displayTextChangedSpy.signalArguments[18][0], "4") + compare(displayTextChangedSpy.signalArguments[19][0], "41.00") + compare(displayTextChangedSpy.count, 20) + } + + function test_groupSeparatorHandling_data() { + return [ + { tag: "en_EN" }, + { tag: "de_DE" } + ] + } + + function test_groupSeparatorHandling(data) { + let control = createTemporaryObject(spinBox, testCase) + verify(control) + + let testLoc = Qt.locale(data.tag) + control.locale = testLoc + + control.contentItem.forceActiveFocus() + compare(control.contentItem.activeFocus, true) + + control.editable = true + control.live = true + control.from = 0 + control.to = 10*1000*1000 + compare(control.editable, true) + compare(control.live, true) + compare(control.from, 0) + compare(control.to, 10*1000*1000) + + control.contentItem.selectAll() + keyClick(Qt.Key_5) + compare(control.displayText, "5") + compare(control.value, 5) + + let i = 50 + for (; i < 1e7; i*=10) { + keyClick(Qt.Key_0) + compare(control.displayText, testLoc.toString(i)) + compare(control.value, i) + } + + i /= 100; + for (; i > 10; i/=10) { + keyClick(Qt.Key_Backspace) + compare(control.displayText, testLoc.toString(i)) + compare(control.value, i) + } + } + + function test_qtbug64151() { + // Slightly modified example from QTBUG-64151. We use displayText + // instead of contentItem.text as a workaround. + let control = createTemporaryObject(spinBox, testCase) + verify(control) + + control.locale = Qt.locale("en_EN") + + control.from = 0 + control.to = 2000 + control.value = 2000 + control.editable = true + + compare(control.displayText, "2,000") + + control.contentItem.forceActiveFocus() + compare(control.contentItem.activeFocus, true) + keyClick(Qt.Key_Backspace) + keyClick(Qt.Key_Return) + + compare(control.displayText, "200") + compare(control.valueFromText(control.contentItem.text, control.locale), 200) + compare(control.value, 200) + + control.contentItem.forceActiveFocus() + keyClick(Qt.Key_0) + keyClick(Qt.Key_Return) + compare(control.displayText, "2,000") + } + + Component { + id: spinBoxAndAction + RowLayout { + id: layout + property alias spinbox: theSpinbox + property alias button: theButton + SpinBox { + id: theSpinbox + from: 0 + to: 200 + value: 200 + editable: true + live: true + } + + Button { + id: theButton + property int value: 0 + action: Action { + text: "&Do something" + shortcut: "Return" + onTriggered: { + theButton.value = theSpinbox.value; + } + } + } + } + } + + function test_qtbug103205() { + + let control = createTemporaryObject(spinBoxAndAction, testCase) + verify(control) + verify(control.spinbox) + + compare(control.spinbox.displayText, "200") + control.forceActiveFocus() + control.spinbox.forceActiveFocus() + control.spinbox.contentItem.forceActiveFocus() + compare(control.spinbox.contentItem.activeFocus, true) + keyClick(Qt.Key_Backspace) + keyClick(Qt.Key_Return) + + compare(control.spinbox.displayText, "20") + compare(control.button.value, 20) + } + + function test_wheel_data() { return [ { tag: "1", properties: { from: 1, to: 10, value: 1, stepSize: 1 }, upSteps: [2,3,4], downSteps: [3,2,1,1] }, @@ -361,24 +788,24 @@ TestCase { } function test_wheel(data) { - var ma = createTemporaryObject(mouseArea, testCase, {width: 100, height: 100}) + let ma = createTemporaryObject(mouseArea, testCase, {width: 100, height: 100}) verify(ma) data.properties.wheelEnabled = true - var control = spinBox.createObject(ma, data.properties) + let control = spinBox.createObject(ma, data.properties) verify(control) - var valueModifiedCount = 0 - var valueModifiedSpy = signalSpy.createObject(control, {target: control, signalName: "valueModified"}) + let valueModifiedCount = 0 + let valueModifiedSpy = signalSpy.createObject(control, {target: control, signalName: "valueModified"}) verify(valueModifiedSpy.valid) - var delta = 120 + let delta = 120 - var spy = signalSpy.createObject(ma, {target: ma, signalName: "wheel"}) + let spy = signalSpy.createObject(ma, {target: ma, signalName: "wheel"}) verify(spy.valid) - for (var u = 0; u < data.upSteps.length; ++u) { - var wasUpEnabled = control.wrap || control.value < control.to + for (let u = 0; u < data.upSteps.length; ++u) { + let wasUpEnabled = control.wrap || control.value < control.to mouseWheel(control, control.width / 2, control.height / 2, delta, delta) if (wasUpEnabled) ++valueModifiedCount @@ -387,8 +814,8 @@ TestCase { compare(control.value, data.upSteps[u]) } - for (var d = 0; d < data.downSteps.length; ++d) { - var wasDownEnabled = control.wrap || control.value > control.from + for (let d = 0; d < data.downSteps.length; ++d) { + let wasDownEnabled = control.wrap || control.value > control.from mouseWheel(control, control.width / 2, control.height / 2, -delta, -delta) if (wasDownEnabled) ++valueModifiedCount @@ -408,7 +835,7 @@ TestCase { } function test_initiallyDisabledIndicators(data) { - var control = createTemporaryObject(spinBox, testCase, { from: data.from, value: data.value, to: data.to }) + let control = createTemporaryObject(spinBox, testCase, { from: data.from, value: data.value, to: data.to }) verify(control) compare(control.up.indicator.enabled, data.upEnabled) @@ -427,10 +854,10 @@ TestCase { } function test_hover(data) { - var control = createTemporaryObject(spinBox, testCase, {hoverEnabled: data.hoverEnabled, value: data.value}) + let control = createTemporaryObject(spinBox, testCase, {hoverEnabled: data.hoverEnabled, value: data.value}) verify(control) - var button = control[data.button] + let button = control[data.button] compare(control.hovered, false) compare(button.hovered, false) @@ -451,16 +878,16 @@ TestCase { // QTBUG-74688 function test_hoverWhilePressed(data) { - var control = createTemporaryObject(spinBox, testCase, { hoverEnabled: true, value: 50 }) + let control = createTemporaryObject(spinBox, testCase, { hoverEnabled: true, value: 50 }) verify(control) - var button = control[data.tag] + let button = control[data.tag] compare(control.hovered, false) compare(button.hovered, false) // Hover over the indicator. It should be hovered. - var buttonXCenter = button.indicator.x + button.indicator.width / 2 - var buttonYCenter = button.indicator.y + button.indicator.height / 2 + let buttonXCenter = button.indicator.x + button.indicator.width / 2 + let buttonYCenter = button.indicator.y + button.indicator.height / 2 mouseMove(control, buttonXCenter, buttonYCenter) compare(button.hovered, true) @@ -483,13 +910,13 @@ TestCase { } function test_valueFromText(data) { - var control = createTemporaryObject(spinBox, testCase, {editable: data.editable}) + let control = createTemporaryObject(spinBox, testCase, {editable: data.editable}) verify(control) control.forceActiveFocus() verify(control.activeFocus) - var valueFromTextCalls = 0 + let valueFromTextCalls = 0 control.valueFromText = function(text, locale) { ++valueFromTextCalls return Number.fromLocaleString(locale, text); @@ -506,21 +933,21 @@ TestCase { } function test_callDefaultValueFromText() { - var control = createTemporaryObject(spinBox, testCase) + let control = createTemporaryObject(spinBox, testCase) verify(control) compare(control.valueFromText("123", control.locale), 123) } function test_autoRepeat() { - var control = createTemporaryObject(spinBox, testCase) + let control = createTemporaryObject(spinBox, testCase) verify(control) compare(control.value, 0) - var valueSpy = signalSpy.createObject(control, {target: control, signalName: "valueChanged"}) + let valueSpy = signalSpy.createObject(control, {target: control, signalName: "valueChanged"}) verify(valueSpy.valid) - var countBefore = 0 + let countBefore = 0 // repeat up mousePress(control.up.indicator) @@ -572,7 +999,7 @@ TestCase { } function test_initialValue() { - var control = createTemporaryObject(spinBox, testCase, {from: 1000, to: 10000}) + let control = createTemporaryObject(spinBox, testCase, {from: 1000, to: 10000}) verify(control) compare(control.value, 1000) } @@ -594,7 +1021,7 @@ TestCase { } valueFromText: function(text) { - for (var i = 0; i < items.length; ++i) { + for (let i = 0; i < items.length; ++i) { if (items[i].toLowerCase().indexOf(text.toLowerCase()) === 0) return i } @@ -611,10 +1038,10 @@ TestCase { } function test_textFromValue(data) { - var control = createTemporaryObject(data.component, testCase) + let control = createTemporaryObject(data.component, testCase) verify(control) - for (var i = 0; i < data.values.length; ++i) { + for (let i = 0; i < data.values.length; ++i) { control.value = data.values[i] compare(control.value, data.values[i]) compare(control.displayText, data.displayTexts[i]) @@ -622,7 +1049,7 @@ TestCase { } function test_callDefaultTextFromValue() { - var control = createTemporaryObject(spinBox, testCase) + let control = createTemporaryObject(spinBox, testCase) verify(control) compare(control.textFromValue(123, control.locale), "123") } @@ -638,7 +1065,7 @@ TestCase { } function test_indicatorOverridden() { - var control = createTemporaryObject(overriddenSpinBox, testCase) + let control = createTemporaryObject(overriddenSpinBox, testCase) verify(control) compare(control.up.indicator.s, "this is the one"); } @@ -659,9 +1086,8 @@ TestCase { } function test_indicatorOverriddenWithIds() { - var control = createTemporaryObject(overriddenSpinBoxWithIds, testCase) + let control = createTemporaryObject(overriddenSpinBoxWithIds, testCase) verify(control) - // TODO: Use failOnWarning() here when it has been implemented // Specifying an id will result in both the default indicator implementations // and the custom ones being created, but it shouldn't result in any TypeErrors. compare(control.up.indicator.s, "up"); @@ -670,7 +1096,7 @@ TestCase { function test_valueEnterFromOutsideRange() { // Check that changing from 2 to 99 goes to 98 then changing to 99 puts it back to 98 - var control = createTemporaryObject(spinBox, testCase, {from: 2, to: 98, value: 2, editable: true}) + let control = createTemporaryObject(spinBox, testCase, {from: 2, to: 98, value: 2, editable: true}) verify(control) control.forceActiveFocus() @@ -692,4 +1118,39 @@ TestCase { compare(control.displayText, "98") compare(control.contentItem.text, "98") } + + function test_pressedBeforeIncrementOrDecrement(data) { + let control = createTemporaryObject(spinBox, testCase, {from: -8, to: 8, value: 0}) + verify(control) + + control.forceActiveFocus() + verify(control.activeFocus) + + // up, down + control.stepSize = Qt.binding(() => control.up.pressed ? 2 : 1) + keyClick(Qt.Key_Up) // +2 + compare(control.value, 2) + mouseClick(control.up.indicator) // +2 + compare(control.value, 4) + keyClick(Qt.Key_Down) // -1 + compare(control.value, 3) + mouseClick(control.down.indicator) // -1 + compare(control.value, 2) + + // down, up + control.stepSize = Qt.binding(() => control.down.pressed ? 2 : 1) + keyClick(Qt.Key_Down) // -2 + compare(control.value, 0) + mouseClick(control.down.indicator) // -2 + compare(control.value, -2) + keyClick(Qt.Key_Up) // +1 + compare(control.value, -1) + mouseClick(control.up.indicator) // +1 + compare(control.value, 0) + } + + function test_nullValidator() { + let control = createTemporaryObject(spinBox, testCase, { validator: null }) + verify(control) + } } |