diff options
Diffstat (limited to 'tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp')
-rw-r--r-- | tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp index 266cd2a52d..837a9d2604 100644 --- a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp +++ b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp @@ -46,6 +46,7 @@ #include <QtCore/qdebug.h> #include <QtCore/qfileinfo.h> #include <QtCore/qdir.h> +#include <QSignalSpy> #include <private/qqmlproperty_p.h> #include <private/qqmlmetatype_p.h> @@ -176,6 +177,8 @@ private slots: void crash1(); void crash2(); + void globalEnums(); + private: QQmlEngine engine; void testType(const QString& qml, const QString& type, const QString& error); @@ -2285,6 +2288,64 @@ void tst_qqmllanguage::remoteLoadCrash() delete o; } +// QTBUG-20639 +void tst_qqmllanguage::globalEnums() +{ + qRegisterMetaType<MyEnum1Class::EnumA>(); + qRegisterMetaType<MyEnum2Class::EnumB>(); + qRegisterMetaType<Qt::TextFormat>(); + + QQmlComponent component(&engine, TEST_FILE("globalEnums.qml")); + + QObject *o = component.create(); + QVERIFY(o != 0); + + MyEnum1Class *enum1Class = o->findChild<MyEnum1Class *>(QString::fromLatin1("enum1Class")); + QVERIFY(enum1Class != 0); + QVERIFY(enum1Class->getValue() == -1); + + MyEnumDerivedClass *enum2Class = o->findChild<MyEnumDerivedClass *>(QString::fromLatin1("enumDerivedClass")); + QVERIFY(enum2Class != 0); + QVERIFY(enum2Class->getValueA() == -1); + QVERIFY(enum2Class->getValueB() == -1); + QVERIFY(enum2Class->getValueC() == 0); + QVERIFY(enum2Class->getValueD() == 0); + QVERIFY(enum2Class->getValueE() == -1); + QVERIFY(enum2Class->getValueE2() == -1); + + QVERIFY(enum2Class->property("aValue") == 0); + QVERIFY(enum2Class->property("bValue") == 0); + QVERIFY(enum2Class->property("cValue") == 0); + QVERIFY(enum2Class->property("dValue") == 0); + QVERIFY(enum2Class->property("eValue") == 0); + QVERIFY(enum2Class->property("e2Value") == 0); + + QSignalSpy signalA(enum2Class, SIGNAL(valueAChanged(MyEnum1Class::EnumA))); + QSignalSpy signalB(enum2Class, SIGNAL(valueBChanged(MyEnum2Class::EnumB))); + + QMetaObject::invokeMethod(o, "setEnumValues"); + + QVERIFY(enum1Class->getValue() == MyEnum1Class::A_13); + QVERIFY(enum2Class->getValueA() == MyEnum1Class::A_11); + QVERIFY(enum2Class->getValueB() == MyEnum2Class::B_37); + QVERIFY(enum2Class->getValueC() == Qt::RichText); + QVERIFY(enum2Class->getValueD() == Qt::ElideMiddle); + QVERIFY(enum2Class->getValueE() == MyEnum2Class::E_14); + QVERIFY(enum2Class->getValueE2() == MyEnum2Class::E_76); + + QVERIFY(signalA.count() == 1); + QVERIFY(signalB.count() == 1); + + QVERIFY(enum2Class->property("aValue") == MyEnum1Class::A_11); + QVERIFY(enum2Class->property("bValue") == 37); + QVERIFY(enum2Class->property("cValue") == 1); + QVERIFY(enum2Class->property("dValue") == 2); + QVERIFY(enum2Class->property("eValue") == 14); + QVERIFY(enum2Class->property("e2Value") == 76); + + delete o; +} + QTEST_MAIN(tst_qqmllanguage) #include "tst_qqmllanguage.moc" |