diff options
Diffstat (limited to 'tests/auto/corelib')
-rw-r--r-- | tests/auto/corelib/kernel/qmetamethod/tst_qmetamethod.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/auto/corelib/kernel/qmetamethod/tst_qmetamethod.cpp b/tests/auto/corelib/kernel/qmetamethod/tst_qmetamethod.cpp index 03c76aba5d..942f075723 100644 --- a/tests/auto/corelib/kernel/qmetamethod/tst_qmetamethod.cpp +++ b/tests/auto/corelib/kernel/qmetamethod/tst_qmetamethod.cpp @@ -52,6 +52,8 @@ private slots: void returnMetaType(); void parameterMetaType(); + + void parameterTypeName(); }; struct CustomType { }; @@ -632,6 +634,12 @@ void tst_QMetaMethod::method() QCOMPARE(QMetaType::fromName(method.typeName()), QMetaType::fromName(returnTypeName)); } + // check that parameterNames and parameterTypeName agree + const auto methodParmaterTypes = method.parameterTypes(); + for (int i = 0; i< methodParmaterTypes.size(); ++i) { + QCOMPARE(methodParmaterTypes[i], method.parameterTypeName(i)); + } + if (method.parameterTypes() != parameterTypeNames) { // QMetaMethod should always produce semantically equivalent typenames QList<QByteArray> actualTypeNames = method.parameterTypes(); @@ -839,5 +847,24 @@ void tst_QMetaMethod::parameterMetaType() } +void tst_QMetaMethod::parameterTypeName() +{ + auto mo = MyTestClass::staticMetaObject; + const auto normalized = QMetaObject::normalizedSignature("doStuff(int, float, MyGadget)"); + const int idx = mo.indexOfSlot(normalized); + QMetaMethod mm = mo.method(idx); + { + // check invalid indices + QVERIFY(mm.parameterTypeName(-1).isEmpty()); + QVERIFY(mm.parameterTypeName(3).isEmpty()); + } + { + QCOMPARE(mm.parameterTypeName(0), QByteArray("int")); + QCOMPARE(mm.parameterTypeName(1), QByteArray("float")); + QCOMPARE(mm.parameterTypeName(2), QByteArray("MyGadget")); + } +} + + QTEST_MAIN(tst_QMetaMethod) #include "tst_qmetamethod.moc" |