diff options
Diffstat (limited to 'tests/auto/tools')
-rw-r--r-- | tests/auto/tools/moc/cstyle-enums.h | 4 | ||||
-rw-r--r-- | tests/auto/tools/moc/cxx11-enums.h | 22 | ||||
-rw-r--r-- | tests/auto/tools/moc/gadgetwithnoenums.h | 2 | ||||
-rw-r--r-- | tests/auto/tools/moc/namespaced-flags.h | 3 | ||||
-rw-r--r-- | tests/auto/tools/moc/tst_moc.cpp | 41 |
5 files changed, 55 insertions, 17 deletions
diff --git a/tests/auto/tools/moc/cstyle-enums.h b/tests/auto/tools/moc/cstyle-enums.h index a930fa1117..ce89878e97 100644 --- a/tests/auto/tools/moc/cstyle-enums.h +++ b/tests/auto/tools/moc/cstyle-enums.h @@ -39,8 +39,10 @@ class CStyleEnums { Q_GADGET public: - Q_ENUMS(Baz) typedef enum { Foo, Bar } Baz; + typedef enum { Foo2, Bar2 } Baz2; + Q_ENUM(Baz) + Q_ENUMS(Baz2) }; #endif // CSTYLE_ENUMS_H diff --git a/tests/auto/tools/moc/cxx11-enums.h b/tests/auto/tools/moc/cxx11-enums.h index 21d17d0039..32acb25515 100644 --- a/tests/auto/tools/moc/cxx11-enums.h +++ b/tests/auto/tools/moc/cxx11-enums.h @@ -40,11 +40,26 @@ class CXX11Enums { Q_GADGET public: - Q_ENUMS(EnumClass TypedEnum TypedEnumClass NormalEnum) enum class EnumClass { A0, A1, A2, A3 }; enum TypedEnum : char { B0, B1 , B2, B3 }; enum class TypedEnumClass : char { C0, C1, C2, C3 }; enum NormalEnum { D2 = 2, D3, D0 =0 , D1 }; + Q_ENUM(EnumClass) + Q_ENUM(TypedEnum) + Q_ENUM(TypedEnumClass) + Q_ENUM(NormalEnum) +}; + +// Also test the Q_ENUMS macro +class CXX11Enums2 +{ + Q_GADGET +public: + enum class EnumClass { A0, A1, A2, A3 }; + enum TypedEnum : char { B0, B1 , B2, B3 }; + enum class TypedEnumClass : char { C0, C1, C2, C3 }; + enum NormalEnum { D2 = 2, D3, D0 =0 , D1 }; + Q_ENUMS(EnumClass TypedEnum TypedEnumClass NormalEnum) }; #else @@ -58,5 +73,10 @@ public: enum NormalEnum { D2 = 2, D3, D0 =0 , D1 }; enum TypedEnum { B0, B1 , B2, B3 }; }; + +class CXX11Enums2 : public CXX11Enums +{ + Q_GADGET +}; #endif #endif // CXX11_ENUMS_H diff --git a/tests/auto/tools/moc/gadgetwithnoenums.h b/tests/auto/tools/moc/gadgetwithnoenums.h index a19b970ab9..6a515862de 100644 --- a/tests/auto/tools/moc/gadgetwithnoenums.h +++ b/tests/auto/tools/moc/gadgetwithnoenums.h @@ -47,10 +47,10 @@ public: class DerivedGadgetWithEnums : public GadgetWithNoEnums { Q_GADGET - Q_ENUMS( FooEnum ) public: enum FooEnum { FooValue }; + Q_ENUM( FooEnum ) DerivedGadgetWithEnums() {} ~DerivedGadgetWithEnums() {} }; diff --git a/tests/auto/tools/moc/namespaced-flags.h b/tests/auto/tools/moc/namespaced-flags.h index 2b63ed0ae1..9448176218 100644 --- a/tests/auto/tools/moc/namespaced-flags.h +++ b/tests/auto/tools/moc/namespaced-flags.h @@ -38,13 +38,14 @@ namespace Foo { class Bar : public QObject { Q_OBJECT - Q_FLAGS( Flags ) Q_PROPERTY( Flags flags READ flags WRITE setFlags ) public: explicit Bar( QObject * parent=0 ) : QObject( parent ), mFlags() {} enum Flag { Read=1, Write=2 }; Q_DECLARE_FLAGS( Flags, Flag ) + Q_FLAG(Flags) + void setFlags( Flags f ) { mFlags = f; } Flags flags() const { return mFlags; } diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp index 8e5de04718..2813da1ef7 100644 --- a/tests/auto/tools/moc/tst_moc.cpp +++ b/tests/auto/tools/moc/tst_moc.cpp @@ -75,6 +75,9 @@ #include "non-gadget-parent-class.h" #include "grand-parent-gadget-class.h" +Q_DECLARE_METATYPE(const QMetaObject*); + + QT_USE_NAMESPACE template <bool b> struct QTBUG_31218 {}; @@ -418,7 +421,7 @@ public: enum TestEnum { One, Two, Three }; - Q_ENUMS(TestEnum) + Q_ENUM(TestEnum) }; class PropertyUseClass : public QObject @@ -437,7 +440,7 @@ class EnumSourceClass : public QObject public: enum TestEnum { Value = 37 }; - Q_ENUMS(TestEnum) + Q_ENUM(TestEnum) }; class EnumUserClass : public QObject @@ -1142,12 +1145,18 @@ void tst_Moc::frameworkSearchPath() void tst_Moc::cstyleEnums() { const QMetaObject &obj = CStyleEnums::staticMetaObject; - QCOMPARE(obj.enumeratorCount(), 1); + QCOMPARE(obj.enumeratorCount(), 2); QMetaEnum metaEnum = obj.enumerator(0); QCOMPARE(metaEnum.name(), "Baz"); QCOMPARE(metaEnum.keyCount(), 2); QCOMPARE(metaEnum.key(0), "Foo"); QCOMPARE(metaEnum.key(1), "Bar"); + + QMetaEnum metaEnum2 = obj.enumerator(1); + QCOMPARE(metaEnum2.name(), "Baz2"); + QCOMPARE(metaEnum2.keyCount(), 2); + QCOMPARE(metaEnum2.key(0), "Foo2"); + QCOMPARE(metaEnum2.key(1), "Bar2"); } void tst_Moc::templateGtGt() @@ -1644,7 +1653,6 @@ class VersionTest : public QObject Q_OBJECT Q_PROPERTY(int prop1 READ foo) Q_PROPERTY(int prop2 READ foo REVISION 2) - Q_ENUMS(TestEnum); public: int foo() const { return 0; } @@ -1653,6 +1661,8 @@ public: Q_INVOKABLE Q_REVISION(4) void method2() {} enum TestEnum { One, Two }; + Q_ENUM(TestEnum); + public slots: void slot1() {} @@ -1677,7 +1687,6 @@ class VersionTestNotify : public QObject Q_OBJECT Q_PROPERTY(int prop1 READ foo NOTIFY fooChanged) Q_PROPERTY(int prop2 READ foo REVISION 2) - Q_ENUMS(TestEnum); public: int foo() const { return 0; } @@ -1686,6 +1695,7 @@ public: Q_INVOKABLE Q_REVISION(4) void method2() {} enum TestEnum { One, Two }; + Q_ENUM(TestEnum); public slots: void slot1() {} @@ -1915,19 +1925,26 @@ void tst_Moc::privateClass() void tst_Moc::cxx11Enums_data() { + QTest::addColumn<const QMetaObject *>("meta"); QTest::addColumn<QByteArray>("enumName"); QTest::addColumn<char>("prefix"); - QTest::newRow("EnumClass") << QByteArray("EnumClass") << 'A'; - QTest::newRow("TypedEnum") << QByteArray("TypedEnum") << 'B'; - QTest::newRow("TypedEnumClass") << QByteArray("TypedEnumClass") << 'C'; - QTest::newRow("NormalEnum") << QByteArray("NormalEnum") << 'D'; -} + const QMetaObject *meta1 = &CXX11Enums::staticMetaObject; + const QMetaObject *meta2 = &CXX11Enums2::staticMetaObject; + QTest::newRow("EnumClass") << meta1 << QByteArray("EnumClass") << 'A'; + QTest::newRow("EnumClass 2") << meta2 << QByteArray("EnumClass") << 'A'; + QTest::newRow("TypedEnum") << meta1 << QByteArray("TypedEnum") << 'B'; + QTest::newRow("TypedEnum 2") << meta2 << QByteArray("TypedEnum") << 'B'; + QTest::newRow("TypedEnumClass") << meta1 << QByteArray("TypedEnumClass") << 'C'; + QTest::newRow("TypedEnumClass 2") << meta2 << QByteArray("TypedEnumClass") << 'C'; + QTest::newRow("NormalEnum") << meta1 << QByteArray("NormalEnum") << 'D'; + QTest::newRow("NormalEnum 2") << meta2 << QByteArray("NormalEnum") << 'D'; +} void tst_Moc::cxx11Enums() { - const QMetaObject *meta = &CXX11Enums::staticMetaObject; + QFETCH(const QMetaObject *,meta); QCOMPARE(meta->enumeratorOffset(), 0); QFETCH(QByteArray, enumName); @@ -2535,8 +2552,6 @@ void tst_Moc::finalClasses() QCOMPARE(className, expected); } -Q_DECLARE_METATYPE(const QMetaObject*); - void tst_Moc::explicitOverrideControl_data() { QTest::addColumn<const QMetaObject*>("mo"); |