diff options
-rw-r--r-- | doc/src/declarative/globalobject.qdoc | 31 | ||||
-rw-r--r-- | doc/src/declarative/qmlreference.qdoc | 5 | ||||
-rw-r--r-- | doc/src/declarative/tutorial3.qdoc | 2 | ||||
-rw-r--r-- | src/declarative/qml/qmlengine.cpp | 33 | ||||
-rw-r--r-- | src/declarative/util/qmlbind.cpp | 2 | ||||
-rw-r--r-- | tests/auto/declarative/qmlqt/data/darker.qml | 8 | ||||
-rw-r--r-- | tests/auto/declarative/qmlqt/data/enums.qml | 9 | ||||
-rw-r--r-- | tests/auto/declarative/qmlqt/data/hsla.qml | 11 | ||||
-rw-r--r-- | tests/auto/declarative/qmlqt/data/lighter.qml | 7 | ||||
-rw-r--r-- | tests/auto/declarative/qmlqt/data/point.qml | 9 | ||||
-rw-r--r-- | tests/auto/declarative/qmlqt/data/rect.qml | 9 | ||||
-rw-r--r-- | tests/auto/declarative/qmlqt/data/rgba.qml | 10 | ||||
-rw-r--r-- | tests/auto/declarative/qmlqt/data/size.qml | 11 | ||||
-rw-r--r-- | tests/auto/declarative/qmlqt/data/tint.qml | 9 | ||||
-rw-r--r-- | tests/auto/declarative/qmlqt/data/vector.qml | 8 | ||||
-rw-r--r-- | tests/auto/declarative/qmlqt/qmlqt.pro | 9 | ||||
-rw-r--r-- | tests/auto/declarative/qmlqt/tst_qmlqt.cpp | 264 |
17 files changed, 391 insertions, 46 deletions
diff --git a/doc/src/declarative/globalobject.qdoc b/doc/src/declarative/globalobject.qdoc index e327047..f1d440f 100644 --- a/doc/src/declarative/globalobject.qdoc +++ b/doc/src/declarative/globalobject.qdoc @@ -92,34 +92,9 @@ This function returns a Rect with the top-left corner at \c x,\c y and the speci \section3 Qt.point(int x, int y) This function returns a Point with the specified \c x and \c y coordinates. \section3 Qt.size(int width, int height) -returns as Size with the specified width and height. -\section3 Qt.vector(real x, real y, real z) - This function is intended for use inside QML only. In C++ just create a - QVector3D as usual. - - This function takes three numeric components and combines them into a - QVector3D value that can be used with any property that takes a - QVector3D argument. The following QML code: - - \code - transform: Rotation { - id: rotation - origin.x: Container.width / 2; - axis: vector(0, 1, 1) - } - \endcode - - is equivalent to: - - \code - transform: Rotation { - id: rotation - origin.x: Container.width / 2; - axis.x: 0; axis.y: 1; axis.z: 0 - } - \endcode - - +This function returns as Size with the specified width and height. +\section3 Qt.vector3d(real x, real y, real z) +This function returns a Vector3D with the specified x, y and z. \section2 Functions The Qt object also contains the following miscellaneous functions which expose Qt functionality for use in QML. diff --git a/doc/src/declarative/qmlreference.qdoc b/doc/src/declarative/qmlreference.qdoc index a56813c..f17e9d7 100644 --- a/doc/src/declarative/qmlreference.qdoc +++ b/doc/src/declarative/qmlreference.qdoc @@ -83,9 +83,4 @@ \list \o \l {elements}{QML Elements} \endlist - - \section1 Deprecated - \list - \o \l {tutorials-declarative-contacts.html}{Tutorial: 'Introduction to QML'} - \endlist */ diff --git a/doc/src/declarative/tutorial3.qdoc b/doc/src/declarative/tutorial3.qdoc index 1e67eee..290b535 100644 --- a/doc/src/declarative/tutorial3.qdoc +++ b/doc/src/declarative/tutorial3.qdoc @@ -38,7 +38,7 @@ This is equivalent to writing the two transitions separately. The \l ParallelAnimation element makes sure that the two types of animations (number and color) start at the same time. We could also run them one after the other by using \l SequentialAnimation instead. -For more details on states and transitions, see \l {states-transitions}{States and Transitions}. +For more details on states and transitions, see \l {QML States}. [Previous: \l {Tutorial 2 - QML Component}] [\l {Tutorial}] diff --git a/src/declarative/qml/qmlengine.cpp b/src/declarative/qml/qmlengine.cpp index 07296d9..7242a1d 100644 --- a/src/declarative/qml/qmlengine.cpp +++ b/src/declarative/qml/qmlengine.cpp @@ -666,7 +666,7 @@ QScriptValue QmlEnginePrivate::createQmlObject(QScriptContext *ctxt, QScriptEngi QScriptValue QmlEnginePrivate::vector(QScriptContext *ctxt, QScriptEngine *engine) { - if(ctxt->argumentCount() < 3) + if(ctxt->argumentCount() != 3) return engine->nullValue(); qsreal x = ctxt->argument(0).toNumber(); qsreal y = ctxt->argument(1).toNumber(); @@ -677,41 +677,54 @@ QScriptValue QmlEnginePrivate::vector(QScriptContext *ctxt, QScriptEngine *engin QScriptValue QmlEnginePrivate::rgba(QScriptContext *ctxt, QScriptEngine *engine) { int argCount = ctxt->argumentCount(); - if(argCount < 3) + if(argCount < 3 || argCount > 4) return engine->nullValue(); qsreal r = ctxt->argument(0).toNumber(); qsreal g = ctxt->argument(1).toNumber(); qsreal b = ctxt->argument(2).toNumber(); qsreal a = (argCount == 4) ? ctxt->argument(3).toNumber() : 1; + + if (r < 0 || r > 1 || g < 0 || g > 1 || b < 0 || b > 1 || a < 0 || a > 1) + return engine->nullValue(); + return qScriptValueFromValue(engine, qVariantFromValue(QColor::fromRgbF(r, g, b, a))); } QScriptValue QmlEnginePrivate::hsla(QScriptContext *ctxt, QScriptEngine *engine) { int argCount = ctxt->argumentCount(); - if(argCount < 3) + if(argCount < 3 || argCount > 4) return engine->nullValue(); qsreal h = ctxt->argument(0).toNumber(); qsreal s = ctxt->argument(1).toNumber(); qsreal l = ctxt->argument(2).toNumber(); qsreal a = (argCount == 4) ? ctxt->argument(3).toNumber() : 1; + + if (h < 0 || h > 1 || s < 0 || s > 1 || l < 0 || l > 1 || a < 0 || a > 1) + return engine->nullValue(); + return qScriptValueFromValue(engine, qVariantFromValue(QColor::fromHslF(h, s, l, a))); } QScriptValue QmlEnginePrivate::rect(QScriptContext *ctxt, QScriptEngine *engine) { - if(ctxt->argumentCount() < 4) + if(ctxt->argumentCount() != 4) return engine->nullValue(); + qsreal x = ctxt->argument(0).toNumber(); qsreal y = ctxt->argument(1).toNumber(); qsreal w = ctxt->argument(2).toNumber(); qsreal h = ctxt->argument(3).toNumber(); + + if (w < 0 || h < 0) + return engine->nullValue(); + return qScriptValueFromValue(engine, qVariantFromValue(QRectF(x, y, w, h))); } QScriptValue QmlEnginePrivate::point(QScriptContext *ctxt, QScriptEngine *engine) { - if(ctxt->argumentCount() < 2) + if(ctxt->argumentCount() != 2) return engine->nullValue(); qsreal x = ctxt->argument(0).toNumber(); qsreal y = ctxt->argument(1).toNumber(); @@ -720,7 +733,7 @@ QScriptValue QmlEnginePrivate::point(QScriptContext *ctxt, QScriptEngine *engine QScriptValue QmlEnginePrivate::size(QScriptContext *ctxt, QScriptEngine *engine) { - if(ctxt->argumentCount() < 2) + if(ctxt->argumentCount() != 2) return engine->nullValue(); qsreal w = ctxt->argument(0).toNumber(); qsreal h = ctxt->argument(1).toNumber(); @@ -729,7 +742,7 @@ QScriptValue QmlEnginePrivate::size(QScriptContext *ctxt, QScriptEngine *engine) QScriptValue QmlEnginePrivate::lighter(QScriptContext *ctxt, QScriptEngine *engine) { - if(ctxt->argumentCount() < 1) + if(ctxt->argumentCount() != 1) return engine->nullValue(); QVariant v = ctxt->argument(0).toVariant(); QColor color; @@ -748,7 +761,7 @@ QScriptValue QmlEnginePrivate::lighter(QScriptContext *ctxt, QScriptEngine *engi QScriptValue QmlEnginePrivate::darker(QScriptContext *ctxt, QScriptEngine *engine) { - if(ctxt->argumentCount() < 1) + if(ctxt->argumentCount() != 1) return engine->nullValue(); QVariant v = ctxt->argument(0).toVariant(); QColor color; @@ -767,7 +780,7 @@ QScriptValue QmlEnginePrivate::darker(QScriptContext *ctxt, QScriptEngine *engin QScriptValue QmlEnginePrivate::playSound(QScriptContext *ctxt, QScriptEngine *engine) { - if (ctxt->argumentCount() < 1) + if (ctxt->argumentCount() != 1) return engine->undefinedValue(); QUrl url(ctxt->argument(0).toString()); @@ -799,7 +812,7 @@ QScriptValue QmlEnginePrivate::desktopOpenUrl(QScriptContext *ctxt, QScriptEngin QScriptValue QmlEnginePrivate::tint(QScriptContext *ctxt, QScriptEngine *engine) { - if(ctxt->argumentCount() < 2) + if(ctxt->argumentCount() != 2) return engine->nullValue(); //get color QVariant v = ctxt->argument(0).toVariant(); diff --git a/src/declarative/util/qmlbind.cpp b/src/declarative/util/qmlbind.cpp index eadad08..de6d48a 100644 --- a/src/declarative/util/qmlbind.cpp +++ b/src/declarative/util/qmlbind.cpp @@ -85,8 +85,6 @@ QML_DEFINE_TYPE(Qt,4,6,(QT_VERSION&0x00ff00)>>8,Binding,QmlBind) If the binding target or binding property is changed, the bound value is immediately pushed onto the new target. - - \sa {qmlforcpp}{Qt Declarative Markup Language For C++ Programmers} */ /*! \internal diff --git a/tests/auto/declarative/qmlqt/data/darker.qml b/tests/auto/declarative/qmlqt/data/darker.qml new file mode 100644 index 0000000..6369e8f --- /dev/null +++ b/tests/auto/declarative/qmlqt/data/darker.qml @@ -0,0 +1,8 @@ +import Qt 4.6 + +Object { + property var test1: Qt.darker(Qt.rgba(1, 0.8, 0.3)) + property var test2: Qt.darker() + property var test3: Qt.darker(Qt.rgba(1, 0.8, 0.3), 10) +} + diff --git a/tests/auto/declarative/qmlqt/data/enums.qml b/tests/auto/declarative/qmlqt/data/enums.qml new file mode 100644 index 0000000..f87886e --- /dev/null +++ b/tests/auto/declarative/qmlqt/data/enums.qml @@ -0,0 +1,9 @@ +import Qt 4.6 + +Object { + property int test1: Qt.Key_Escape + property int test2: Qt.DescendingOrder + property int test3: Qt.ElideMiddle + property int test4: Qt.AlignRight +} + diff --git a/tests/auto/declarative/qmlqt/data/hsla.qml b/tests/auto/declarative/qmlqt/data/hsla.qml new file mode 100644 index 0000000..fedb56a --- /dev/null +++ b/tests/auto/declarative/qmlqt/data/hsla.qml @@ -0,0 +1,11 @@ +import Qt 4.6 + +Object { + property color test1: Qt.hsla(1, 0, 0, 0.8); + property color test2: Qt.hsla(1, 0.5, 0.3); + property color test3: Qt.hsla(1, 1); + property color test4: Qt.hsla(1, 1, 1, 1, 1); + property color test5: Qt.hsla(1.2, 1, 1); + property color test6: Qt.hsla(-0.1, 1, 1); +} + diff --git a/tests/auto/declarative/qmlqt/data/lighter.qml b/tests/auto/declarative/qmlqt/data/lighter.qml new file mode 100644 index 0000000..6c888e7 --- /dev/null +++ b/tests/auto/declarative/qmlqt/data/lighter.qml @@ -0,0 +1,7 @@ +import Qt 4.6 + +Object { + property var test1: Qt.lighter(Qt.rgba(1, 0.8, 0.3)) + property var test2: Qt.lighter() + property var test3: Qt.lighter(Qt.rgba(1, 0.8, 0.3), 10) +} diff --git a/tests/auto/declarative/qmlqt/data/point.qml b/tests/auto/declarative/qmlqt/data/point.qml new file mode 100644 index 0000000..582cb00 --- /dev/null +++ b/tests/auto/declarative/qmlqt/data/point.qml @@ -0,0 +1,9 @@ +import Qt 4.6 + +Object { + property var test1: Qt.point(19, 34); + property var test2: Qt.point(-3, 109.2); + property var test3: Qt.point(-3); + property var test4: Qt.point(-3, 109.2, 1); +} + diff --git a/tests/auto/declarative/qmlqt/data/rect.qml b/tests/auto/declarative/qmlqt/data/rect.qml new file mode 100644 index 0000000..53d8c38 --- /dev/null +++ b/tests/auto/declarative/qmlqt/data/rect.qml @@ -0,0 +1,9 @@ +import Qt 4.6 + +Object { + property var test1: Qt.rect(10, 13, 100, 109) + property var test2: Qt.rect(-10, 13, 100, 109.6) + property var test3: Qt.rect(10, 13); + property var test4: Qt.rect(10, 13, 100, 109, 10) + property var test5: Qt.rect(10, 13, 100, -109) +} diff --git a/tests/auto/declarative/qmlqt/data/rgba.qml b/tests/auto/declarative/qmlqt/data/rgba.qml new file mode 100644 index 0000000..3fdfe2c --- /dev/null +++ b/tests/auto/declarative/qmlqt/data/rgba.qml @@ -0,0 +1,10 @@ +import Qt 4.6 + +Object { + property color test1: Qt.rgba(1, 0, 0, 0.8); + property color test2: Qt.rgba(1, 0.5, 0.3); + property color test3: Qt.rgba(1, 1); + property color test4: Qt.rgba(1, 1, 1, 1, 1); + property color test5: Qt.rgba(1.2, 1, 1); + property color test6: Qt.rgba(-0.1, 1, 1); +} diff --git a/tests/auto/declarative/qmlqt/data/size.qml b/tests/auto/declarative/qmlqt/data/size.qml new file mode 100644 index 0000000..f0d2e81 --- /dev/null +++ b/tests/auto/declarative/qmlqt/data/size.qml @@ -0,0 +1,11 @@ +import Qt 4.6 + +Object { + property var test1: Qt.size(19, 34); + property var test2: Qt.size(3, 109.2); + property var test3: Qt.size(-3, 10); + property var test4: Qt.size(3); + property var test5: Qt.size(3, 109.2, 1); +} + + diff --git a/tests/auto/declarative/qmlqt/data/tint.qml b/tests/auto/declarative/qmlqt/data/tint.qml new file mode 100644 index 0000000..31e67ba --- /dev/null +++ b/tests/auto/declarative/qmlqt/data/tint.qml @@ -0,0 +1,9 @@ +import Qt 4.6 + +Object { + property color test1: Qt.tint("red", "blue"); + property color test2: Qt.tint(Qt.rgba(1, 0, 0), Qt.rgba(0, 0, 0, 0)); + property color test3: Qt.tint("red", Qt.rgba(0, 0, 1, 0.5)); // XXX - what should this be? + property color test4: Qt.tint("red", Qt.rgba(0, 0, 1, 0.5), 10); + property color test5: Qt.tint("red") +} diff --git a/tests/auto/declarative/qmlqt/data/vector.qml b/tests/auto/declarative/qmlqt/data/vector.qml new file mode 100644 index 0000000..b879bd6 --- /dev/null +++ b/tests/auto/declarative/qmlqt/data/vector.qml @@ -0,0 +1,8 @@ +import Qt 4.6 + +Object { + property var test1: Qt.vector3d(1, 0, 0.9); + property var test2: Qt.vector3d(102, -10, -982.1); + property var test3: Qt.vector3d(102, -10); + property var test4: Qt.vector3d(102, -10, -982.1, 10); +} diff --git a/tests/auto/declarative/qmlqt/qmlqt.pro b/tests/auto/declarative/qmlqt/qmlqt.pro new file mode 100644 index 0000000..5e79ea6 --- /dev/null +++ b/tests/auto/declarative/qmlqt/qmlqt.pro @@ -0,0 +1,9 @@ +load(qttest_p4) +contains(QT_CONFIG,declarative): QT += declarative +SOURCES += tst_qmlqt.cpp +macx:CONFIG -= app_bundle + +DEFINES += SRCDIR=\\\"$$PWD\\\" + +# QMAKE_CXXFLAGS = -fprofile-arcs -ftest-coverage +# LIBS += -lgcov diff --git a/tests/auto/declarative/qmlqt/tst_qmlqt.cpp b/tests/auto/declarative/qmlqt/tst_qmlqt.cpp new file mode 100644 index 0000000..10402ae --- /dev/null +++ b/tests/auto/declarative/qmlqt/tst_qmlqt.cpp @@ -0,0 +1,264 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** 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, 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. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <qtest.h> +#include <QDebug> +#include <QmlEngine> +#include <QFileInfo> +#include <QmlComponent> +#include <QDir> +#include <QVector3D> + +class tst_qmlqt : public QObject +{ + Q_OBJECT +public: + tst_qmlqt() {} + +private slots: + void enums(); + void rgba(); + void hsla(); + void rect(); + void point(); + void size(); + void vector(); + void lighter(); + void darker(); + void tint(); + void playSound(); + void openUrlExternally(); + +private: + QmlEngine engine; +}; + +inline QUrl TEST_FILE(const QString &filename) +{ + return QUrl::fromLocalFile(QLatin1String(SRCDIR) + QLatin1String("/data/") + filename); +} + +void tst_qmlqt::enums() +{ + QmlComponent component(&engine, TEST_FILE("enums.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("test1").toInt(), (int)Qt::Key_Escape); + QCOMPARE(object->property("test2").toInt(), (int)Qt::DescendingOrder); + QCOMPARE(object->property("test3").toInt(), (int)Qt::ElideMiddle); + QCOMPARE(object->property("test4").toInt(), (int)Qt::AlignRight); + + delete object; +} + +void tst_qmlqt::rgba() +{ + QmlComponent component(&engine, TEST_FILE("rgba.qml")); + + QString warning1 = component.url().toString() + ":6: Unable to assign null to QColor"; + QString warning2 = component.url().toString() + ":7: Unable to assign null to QColor"; + QString warning3 = component.url().toString() + ":8: Unable to assign null to QColor"; + QString warning4 = component.url().toString() + ":9: Unable to assign null to QColor"; + QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1)); + QTest::ignoreMessage(QtWarningMsg, qPrintable(warning2)); + QTest::ignoreMessage(QtWarningMsg, qPrintable(warning3)); + QTest::ignoreMessage(QtWarningMsg, qPrintable(warning4)); + + QObject *object = component.create(); + QVERIFY(object != 0); + + + QCOMPARE(qvariant_cast<QColor>(object->property("test1")), QColor::fromRgbF(1, 0, 0, 0.8)); + QCOMPARE(qvariant_cast<QColor>(object->property("test2")), QColor::fromRgbF(1, 0.5, 0.3, 1)); + QCOMPARE(qvariant_cast<QColor>(object->property("test3")), QColor()); + QCOMPARE(qvariant_cast<QColor>(object->property("test4")), QColor()); + QCOMPARE(qvariant_cast<QColor>(object->property("test5")), QColor()); + QCOMPARE(qvariant_cast<QColor>(object->property("test6")), QColor()); + + delete object; +} + +void tst_qmlqt::hsla() +{ + QmlComponent component(&engine, TEST_FILE("hsla.qml")); + + QString warning1 = component.url().toString() + ":6: Unable to assign null to QColor"; + QString warning2 = component.url().toString() + ":7: Unable to assign null to QColor"; + QString warning3 = component.url().toString() + ":8: Unable to assign null to QColor"; + QString warning4 = component.url().toString() + ":9: Unable to assign null to QColor"; + QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1)); + QTest::ignoreMessage(QtWarningMsg, qPrintable(warning2)); + QTest::ignoreMessage(QtWarningMsg, qPrintable(warning3)); + QTest::ignoreMessage(QtWarningMsg, qPrintable(warning4)); + + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(qvariant_cast<QColor>(object->property("test1")), QColor::fromHslF(1, 0, 0, 0.8)); + QCOMPARE(qvariant_cast<QColor>(object->property("test2")), QColor::fromHslF(1, 0.5, 0.3, 1)); + QCOMPARE(qvariant_cast<QColor>(object->property("test3")), QColor()); + QCOMPARE(qvariant_cast<QColor>(object->property("test4")), QColor()); + QCOMPARE(qvariant_cast<QColor>(object->property("test5")), QColor()); + QCOMPARE(qvariant_cast<QColor>(object->property("test6")), QColor()); + + delete object; +} + +void tst_qmlqt::rect() +{ + QmlComponent component(&engine, TEST_FILE("rect.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(qvariant_cast<QRectF>(object->property("test1")), QRectF(10, 13, 100, 109)); + QCOMPARE(qvariant_cast<QRectF>(object->property("test2")), QRectF(-10, 13, 100, 109.6)); + QCOMPARE(qvariant_cast<QRectF>(object->property("test3")), QRectF()); + QCOMPARE(qvariant_cast<QRectF>(object->property("test4")), QRectF()); + QCOMPARE(qvariant_cast<QRectF>(object->property("test5")), QRectF()); + + delete object; +} + +void tst_qmlqt::point() +{ + QmlComponent component(&engine, TEST_FILE("point.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(qvariant_cast<QPointF>(object->property("test1")), QPointF(19, 34)); + QCOMPARE(qvariant_cast<QPointF>(object->property("test2")), QPointF(-3, 109.2)); + QCOMPARE(qvariant_cast<QPointF>(object->property("test3")), QPointF()); + QCOMPARE(qvariant_cast<QPointF>(object->property("test4")), QPointF()); + + delete object; +} + +void tst_qmlqt::size() +{ + QmlComponent component(&engine, TEST_FILE("size.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(qvariant_cast<QSizeF>(object->property("test1")), QSizeF(19, 34)); + QCOMPARE(qvariant_cast<QSizeF>(object->property("test2")), QSizeF(3, 109.2)); + QCOMPARE(qvariant_cast<QSizeF>(object->property("test3")), QSizeF(-3, 10)); + QCOMPARE(qvariant_cast<QSizeF>(object->property("test4")), QSizeF()); + QCOMPARE(qvariant_cast<QSizeF>(object->property("test5")), QSizeF()); + + delete object; +} + +void tst_qmlqt::vector() +{ + QmlComponent component(&engine, TEST_FILE("vector.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(qvariant_cast<QVector3D>(object->property("test1")), QVector3D(1, 0, 0.9)); + QCOMPARE(qvariant_cast<QVector3D>(object->property("test2")), QVector3D(102, -10, -982.1)); + QCOMPARE(qvariant_cast<QVector3D>(object->property("test3")), QVector3D()); + QCOMPARE(qvariant_cast<QVector3D>(object->property("test4")), QVector3D()); + + delete object; +} + +void tst_qmlqt::lighter() +{ + QmlComponent component(&engine, TEST_FILE("lighter.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(qvariant_cast<QColor>(object->property("test1")), QColor::fromRgbF(1, 0.8, 0.3).lighter()); + QCOMPARE(qvariant_cast<QColor>(object->property("test2")), QColor()); + QCOMPARE(qvariant_cast<QColor>(object->property("test3")), QColor()); + + delete object; +} + +void tst_qmlqt::darker() +{ + QmlComponent component(&engine, TEST_FILE("darker.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(qvariant_cast<QColor>(object->property("test1")), QColor::fromRgbF(1, 0.8, 0.3).darker()); + QCOMPARE(qvariant_cast<QColor>(object->property("test2")), QColor()); + QCOMPARE(qvariant_cast<QColor>(object->property("test3")), QColor()); + + delete object; +} + +void tst_qmlqt::tint() +{ + QmlComponent component(&engine, TEST_FILE("tint.qml")); + + QString warning1 = component.url().toString() + ":7: Unable to assign null to QColor"; + QString warning2 = component.url().toString() + ":8: Unable to assign null to QColor"; + QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1)); + QTest::ignoreMessage(QtWarningMsg, qPrintable(warning2)); + + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(qvariant_cast<QColor>(object->property("test1")), QColor::fromRgbF(0, 0, 1)); + QCOMPARE(qvariant_cast<QColor>(object->property("test2")), QColor::fromRgbF(1, 0, 0)); + // Fails due to QT-2424 + QCOMPARE(qvariant_cast<QColor>(object->property("test3")), QColor::fromRgbF(1, 0, 0)); + QCOMPARE(qvariant_cast<QColor>(object->property("test4")), QColor()); + QCOMPARE(qvariant_cast<QColor>(object->property("test5")), QColor()); + + delete object; +} + +void tst_qmlqt::playSound() +{ + QEXPECT_FAIL("", "How do we test this?", Abort); +} + +void tst_qmlqt::openUrlExternally() +{ + QEXPECT_FAIL("", "How do we test this?", Abort); +} + +QTEST_MAIN(tst_qmlqt) + +#include "tst_qmlqt.moc" |