diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2016-02-20 07:30:41 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2016-02-20 07:36:55 +0100 |
commit | 7116f3959c9ade06397de9df66d66667a1a703fe (patch) | |
tree | 2b5eae5581d1d8750ece6195f9d7b337ccc32130 /tests | |
parent | d475ba88cc7e0875cfc30371867d7b82f006770f (diff) | |
parent | 20b60be518f05611fb11a98b57e73f6bb6c8b46e (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.qml | 91 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_popup.qml | 594 |
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() + } +} |