diff options
author | Matthew Vogt <[email protected]> | 2012-02-16 14:43:03 +1000 |
---|---|---|
committer | Qt by Nokia <[email protected]> | 2012-02-24 04:51:31 +0100 |
commit | b855240b782395f94315f43ea3e7e182299fac48 (patch) | |
tree | bc594c04449be8cd14cd0ab0bb72dafc2be0ffb2 /tests/benchmarks/qml/binding | |
parent | 6a42a6e0a9a1abdda0d07a5a20b4ac7e45348684 (diff) |
Rename QDeclarative symbols to QQuick and QQml
Symbols beginning with QDeclarative are already exported
by the quick1 module.
Users can apply the bin/rename-qtdeclarative-symbols.sh
script to modify client code using the previous names of the
renamed symbols.
Task-number: QTBUG-23737
Change-Id: Ifaa482663767634931e8711a8e9bf6e404859e66
Reviewed-by: Martin Jones <[email protected]>
Diffstat (limited to 'tests/benchmarks/qml/binding')
-rw-r--r-- | tests/benchmarks/qml/binding/binding.pro | 11 | ||||
-rw-r--r-- | tests/benchmarks/qml/binding/data/creation.txt | 9 | ||||
-rw-r--r-- | tests/benchmarks/qml/binding/data/idproperty.txt | 9 | ||||
-rw-r--r-- | tests/benchmarks/qml/binding/data/localproperty.txt | 5 | ||||
-rw-r--r-- | tests/benchmarks/qml/binding/data/objectproperty.txt | 8 | ||||
-rw-r--r-- | tests/benchmarks/qml/binding/testtypes.cpp | 46 | ||||
-rw-r--r-- | tests/benchmarks/qml/binding/testtypes.h | 83 | ||||
-rw-r--r-- | tests/benchmarks/qml/binding/tst_binding.cpp | 188 |
8 files changed, 359 insertions, 0 deletions
diff --git a/tests/benchmarks/qml/binding/binding.pro b/tests/benchmarks/qml/binding/binding.pro new file mode 100644 index 0000000000..776c8390a3 --- /dev/null +++ b/tests/benchmarks/qml/binding/binding.pro @@ -0,0 +1,11 @@ +CONFIG += testcase +TEMPLATE = app +TARGET = tst_binding +QT += qml testlib +macx:CONFIG -= app_bundle + +SOURCES += tst_binding.cpp testtypes.cpp +HEADERS += testtypes.h + +# Define SRCDIR equal to test's source directory +DEFINES += SRCDIR=\\\"$$PWD\\\" diff --git a/tests/benchmarks/qml/binding/data/creation.txt b/tests/benchmarks/qml/binding/data/creation.txt new file mode 100644 index 0000000000..05704fa341 --- /dev/null +++ b/tests/benchmarks/qml/binding/data/creation.txt @@ -0,0 +1,9 @@ +import Test 1.0 + +MyQmlObject { + id: myObject + property int myValue: 1 + object: myObject + + result: ### +} diff --git a/tests/benchmarks/qml/binding/data/idproperty.txt b/tests/benchmarks/qml/binding/data/idproperty.txt new file mode 100644 index 0000000000..4e474ba49a --- /dev/null +++ b/tests/benchmarks/qml/binding/data/idproperty.txt @@ -0,0 +1,9 @@ +import Test 1.0 + +MyQmlObject { + id: myObject + + MyQmlObject { + result: ### + } +} diff --git a/tests/benchmarks/qml/binding/data/localproperty.txt b/tests/benchmarks/qml/binding/data/localproperty.txt new file mode 100644 index 0000000000..c7ca0efdb4 --- /dev/null +++ b/tests/benchmarks/qml/binding/data/localproperty.txt @@ -0,0 +1,5 @@ +import Test 1.0 + +MyQmlObject { + result: ### +} diff --git a/tests/benchmarks/qml/binding/data/objectproperty.txt b/tests/benchmarks/qml/binding/data/objectproperty.txt new file mode 100644 index 0000000000..06409f2dd1 --- /dev/null +++ b/tests/benchmarks/qml/binding/data/objectproperty.txt @@ -0,0 +1,8 @@ +import Test 1.0 + +MyQmlObject { + id: myObject + object: myObject + + result: ### +} diff --git a/tests/benchmarks/qml/binding/testtypes.cpp b/tests/benchmarks/qml/binding/testtypes.cpp new file mode 100644 index 0000000000..31af4f15b0 --- /dev/null +++ b/tests/benchmarks/qml/binding/testtypes.cpp @@ -0,0 +1,46 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** 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, Nokia gives you certain additional +** rights. These rights are described in the Nokia 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. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "testtypes.h" + +void registerTypes() +{ + qmlRegisterType<MyQmlObject>("Test", 1, 0, "MyQmlObject"); +} diff --git a/tests/benchmarks/qml/binding/testtypes.h b/tests/benchmarks/qml/binding/testtypes.h new file mode 100644 index 0000000000..03542ca24c --- /dev/null +++ b/tests/benchmarks/qml/binding/testtypes.h @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** 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, Nokia gives you certain additional +** rights. These rights are described in the Nokia 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. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef TESTTYPES_H +#define TESTTYPES_H + +#include <QtCore/qobject.h> +#include <QtQml/qqml.h> + +class MyQmlObject : public QObject +{ + Q_OBJECT + Q_PROPERTY(int result READ result WRITE setResult) + Q_PROPERTY(int value READ value WRITE setValue NOTIFY valueChanged) + Q_PROPERTY(MyQmlObject *object READ object WRITE setObject NOTIFY objectChanged) + Q_PROPERTY(QQmlListProperty<QObject> data READ data) + Q_CLASSINFO("DefaultProperty", "data") +public: + MyQmlObject() : m_result(0), m_value(0), m_object(0) {} + + int result() const { return m_result; } + void setResult(int r) { m_result = r; } + + int value() const { return m_value; } + void setValue(int v) { m_value = v; emit valueChanged(); } + + QQmlListProperty<QObject> data() { return QQmlListProperty<QObject>(this, m_data); } + + MyQmlObject *object() const { return m_object; } + void setObject(MyQmlObject *o) { m_object = o; emit objectChanged(); } + +signals: + void valueChanged(); + void objectChanged(); + +private: + QList<QObject *> m_data; + int m_result; + int m_value; + MyQmlObject *m_object; +}; +QML_DECLARE_TYPE(MyQmlObject); + +void registerTypes(); + +#endif // TESTTYPES_H diff --git a/tests/benchmarks/qml/binding/tst_binding.cpp b/tests/benchmarks/qml/binding/tst_binding.cpp new file mode 100644 index 0000000000..cd854e06e0 --- /dev/null +++ b/tests/benchmarks/qml/binding/tst_binding.cpp @@ -0,0 +1,188 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** 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, Nokia gives you certain additional +** rights. These rights are described in the Nokia 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. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <qtest.h> +#include <QQmlEngine> +#include <QQmlContext> +#include <QQmlComponent> +#include <QFile> +#include <QDebug> +#include "testtypes.h" + +class tst_binding : public QObject +{ + Q_OBJECT + +public: + tst_binding(); + virtual ~tst_binding(); + +public slots: + void initTestCase(); + void cleanupTestCase(); + +private slots: + void objectproperty_data(); + void objectproperty(); + void basicproperty_data(); + void basicproperty(); + void creation_data(); + void creation(); + +private: + QQmlEngine engine; + MyQmlObject tstObject; +}; + +tst_binding::tst_binding() +{ +} + +tst_binding::~tst_binding() +{ +} + +void tst_binding::initTestCase() +{ + registerTypes(); + engine.rootContext()->setContextProperty("tstObject", &tstObject); +} + +void tst_binding::cleanupTestCase() +{ +} + +#define COMPONENT(filename, binding) \ + QQmlComponent c(&engine); \ + { \ + QFile f(filename); \ + QVERIFY(f.open(QIODevice::ReadOnly)); \ + QByteArray data = f.readAll(); \ + data.replace("###", binding.toUtf8()); \ + c.setData(data, QUrl()); \ + QVERIFY(c.isReady()); \ + } + +void tst_binding::objectproperty_data() +{ + QTest::addColumn<QString>("file"); + QTest::addColumn<QString>("binding"); + + QTest::newRow("object.value") << SRCDIR "/data/objectproperty.txt" << "object.value"; + QTest::newRow("object.value + 10") << SRCDIR "/data/objectproperty.txt" << "object.value + 10"; +} + +void tst_binding::objectproperty() +{ + QFETCH(QString, file); + QFETCH(QString, binding); + + COMPONENT(file, binding); + + MyQmlObject object1; + MyQmlObject object2; + + MyQmlObject *object = qobject_cast<MyQmlObject *>(c.create()); + QVERIFY(object != 0); + object->setObject(&object2); + + QBENCHMARK { + object->setObject(&object1); + object->setObject(&object2); + } +} + +void tst_binding::basicproperty_data() +{ + QTest::addColumn<QString>("file"); + QTest::addColumn<QString>("binding"); + + QTest::newRow("value") << SRCDIR "/data/localproperty.txt" << "value"; + QTest::newRow("value + 10") << SRCDIR "/data/localproperty.txt" << "value + 10"; + QTest::newRow("value + value + 10") << SRCDIR "/data/localproperty.txt" << "value + value + 10"; + + QTest::newRow("myObject.value") << SRCDIR "/data/idproperty.txt" << "myObject.value"; + QTest::newRow("myObject.value + 10") << SRCDIR "/data/idproperty.txt" << "myObject.value + 10"; + QTest::newRow("myObject.value + myObject.value + 10") << SRCDIR "/data/idproperty.txt" << "myObject.value + myObject.value + 10"; +} + +void tst_binding::basicproperty() +{ + QFETCH(QString, file); + QFETCH(QString, binding); + + COMPONENT(file, binding); + + MyQmlObject *object = qobject_cast<MyQmlObject *>(c.create()); + QVERIFY(object != 0); + object->setValue(10); + + QBENCHMARK { + object->setValue(1); + } +} + +void tst_binding::creation_data() +{ + QTest::addColumn<QString>("file"); + QTest::addColumn<QString>("binding"); + + QTest::newRow("constant") << SRCDIR "/data/creation.txt" << "10"; + QTest::newRow("ownProperty") << SRCDIR "/data/creation.txt" << "myObject.value"; + QTest::newRow("declaredProperty") << SRCDIR "/data/creation.txt" << "myObject.myValue"; + QTest::newRow("contextProperty") << SRCDIR "/data/creation.txt" << "tstObject.value"; +} + +void tst_binding::creation() +{ + QFETCH(QString, file); + QFETCH(QString, binding); + + COMPONENT(file, binding); + + QBENCHMARK { + QObject *o = c.create(); + delete o; + } +} + +QTEST_MAIN(tst_binding) +#include "tst_binding.moc" |