aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2020-12-18 16:03:11 +0100
committerUlf Hermann <ulf.hermann@qt.io>2020-12-18 17:29:15 +0100
commitb9f77cfaf7d2de84a6039d9a599671bd7f6218b7 (patch)
tree31f98ddce6d4115058fe3867f4534025d908ec4a /tests/auto/qml
parent6f181768a3147bbfa9a33cf2c05453365693f5b9 (diff)
QJSPrimitiveValue: Add a toVariant() method and ctor from QVariant
This is rather handy. Without it, we have to go through either QJSValue or QJSManagedValue, which causes much greater overhead. Change-Id: I40e2ecb6e2005f80c8f52b5e9a59028b3984eea4 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'tests/auto/qml')
-rw-r--r--tests/auto/qml/qjsprimitivevalue/tst_qjsprimitivevalue.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/auto/qml/qjsprimitivevalue/tst_qjsprimitivevalue.cpp b/tests/auto/qml/qjsprimitivevalue/tst_qjsprimitivevalue.cpp
index b957e7a18b..5189ea4b94 100644
--- a/tests/auto/qml/qjsprimitivevalue/tst_qjsprimitivevalue.cpp
+++ b/tests/auto/qml/qjsprimitivevalue/tst_qjsprimitivevalue.cpp
@@ -40,6 +40,8 @@ private slots:
void operators_data();
void operators();
+ void toFromVariant();
+
private:
QJSEngine engine;
@@ -221,6 +223,44 @@ void tst_QJSPrimitiveValue::operators()
doTestForAllOperators(&engine, lhs, "foo" + rhs.toString());
}
+void tst_QJSPrimitiveValue::toFromVariant()
+{
+ for (const auto &operand : operands) {
+ const QVariant var = operand.toVariant();
+ switch (operand.type()) {
+ case QJSPrimitiveValue::Undefined:
+ QVERIFY(!var.isValid());
+ break;
+ case QJSPrimitiveValue::Null:
+ QCOMPARE(var.typeId(), QMetaType::Nullptr);
+ break;
+ case QJSPrimitiveValue::Boolean:
+ QCOMPARE(var.typeId(), QMetaType::Bool);
+ QCOMPARE(var.toBool(), operand.toBoolean());
+ break;
+ case QJSPrimitiveValue::Integer:
+ QCOMPARE(var.typeId(), QMetaType::Int);
+ QCOMPARE(var.toInt(), operand.toInteger());
+ break;
+ case QJSPrimitiveValue::Double:
+ QCOMPARE(var.typeId(), QMetaType::Double);
+ QCOMPARE(var.toDouble(), operand.toDouble());
+ break;
+ case QJSPrimitiveValue::String:
+ QCOMPARE(var.typeId(), QMetaType::QString);
+ QCOMPARE(var.toString(), operand.toString());
+ break;
+ }
+
+ QJSPrimitiveValue fromVar(var);
+ QCOMPARE(fromVar.type(), operand.type());
+ if (operand.type() == QJSPrimitiveValue::Double && std::isnan(operand.toDouble()))
+ QVERIFY(fromVar != operand);
+ else
+ QCOMPARE(fromVar, operand);
+ }
+}
+
QTEST_MAIN(tst_QJSPrimitiveValue)
#include "tst_qjsprimitivevalue.moc"