summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Kelly <stephen.kelly@kdab.com>2012-07-13 11:48:09 +0200
committerQt by Nokia <qt-info@nokia.com>2012-07-13 19:21:55 +0200
commit6f540691c4787746f5269447d518fe00ae17268d (patch)
treed4503f0fd95217f7d06dea215e1b5580ea5036db
parent90657f9236889524a9d27a136e49d12feb46d2a3 (diff)
Add some tests to note that private signals can't be overloads.
This is just for completeness of the understanding of the limitations of private signals. There are no private signals in Qt which have overloads. Change-Id: Ic34c555aea360ee34beec796e597657888573da9 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
-rw-r--r--tests/auto/tools/moc/tst_moc.cpp88
1 files changed, 88 insertions, 0 deletions
diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp
index a79a5f604b..f0308101b7 100644
--- a/tests/auto/tools/moc/tst_moc.cpp
+++ b/tests/auto/tools/moc/tst_moc.cpp
@@ -1813,12 +1813,25 @@ public:
emit privateSignal1(QPrivateSignal());
emit privateSignalWith1Arg(42, QPrivateSignal());
emit privateSignalWith2Args(42, "Hello", QPrivateSignal());
+
+ emit privateOverloadedSignal(QPrivateSignal());
+ emit privateOverloadedSignal(42, QPrivateSignal());
+
+ emit overloadedMaybePrivate();
+ emit overloadedMaybePrivate(42, QPrivateSignal());
}
Q_SIGNALS:
void privateSignal1(QPrivateSignal);
void privateSignalWith1Arg(int arg1, QPrivateSignal);
void privateSignalWith2Args(int arg1, const QString &arg2, QPrivateSignal);
+
+ void privateOverloadedSignal(QPrivateSignal);
+ void privateOverloadedSignal(int, QPrivateSignal);
+
+ void overloadedMaybePrivate();
+ void overloadedMaybePrivate(int, QPrivateSignal);
+
};
class SubClassFromPrivateSignals : public ClassWithPrivateSignals
@@ -1845,6 +1858,14 @@ public:
// emit privateSignal1(ClassWithPrivateSignals::QPrivateSignal());
// emit privateSignalWith1Arg(42, ClassWithPrivateSignals::QPrivateSignal());
// emit privateSignalWith2Args(42, "Hello", ClassWithPrivateSignals::QPrivateSignal());
+
+// emit privateOverloadedSignal();
+// emit privateOverloadedSignal(42);
+
+// emit overloadedMaybePrivate();
+// emit overloadedMaybePrivate(42);
+
+
}
};
@@ -2135,6 +2156,73 @@ void tst_Moc::privateSignalConnection()
QVERIFY(tester.testPassed);
}
+
+ // Overloaded private signals
+ {
+
+ ClassWithPrivateSignals classWithPrivateSignals;
+ SignalConnectionTester tester;
+ QObject::connect(&classWithPrivateSignals, SIGNAL(privateOverloadedSignal()), &tester, SLOT(testSlot()));
+ QVERIFY(!tester.testPassed);
+
+ classWithPrivateSignals.emitPrivateSignals();
+
+ QVERIFY(tester.testPassed);
+ }
+ {
+
+ ClassWithPrivateSignals classWithPrivateSignals;
+ SignalConnectionTester tester;
+ QObject::connect(&classWithPrivateSignals, SIGNAL(privateOverloadedSignal(int)), &tester, SLOT(testSlotWith1Arg(int)));
+ QVERIFY(!tester.testPassed);
+
+ classWithPrivateSignals.emitPrivateSignals();
+
+ QVERIFY(tester.testPassed);
+ }
+ // We can't use function pointer connections to private signals which are overloaded because we would have to cast in this case to:
+ // static_cast<void (ClassWithPrivateSignals::*)(int, ClassWithPrivateSignals::QPrivateSignal)>(&ClassWithPrivateSignals::privateOverloadedSignal)
+ // Which doesn't work as ClassWithPrivateSignals::QPrivateSignal is private.
+
+ // Overload with either private or not private signals
+ {
+
+ ClassWithPrivateSignals classWithPrivateSignals;
+ SignalConnectionTester tester;
+ QObject::connect(&classWithPrivateSignals, SIGNAL(overloadedMaybePrivate()), &tester, SLOT(testSlot()));
+ QVERIFY(!tester.testPassed);
+
+ classWithPrivateSignals.emitPrivateSignals();
+
+ QVERIFY(tester.testPassed);
+ }
+ {
+
+ ClassWithPrivateSignals classWithPrivateSignals;
+ SignalConnectionTester tester;
+ QObject::connect(&classWithPrivateSignals, SIGNAL(privateOverloadedSignal(int)), &tester, SLOT(testSlotWith1Arg(int)));
+ QVERIFY(!tester.testPassed);
+
+ classWithPrivateSignals.emitPrivateSignals();
+
+ QVERIFY(tester.testPassed);
+ }
+ {
+
+ ClassWithPrivateSignals classWithPrivateSignals;
+ SignalConnectionTester tester;
+ QObject::connect(&classWithPrivateSignals,
+ static_cast<void (ClassWithPrivateSignals::*)()>(&ClassWithPrivateSignals::overloadedMaybePrivate),
+ &tester, &SignalConnectionTester::testSlot);
+ QVERIFY(!tester.testPassed);
+
+ classWithPrivateSignals.emitPrivateSignals();
+
+ QVERIFY(tester.testPassed);
+ }
+ // We can't use function pointer connections to private signals which are overloaded because we would have to cast in this case to:
+ // static_cast<void (ClassWithPrivateSignals::*)(int, ClassWithPrivateSignals::QPrivateSignal)>(&ClassWithPrivateSignals::overloadedMaybePrivate)
+ // Which doesn't work as ClassWithPrivateSignals::QPrivateSignal is private.
}