diff options
Diffstat (limited to 'tests/auto/tools/moc/tst_moc.cpp')
-rw-r--r-- | tests/auto/tools/moc/tst_moc.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp index 622255a640..f60ab112ed 100644 --- a/tests/auto/tools/moc/tst_moc.cpp +++ b/tests/auto/tools/moc/tst_moc.cpp @@ -72,6 +72,7 @@ #endif #include "cxx11-enums.h" #include "cxx11-final-classes.h" +#include "cxx11-explicit-override-control.h" QT_USE_NAMESPACE @@ -546,6 +547,8 @@ private slots: void privateSignalConnection(); void finalClasses_data(); void finalClasses(); + void explicitOverrideControl_data(); + void explicitOverrideControl(); signals: void sigWithUnsignedArg(unsigned foo); @@ -2253,6 +2256,43 @@ void tst_Moc::finalClasses() QCOMPARE(className, expected); } +Q_DECLARE_METATYPE(const QMetaObject*); + +void tst_Moc::explicitOverrideControl_data() +{ + QTest::addColumn<const QMetaObject*>("mo"); + +#define ADD(x) QTest::newRow(#x) << &x::staticMetaObject + ADD(ExplicitOverrideControlFinalQt); + ADD(ExplicitOverrideControlFinalCxx11); + ADD(ExplicitOverrideControlSealed); + ADD(ExplicitOverrideControlOverrideQt); + ADD(ExplicitOverrideControlOverrideCxx11); + ADD(ExplicitOverrideControlFinalQtOverrideQt); + ADD(ExplicitOverrideControlFinalCxx11OverrideCxx11); + ADD(ExplicitOverrideControlSealedOverride); +#undef ADD +} + +void tst_Moc::explicitOverrideControl() +{ + QFETCH(const QMetaObject*, mo); + + QVERIFY(mo); + QCOMPARE(mo->indexOfMethod("pureSlot0()"), mo->methodOffset() + 0); + QCOMPARE(mo->indexOfMethod("pureSlot1()"), mo->methodOffset() + 1); + QCOMPARE(mo->indexOfMethod("pureSlot2()"), mo->methodOffset() + 2); + QCOMPARE(mo->indexOfMethod("pureSlot3()"), mo->methodOffset() + 3); +#if 0 // moc doesn't support volatile slots + QCOMPARE(mo->indexOfMethod("pureSlot4()"), mo->methodOffset() + 4); + QCOMPARE(mo->indexOfMethod("pureSlot5()"), mo->methodOffset() + 5); + QCOMPARE(mo->indexOfMethod("pureSlot6()"), mo->methodOffset() + 6); + QCOMPARE(mo->indexOfMethod("pureSlot7()"), mo->methodOffset() + 7); + QCOMPARE(mo->indexOfMethod("pureSlot8()"), mo->methodOffset() + 8); + QCOMPARE(mo->indexOfMethod("pureSlot9()"), mo->methodOffset() + 9); +#endif +} + QTEST_MAIN(tst_Moc) #include "tst_moc.moc" |