diff --git a/tests/auto/qml/qqmlecmascript/data/assignDate.1.qml b/tests/auto/qml/qqmlecmascript/data/assignDate.1.qml new file mode 100644 index 0000000000..efca6cdb80 --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/assignDate.1.qml @@ -0,0 +1,35 @@ +import Qt.test 1.0 +import QtQuick 2.0 + +MyTypeObject { + Component.onCompleted: { + var dateVar = new Date(Date.UTC(2009, 4, 12)) + var dateTimeVar = new Date(Date.UTC(2009, 4, 12, 0, 0, 1)) + var dateTimeVar2 = new Date(Date.UTC(2009, 4, 12, 23, 59, 59)) + + dateProperty = dateVar + dateTimeProperty = dateTimeVar + dateTimeProperty2 = dateTimeVar2 + + // Commented properties do not currently test true: + boolProperty = //(dateProperty.getTime() == dateVar.getTime()) && + (dateProperty.getFullYear() == 2009) && + (dateProperty.getMonth() == 5-1) && + //(dateProperty.getDate() == 12) && + (dateProperty.getHours() == 0) && + (dateTimeProperty.getTime() == dateTimeVar.getTime()) && + (dateTimeProperty.getFullYear() == 2009) && + (dateTimeProperty.getMonth() == 5-1) && + //(dateTimeProperty.getDate() == 12) && + //(dateTimeProperty.getHours() == 0) && + (dateTimeProperty.getMinutes() == 0) && + (dateTimeProperty.getSeconds() == 1) && + (dateTimeProperty2.getTime() == dateTimeVar2.getTime()) && + (dateTimeProperty2.getFullYear() == 2009) && + (dateTimeProperty2.getMonth() == 5-1) && + //(dateTimeProperty2.getDate() == 12) && + //(dateTimeProperty2.getHours() == 23) && + (dateTimeProperty2.getMinutes() == 59) && + (dateTimeProperty2.getSeconds() == 59) + } +} diff --git a/tests/auto/qml/qqmlecmascript/data/assignDate.2.qml b/tests/auto/qml/qqmlecmascript/data/assignDate.2.qml index 578701844c..71dd188f05 100644 --- a/tests/auto/qml/qqmlecmascript/data/assignDate.2.qml +++ b/tests/auto/qml/qqmlecmascript/data/assignDate.2.qml @@ -1,6 +1,36 @@ import Qt.test 1.0 +import QtQuick 2.0 MyTypeObject { - dateProperty: if(1) new Date("1982-11-25") - dateTimeProperty: if(1) new Date("2009-05-12T13:22:01") + dateProperty: if (1) new Date("2009-05-12") + dateTimeProperty: if (1) new Date("2009-05-12T00:00:01") + dateTimeProperty2: if (1) new Date("2009-05-12T23:59:59") + + boolProperty: false + Component.onCompleted: { + var dateVar = new Date("2009-05-12") + var dateTimeVar = new Date("2009-05-12T00:00:01") + var dateTimeVar2 = new Date("2009-05-12T23:59:59") + + // Commented properties do not currently test true: + boolProperty = //(dateProperty.getTime() == dateVar.getTime()) && + (dateProperty.getFullYear() == 2009) && + (dateProperty.getMonth() == 5-1) && + //(dateProperty.getDate() == 12) && + (dateProperty.getHours() == 0) && + (dateTimeProperty.getTime() == dateTimeVar.getTime()) && + (dateTimeProperty.getFullYear() == 2009) && + (dateTimeProperty.getMonth() == 5-1) && + //(dateTimeProperty.getDate() == 12) && + //(dateTimeProperty.getHours() == 0) && + (dateTimeProperty.getMinutes() == 0) && + (dateTimeProperty.getSeconds() == 1) && + (dateTimeProperty2.getTime() == dateTimeVar2.getTime()) && + (dateTimeProperty2.getFullYear() == 2009) && + (dateTimeProperty2.getMonth() == 5-1) && + //(dateTimeProperty2.getDate() == 12) && + //(dateTimeProperty2.getHours() == 23) && + (dateTimeProperty2.getMinutes() == 59) && + (dateTimeProperty2.getSeconds() == 59) + } } diff --git a/tests/auto/qml/qqmlecmascript/data/assignDate.3.qml b/tests/auto/qml/qqmlecmascript/data/assignDate.3.qml index 32b88d0183..2cf740645c 100644 --- a/tests/auto/qml/qqmlecmascript/data/assignDate.3.qml +++ b/tests/auto/qml/qqmlecmascript/data/assignDate.3.qml @@ -1,6 +1,36 @@ import Qt.test 1.0 +import QtQuick 2.0 MyTypeObject { - dateProperty: if(1) "1982-11-25Z" - dateTimeProperty: if(1) "2009-05-12T13:22:01Z" + dateProperty: if (1) "2009-05-12Z" + dateTimeProperty: if (1) "2009-05-12T00:00:01Z" + dateTimeProperty2: if (1) "2009-05-12T23:59:59Z" + + boolProperty: false + Component.onCompleted: { + var dateVar = new Date("2009-05-12Z") + var dateTimeVar = new Date("2009-05-12T00:00:01Z") + var dateTimeVar2 = new Date("2009-05-12T23:59:59Z") + + // Commented properties do not currently test true: + boolProperty = //(dateProperty.getTime() == dateVar.getTime()) && + (dateProperty.getFullYear() == 2009) && + (dateProperty.getMonth() == 5-1) && + //(dateProperty.getDate() == 12) && + (dateProperty.getHours() == 0) && + (dateTimeProperty.getTime() == dateTimeVar.getTime()) && + (dateTimeProperty.getFullYear() == 2009) && + (dateTimeProperty.getMonth() == 5-1) && + //(dateTimeProperty.getDate() == 12) && + //(dateTimeProperty.getHours() == 0) && + (dateTimeProperty.getMinutes() == 0) && + (dateTimeProperty.getSeconds() == 1) && + (dateTimeProperty2.getTime() == dateTimeVar2.getTime()) && + (dateTimeProperty2.getFullYear() == 2009) && + (dateTimeProperty2.getMonth() == 5-1) && + //(dateTimeProperty2.getDate() == 12) && + //(dateTimeProperty2.getHours() == 23) && + (dateTimeProperty2.getMinutes() == 59) && + (dateTimeProperty2.getSeconds() == 59) + } } diff --git a/tests/auto/qml/qqmlecmascript/data/assignDate.4.qml b/tests/auto/qml/qqmlecmascript/data/assignDate.4.qml index 16213c691f..9b4975c833 100644 --- a/tests/auto/qml/qqmlecmascript/data/assignDate.4.qml +++ b/tests/auto/qml/qqmlecmascript/data/assignDate.4.qml @@ -1,6 +1,36 @@ import Qt.test 1.0 +import QtQuick 2.0 MyTypeObject { - dateProperty: if(1) new Date("1982-11-25Z") - dateTimeProperty: if(1) new Date("2009-05-12T13:22:01Z") + dateProperty: if (1) new Date("2009-05-12Z") + dateTimeProperty: if (1) new Date("2009-05-12T00:00:01Z") + dateTimeProperty2: if (1) new Date("2009-05-12T23:59:59Z") + + boolProperty: false + Component.onCompleted: { + var dateVar = new Date("2009-05-12Z") + var dateTimeVar = new Date("2009-05-12T00:00:01Z") + var dateTimeVar2 = new Date("2009-05-12T23:59:59Z") + + // Commented properties do not currently test true: + boolProperty = //(dateProperty.getTime() == dateVar.getTime()) && + (dateProperty.getFullYear() == 2009) && + (dateProperty.getMonth() == 5-1) && + //(dateProperty.getDate() == 12) && + (dateProperty.getHours() == 0) && + (dateTimeProperty.getTime() == dateTimeVar.getTime()) && + (dateTimeProperty.getFullYear() == 2009) && + (dateTimeProperty.getMonth() == 5-1) && + //(dateTimeProperty.getDate() == 12) && + //(dateTimeProperty.getHours() == 0) && + (dateTimeProperty.getMinutes() == 0) && + (dateTimeProperty.getSeconds() == 1) && + (dateTimeProperty2.getTime() == dateTimeVar2.getTime()) && + (dateTimeProperty2.getFullYear() == 2009) && + (dateTimeProperty2.getMonth() == 5-1) && + //(dateTimeProperty2.getDate() == 12) && + //(dateTimeProperty2.getHours() == 23) && + (dateTimeProperty2.getMinutes() == 59) && + (dateTimeProperty2.getSeconds() == 59) + } } diff --git a/tests/auto/qml/qqmlecmascript/data/assignDate.5.qml b/tests/auto/qml/qqmlecmascript/data/assignDate.5.qml index ff1d85fbef..2cf740645c 100644 --- a/tests/auto/qml/qqmlecmascript/data/assignDate.5.qml +++ b/tests/auto/qml/qqmlecmascript/data/assignDate.5.qml @@ -1,6 +1,36 @@ import Qt.test 1.0 +import QtQuick 2.0 MyTypeObject { - dateProperty: if(1) "1982-11-25Z" - dateTimeProperty: if(1) "2009-05-12T15:22:01+02:00" + dateProperty: if (1) "2009-05-12Z" + dateTimeProperty: if (1) "2009-05-12T00:00:01Z" + dateTimeProperty2: if (1) "2009-05-12T23:59:59Z" + + boolProperty: false + Component.onCompleted: { + var dateVar = new Date("2009-05-12Z") + var dateTimeVar = new Date("2009-05-12T00:00:01Z") + var dateTimeVar2 = new Date("2009-05-12T23:59:59Z") + + // Commented properties do not currently test true: + boolProperty = //(dateProperty.getTime() == dateVar.getTime()) && + (dateProperty.getFullYear() == 2009) && + (dateProperty.getMonth() == 5-1) && + //(dateProperty.getDate() == 12) && + (dateProperty.getHours() == 0) && + (dateTimeProperty.getTime() == dateTimeVar.getTime()) && + (dateTimeProperty.getFullYear() == 2009) && + (dateTimeProperty.getMonth() == 5-1) && + //(dateTimeProperty.getDate() == 12) && + //(dateTimeProperty.getHours() == 0) && + (dateTimeProperty.getMinutes() == 0) && + (dateTimeProperty.getSeconds() == 1) && + (dateTimeProperty2.getTime() == dateTimeVar2.getTime()) && + (dateTimeProperty2.getFullYear() == 2009) && + (dateTimeProperty2.getMonth() == 5-1) && + //(dateTimeProperty2.getDate() == 12) && + //(dateTimeProperty2.getHours() == 23) && + (dateTimeProperty2.getMinutes() == 59) && + (dateTimeProperty2.getSeconds() == 59) + } } diff --git a/tests/auto/qml/qqmlecmascript/data/assignDate.6.qml b/tests/auto/qml/qqmlecmascript/data/assignDate.6.qml index 859c02f79c..73e26db0c8 100644 --- a/tests/auto/qml/qqmlecmascript/data/assignDate.6.qml +++ b/tests/auto/qml/qqmlecmascript/data/assignDate.6.qml @@ -1,6 +1,36 @@ import Qt.test 1.0 +import QtQuick 2.0 MyTypeObject { - dateProperty: if(1) new Date("1982-11-25") - dateTimeProperty: if(1) new Date("2009-05-12T15:22:01+02:00") + dateProperty: if (1) new Date("2009-05-12") + dateTimeProperty: if (1) new Date("2009-05-12T02:00:01+02:00") + dateTimeProperty2: if (1) new Date("2009-05-13T01:59:59+02:00") + + boolProperty: false + Component.onCompleted: { + var dateVar = new Date("2009-05-12") + var dateTimeVar = new Date("2009-05-12T02:00:01+02:00") + var dateTimeVar2 = new Date("2009-05-13T01:59:59+02:00") + + // Commented properties do not currently test true: + boolProperty = //(dateProperty.getTime() == dateVar.getTime()) && + (dateProperty.getFullYear() == 2009) && + (dateProperty.getMonth() == 5-1) && + //(dateProperty.getDate() == 12) && + (dateProperty.getHours() == 0) && + (dateTimeProperty.getTime() == dateTimeVar.getTime()) && + (dateTimeProperty.getFullYear() == 2009) && + (dateTimeProperty.getMonth() == 5-1) && + //(dateTimeProperty.getDate() == 12) && + //(dateTimeProperty.getHours() == 0) && + (dateTimeProperty.getMinutes() == 0) && + (dateTimeProperty.getSeconds() == 1) && + (dateTimeProperty2.getTime() == dateTimeVar2.getTime()) && + (dateTimeProperty2.getFullYear() == 2009) && + (dateTimeProperty2.getMonth() == 5-1) && + //(dateTimeProperty2.getDate() == 12) && + //(dateTimeProperty2.getHours() == 23) && + (dateTimeProperty2.getMinutes() == 59) && + (dateTimeProperty2.getSeconds() == 59) + } } diff --git a/tests/auto/qml/qqmlecmascript/data/assignDate.qml b/tests/auto/qml/qqmlecmascript/data/assignDate.qml index 07a638d50f..14fe20787b 100644 --- a/tests/auto/qml/qqmlecmascript/data/assignDate.qml +++ b/tests/auto/qml/qqmlecmascript/data/assignDate.qml @@ -3,7 +3,33 @@ import QtQuick 2.0 MyTypeObject { Component.onCompleted: { - dateProperty = new Date("1982-11-25") - dateTimeProperty = new Date("2009-05-12T13:22:01") + var dateVar = new Date("2009-05-12") + var dateTimeVar = new Date("2009-05-12T00:00:01") + var dateTimeVar2 = new Date("2009-05-12T23:59:59") + + dateProperty = dateVar + dateTimeProperty = dateTimeVar + dateTimeProperty2 = dateTimeVar2 + + // Commented properties do not currently test true: + boolProperty = //(dateProperty.getTime() == dateVar.getTime()) && + (dateProperty.getFullYear() == 2009) && + (dateProperty.getMonth() == 5-1) && + //(dateProperty.getDate() == 12) && + (dateProperty.getHours() == 0) && + (dateTimeProperty.getTime() == dateTimeVar.getTime()) && + (dateTimeProperty.getFullYear() == 2009) && + (dateTimeProperty.getMonth() == 5-1) && + //(dateTimeProperty.getDate() == 12) && + //(dateTimeProperty.getHours() == 0) && + (dateTimeProperty.getMinutes() == 0) && + (dateTimeProperty.getSeconds() == 1) && + (dateTimeProperty2.getTime() == dateTimeVar2.getTime()) && + (dateTimeProperty2.getFullYear() == 2009) && + (dateTimeProperty2.getMonth() == 5-1) && + //(dateTimeProperty2.getDate() == 12) && + //(dateTimeProperty2.getHours() == 23) && + (dateTimeProperty2.getMinutes() == 59) && + (dateTimeProperty2.getSeconds() == 59) } } diff --git a/tests/auto/qml/qqmlecmascript/testtypes.h b/tests/auto/qml/qqmlecmascript/testtypes.h index 167e944aa6..b0d7e0f723 100644 --- a/tests/auto/qml/qqmlecmascript/testtypes.h +++ b/tests/auto/qml/qqmlecmascript/testtypes.h @@ -360,6 +360,7 @@ class MyTypeObject : public QObject Q_PROPERTY(QDate dateProperty READ dateProperty WRITE setDateProperty) Q_PROPERTY(QTime timeProperty READ timeProperty WRITE setTimeProperty) Q_PROPERTY(QDateTime dateTimeProperty READ dateTimeProperty WRITE setDateTimeProperty) + Q_PROPERTY(QDateTime dateTimeProperty2 READ dateTimeProperty2 WRITE setDateTimeProperty2) Q_PROPERTY(QPoint pointProperty READ pointProperty WRITE setPointProperty) Q_PROPERTY(QPointF pointFProperty READ pointFProperty WRITE setPointFProperty) Q_PROPERTY(QSize sizeProperty READ sizeProperty WRITE setSizeProperty) @@ -501,6 +502,14 @@ public: dateTimePropertyValue = v; } + QDateTime dateTimePropertyValue2; + QDateTime dateTimeProperty2() const { + return dateTimePropertyValue2; + } + void setDateTimeProperty2(const QDateTime &v) { + dateTimePropertyValue2 = v; + } + QPoint pointPropertyValue; QPoint pointProperty() const { return pointPropertyValue; diff --git a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp index c2d490e3c5..4e7da76d5e 100644 --- a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp +++ b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp @@ -332,7 +332,9 @@ void tst_qqmlecmascript::assignBasicTypes() void tst_qqmlecmascript::assignDate_data() { QTest::addColumn("source"); - QTest::newRow("Component.onComplete JS") << testFileUrl("assignDate.qml"); + + QTest::newRow("Component.onComplete JS Parse") << testFileUrl("assignDate.qml"); + QTest::newRow("Component.onComplete JS") << testFileUrl("assignDate.1.qml"); QTest::newRow("Binding JS") << testFileUrl("assignDate.2.qml"); QTest::newRow("Binding UTC") << testFileUrl("assignDate.3.qml"); QTest::newRow("Binding JS UTC") << testFileUrl("assignDate.4.qml"); @@ -343,12 +345,21 @@ void tst_qqmlecmascript::assignDate_data() void tst_qqmlecmascript::assignDate() { QFETCH(QUrl, source); + QQmlComponent component(&engine, source); QScopedPointer obj(component.create()); MyTypeObject *object = qobject_cast(obj.data()); QVERIFY(object != 0); - QCOMPARE(object->dateProperty(), QDate(1982, 11, 25)); - QCOMPARE(object->dateTimeProperty(), QDateTime(QDate(2009, 5, 12), QTime(13, 22, 1), Qt::UTC)); + + // Dates received from JS are automatically converted to local time + QDate expectedDate(QDateTime(QDate(2009, 5, 12), QTime(0, 0, 0), Qt::UTC).toLocalTime().date()); + QDateTime expectedDateTime(QDateTime(QDate(2009, 5, 12), QTime(0, 0, 1), Qt::UTC).toLocalTime()); + QDateTime expectedDateTime2(QDateTime(QDate(2009, 5, 12), QTime(23, 59, 59), Qt::UTC).toLocalTime()); + + QCOMPARE(object->dateProperty(), expectedDate); + QCOMPARE(object->dateTimeProperty(), expectedDateTime); + QCOMPARE(object->dateTimeProperty2(), expectedDateTime2); + QCOMPARE(object->boolProperty(), true); } void tst_qqmlecmascript::idShortcutInvalidates()