diff options
Diffstat (limited to 'tests/auto/quickcontrols2/qquickimaginestyle/data/tst_imagine.qml')
-rw-r--r-- | tests/auto/quickcontrols2/qquickimaginestyle/data/tst_imagine.qml | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/tests/auto/quickcontrols2/qquickimaginestyle/data/tst_imagine.qml b/tests/auto/quickcontrols2/qquickimaginestyle/data/tst_imagine.qml new file mode 100644 index 0000000000..493ff766ba --- /dev/null +++ b/tests/auto/quickcontrols2/qquickimaginestyle/data/tst_imagine.qml @@ -0,0 +1,156 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, 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 +import QtQuick.Window +import QtTest +import QtQuick.Templates as T +import QtQuick.Controls +import QtQuick.Controls.Imagine +import QtQuick.Controls.Imagine.impl + +TestCase { + id: testCase + width: 200 + height: 200 + visible: true + when: windowShown + name: "Imagine" + + Component { + id: buttonComponent + Button {} + } + + Component { + id: implicitQrcButtonComponent + Button { + Imagine.path: ":/control-assets" + } + } + + Component { + id: explicitQrcButtonComponent + Button { + Imagine.path: "qrc:/control-assets" + } + } + + function test_qrcPaths_data() { + return [ + { tag: ":/control-assets", component: implicitQrcButtonComponent }, + { tag: "qrc:/control-assets", component: explicitQrcButtonComponent } + ] + } + + function test_qrcPaths(data) { + if (Qt.platform.pluginName === "offscreen") + skip("grabImage() is not functional on the offscreen platform (QTBUG-63185)") + + var control = createTemporaryObject(data.component, testCase) + verify(control) + compare(control.Imagine.path, data.tag) + var image = grabImage(control) + compare(image.pixel(control.width / 2, control.height / 2), "#ff0000") + } + + function test_fontFromConfigFile() { + var control = createTemporaryObject(buttonComponent, testCase) + verify(control) + compare(control.font.pixelSize, 80) + } + + Component { + id: ninePatchImageComponent + + NinePatchImage { + property alias mouseArea: mouseArea + + MouseArea { + id: mouseArea + anchors.fill: parent + // The name of the images isn't important; we just want to check that + // going from regular to 9-patch to regular to regular works without crashing. + onPressed: parent.source = "qrc:/control-assets/button-background.9.png" + onReleased: parent.source = "qrc:/test-assets/button-background-1.png" + onClicked: parent.source = "qrc:/test-assets/button-background-2.png" + } + } + } + + Component { + id: signalSpyComponent + + SignalSpy {} + } + + // QTBUG-78790 + function test_switchBetween9PatchAndRegular() { + var ninePatchImage = createTemporaryObject(ninePatchImageComponent, testCase, + { source: "qrc:/test-assets/button-background-1.png" }) + verify(ninePatchImage) + + var clickSpy = signalSpyComponent.createObject(ninePatchImage, + { target: ninePatchImage.mouseArea, signalName: "clicked" }) + verify(clickSpy.valid) + + var afterRenderingSpy = signalSpyComponent.createObject(ninePatchImage, + { target: testCase.Window.window, signalName: "afterRendering" }) + verify(afterRenderingSpy.valid) + + mousePress(ninePatchImage) + // Wait max 1 second - in reality it should take a handful of milliseconds. + afterRenderingSpy.wait(1000) + mouseRelease(ninePatchImage) + compare(clickSpy.count, 1) + // Shouldn't result in a crash. + afterRenderingSpy.wait(1000) + } +} |