aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/qjsengine/tst_qjsengine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qml/qjsengine/tst_qjsengine.cpp')
-rw-r--r--tests/auto/qml/qjsengine/tst_qjsengine.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/auto/qml/qjsengine/tst_qjsengine.cpp b/tests/auto/qml/qjsengine/tst_qjsengine.cpp
index feef9d27f8..8a1bedb600 100644
--- a/tests/auto/qml/qjsengine/tst_qjsengine.cpp
+++ b/tests/auto/qml/qjsengine/tst_qjsengine.cpp
@@ -178,6 +178,8 @@ private slots:
void translateScriptUnicodeIdBased();
void translateFromBuiltinCallback();
+ void privateMethods();
+
signals:
void testSignal();
};
@@ -3548,6 +3550,41 @@ void tst_QJSEngine::translateFromBuiltinCallback()
eng.evaluate("[10,20].forEach(foo)", "script.js");
}
+class ObjectWithPrivateMethods : public QObject
+{
+ Q_OBJECT
+private slots:
+ void myPrivateMethod() {}
+};
+
+void tst_QJSEngine::privateMethods()
+{
+ ObjectWithPrivateMethods object;
+ QJSEngine engine;
+ QJSValue jsWrapper = engine.newQObject(&object);
+ QQmlEngine::setObjectOwnership(&object, QQmlEngine::CppOwnership);
+
+ QSet<QString> privateMethods;
+ {
+ const QMetaObject *mo = object.metaObject();
+ for (int i = 0; i < mo->methodCount(); ++i) {
+ const QMetaMethod method = mo->method(i);
+ if (method.access() == QMetaMethod::Private)
+ privateMethods << QString::fromUtf8(method.name());
+ }
+ }
+
+ QVERIFY(privateMethods.contains("myPrivateMethod"));
+ QVERIFY(privateMethods.contains("_q_reregisterTimers"));
+ privateMethods << QStringLiteral("deleteLater") << QStringLiteral("destroyed");
+
+ QJSValueIterator it(jsWrapper);
+ while (it.hasNext()) {
+ it.next();
+ QVERIFY(!privateMethods.contains(it.name()));
+ }
+}
+
QTEST_MAIN(tst_QJSEngine)
#include "tst_qjsengine.moc"