diff options
Diffstat (limited to 'tests/auto/core/qivisimulationengine/tst_qivisimulationengine.cpp')
-rw-r--r-- | tests/auto/core/qivisimulationengine/tst_qivisimulationengine.cpp | 68 |
1 files changed, 67 insertions, 1 deletions
diff --git a/tests/auto/core/qivisimulationengine/tst_qivisimulationengine.cpp b/tests/auto/core/qivisimulationengine/tst_qivisimulationengine.cpp index 18784ad..79e149a 100644 --- a/tests/auto/core/qivisimulationengine/tst_qivisimulationengine.cpp +++ b/tests/auto/core/qivisimulationengine/tst_qivisimulationengine.cpp @@ -1,4 +1,4 @@ -/**************************************************************************** +/**************************************************************************** ** ** Copyright (C) 2019 Luxoft Sweden AB ** Copyright (C) 2018 Pelagicore AG @@ -34,6 +34,9 @@ #include <QQmlContext> #include <QQmlComponent> #include <QScopedPointer> +#include <QJsonDocument> + +#include <private/qivisimulationglobalobject_p.h> class BaseClass : public QObject { @@ -237,9 +240,17 @@ class tst_QIviSimulationEngine : public QObject { Q_OBJECT + QVariant parseJson(const QString &json, QString &error) const; + private Q_SLOTS: void testUsageInCorrectEngine(); + //QIviSimulationEngine + void testOverrideEnvVariables(); + void testLoadSimulationData_data(); + void testLoadSimulationData(); + + //QML integration void testPropertyRead_data(); void testPropertyRead(); void testPropertyReadDerived_data(); @@ -264,6 +275,16 @@ private Q_SLOTS: void testMultipleInstances(); }; +QVariant tst_QIviSimulationEngine::parseJson(const QString &json, QString& error) const +{ + QJsonParseError pe; + QVariantMap data = QJsonDocument::fromJson(json.toUtf8(), &pe).toVariant().toMap(); + if (pe.error != QJsonParseError::NoError) + error = pe.errorString(); + + return data; +} + void tst_QIviSimulationEngine::testUsageInCorrectEngine() { QIviSimulationEngine engine; @@ -290,6 +311,51 @@ void tst_QIviSimulationEngine::testUsageInCorrectEngine() QCOMPARE(testObject.propertyInBase(), -1); } +void tst_QIviSimulationEngine::testOverrideEnvVariables() +{ + qputenv("QTIVI_SIMULATION_OVERRIDE", "testEngine=test.qml;testEngine=invalidQml=;overrideTest=:/simple.qml"); + qputenv("QTIVI_SIMULATION_DATA_OVERRIDE", "testEngine=test.json;testEngine=invalid=;overrideTest=:/simple.json"); + QIviSimulationEngine engine(QStringLiteral("overrideTest")); + + QTest::ignoreMessage(QtWarningMsg, "Ignoring malformed override: File does not exist: 'test.json'"); + QTest::ignoreMessage(QtWarningMsg, "Ignoring malformed override: 'testEngine=invalid='"); + QTest::ignoreMessage(QtWarningMsg, "Ignoring malformed override: File does not exist: 'test.qml'"); + QTest::ignoreMessage(QtWarningMsg, "Ignoring malformed override: 'testEngine=invalidQml='"); + + QTest::ignoreMessage(QtWarningMsg, "Detected matching simulation data override: overrideTest=:/simple.json"); + engine.loadSimulationData(QStringLiteral("invalid.json")); + + auto globalObject = engine.rootContext()->contextProperty(QStringLiteral("IviSimulator")).value<QIviSimulationGlobalObject*>(); + QVariant simulationData = globalObject->simulationData(); + QVERIFY(simulationData.isValid()); + + QTest::ignoreMessage(QtWarningMsg, "Detected matching simulation override: overrideTest=qrc:/simple.qml"); + engine.loadSimulation(QStringLiteral("invalid.qml")); +} + +void tst_QIviSimulationEngine::testLoadSimulationData_data() +{ + QTest::addColumn<QString>("simulationData"); + QTest::addColumn<QStringList>("expectedErrors"); + QTest::newRow("no such file") << "no-file.json" << QStringList("Cannot open the simulation data file no-file.json:*"); + QTest::newRow("invalid json") << ":/invalid-data.json" << QStringList({ "Error parsing the simulation data in :/invalid-data.json: unterminated array", "Error context:\n.*" }); + QTest::newRow("valid json") << ":/simple.json" << QStringList(); +} + +void tst_QIviSimulationEngine::testLoadSimulationData() +{ + QFETCH(QString, simulationData); + QFETCH(QStringList, expectedErrors); + + QIviSimulationEngine engine(QStringLiteral("loadingTest")); + for (const QString &error : expectedErrors) + QTest::ignoreMessage(QtCriticalMsg, QRegularExpression(error)); + engine.loadSimulationData(simulationData); + + auto globalObject = engine.rootContext()->contextProperty(QStringLiteral("IviSimulator")).value<QIviSimulationGlobalObject*>(); + QCOMPARE(globalObject->simulationData().isValid(), expectedErrors.isEmpty()); +} + void tst_QIviSimulationEngine::testPropertyRead_data() { QTest::addColumn<QByteArray>("property"); |