// QTBUG-17324 void tst_qdeclarativemoduleplugin::importsMixedQmlCppPlugin() { QDeclarativeEngine engine; engine.addImportPath(QLatin1String(SRCDIR) + QDir::separator() + QLatin1String("imports")); { QDeclarativeComponent component(&engine, TEST_FILE("data/importsMixedQmlCppPlugin.qml")); QObject *o = component.create(); QVERIFY(o != 0); QCOMPARE(o->property("test").toBool(), true); delete o; } { QDeclarativeComponent component(&engine, TEST_FILE("data/importsMixedQmlCppPlugin.2.qml")); QObject *o = component.create(); QVERIFY(o != 0); QCOMPARE(o->property("test").toBool(), true); QCOMPARE(o->property("test2").toBool(), true); delete o; } }
void tst_qdeclarativemoduleplugin::versionNotInstalled() { QFETCH(QString, file); QFETCH(QString, errorFile); QDeclarativeEngine engine; engine.addImportPath(QLatin1String(SRCDIR) + QDir::separator() + QLatin1String("imports")); QDeclarativeComponent component(&engine, TEST_FILE(file)); VERIFY_ERRORS(errorFile.toLatin1().constData()); }
void tst_qdeclarativelistreference::variantToList() { QDeclarativeEngine engine; QDeclarativeComponent component(&engine, TEST_FILE("variantToList.qml")); QObject *o = component.create(); QVERIFY(o); QVERIFY(o->property("value").userType() == qMetaTypeId<QDeclarativeListReference>()); QCOMPARE(o->property("test").toInt(), 1); delete o; }
void tst_qdeclarativemoduleplugin::importsPlugin21() { QDeclarativeEngine engine; engine.addImportPath(QLatin1String(SRCDIR) + QDir::separator() + QLatin1String("imports")); QTest::ignoreMessage(QtWarningMsg, "plugin2.1 created"); QTest::ignoreMessage(QtWarningMsg, "import2.1 worked"); QDeclarativeComponent component(&engine, TEST_FILE("data/works21.qml")); foreach (QDeclarativeError err, component.errors()) qWarning() << err; VERIFY_ERRORS(0); QObject *object = component.create(); QVERIFY(object != 0); QCOMPARE(object->property("value").toInt(),123); delete object; }
void tst_qdeclarativemoduleplugin::implicitQmldir() { QFETCH(QString, directory); QFETCH(QString, file); QFETCH(QString, errorFile); QString importPath = QLatin1String(SRCDIR) + QDir::separator() + QLatin1String("data") + QDir::separator() + directory; QString fileName = QLatin1String("data") + QDir::separator() + directory + QDir::separator() + file; QString errorFileName = directory + QDir::separator() + errorFile; QUrl testFileUrl = TEST_FILE(fileName); QDeclarativeEngine engine; engine.addImportPath(importPath); QDeclarativeComponent component(&engine, testFileUrl); QList<QDeclarativeError> errors = component.errors(); VERIFY_ERRORS(errorFileName.toLatin1().constData()); QTest::ignoreMessage(QtWarningMsg, "QDeclarativeComponent: Component is not ready"); QObject *obj = component.create(); QVERIFY(!obj); delete obj; }
void tst_qdeclarativemoduleplugin::importPluginWithQmlFile() { QString path = QLatin1String(SRCDIR) + QDir::separator() + QLatin1String("imports"); // QTBUG-16885: adding an import path with a lower-case "c:" causes assert failure // (this only happens if the plugin includes pure QML files) #ifdef Q_OS_WIN QVERIFY(path.at(0).isUpper() && path.at(1) == QLatin1Char(':')); path = path.at(0).toLower() + path.mid(1); #endif QDeclarativeEngine engine; engine.addImportPath(path); QDeclarativeComponent component(&engine, TEST_FILE("data/pluginWithQmlFile.qml")); foreach (QDeclarativeError err, component.errors()) qWarning() << err; VERIFY_ERRORS(0); QObject *object = component.create(); QVERIFY(object != 0); delete object; }
void tst_qdeclarativelistreference::engineTypes() { QDeclarativeEngine engine; QDeclarativeComponent component(&engine, TEST_FILE("engineTypes.qml")); QObject *o = component.create(); QVERIFY(o); QDeclarativeProperty p1(o, QLatin1String("myList")); QVERIFY(p1.propertyTypeCategory() == QDeclarativeProperty::Normal); QDeclarativeProperty p2(o, QLatin1String("myList"), engine.rootContext()); QVERIFY(p2.propertyTypeCategory() == QDeclarativeProperty::List); QVariant v = p2.read(); QVERIFY(v.userType() == qMetaTypeId<QDeclarativeListReference>()); QDeclarativeListReference ref = qvariant_cast<QDeclarativeListReference>(v); QVERIFY(ref.count() == 2); QVERIFY(ref.listElementType()); QVERIFY(ref.listElementType() != &QObject::staticMetaObject); delete o; }
void tst_qdeclarativemoduleplugin::incorrectPluginCase() { QDeclarativeEngine engine; engine.addImportPath(QLatin1String(SRCDIR) + QDir::separator() + QLatin1String("imports")); QDeclarativeComponent component(&engine, TEST_FILE("data/incorrectCase.qml")); QList<QDeclarativeError> errors = component.errors(); QCOMPARE(errors.count(), 1); #if defined(Q_OS_MAC) || defined(Q_OS_WIN32) #if defined(Q_OS_MAC) QString libname = "libPluGin.dylib"; #elif defined(Q_OS_WIN32) QString libname = "PluGin.dll"; #endif QString expectedError = QLatin1String("plugin cannot be loaded for module \"com.nokia.WrongCase\": File name case mismatch for \"") + QFileInfo(__FILE__).absoluteDir().filePath("imports/com/nokia/WrongCase/" + libname) + QLatin1String("\""); #else QString expectedError = QLatin1String("module \"com.nokia.WrongCase\" plugin \"PluGin\" not found"); #endif QCOMPARE(errors.at(0).description(), expectedError); }
inline QUrl TEST_FILE(const char *filename) { return TEST_FILE(QLatin1String(filename)); }