aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@theqtcompany.com>2016-02-20 07:30:41 +0100
committerJ-P Nurmi <jpnurmi@theqtcompany.com>2016-02-20 07:36:55 +0100
commit7116f3959c9ade06397de9df66d66667a1a703fe (patch)
tree2b5eae5581d1d8750ece6195f9d7b337ccc32130 /tests
parentd475ba88cc7e0875cfc30371867d7b82f006770f (diff)
parent20b60be518f05611fb11a98b57e73f6bb6c8b46e (diff)
Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts: src/templates/qquickapplicationwindow.cpp src/templates/qquickcontrol_p.h src/templates/qquickpage.cpp src/templates/qquickpopup.cpp src/templates/qquickpopup_p_p.h Change-Id: I265e0267afb22e3d3f80801191f1a810cd2be312
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/controls/data/tst_combobox.qml91
-rw-r--r--tests/auto/controls/data/tst_popup.qml594
2 files changed, 685 insertions, 0 deletions
diff --git a/tests/auto/controls/data/tst_combobox.qml b/tests/auto/controls/data/tst_combobox.qml
index 55ac3e8d..b112f20c 100644
--- a/tests/auto/controls/data/tst_combobox.qml
+++ b/tests/auto/controls/data/tst_combobox.qml
@@ -626,4 +626,95 @@ TestCase {
control.destroy()
}
+
+ Component {
+ id: component
+ Pane {
+ id: panel
+ property alias button: _button;
+ property alias combobox: _combobox;
+ font.pixelSize: 30
+ Column {
+ Button {
+ id: _button
+ text: "Button"
+ font.pixelSize: 20
+ }
+ ComboBox {
+ id: _combobox
+ model: ["ComboBox", "With"]
+ delegate: ItemDelegate {
+ width: _combobox.width
+ text: _combobox.textRole ? (Array.isArray(_combobox.model) ? modelData[_combobox.textRole] : model[_combobox.textRole]) : modelData
+ objectName: "delegate"
+ checkable: true
+ autoExclusive: true
+ checked: _combobox.currentIndex === index
+ highlighted: _combobox.highlightedIndex === index
+ pressed: highlighted && _combobox.pressed
+ }
+ }
+ }
+ }
+ }
+
+ function getChild(control, objname, idx) {
+ var index = idx
+ for (var i = index+1; i < control.children.length; i++)
+ {
+ if (control.children[i].objectName === objname) {
+ index = i
+ break
+ }
+ }
+ return index
+ }
+
+ function test_font() { // QTBUG_50984
+ var control = component.createObject(window.contentItem)
+ verify(control)
+ verify(control.button)
+ verify(control.combobox)
+
+ waitForRendering(control)
+
+ control.forceActiveFocus()
+ verify(control.activeFocus)
+
+ compare(control.font.pixelSize, 30)
+ compare(control.button.font.pixelSize, 20)
+ compare(control.combobox.font.pixelSize, 30)
+
+ verify(control.combobox.popup)
+ var popup = control.combobox.popup
+ popup.open()
+
+ verify(popup.contentItem)
+
+ var listview = popup.contentItem
+ verify(listview.contentItem)
+ waitForRendering(listview)
+
+ var idx1 = getChild(listview.contentItem, "delegate", -1)
+ compare(listview.contentItem.children[idx1].font.pixelSize, 30)
+ var idx2 = getChild(listview.contentItem, "delegate", idx1)
+ compare(listview.contentItem.children[idx2].font.pixelSize, 30)
+
+ control.font.pixelSize = control.font.pixelSize + 10
+ compare(control.combobox.font.pixelSize, 40)
+ waitForRendering(listview)
+ compare(listview.contentItem.children[idx1].font.pixelSize, 40)
+ compare(listview.contentItem.children[idx2].font.pixelSize, 40)
+
+ control.combobox.font.pixelSize = control.combobox.font.pixelSize + 5
+ compare(control.combobox.font.pixelSize, 45)
+ waitForRendering(listview)
+
+ idx1 = getChild(listview.contentItem, "delegate", -1)
+ compare(listview.contentItem.children[idx1].font.pixelSize, 45)
+ idx2 = getChild(listview.contentItem, "delegate", idx1)
+ compare(listview.contentItem.children[idx2].font.pixelSize, 45)
+
+ control.destroy()
+ }
}
diff --git a/tests/auto/controls/data/tst_popup.qml b/tests/auto/controls/data/tst_popup.qml
new file mode 100644
index 00000000..20859dac
--- /dev/null
+++ b/tests/auto/controls/data/tst_popup.qml
@@ -0,0 +1,594 @@
+/****************************************************************************
+**
+** 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.4
+import QtTest 1.0
+import Qt.labs.controls 1.0
+import Qt.labs.templates 1.0 as T
+
+TestCase {
+ id: testCase
+ width: 480
+ height: 360
+ visible: true
+ when: windowShown
+ name: "Popup"
+
+ Component {
+ id: popup
+ T.Popup { }
+ }
+
+ Component {
+ id: rect
+ Rectangle { }
+ }
+
+ SignalSpy {
+ id: availableWidthSpy
+ signalName: "availableWidthChanged"
+ }
+
+ SignalSpy {
+ id: availableHeightSpy
+ signalName: "availableHeightChanged"
+ }
+
+ SignalSpy {
+ id: paddingSpy
+ signalName: "paddingChanged"
+ }
+
+ SignalSpy {
+ id: topPaddingSpy
+ signalName: "topPaddingChanged"
+ }
+
+ SignalSpy {
+ id: leftPaddingSpy
+ signalName: "leftPaddingChanged"
+ }
+
+ SignalSpy {
+ id: rightPaddingSpy
+ signalName: "rightPaddingChanged"
+ }
+
+ SignalSpy {
+ id: bottomPaddingSpy
+ signalName: "bottomPaddingChanged"
+ }
+
+ function test_padding() {
+ var control = popup.createObject(testCase)
+ verify(control)
+
+ paddingSpy.target = control
+ topPaddingSpy.target = control
+ leftPaddingSpy.target = control
+ rightPaddingSpy.target = control
+ bottomPaddingSpy.target = control
+
+ verify(paddingSpy.valid)
+ verify(topPaddingSpy.valid)
+ verify(leftPaddingSpy.valid)
+ verify(rightPaddingSpy.valid)
+ verify(bottomPaddingSpy.valid)
+
+ var paddingChanges = 0
+ var topPaddingChanges = 0
+ var leftPaddingChanges = 0
+ var rightPaddingChanges = 0
+ var bottomPaddingChanges = 0
+
+ compare(control.padding, 0)
+ compare(control.topPadding, 0)
+ compare(control.leftPadding, 0)
+ compare(control.rightPadding, 0)
+ compare(control.bottomPadding, 0)
+ compare(control.availableWidth, 0)
+ compare(control.availableHeight, 0)
+
+ control.width = 100
+ control.height = 100
+
+ control.padding = 10
+ compare(control.padding, 10)
+ compare(control.topPadding, 10)
+ compare(control.leftPadding, 10)
+ compare(control.rightPadding, 10)
+ compare(control.bottomPadding, 10)
+ compare(paddingSpy.count, ++paddingChanges)
+ compare(topPaddingSpy.count, ++topPaddingChanges)
+ compare(leftPaddingSpy.count, ++leftPaddingChanges)
+ compare(rightPaddingSpy.count, ++rightPaddingChanges)
+ compare(bottomPaddingSpy.count, ++bottomPaddingChanges)
+
+ control.topPadding = 20
+ compare(control.padding, 10)
+ compare(control.topPadding, 20)
+ compare(control.leftPadding, 10)
+ compare(control.rightPadding, 10)
+ compare(control.bottomPadding, 10)
+ compare(paddingSpy.count, paddingChanges)
+ compare(topPaddingSpy.count, ++topPaddingChanges)
+ compare(leftPaddingSpy.count, leftPaddingChanges)
+ compare(rightPaddingSpy.count, rightPaddingChanges)
+ compare(bottomPaddingSpy.count, bottomPaddingChanges)
+
+ control.leftPadding = 30
+ compare(control.padding, 10)
+ compare(control.topPadding, 20)
+ compare(control.leftPadding, 30)
+ compare(control.rightPadding, 10)
+ compare(control.bottomPadding, 10)
+ compare(paddingSpy.count, paddingChanges)
+ compare(topPaddingSpy.count, topPaddingChanges)
+ compare(leftPaddingSpy.count, ++leftPaddingChanges)
+ compare(rightPaddingSpy.count, rightPaddingChanges)
+ compare(bottomPaddingSpy.count, bottomPaddingChanges)
+
+ control.rightPadding = 40
+ compare(control.padding, 10)
+ compare(control.topPadding, 20)
+ compare(control.leftPadding, 30)
+ compare(control.rightPadding, 40)
+ compare(control.bottomPadding, 10)
+ compare(paddingSpy.count, paddingChanges)
+ compare(topPaddingSpy.count, topPaddingChanges)
+ compare(leftPaddingSpy.count, leftPaddingChanges)
+ compare(rightPaddingSpy.count, ++rightPaddingChanges)
+ compare(bottomPaddingSpy.count, bottomPaddingChanges)
+
+ control.bottomPadding = 50
+ compare(control.padding, 10)
+ compare(control.topPadding, 20)
+ compare(control.leftPadding, 30)
+ compare(control.rightPadding, 40)
+ compare(control.bottomPadding, 50)
+ compare(paddingSpy.count, paddingChanges)
+ compare(topPaddingSpy.count, topPaddingChanges)
+ compare(leftPaddingSpy.count, leftPaddingChanges)
+ compare(rightPaddingSpy.count, rightPaddingChanges)
+ compare(bottomPaddingSpy.count, ++bottomPaddingChanges)
+
+ control.padding = 60
+ compare(control.padding, 60)
+ compare(control.topPadding, 20)
+ compare(control.leftPadding, 30)
+ compare(control.rightPadding, 40)
+ compare(control.bottomPadding, 50)
+ compare(paddingSpy.count, ++paddingChanges)
+ compare(topPaddingSpy.count, topPaddingChanges)
+ compare(leftPaddingSpy.count, leftPaddingChanges)
+ compare(rightPaddingSpy.count, rightPaddingChanges)
+ compare(bottomPaddingSpy.count, bottomPaddingChanges)
+
+ control.destroy()
+ }
+
+ function test_availableSize() {
+ var control = popup.createObject(testCase)
+ verify(control)
+
+ availableWidthSpy.target = control
+ availableHeightSpy.target = control
+
+ verify(availableWidthSpy.valid)
+ verify(availableHeightSpy.valid)
+
+ var availableWidthChanges = 0
+ var availableHeightChanges = 0
+
+ control.width = 100
+ compare(control.availableWidth, 100)
+ compare(availableWidthSpy.count, ++availableWidthChanges)
+ compare(availableHeightSpy.count, availableHeightChanges)
+
+ control.height = 100
+ compare(control.availableHeight, 100)
+ compare(availableWidthSpy.count, availableWidthChanges)
+ compare(availableHeightSpy.count, ++availableHeightChanges)
+
+ control.padding = 10
+ compare(control.availableWidth, 80)
+ compare(control.availableHeight, 80)
+ compare(availableWidthSpy.count, ++availableWidthChanges)
+ compare(availableHeightSpy.count, ++availableHeightChanges)
+
+ control.topPadding = 20
+ compare(control.availableWidth, 80)
+ compare(control.availableHeight, 70)
+ compare(availableWidthSpy.count, availableWidthChanges)
+ compare(availableHeightSpy.count, ++availableHeightChanges)
+
+ control.leftPadding = 30
+ compare(control.availableWidth, 60)
+ compare(control.availableHeight, 70)
+ compare(availableWidthSpy.count, ++availableWidthChanges)
+ compare(availableHeightSpy.count, availableHeightChanges)
+
+ control.rightPadding = 40
+ compare(control.availableWidth, 30)
+ compare(control.availableHeight, 70)
+ compare(availableWidthSpy.count, ++availableWidthChanges)
+ compare(availableHeightSpy.count, availableHeightChanges)
+
+ control.bottomPadding = 50
+ compare(control.availableWidth, 30)
+ compare(control.availableHeight, 30)
+ compare(availableWidthSpy.count, availableWidthChanges)
+ compare(availableHeightSpy.count, ++availableHeightChanges)
+
+ control.padding = 60
+ compare(control.availableWidth, 30)
+ compare(control.availableHeight, 30)
+ compare(availableWidthSpy.count, availableWidthChanges)
+ compare(availableHeightSpy.count, availableHeightChanges)
+
+ control.width = 0
+ compare(control.availableWidth, 0)
+ compare(availableWidthSpy.count, ++availableWidthChanges)
+ compare(availableHeightSpy.count, availableHeightChanges)
+
+ control.height = 0
+ compare(control.availableHeight, 0)
+ compare(availableWidthSpy.count, availableWidthChanges)
+ compare(availableHeightSpy.count, ++availableHeightChanges)
+
+ control.destroy()
+ }
+
+ function test_background() {
+ var control = popup.createObject(testCase)
+ verify(control)
+
+ control.background = rect.createObject(testCase)
+
+ // background has no x or width set, so its width follows control's width
+ control.width = 320
+ compare(control.background.width, control.width)
+
+ // background has no y or height set, so its height follows control's height
+ compare(control.background.height, control.height)
+ control.height = 240
+
+ // has width => width does not follow
+ control.background.width /= 2
+ control.width += 20
+ verify(control.background.width !== control.width)
+
+ // reset width => width follows again
+ control.background.width = undefined
+ control.width += 20
+ compare(control.background.width, control.width)
+
+ // has x => width does not follow
+ control.background.x = 10
+ control.width += 20
+ verify(control.background.width !== control.width)
+
+ // has height => height does not follow
+ control.background.height /= 2
+ control.height -= 20
+ verify(control.background.height !== control.height)
+
+ // reset height => height follows again
+ control.background.height = undefined
+ control.height -= 20
+ compare(control.background.height, control.height)
+
+ // has y => height does not follow
+ control.background.y = 10
+ control.height -= 20
+ verify(control.background.height !== control.height)
+
+ control.destroy()
+ }
+
+ function getChild(control, objname, idx) {
+ var index = idx
+ for (var i = index+1; i < control.children.length; i++)
+ {
+ if (control.children[i].objectName === objname) {
+ index = i
+ break
+ }
+ }
+ return index
+ }
+
+ Component {
+ id: component
+ Pane {
+ id: panel
+ property alias button: _button;
+ property alias popup: _popup;
+ property alias listview: _listview
+ font.pixelSize: 30
+ Column {
+ Button {
+ id: _button
+ text: "Button"
+ font.pixelSize: 20
+
+ Popup {
+ id: _popup
+ y: button.height
+ implicitHeight: Math.min(396, _listview.contentHeight)
+ contentItem: ListView {
+ id: _listview
+ height: _button.height * 20
+ model: 2
+ delegate: Button {
+ objectName: "delegate"
+ width: _button.width
+ height: _button.height
+ text: "N: " + index
+ checkable: true
+ autoExclusive: true
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ function test_font() { // QTBUG_50984
+ var control = component.createObject(testCase)
+ verify(control)
+ verify(control.button)
+ verify(control.popup)
+ verify(control.listview)
+
+ waitForRendering(control)
+
+ control.forceActiveFocus()
+ verify(control.activeFocus)
+
+ compare(control.font.pixelSize, 30)
+ compare(control.button.font.pixelSize, 20)
+
+ var popup = control.popup
+ popup.open()
+
+ verify(popup.contentItem)
+
+ var listview = popup.contentItem
+ verify(listview.contentItem)
+ waitForRendering(listview)
+
+ var idx1 = getChild(listview.contentItem, "delegate", -1)
+ compare(listview.contentItem.children[idx1].font.pixelSize, 20)
+ var idx2 = getChild(listview.contentItem, "delegate", idx1)
+ compare(listview.contentItem.children[idx2].font.pixelSize, 20)
+
+ control.button.font.pixelSize = control.button.font.pixelSize + 10
+ compare(control.button.font.pixelSize, 30)
+ waitForRendering(listview)
+ compare(listview.contentItem.children[idx1].font.pixelSize, 30)
+ compare(listview.contentItem.children[idx2].font.pixelSize, 30)
+
+ control.destroy()
+ }
+
+ Component {
+ id: localeComponent
+ Pane {
+ id: panel
+ property alias button: _button;
+ property alias popup: _popup;
+ property alias button1: _button1;
+ property alias button2: _button2;
+ locale: Qt.locale("en_US")
+ Column {
+ Button {
+ id: _button
+ text: "Button"
+ locale: Qt.locale("nb_NO")
+ Popup {
+ id: _popup
+ y: _button.height
+ implicitHeight: Math.min(396, _column.contentHeight)
+ contentItem: Column {
+ id: _column
+ Button {
+ id: _button1
+ text: "Button 1"
+ }
+ Button {
+ id: _button2
+ text: "Button 2"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ function test_locale() { // QTBUG_50984
+ // test looking up natural locale from ancestors
+ var control = localeComponent.createObject(testCase)
+ verify(control)
+ verify(control.button)
+ verify(control.popup)
+ verify(control.button1)
+ verify(control.button2)
+
+ waitForRendering(control)
+
+ control.forceActiveFocus()
+ verify(control.activeFocus)
+
+ var popup = control.popup
+ popup.open()
+
+ compare(control.locale.name, "en_US")
+ compare(control.button.locale.name, "nb_NO")
+ compare(control.button1.locale.name, "nb_NO")
+ compare(control.button2.locale.name, "nb_NO")
+
+ control.destroy()
+ }
+
+ Component {
+ id: localeComponent2
+ Pane {
+ id: panel
+ property alias button: _button;
+ property alias popup: _popup;
+ property alias button1: _button1;
+ property alias button2: _button2;
+ property alias localespy: _lspy;
+ property alias mirroredspy: _mspy;
+ property alias localespy_1: _lspy_1;
+ property alias mirroredspy_1: _mspy_1;
+ property alias localespy_2: _lspy_2;
+ property alias mirroredspy_2: _mspy_2;
+ Column {
+ Button {
+ id: _button
+ text: "Button"
+ Popup {
+ id: _popup
+ y: _button.height
+ implicitHeight: Math.min(396, _column.contentHeight)
+ contentItem: Column {
+ id: _column
+ Button {
+ id: _button1
+ text: "Button 1"
+ SignalSpy {
+ id: _lspy_1
+ target: _button1
+ signalName: "localeChanged"
+ }
+ SignalSpy {
+ id: _mspy_1
+ target: _button1
+ signalName: "mirroredChanged"
+ }
+ }
+ Button {
+ id: _button2
+ text: "Button 2"
+ SignalSpy {
+ id: _lspy_2
+ target: _button2
+ signalName: "localeChanged"
+ }
+ SignalSpy {
+ id: _mspy_2
+ target: _button2
+ signalName: "mirroredChanged"
+ }
+ }
+ }
+ }
+ SignalSpy {
+ id: _lspy
+ target: _button
+ signalName: "localeChanged"
+ }
+ SignalSpy {
+ id: _mspy
+ target: _button
+ signalName: "mirroredChanged"
+ }
+ }
+ }
+ }
+ }
+
+ function test_locale_2() { // QTBUG_50984
+ // test default locale and locale inheritance
+ var control = localeComponent2.createObject(testCase)
+ verify(control)
+ verify(control.button)
+ verify(control.popup)
+ verify(control.button1)
+ verify(control.button2)
+
+ waitForRendering(control)
+
+ control.forceActiveFocus()
+ verify(control.activeFocus)
+
+ var popup = control.popup
+ popup.open()
+
+ var defaultLocale = Qt.locale()
+
+ compare(control.locale.name, defaultLocale.name)
+ compare(control.button.locale.name, defaultLocale.name)
+ compare(control.button1.locale.name, defaultLocale.name)
+ compare(control.button2.locale.name, defaultLocale.name)
+
+ control.locale = Qt.locale("nb_NO")
+ control.localespy.wait()
+ compare(control.localespy.count, 1)
+ compare(control.mirroredspy.count, 0)
+ compare(control.locale.name, "nb_NO")
+ compare(control.button.locale.name, "nb_NO")
+ compare(control.button1.locale.name, "nb_NO")
+ compare(control.button2.locale.name, "nb_NO")
+ compare(control.localespy_1.count, 1)
+ compare(control.mirroredspy_1.count, 0)
+ compare(control.localespy_2.count, 1)
+ compare(control.mirroredspy_2.count, 0)
+
+ control.locale = Qt.locale("ar_EG")
+ control.localespy.wait()
+ compare(control.localespy.count, 2)
+ compare(control.mirroredspy.count, 1)
+ compare(control.locale.name, "ar_EG")
+ compare(control.button.locale.name, "ar_EG")
+ compare(control.button1.locale.name, "ar_EG")
+ compare(control.button2.locale.name, "ar_EG")
+ compare(control.localespy_1.count, 2)
+ compare(control.mirroredspy_1.count, 1)
+ compare(control.localespy_2.count, 2)
+ compare(control.mirroredspy_2.count, 1)
+
+ control.destroy()
+ }
+}