diff options
Diffstat (limited to 'tests/auto/qmltest')
-rw-r--r-- | tests/auto/qmltest/fontloader/tst_fontloader.qml | 27 | ||||
-rw-r--r-- | tests/auto/qmltest/listmodel/tst_listmodel.qml | 12 | ||||
-rw-r--r-- | tests/auto/qmltest/listview/data/asynclistviewloader.qml | 79 | ||||
-rw-r--r-- | tests/auto/qmltest/listview/data/asyncloadercurrentindex.qml | 64 | ||||
-rw-r--r-- | tests/auto/qmltest/listview/tst_listview.qml | 98 | ||||
-rw-r--r-- | tests/auto/qmltest/qmltest.pro | 1 | ||||
-rw-r--r-- | tests/auto/qmltest/selftests/tst_destroy.qml | 62 | ||||
-rw-r--r-- | tests/auto/qmltest/text/tst_text.qml | 17 | ||||
-rw-r--r-- | tests/auto/qmltest/textedit/tst_textedit.qml | 10 |
9 files changed, 335 insertions, 35 deletions
diff --git a/tests/auto/qmltest/fontloader/tst_fontloader.qml b/tests/auto/qmltest/fontloader/tst_fontloader.qml index 4d79a170f3..33307a3702 100644 --- a/tests/auto/qmltest/fontloader/tst_fontloader.qml +++ b/tests/auto/qmltest/fontloader/tst_fontloader.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 2.0 +import QtQuick 2.1 import QtTest 1.0 Item { @@ -63,34 +63,37 @@ Item { name: "FontLoader" function test_fontloading() { + if (Qt.platform.os === "mac") + skip("Skipped for QTBUG-25306") + compare(fontloader.status, FontLoader.Null) compare(testinput.font.family, "") fontloader.source = "tarzeau_ocr_a.ttf"; - tryCompare(fontloader.status, FontLoader.Loading) - tryCompare(fontloader.status, FontLoader.Ready) + tryCompare(fontloader, 'status', FontLoader.Ready) compare(testinput.font.family, "OCRA") fontloader.source = "dummy.ttf"; - tryCompare(fontloader.status, FontLoader.Error) + tryCompare(fontloader, 'status', FontLoader.Error) compare(testinput.font.family, "") fontloader.source = ""; fontloader.name = "Courier"; - tryCompare(fontloader.status, FontLoader.Ready) + tryCompare(fontloader, 'status', FontLoader.Ready) compare(testinput.font.family, "Courier") } function test_fontswitching() { + if (Qt.platform.os === "mac") + skip("Skipped for QTBUG-25306") + compare(fontswitch.status, FontLoader.Null) fontswitch.source = "tarzeau_ocr_a.ttf"; - tryCompare(fontswitch.status, FontLoader.Loading) - tryCompare(fontswitch.status, FontLoader.Ready) - tryCompare(fontswitch.name, "OCRA") + tryCompare(fontswitch, 'status', FontLoader.Ready) + compare(fontswitch.name, "OCRA") fontswitch.source = ""; fontswitch.name = "Courier"; - tryCompare(fontswitch.status, FontLoader.Ready) - tryCompare(fontswitch.name, "Courier") + tryCompare(fontswitch, 'status', FontLoader.Ready) + compare(fontswitch.name, "Courier") fontswitch.source = "tarzeau_ocr_a.ttf"; - tryCompare(fontswitch.status, FontLoader.Loading) - tryCompare(fontswitch.status, FontLoader.Ready) + tryCompare(fontswitch, 'status', FontLoader.Ready) compare(fontswitch.name, "OCRA") } } diff --git a/tests/auto/qmltest/listmodel/tst_listmodel.qml b/tests/auto/qmltest/listmodel/tst_listmodel.qml index a975691462..603993a092 100644 --- a/tests/auto/qmltest/listmodel/tst_listmodel.qml +++ b/tests/auto/qmltest/listmodel/tst_listmodel.qml @@ -95,28 +95,28 @@ Item { } function test_altermodeled() { - tryCompare(altermodel.count, 2) + tryCompare(altermodel, 'count', 2) compare(altermodel.get(0).name, "AlterModelElement0") compare(altermodel.get(1).name, "AlterModelElement1") altermodel.append({"name":"AlterModelElement2"}) - tryCompare(altermodel.count, 3) + tryCompare(altermodel, 'count', 3) compare(altermodel.get(0).name, "AlterModelElement0") compare(altermodel.get(1).name, "AlterModelElement1") compare(altermodel.get(2).name, "AlterModelElement2") altermodel.insert(2,{"name":"AlterModelElement1.5"}) - tryCompare(altermodel.count, 4) + tryCompare(altermodel, 'count', 4) compare(altermodel.get(0).name, "AlterModelElement0") compare(altermodel.get(1).name, "AlterModelElement1") compare(altermodel.get(2).name, "AlterModelElement1.5") compare(altermodel.get(3).name, "AlterModelElement2") - tryCompare(altermodel.count, 4) + tryCompare(altermodel, 'count', 4) altermodel.move(2,1,1); compare(altermodel.get(0).name, "AlterModelElement0") compare(altermodel.get(1).name, "AlterModelElement1.5") compare(altermodel.get(2).name, "AlterModelElement1") compare(altermodel.get(3).name, "AlterModelElement2") altermodel.remove(1,2) - tryCompare(altermodel.count, 2) + tryCompare(altermodel, 'count', 2) compare(altermodel.get(0).name, "AlterModelElement0") compare(altermodel.get(1).name, "AlterModelElement2") altermodel.set(1,{"name":"AlterModelElement1"}) @@ -125,7 +125,7 @@ Item { altermodel.setProperty(0, "name", "AlteredProperty") compare(altermodel.get(0).name, "AlteredProperty") altermodel.clear() - tryCompare(altermodel.count, 0) + tryCompare(altermodel, 'count', 0) compare(altermodel.get(0), undefined) } } diff --git a/tests/auto/qmltest/listview/data/asynclistviewloader.qml b/tests/auto/qmltest/listview/data/asynclistviewloader.qml new file mode 100644 index 0000000000..f7a55ff055 --- /dev/null +++ b/tests/auto/qmltest/listview/data/asynclistviewloader.qml @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc and its Subsidiary(-ies) 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.0 + +ListView { + id: root + width: 360 + height: 360 + cacheBuffer: 100000 + model: ListModel { + ListElement { component: "asyncloadercurrentindex.qml" } + ListElement { component: "asyncloadercurrentindex.qml" } + ListElement { component: "asyncloadercurrentindex.qml" } + ListElement { component: "asyncloadercurrentindex.qml" } + ListElement { component: "asyncloadercurrentindex.qml" } + ListElement { component: "asyncloadercurrentindex.qml" } + ListElement { component: "asyncloadercurrentindex.qml" } + ListElement { component: "asyncloadercurrentindex.qml" } + ListElement { component: "asyncloadercurrentindex.qml" } + ListElement { component: "asyncloadercurrentindex.qml" } + ListElement { component: "asyncloadercurrentindex.qml" } + ListElement { component: "asyncloadercurrentindex.qml" } + ListElement { component: "asyncloadercurrentindex.qml" } + ListElement { component: "asyncloadercurrentindex.qml" } + ListElement { component: "asyncloadercurrentindex.qml" } + ListElement { component: "asyncloadercurrentindex.qml" } + } + + interactive: false + orientation: ListView.Horizontal + + currentIndex: 0 + + delegate: Loader { + width: root.width + height: root.height + + source: component + asynchronous: true + } +} diff --git a/tests/auto/qmltest/listview/data/asyncloadercurrentindex.qml b/tests/auto/qmltest/listview/data/asyncloadercurrentindex.qml new file mode 100644 index 0000000000..a721f85eb9 --- /dev/null +++ b/tests/auto/qmltest/listview/data/asyncloadercurrentindex.qml @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** 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 Digia Plc and its Subsidiary(-ies) 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.0 + +Rectangle { + color: "black" + + Rectangle { + color: "red" + + height: 150 + width: 150 + + anchors { + horizontalCenter: parent.horizontalCenter + verticalCenter: parent.verticalCenter + } + + NumberAnimation on rotation { + from: 0 + to: 360 + duration: 5000 + loops: Animation.Infinite + } + } +} diff --git a/tests/auto/qmltest/listview/tst_listview.qml b/tests/auto/qmltest/listview/tst_listview.qml index cbace624c3..0589e7c46b 100644 --- a/tests/auto/qmltest/listview/tst_listview.qml +++ b/tests/auto/qmltest/listview/tst_listview.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 2.0 +import QtQuick 2.1 import QtTest 1.0 Item { @@ -53,6 +53,7 @@ Item { ListView { id: viewmanyitems model: manyitems + delegate: Text { text: model.name } } ListView { @@ -67,14 +68,66 @@ Item { delegate: Text { text: model.name } } + ListView { + id: asyncLoaderCurrentIndexListView + width: 360 + height: 360 + model: asyncLoaderCurrentIndexListModel + + currentIndex: 0 + + delegate: Loader { + width: asyncLoaderCurrentIndexListView.width + height: asyncLoaderCurrentIndexListView.height + + source: component + asynchronous: true + } + } + + ListView { + id: asyncListViewLoaderView + width: 360 + height: 360 + model: asyncListViewLoaderModel + + currentIndex: 0 + + delegate: Loader { + width: asyncListViewLoaderView.width + height: asyncListViewLoaderView.height + + source: component + asynchronous: true + } + } + ListModel { id: emptymodel } ListModel { id: manyitems } ListModel { id: firstmodel; ListElement { name: "FirstModelElement0" } } ListModel { id: secondmodel; ListElement { name: "SecondModelElement0" } ListElement { name: "SecondModelElement1" } } ListModel { id: altermodel; ListElement { name: "AlterModelElement0" } ListElement { name: "AlterModelElement1" } } + ListModel { + id: asyncLoaderCurrentIndexListModel + ListElement { component: "data/asyncloadercurrentindex.qml" } + ListElement { component: "data/asyncloadercurrentindex.qml" } + ListElement { component: "data/asyncloadercurrentindex.qml" } + ListElement { component: "data/asyncloadercurrentindex.qml" } + ListElement { component: "data/asyncloadercurrentindex.qml" } + ListElement { component: "data/asyncloadercurrentindex.qml" } + } + ListModel { + id: asyncListViewLoaderModel + ListElement { component: "data/asynclistviewloader.qml" } + ListElement { component: "data/asynclistviewloader.qml" } + ListElement { component: "data/asynclistviewloader.qml" } + ListElement { component: "data/asynclistviewloader.qml" } + ListElement { component: "data/asynclistviewloader.qml" } + } TestCase { name: "ListView" + when: windowShown function test_empty() { compare(emptylist.count, 0) @@ -107,15 +160,16 @@ Item { manyitems.append({"name":"Item"+i}) } compare(manyitems.count, row.numitems) - tryCompare(viewmanyitems.count, row.numitems) + tryCompare(viewmanyitems, 'count', row.numitems) + } function test_modelchange() { - tryCompare(modelchange.count, 1) + tryCompare(modelchange, 'count', 1) modelchange.currentIndex = 0; compare(modelchange.currentItem.text, "FirstModelElement0") modelchange.model = secondmodel; - tryCompare(modelchange.count, 2) + tryCompare(modelchange, 'count', 2) modelchange.currentIndex = 0; compare(modelchange.currentItem.text, "SecondModelElement0") modelchange.currentIndex = 1; @@ -123,13 +177,13 @@ Item { } function test_modelaltered() { - tryCompare(modelalter.count, 2) + tryCompare(modelalter, 'count', 2) modelalter.currentIndex = 0; compare(modelalter.currentItem.text, "AlterModelElement0") modelalter.currentIndex = 1; compare(modelalter.currentItem.text, "AlterModelElement1") altermodel.append({"name":"AlterModelElement2"}) - tryCompare(modelalter.count, 3) + tryCompare(modelalter, 'count', 3) modelalter.currentIndex = 0; compare(modelalter.currentItem.text, "AlterModelElement0") modelalter.currentIndex = 1; @@ -137,7 +191,7 @@ Item { modelalter.currentIndex = 2; compare(modelalter.currentItem.text, "AlterModelElement2") altermodel.insert(2,{"name":"AlterModelElement1.5"}) - tryCompare(modelalter.count, 4) + tryCompare(modelalter, 'count', 4) modelalter.currentIndex = 0; compare(modelalter.currentItem.text, "AlterModelElement0") modelalter.currentIndex = 1; @@ -147,7 +201,7 @@ Item { modelalter.currentIndex = 3; compare(modelalter.currentItem.text, "AlterModelElement2") altermodel.move(2,1,1); - tryCompare(modelalter.count, 4) + tryCompare(modelalter, 'count', 4) modelalter.currentIndex = 0; compare(modelalter.currentItem.text, "AlterModelElement0") modelalter.currentIndex = 1; @@ -157,7 +211,7 @@ Item { modelalter.currentIndex = 3; compare(modelalter.currentItem.text, "AlterModelElement2") altermodel.remove(1,2) - tryCompare(modelalter.count, 2) + tryCompare(modelalter, 'count', 2) modelalter.currentIndex = 0; compare(modelalter.currentItem.text, "AlterModelElement0") modelalter.currentIndex = 1; @@ -168,8 +222,32 @@ Item { modelalter.currentIndex = 1; compare(modelalter.currentItem.text, "AlterModelElement1") altermodel.clear() - tryCompare(modelalter.count, 0) + modelalter.forceLayout() + tryCompare(modelalter, 'count', 0) compare(modelalter.currentItem, null) } + + function test_asyncLoaderCurrentIndexChange() { + for (var i = 0; i < 500; i++) { + asyncLoaderCurrentIndexListView.currentIndex = 0; + asyncLoaderCurrentIndexListView.currentIndex = 1; + asyncLoaderCurrentIndexListView.currentIndex = 2; + asyncLoaderCurrentIndexListView.currentIndex = 3; + asyncLoaderCurrentIndexListView.currentIndex = 4; + asyncLoaderCurrentIndexListView.currentIndex = 5; + } + wait(1000) + } + + function test_asyncListViewLoader() { + for (var i = 0; i < 50; i++) { + wait(10); + asyncListViewLoaderView.currentIndex = 0; + asyncListViewLoaderView.currentIndex = 1; + asyncListViewLoaderView.currentIndex = 2; + asyncListViewLoaderView.currentIndex = 3; + asyncListViewLoaderView.currentIndex = 4; + } + } } } diff --git a/tests/auto/qmltest/qmltest.pro b/tests/auto/qmltest/qmltest.pro index 0a7967654c..b1c29226e6 100644 --- a/tests/auto/qmltest/qmltest.pro +++ b/tests/auto/qmltest/qmltest.pro @@ -9,5 +9,4 @@ importFiles.files = borderimage buttonclick createbenchmark events qqmlbindi importFiles.path = . DEPLOYMENT += importFiles -mac:CONFIG+=insignificant_test # QTBUG-25306 DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/qmltest/selftests/tst_destroy.qml b/tests/auto/qmltest/selftests/tst_destroy.qml new file mode 100644 index 0000000000..b2a473dfca --- /dev/null +++ b/tests/auto/qmltest/selftests/tst_destroy.qml @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.1 +import QtTest 1.0 + +TestCase { + id: testCase + width: 100 + height: 100 + name: "SelfTests_Destroy" + + function test_a_QTBUG_30523() { + compare(testCase.children.length, 0) + var tmp = Qt.createQmlObject('import QtQuick 2.1; Rectangle {width: 20; height: 20;}', testCase, '') + compare(testCase.children.length, 1) + tmp.destroy() + } + + function test_b_QTBUG_30523() { + // The object created in test above should be deleted + compare(testCase.children.length, 0) + } +} diff --git a/tests/auto/qmltest/text/tst_text.qml b/tests/auto/qmltest/text/tst_text.qml index 87e9501ccd..b1d743f630 100644 --- a/tests/auto/qmltest/text/tst_text.qml +++ b/tests/auto/qmltest/text/tst_text.qml @@ -78,6 +78,13 @@ Item { font.pixelSize: 18 } + Text { + id: txtlines + property string styledtextvalue: "Line 1<br>Line 2<br>Line 3" + text: "Line 1\nLine 2\nLine 3" + textFormat: Text.PlainText + } + TestCase { name: "Text" @@ -116,6 +123,16 @@ Item { txtlinecount.width = 50; compare(txtlinecount.lineCount, 3) } + function test_linecounts() { + compare(txtlines.lineCount, 3) + txtlines.text = txtlines.styledtextvalue; + compare(txtlines.text, "Line 1<br>Line 2<br>Line 3") + tryCompare(txtlines, 'lineCount', 1) + txtlines.textFormat = Text.StyledText; + tryCompare(txtlines, 'lineCount', 3) + txtlines.textFormat = Text.RichText; + tryCompare(txtlines, 'lineCount', 3) + } } } diff --git a/tests/auto/qmltest/textedit/tst_textedit.qml b/tests/auto/qmltest/textedit/tst_textedit.qml index edfa127c59..eb53eaa604 100644 --- a/tests/auto/qmltest/textedit/tst_textedit.qml +++ b/tests/auto/qmltest/textedit/tst_textedit.qml @@ -91,7 +91,7 @@ Item { id: txtlines property string styledtextvalue: "Line 1<br>Line 2<br>Line 3" text: "Line 1\nLine 2\nLine 3" - textFormat: Text.PlainText + textFormat: TextEdit.PlainText } TestCase { @@ -179,11 +179,9 @@ Item { compare(txtlines.lineCount, 3) txtlines.text = txtlines.styledtextvalue; compare(txtlines.text, "Line 1<br>Line 2<br>Line 3") - tryCompare(txtlines.lineCount, 1) - txtlines.textFormat = Text.StyledText; - tryCompare(txtlines.lineCount, 3) - txtlines.textFormat = Text.RichText; - tryCompare(txtlines.lineCount, 3) + tryCompare(txtlines, 'lineCount', 1) + txtlines.textFormat = TextEdit.RichText; + tryCompare(txtlines, 'lineCount', 3) } } } |