aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2023-07-27 15:10:31 +0200
committerUlf Hermann <ulf.hermann@qt.io>2023-08-18 14:26:04 +0200
commit0f23346d2a660404d40d02a2d101eb4fc21c8b02 (patch)
treecbff50164ae4220ddd2d5db8e3ad26136c89e1c6 /tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp
parent37655a6e95153a7647d7c62614d4a81d734973d3 (diff)
QmlCompiler: Allow construction of Date objects
We map Date to QDateTime and special-case its constructors. Task-number: QTBUG-111624 Change-Id: I0496f853613da3ccee9b6f6c4cf0adffa064f9f8 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp')
-rw-r--r--tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp b/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp
index a42491c12a..29a9e9c637 100644
--- a/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp
+++ b/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp
@@ -66,6 +66,7 @@ private slots:
void conversionDecrement();
void conversions();
void cppValueTypeList();
+ void dateConstruction();
void dateConversions();
void deadShoeSize();
void dialogButtonBox();
@@ -1243,6 +1244,44 @@ void tst_QmlCppCodegen::cppValueTypeList()
QCOMPARE(object->property("b").toDouble(), 13.5);
}
+void tst_QmlCppCodegen::dateConstruction()
+{
+ QQmlEngine engine;
+ QQmlComponent c(&engine, QUrl(u"qrc:/qt/qml/TestTypes/dateConstruction.qml"_s));
+ QVERIFY2(c.isReady(), qPrintable(c.errorString()));
+ QDateTime now = QDateTime::currentDateTime();
+ QScopedPointer<QObject> o(c.create());
+ QVERIFY(!o.isNull());
+ QVERIFY(o->property("now").value<QDateTime>().toMSecsSinceEpoch() >= now.toMSecsSinceEpoch());
+ QCOMPARE(o->property("now2"), o->property("now"));
+ QCOMPARE(o->property("fromString").value<QDateTime>(),
+ QDateTime(QDate(1995, 12, 17), QTime(3, 24), QTimeZone::LocalTime));
+ QCOMPARE(o->property("fromNumber").value<QDateTime>().toMSecsSinceEpoch(), 777);
+ QCOMPARE(o->property("fromPrimitive").value<QDateTime>().toMSecsSinceEpoch(), 57);
+ o->setObjectName("foo"_L1);
+ QCOMPARE(o->property("fromPrimitive").value<QDateTime>(),
+ QDateTime(QDate(1997, 2, 13), QTime(13, 4, 12), QTimeZone::LocalTime));
+
+ QCOMPARE(o->property("from2").value<QDateTime>(),
+ QDateTime(QDate(1996, 2, 1), QTime(), QTimeZone::LocalTime));
+ QCOMPARE(o->property("from3").value<QDateTime>(),
+ QDateTime(QDate(1996, 3, 3), QTime(), QTimeZone::LocalTime));
+ QCOMPARE(o->property("from4").value<QDateTime>(),
+ QDateTime(QDate(1996, 4, 4), QTime(5, 0), QTimeZone::LocalTime));
+ QCOMPARE(o->property("from5").value<QDateTime>(),
+ QDateTime(QDate(1996, 5, 5), QTime(6, 7), QTimeZone::LocalTime));
+ QCOMPARE(o->property("from6").value<QDateTime>(),
+ QDateTime(QDate(1996, 6, 6), QTime(7, 8, 9), QTimeZone::LocalTime));
+ QCOMPARE(o->property("from7").value<QDateTime>(),
+ QDateTime(QDate(1996, 7, 7), QTime(8, 9, 10, 11), QTimeZone::LocalTime));
+ QCOMPARE(o->property("from8").value<QDateTime>(),
+ QDateTime(QDate(1996, 8, 8), QTime(9, 10, 11, 12), QTimeZone::LocalTime));
+
+ QCOMPARE(o->property("withUnderflow").value<QDateTime>(),
+ QDateTime(QDate(-6, 7, 24), QTime(16, 51, 50, 990), QTimeZone::LocalTime));
+ QCOMPARE(o->property("invalid").value<QDateTime>(), QDateTime());
+}
+
void tst_QmlCppCodegen::dateConversions()
{
QQmlEngine engine;