summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib')
-rw-r--r--tests/auto/corelib/kernel/qmetamethod/tst_qmetamethod.cpp27
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"