aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/controls/data
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/controls/data')
-rw-r--r--tests/auto/controls/data/tst_container.qml85
-rw-r--r--tests/auto/controls/data/tst_control.qml29
-rw-r--r--tests/auto/controls/data/tst_popup.qml74
-rw-r--r--tests/auto/controls/data/tst_roundbutton.qml79
-rw-r--r--tests/auto/controls/data/tst_scrollindicator.qml34
-rw-r--r--tests/auto/controls/data/tst_stackview.qml54
-rw-r--r--tests/auto/controls/data/tst_switch.qml149
-rw-r--r--tests/auto/controls/data/tst_textfield.qml19
8 files changed, 405 insertions, 118 deletions
diff --git a/tests/auto/controls/data/tst_container.qml b/tests/auto/controls/data/tst_container.qml
new file mode 100644
index 00000000..d1ff54e0
--- /dev/null
+++ b/tests/auto/controls/data/tst_container.qml
@@ -0,0 +1,85 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.2
+import QtTest 1.0
+import QtQuick.Controls 2.0
+import QtQuick.Templates 2.0 as T
+
+TestCase {
+ id: testCase
+ width: 400
+ height: 400
+ visible: true
+ when: windowShown
+ name: "Container"
+
+ Component {
+ id: container
+ Container { }
+ }
+
+ Component {
+ id: rectangle
+ Rectangle { }
+ }
+
+ function test_implicitSize() {
+ var control = container.createObject(testCase)
+ verify(control)
+
+ compare(control.implicitWidth, 0)
+ compare(control.implicitHeight, 0)
+
+ control.contentItem = rectangle.createObject(control, {implicitWidth: 10, implicitHeight: 20})
+ compare(control.implicitWidth, 10)
+ compare(control.implicitHeight, 20)
+
+ control.background = rectangle.createObject(control, {implicitWidth: 20, implicitHeight: 30})
+ compare(control.implicitWidth, 20)
+ compare(control.implicitHeight, 30)
+
+ control.padding = 100
+ compare(control.implicitWidth, 210)
+ compare(control.implicitHeight, 220)
+
+ control.destroy()
+ }
+}
diff --git a/tests/auto/controls/data/tst_control.qml b/tests/auto/controls/data/tst_control.qml
index fc839493..0061440b 100644
--- a/tests/auto/controls/data/tst_control.qml
+++ b/tests/auto/controls/data/tst_control.qml
@@ -53,7 +53,12 @@ TestCase {
Component {
id: component
- T.Control { }
+ Control { }
+ }
+
+ Component {
+ id: rectangle
+ Rectangle { }
}
Component {
@@ -877,4 +882,26 @@ TestCase {
control.destroy()
}
+
+ function test_implicitSize() {
+ var control = component.createObject(testCase)
+ verify(control)
+
+ compare(control.implicitWidth, 0)
+ compare(control.implicitHeight, 0)
+
+ control.contentItem = rectangle.createObject(control, {implicitWidth: 10, implicitHeight: 20})
+ compare(control.implicitWidth, 10)
+ compare(control.implicitHeight, 20)
+
+ control.background = rectangle.createObject(control, {implicitWidth: 20, implicitHeight: 30})
+ compare(control.implicitWidth, 20)
+ compare(control.implicitHeight, 30)
+
+ control.padding = 100
+ compare(control.implicitWidth, 210)
+ compare(control.implicitHeight, 220)
+
+ control.destroy()
+ }
}
diff --git a/tests/auto/controls/data/tst_popup.qml b/tests/auto/controls/data/tst_popup.qml
index 759d6988..a86e800e 100644
--- a/tests/auto/controls/data/tst_popup.qml
+++ b/tests/auto/controls/data/tst_popup.qml
@@ -1006,18 +1006,13 @@ TestCase {
ApplicationWindow {
property alias firstDrawer: firstDrawer
property alias secondDrawer: secondDrawer
- property alias upperDrawer: upperDrawer
property alias modalPopup: modalPopup
property alias modelessPopup: modelessPopup
property alias plainPopup: plainPopup
property alias modalPopupWithoutDim: modalPopupWithoutDim
visible: true
Drawer {
- z: 5
- id: upperDrawer
- }
- Drawer {
- z: 1
+ z: 0
id: firstDrawer
}
Drawer {
@@ -1073,52 +1068,41 @@ TestCase {
window.requestActivate()
tryCompare(window, "active", true)
- var countBefore = window.overlay.children.length
- compare(countBefore, 6) // 3 drawers + 3 overlays
+ compare(window.overlay.children.length, 0)
var firstOverlay = findOverlay(window, window.firstDrawer)
+ verify(!firstOverlay)
+ window.firstDrawer.open()
+ compare(window.overlay.children.length, 2) // 1 drawer + 1 overlay
+ firstOverlay = findOverlay(window, window.firstDrawer)
verify(firstOverlay)
- compare(firstOverlay.opacity, 0.0)
compare(firstOverlay.z, window.firstDrawer.z)
compare(indexOf(window.overlay.children, firstOverlay),
indexOf(window.overlay.children, window.firstDrawer.contentItem.parent) - 1)
+ tryCompare(firstOverlay, "opacity", 1.0)
var secondOverlay = findOverlay(window, window.secondDrawer)
+ verify(!secondOverlay)
+ window.secondDrawer.open()
+ compare(window.overlay.children.length, 4) // 2 drawers + 2 overlays
+ secondOverlay = findOverlay(window, window.secondDrawer)
verify(secondOverlay)
- compare(secondOverlay.opacity, 0.0)
compare(secondOverlay.z, window.secondDrawer.z)
compare(indexOf(window.overlay.children, secondOverlay),
indexOf(window.overlay.children, window.secondDrawer.contentItem.parent) - 1)
+ tryCompare(secondOverlay, "opacity", 1.0)
- var upperOverlay = findOverlay(window, window.upperDrawer)
- verify(upperOverlay)
- compare(upperOverlay.opacity, 0.0)
- compare(upperOverlay.z, window.upperDrawer.z)
- compare(indexOf(window.overlay.children, upperOverlay),
- indexOf(window.overlay.children, window.upperDrawer.contentItem.parent) - 1)
-
- window.firstDrawer.open()
- compare(firstOverlay.z, 1.0)
- tryCompare(firstOverlay, "opacity", 1.0)
window.firstDrawer.close()
- tryCompare(firstOverlay, "opacity", 0.0)
tryCompare(window.firstDrawer, "visible", false)
+ firstOverlay = findOverlay(window, window.firstDrawer)
+ verify(!firstOverlay)
+ compare(window.overlay.children.length, 2) // 1 drawer + 1 overlay
- window.secondDrawer.open()
- compare(secondOverlay.z, 1.0)
- tryCompare(secondOverlay, "opacity", 1.0)
window.secondDrawer.close()
- tryCompare(secondOverlay, "opacity", 0.0)
tryCompare(window.secondDrawer, "visible", false)
-
- window.firstDrawer.open()
- window.secondDrawer.open()
- tryCompare(firstOverlay, "opacity", 1.0)
- tryCompare(secondOverlay, "opacity", 1.0)
- window.firstDrawer.close()
- window.secondDrawer.close()
- tryCompare(firstOverlay, "opacity", 0.0)
- tryCompare(secondOverlay, "opacity", 0.0)
+ secondOverlay = findOverlay(window, window.secondDrawer)
+ verify(!secondOverlay)
+ compare(window.overlay.children.length, 0)
var modalOverlay = findOverlay(window, window.modalPopup)
verify(!modalOverlay)
@@ -1128,7 +1112,7 @@ TestCase {
compare(modalOverlay.z, window.modalPopup.z)
compare(window.modalPopup.visible, true)
tryCompare(modalOverlay, "opacity", 1.0)
- compare(window.overlay.children.length, countBefore + 2) // 1 popup + 1 overlay
+ compare(window.overlay.children.length, 2) // 1 popup + 1 overlay
var modelessOverlay = findOverlay(window, window.modelessPopup)
verify(!modelessOverlay)
@@ -1138,13 +1122,13 @@ TestCase {
compare(modelessOverlay.z, window.modelessPopup.z)
compare(window.modelessPopup.visible, true)
tryCompare(modelessOverlay, "opacity", 1.0)
- compare(window.overlay.children.length, countBefore + 4) // 2 popups + 2 overlays
+ compare(window.overlay.children.length, 4) // 2 popups + 2 overlays
window.modelessPopup.close()
tryCompare(window.modelessPopup, "visible", false)
modelessOverlay = findOverlay(window, window.modelessPopup)
verify(!modelessOverlay)
- compare(window.overlay.children.length, countBefore + 2) // 1 popup + 1 overlay
+ compare(window.overlay.children.length, 2) // 1 popup + 1 overlay
compare(window.modalPopup.visible, true)
compare(modalOverlay.opacity, 1.0)
@@ -1153,23 +1137,29 @@ TestCase {
tryCompare(window.modalPopup, "visible", false)
modalOverlay = findOverlay(window, window.modalPopup)
verify(!modalOverlay)
- compare(window.overlay.children.length, countBefore)
+ compare(window.overlay.children.length, 0)
window.plainPopup.open()
tryCompare(window.plainPopup, "visible", true)
- compare(window.overlay.children.length, countBefore + 1) // only popup added, no overlays involved
+ compare(window.overlay.children.length, 1) // only popup added, no overlays involved
+
+ window.plainPopup.modal = true
+ compare(window.overlay.children.length, 2) // overlay added
window.plainPopup.close()
tryCompare(window.plainPopup, "visible", false)
- compare(window.overlay.children.length, countBefore) // only popup removed, no overlays involved
+ compare(window.overlay.children.length, 0) // popup + overlay removed
window.modalPopupWithoutDim.open()
tryCompare(window.modalPopupWithoutDim, "visible", true)
- compare(window.overlay.children.length, countBefore + 1) // only popup added, no overlays involved
+ compare(window.overlay.children.length, 1) // only popup added, no overlays involved
+
+ window.modalPopupWithoutDim.dim = true
+ compare(window.overlay.children.length, 2) // overlay added
window.modalPopupWithoutDim.close()
tryCompare(window.modalPopupWithoutDim, "visible", false)
- compare(window.overlay.children.length, countBefore) // only popup added, no overlays involved
+ compare(window.overlay.children.length, 0) // popup + overlay removed
window.destroy()
}
diff --git a/tests/auto/controls/data/tst_roundbutton.qml b/tests/auto/controls/data/tst_roundbutton.qml
new file mode 100644
index 00000000..aa956776
--- /dev/null
+++ b/tests/auto/controls/data/tst_roundbutton.qml
@@ -0,0 +1,79 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.2
+import QtTest 1.0
+import QtQuick.Controls 2.1
+
+TestCase {
+ id: testCase
+ width: 200
+ height: 200
+ visible: true
+ when: windowShown
+ name: "RoundButton"
+
+ Component {
+ id: roundButton
+ RoundButton { }
+ }
+
+ function test_radius() {
+ var control = roundButton.createObject(testCase);
+ verify(control);
+
+ var implicitRadius = control.radius;
+ compare(implicitRadius, Math.min(control.width, control.height) / 2);
+
+ control.radius = 10;
+ compare(control.radius, 10);
+
+ control.radius = undefined;
+ compare(control.radius, implicitRadius);
+
+ control.width = -1;
+ compare(control.radius, 0);
+
+ control.width = 10;
+ compare(control.radius, 5);
+
+ control.destroy();
+ }
+}
diff --git a/tests/auto/controls/data/tst_scrollindicator.qml b/tests/auto/controls/data/tst_scrollindicator.qml
index 00730bf4..551247f6 100644
--- a/tests/auto/controls/data/tst_scrollindicator.qml
+++ b/tests/auto/controls/data/tst_scrollindicator.qml
@@ -157,4 +157,38 @@ TestCase {
ignoreWarning(Qt.resolvedUrl("tst_scrollindicator.qml") + ":45:1: QML TestCase: ScrollIndicator must be attached to a Flickable")
testCase.ScrollIndicator.vertical = null
}
+
+ function test_overshoot() {
+ var container = flickable.createObject(testCase)
+ verify(container)
+ waitForRendering(container)
+
+ var vertical = scrollIndicator.createObject(container, {size: 0.5})
+ container.ScrollIndicator.vertical = vertical
+
+ var horizontal = scrollIndicator.createObject(container, {size: 0.5})
+ container.ScrollIndicator.horizontal = horizontal
+
+ // negative vertical overshoot (pos < 0)
+ vertical.position = -0.1
+ compare(vertical.contentItem.y, vertical.topPadding)
+ compare(vertical.contentItem.height, 0.4 * vertical.availableHeight)
+
+ // positive vertical overshoot (pos + size > 1)
+ vertical.position = 0.8
+ compare(vertical.contentItem.y, vertical.topPadding + 0.8 * vertical.availableHeight)
+ compare(vertical.contentItem.height, 0.2 * vertical.availableHeight)
+
+ // negative horizontal overshoot (pos < 0)
+ horizontal.position = -0.1
+ compare(horizontal.contentItem.x, horizontal.leftPadding)
+ compare(horizontal.contentItem.width, 0.4 * horizontal.availableWidth)
+
+ // positive horizontal overshoot (pos + size > 1)
+ horizontal.position = 0.8
+ compare(horizontal.contentItem.x, horizontal.leftPadding + 0.8 * horizontal.availableWidth)
+ compare(horizontal.contentItem.width, 0.2 * horizontal.availableWidth)
+
+ container.destroy()
+ }
}
diff --git a/tests/auto/controls/data/tst_stackview.qml b/tests/auto/controls/data/tst_stackview.qml
index 2de0fb98..4de8bed0 100644
--- a/tests/auto/controls/data/tst_stackview.qml
+++ b/tests/auto/controls/data/tst_stackview.qml
@@ -680,6 +680,60 @@ TestCase {
}
Component {
+ id: removeComponent
+
+ Item {
+ objectName: "removeItem"
+ StackView.onRemoved: destroy()
+ }
+ }
+
+ function test_destroyOnRemoved() {
+ var control = stackView.createObject(testCase, { initialItem: component })
+ verify(control)
+
+ var item = removeComponent.createObject(control)
+ verify(item)
+
+ var removedSpy = signalSpy.createObject(control, { target: item.StackView, signalName: "removed" })
+ verify(removedSpy)
+ verify(removedSpy.valid)
+
+ var destructionSpy = signalSpy.createObject(control, { target: item.Component, signalName: "destruction" })
+ verify(destructionSpy)
+ verify(destructionSpy.valid)
+
+ // push-pop
+ control.push(item, StackView.Immediate)
+ compare(control.currentItem, item)
+ control.pop(StackView.Transition)
+ item = null
+ tryCompare(removedSpy, "count", 1)
+ tryCompare(destructionSpy, "count", 1)
+ compare(control.busy, false)
+
+ item = removeComponent.createObject(control)
+ verify(item)
+
+ removedSpy.target = item.StackView
+ verify(removedSpy.valid)
+
+ destructionSpy.target = item.Component
+ verify(destructionSpy.valid)
+
+ // push-replace
+ control.push(item, StackView.Immediate)
+ compare(control.currentItem, item)
+ control.replace(component, StackView.Transition)
+ item = null
+ tryCompare(removedSpy, "count", 2)
+ tryCompare(destructionSpy, "count", 2)
+ compare(control.busy, false)
+
+ control.destroy()
+ }
+
+ Component {
id: attachedItem
Item {
property int index: StackView.index
diff --git a/tests/auto/controls/data/tst_switch.qml b/tests/auto/controls/data/tst_switch.qml
index b75e2713..6c145fc1 100644
--- a/tests/auto/controls/data/tst_switch.qml
+++ b/tests/auto/controls/data/tst_switch.qml
@@ -50,42 +50,16 @@ TestCase {
when: windowShown
name: "Switch"
- SignalSpy {
- id: checkedSpy
- signalName: "checkedChanged"
- }
-
- SignalSpy {
- id: pressedSpy
- signalName: "pressedChanged"
- }
-
- SignalSpy {
- id: clickedSpy
- signalName: "clicked"
- }
-
Component {
id: swtch
Switch { }
}
- function init() {
- verify(!checkedSpy.target)
- verify(!pressedSpy.target)
- verify(!clickedSpy.target)
- compare(checkedSpy.count, 0)
- compare(pressedSpy.count, 0)
- compare(clickedSpy.count, 0)
- }
-
- function cleanup() {
- checkedSpy.target = null
- pressedSpy.target = null
- clickedSpy.target = null
- checkedSpy.clear()
- pressedSpy.clear()
- clickedSpy.clear()
+ Component {
+ id: signalSequenceSpy
+ SignalSequenceSpy {
+ signals: ["pressed", "released", "canceled", "clicked", "pressedChanged", "checkedChanged"]
+ }
}
function test_text() {
@@ -105,19 +79,18 @@ TestCase {
var control = swtch.createObject(testCase)
verify(control)
- checkedSpy.target = control
- verify(checkedSpy.valid)
-
compare(control.checked, false)
- compare(checkedSpy.count, 0)
+ var spy = signalSequenceSpy.createObject(control, {target: control})
+ spy.expectedSequence = [["checkedChanged", { "checked": true }]]
control.checked = true
compare(control.checked, true)
- compare(checkedSpy.count, 1)
+ verify(spy.success)
+ spy.expectedSequence = [["checkedChanged", { "checked": false }]]
control.checked = false
compare(control.checked, false)
- compare(checkedSpy.count, 2)
+ verify(spy.success)
control.destroy()
}
@@ -126,71 +99,80 @@ TestCase {
var control = swtch.createObject(testCase)
verify(control)
- checkedSpy.target = control
- pressedSpy.target = control
- clickedSpy.target = control
- verify(checkedSpy.valid)
- verify(pressedSpy.valid)
- verify(clickedSpy.valid)
-
// check
+ var spy = signalSequenceSpy.createObject(control, {target: control})
+ spy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": false }],
+ "pressed"]
mousePress(control, control.width / 2, control.height / 2, Qt.LeftButton)
- compare(pressedSpy.count, 1)
compare(control.pressed, true)
+ verify(spy.success)
+ spy.expectedSequence = [["pressedChanged", { "pressed": false, "checked": false }],
+ ["checkedChanged", { "pressed": false, "checked": true }],
+ "released",
+ "clicked"]
mouseRelease(control, control.width / 2, control.height / 2, Qt.LeftButton)
- compare(clickedSpy.count, 1)
- compare(checkedSpy.count, 1)
- compare(pressedSpy.count, 2)
compare(control.checked, true)
compare(control.pressed, false)
+ verify(spy.success)
// uncheck
+ spy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": true }],
+ "pressed"]
mousePress(control, control.width / 2, control.height / 2, Qt.LeftButton)
- compare(pressedSpy.count, 3)
compare(control.pressed, true)
+ verify(spy.success)
+ spy.expectedSequence = [["pressedChanged", { "pressed": false, "checked": true }],
+ ["checkedChanged", { "pressed": false, "checked": false }],
+ "released",
+ "clicked"]
mouseRelease(control, control.width / 2, control.height / 2, Qt.LeftButton)
- compare(clickedSpy.count, 2)
- compare(checkedSpy.count, 2)
- compare(pressedSpy.count, 4)
compare(control.checked, false)
compare(control.pressed, false)
+ verify(spy.success)
// release on the right
+ spy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": false }],
+ "pressed"]
mousePress(control, control.width / 2, control.height / 2, Qt.LeftButton)
- compare(pressedSpy.count, 5)
compare(control.pressed, true)
+ verify(spy.success)
mouseMove(control, control.width * 2, control.height / 2, 0, Qt.LeftButton)
compare(control.pressed, true)
+ spy.expectedSequence = [["pressedChanged", { "pressed": false, "checked": false }],
+ ["checkedChanged", { "pressed": false, "checked": true }],
+ "released",
+ "clicked"]
mouseRelease(control, control.width * 2, control.height / 2, Qt.LeftButton)
- compare(clickedSpy.count, 3)
- compare(checkedSpy.count, 3)
- compare(pressedSpy.count, 6)
compare(control.checked, true)
compare(control.pressed, false)
+ verify(spy.success)
// release on the left
+ spy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": true }],
+ "pressed"]
mousePress(control, control.width / 2, control.height / 2, Qt.LeftButton)
- compare(pressedSpy.count, 7)
compare(control.pressed, true)
+ verify(spy.success)
mouseMove(control, -control.width, control.height / 2, 0, Qt.LeftButton)
compare(control.pressed, true)
+ spy.expectedSequence = [["pressedChanged", { "pressed": false, "checked": true }],
+ ["checkedChanged", { "pressed": false, "checked": false }],
+ "released",
+ "clicked"]
mouseRelease(control, -control.width, control.height / 2, Qt.LeftButton)
- compare(clickedSpy.count, 4)
- compare(checkedSpy.count, 4)
- compare(pressedSpy.count, 8)
compare(control.checked, false)
compare(control.pressed, false)
+ verify(spy.success)
// right button
+ spy.expectedSequence = []
mousePress(control, control.width / 2, control.height / 2, Qt.RightButton)
- compare(pressedSpy.count, 8)
compare(control.pressed, false)
+ verify(spy.success)
mouseRelease(control, control.width / 2, control.height / 2, Qt.RightButton)
- compare(clickedSpy.count, 4)
- compare(checkedSpy.count, 4)
- compare(pressedSpy.count, 8)
compare(control.checked, false)
compare(control.pressed, false)
+ verify(spy.success)
control.destroy()
}
@@ -199,33 +181,39 @@ TestCase {
var control = swtch.createObject(testCase)
verify(control)
- checkedSpy.target = control
- clickedSpy.target = control
- verify(checkedSpy.valid)
- verify(clickedSpy.valid)
-
control.forceActiveFocus()
verify(control.activeFocus)
// check
+ var spy = signalSequenceSpy.createObject(control, {target: control})
+ spy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": false }],
+ "pressed",
+ ["pressedChanged", { "pressed": false, "checked": false }],
+ ["checkedChanged", { "pressed": false, "checked": true }],
+ "released",
+ "clicked"]
keyClick(Qt.Key_Space)
- compare(clickedSpy.count, 1)
- compare(checkedSpy.count, 1)
compare(control.checked, true)
+ verify(spy.success)
// uncheck
+ spy.expectedSequence = [["pressedChanged", { "pressed": true, "checked": true }],
+ "pressed",
+ ["pressedChanged", { "pressed": false, "checked": true }],
+ ["checkedChanged", { "pressed": false, "checked": false }],
+ "released",
+ "clicked"]
keyClick(Qt.Key_Space)
- compare(clickedSpy.count, 2)
- compare(checkedSpy.count, 2)
compare(control.checked, false)
+ verify(spy.success)
// no change
+ spy.expectedSequence = []
var keys = [Qt.Key_Enter, Qt.Key_Return, Qt.Key_Escape, Qt.Key_Tab]
for (var i = 0; i < keys.length; ++i) {
keyClick(keys[i])
- compare(clickedSpy.count, 2)
- compare(checkedSpy.count, 2)
compare(control.checked, false)
+ verify(spy.success)
}
control.destroy()
@@ -263,4 +251,15 @@ TestCase {
compare(control.baselineOffset, control.contentItem.y + control.contentItem.baselineOffset)
control.destroy()
}
+
+ function test_focus() {
+ var control = swtch.createObject(testCase)
+ verify(control)
+
+ verify(!control.activeFocus)
+ mouseClick(control.indicator)
+ verify(control.activeFocus)
+
+ control.destroy()
+ }
}
diff --git a/tests/auto/controls/data/tst_textfield.qml b/tests/auto/controls/data/tst_textfield.qml
index 1f1de748..5dc93287 100644
--- a/tests/auto/controls/data/tst_textfield.qml
+++ b/tests/auto/controls/data/tst_textfield.qml
@@ -72,6 +72,7 @@ TestCase {
var implicitWidthSpy = signalSpy.createObject(control, { target: control, signalName: "implicitWidthChanged"} )
var implicitHeightSpy = signalSpy.createObject(control, { target: control, signalName: "implicitHeightChanged"} )
+
control.background.implicitWidth = 400
control.background.implicitHeight = 200
compare(control.implicitWidth, 400)
@@ -79,6 +80,24 @@ TestCase {
compare(implicitWidthSpy.count, 1)
compare(implicitHeightSpy.count, 1)
+ control.background = null
+ compare(control.implicitWidth, control.leftPadding + control.rightPadding)
+ compare(control.implicitHeight, control.contentHeight + control.topPadding + control.bottomPadding)
+ compare(implicitWidthSpy.count, 2)
+ compare(implicitHeightSpy.count, 2)
+
+ control.text = "TextField"
+ compare(control.implicitWidth, control.contentWidth + control.leftPadding + control.rightPadding)
+ compare(control.implicitHeight, control.contentHeight + control.topPadding + control.bottomPadding)
+ compare(implicitWidthSpy.count, 3)
+ compare(implicitHeightSpy.count, 2)
+
+ control.placeholderText = "..."
+ verify(control.implicitWidth < control.contentWidth + control.leftPadding + control.rightPadding)
+ compare(control.implicitHeight, control.contentHeight + control.topPadding + control.bottomPadding)
+ compare(implicitWidthSpy.count, 4)
+ compare(implicitHeightSpy.count, 2)
+
control.destroy()
}