diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2020-12-18 16:03:11 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2020-12-18 17:29:15 +0100 |
commit | b9f77cfaf7d2de84a6039d9a599671bd7f6218b7 (patch) | |
tree | 31f98ddce6d4115058fe3867f4534025d908ec4a /tests | |
parent | 6f181768a3147bbfa9a33cf2c05453365693f5b9 (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')
-rw-r--r-- | tests/auto/qml/qjsprimitivevalue/tst_qjsprimitivevalue.cpp | 40 |
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" |