diff options
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/qml/scxmlqmlcpp/CMakeLists.txt | 27 | ||||
-rw-r--r-- | tests/auto/qml/scxmlqmlcpp/data/brokenstatemachine.scxml (renamed from tests/auto/qml/scxmlqmlcpp/brokenstatemachine.scxml) | 0 | ||||
-rw-r--r-- | tests/auto/qml/scxmlqmlcpp/data/stateMachineLoader.qml | 8 | ||||
-rw-r--r-- | tests/auto/qml/scxmlqmlcpp/data/statemachine.scxml (renamed from tests/auto/qml/scxmlqmlcpp/statemachine.scxml) | 0 | ||||
-rw-r--r-- | tests/auto/qml/scxmlqmlcpp/data/submachineA.scxml (renamed from tests/auto/qml/scxmlqmlcpp/submachineA.scxml) | 0 | ||||
-rw-r--r-- | tests/auto/qml/scxmlqmlcpp/data/submachineB.scxml (renamed from tests/auto/qml/scxmlqmlcpp/submachineB.scxml) | 0 | ||||
-rw-r--r-- | tests/auto/qml/scxmlqmlcpp/data/topmachine.scxml (renamed from tests/auto/qml/scxmlqmlcpp/topmachine.scxml) | 0 | ||||
-rw-r--r-- | tests/auto/qml/scxmlqmlcpp/tst_scxmlqmlcpp.cpp | 41 |
8 files changed, 51 insertions, 25 deletions
diff --git a/tests/auto/qml/scxmlqmlcpp/CMakeLists.txt b/tests/auto/qml/scxmlqmlcpp/CMakeLists.txt index 62e9f10..5436a4f 100644 --- a/tests/auto/qml/scxmlqmlcpp/CMakeLists.txt +++ b/tests/auto/qml/scxmlqmlcpp/CMakeLists.txt @@ -1,24 +1,31 @@ +# Collect test data +file(GLOB_RECURSE test_data_glob + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + data/*) +list(APPEND test_data ${test_data_glob}) + qt_internal_add_test(tst_scxmlqmlcpp SOURCES + ../../shared/util.cpp ../../shared/util.h tst_scxmlqmlcpp.cpp LIBRARIES Qt::Scxml Qt::ScxmlQmlPrivate Qt::CorePrivate Qt::TestPrivate + TESTDATA ${test_data} +) + +qt_internal_extend_target(tst_scxmlqmlcpp CONDITION ANDROID OR IOS + DEFINES + QT_QMLTEST_DATADIR=\\\":/data\\\" ) -qt_internal_add_resource(tst_scxmlqmlcpp "tst_compiled" - PREFIX - "/" - FILES - "submachineA.scxml" - "submachineB.scxml" - "topmachine.scxml" - "statemachine.scxml" - "brokenstatemachine.scxml" +qt_internal_extend_target(tst_scxmlqmlcpp CONDITION NOT ANDROID AND NOT IOS + DEFINES + QT_QMLTEST_DATADIR=\\\"${CMAKE_CURRENT_SOURCE_DIR}/data\\\" ) qt6_add_statecharts(tst_scxmlqmlcpp - topmachine.scxml + "data/topmachine.scxml" ) diff --git a/tests/auto/qml/scxmlqmlcpp/brokenstatemachine.scxml b/tests/auto/qml/scxmlqmlcpp/data/brokenstatemachine.scxml index 4864303..4864303 100644 --- a/tests/auto/qml/scxmlqmlcpp/brokenstatemachine.scxml +++ b/tests/auto/qml/scxmlqmlcpp/data/brokenstatemachine.scxml diff --git a/tests/auto/qml/scxmlqmlcpp/data/stateMachineLoader.qml b/tests/auto/qml/scxmlqmlcpp/data/stateMachineLoader.qml new file mode 100644 index 0000000..4014a6b --- /dev/null +++ b/tests/auto/qml/scxmlqmlcpp/data/stateMachineLoader.qml @@ -0,0 +1,8 @@ +import QtQuick +import QtScxml + +Item { + StateMachineLoader { + objectName: 'sml' + } +} diff --git a/tests/auto/qml/scxmlqmlcpp/statemachine.scxml b/tests/auto/qml/scxmlqmlcpp/data/statemachine.scxml index 3cf023e..3cf023e 100644 --- a/tests/auto/qml/scxmlqmlcpp/statemachine.scxml +++ b/tests/auto/qml/scxmlqmlcpp/data/statemachine.scxml diff --git a/tests/auto/qml/scxmlqmlcpp/submachineA.scxml b/tests/auto/qml/scxmlqmlcpp/data/submachineA.scxml index 0924b2e..0924b2e 100644 --- a/tests/auto/qml/scxmlqmlcpp/submachineA.scxml +++ b/tests/auto/qml/scxmlqmlcpp/data/submachineA.scxml diff --git a/tests/auto/qml/scxmlqmlcpp/submachineB.scxml b/tests/auto/qml/scxmlqmlcpp/data/submachineB.scxml index 0924b2e..0924b2e 100644 --- a/tests/auto/qml/scxmlqmlcpp/submachineB.scxml +++ b/tests/auto/qml/scxmlqmlcpp/data/submachineB.scxml diff --git a/tests/auto/qml/scxmlqmlcpp/topmachine.scxml b/tests/auto/qml/scxmlqmlcpp/data/topmachine.scxml index b733c6a..b733c6a 100644 --- a/tests/auto/qml/scxmlqmlcpp/topmachine.scxml +++ b/tests/auto/qml/scxmlqmlcpp/data/topmachine.scxml diff --git a/tests/auto/qml/scxmlqmlcpp/tst_scxmlqmlcpp.cpp b/tests/auto/qml/scxmlqmlcpp/tst_scxmlqmlcpp.cpp index 3e13621..c3834c9 100644 --- a/tests/auto/qml/scxmlqmlcpp/tst_scxmlqmlcpp.cpp +++ b/tests/auto/qml/scxmlqmlcpp/tst_scxmlqmlcpp.cpp @@ -26,6 +26,8 @@ ** ****************************************************************************/ +#include "../../shared/util.h" + #include <QtTest> #include <QtTest/private/qpropertytesthelper_p.h> #include <QtScxml/QScxmlStateMachine> @@ -39,12 +41,12 @@ #include <QtQml/QQmlComponent> #include <memory> -class tst_scxmlqmlcpp: public QObject +class tst_scxmlqmlcpp : public QQmlDataTest { Q_OBJECT private slots: - void initTestCase(); + void initTestCase() override; void eventConnectionStateMachineBinding(); void eventConnectionEventsBinding(); @@ -66,6 +68,7 @@ private: void tst_scxmlqmlcpp::initTestCase() { + QQmlDataTest::initTestCase(); m_stateMachine1.reset(QScxmlStateMachine::fromFile("no_real_file_needed")); m_stateMachine2.reset(QScxmlStateMachine::fromFile("no_real_file_needed")); } @@ -134,16 +137,13 @@ void tst_scxmlqmlcpp::stateMachineLoaderSourceStateMachineBinding() { // Test source and stateMachine together as they interact with each other - QUrl source1(QStringLiteral("qrc:///statemachine.scxml")); - QUrl source2(QStringLiteral("qrc:///topmachine.scxml")); + QUrl source1(testFileUrl("statemachine.scxml")); + QUrl source2(testFileUrl("topmachine.scxml")); // The 'setSource' of the statemachineloader assumes a valid qml context QQmlEngine engine; - QQmlComponent component(&engine); - component.setData( - "import QtQuick;\n" - "import QtScxml;\n" - "Item { StateMachineLoader { objectName: \'sml\'; } }", - QUrl()); + const QUrl smlUrl = testFileUrl("stateMachineLoader.qml"); + QQmlComponent component(&engine, smlUrl); + QVERIFY2(component.isReady(), qPrintable(component.errorString())); std::unique_ptr<QObject> root(component.create()); QScxmlStateMachineLoader *sml = qobject_cast<QScxmlStateMachineLoader*>(root->findChild<QObject*>("sml")); @@ -160,21 +160,32 @@ void tst_scxmlqmlcpp::stateMachineLoaderSourceStateMachineBinding() // -- StateMachineLoader::stateMachine // The statemachine can be set indirectly by setting the 'source' QSignalSpy smSpy(sml, &QScxmlStateMachineLoader::stateMachineChanged); - QUrl sourceNonexistent(QStringLiteral("qrc:///file_doesnt_exist.scxml")); - QUrl sourceBroken(QStringLiteral("qrc:///brokenstatemachine.scxml")); + QUrl sourceNonexistent(testFileUrl("file_doesnt_exist.scxml")); + QUrl sourceBroken(testFileUrl("brokenstatemachine.scxml")); QVERIFY(sml->stateMachine() != nullptr); QTest::ignoreMessage(QtWarningMsg, - "<Unknown File>:3:8: QML StateMachineLoader: Cannot open 'qrc:///file_doesnt_exist.scxml' for reading."); + qPrintable(smlUrl.toString() + ":5:5: QML StateMachineLoader: " + + "Cannot open '" + sourceNonexistent.toString() + "' for reading.")); sml->setSource(sourceNonexistent); QVERIFY(sml->stateMachine() == nullptr); QCOMPARE(smSpy.count(), 1); + + QString sourceBrokenNoScheme; + if (sourceBroken.scheme() == QStringLiteral("qrc")) + sourceBrokenNoScheme = QStringLiteral(":") + sourceBroken.path(); + else + sourceBrokenNoScheme = sourceBroken.toLocalFile(); QTest::ignoreMessage(QtWarningMsg, - "<Unknown File>:3:8: QML StateMachineLoader: :/brokenstatemachine.scxml:59:1: error: initial state 'working' not found for <scxml> element"); + qPrintable(smlUrl.toString() + ":5:5: QML StateMachineLoader: " + + sourceBrokenNoScheme + ":59:1: error: initial state 'working' " + + "not found for <scxml> element")); + QTest::ignoreMessage(QtWarningMsg, "SCXML document has errors"); QTest::ignoreMessage(QtWarningMsg, - "<Unknown File>:3:8: QML StateMachineLoader: Something went wrong while parsing 'qrc:///brokenstatemachine.scxml':\n"); + qPrintable(smlUrl.toString() + ":5:5: QML StateMachineLoader: Something " + + "went wrong while parsing '" + sourceBroken.toString() + "':\n")); sml->setSource(sourceBroken); QVERIFY(sml->stateMachine() == nullptr); QCOMPARE(smSpy.count(), 1); |