summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/corelib/global/qflags/tst_qflags.cpp9
-rw-r--r--tests/auto/corelib/kernel/qeventloop/tst_qeventloop.cpp2
-rw-r--r--tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp172
-rw-r--r--tests/auto/corelib/tools/qpair/qpair.pro4
-rw-r--r--tests/auto/corelib/tools/qpair/tst_qpair.cpp105
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/stringbuilder.cpp3
-rw-r--r--tests/auto/corelib/tools/tools.pro1
-rw-r--r--tests/auto/gui/text/qtextdocumentfragment/tst_qtextdocumentfragment.cpp2
-rw-r--r--tests/auto/network/kernel/qauthenticator/tst_qauthenticator.cpp6
-rw-r--r--tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp4
-rw-r--r--tests/auto/other/gestures/tst_gestures.cpp2
-rw-r--r--tests/auto/testlib/selftests/alive/qtestalive.cpp2
-rw-r--r--tests/auto/tools/moc/tst_moc.cpp152
-rw-r--r--tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp2
14 files changed, 456 insertions, 10 deletions
diff --git a/tests/auto/corelib/global/qflags/tst_qflags.cpp b/tests/auto/corelib/global/qflags/tst_qflags.cpp
index d466d7b8d8..2794c174ba 100644
--- a/tests/auto/corelib/global/qflags/tst_qflags.cpp
+++ b/tests/auto/corelib/global/qflags/tst_qflags.cpp
@@ -123,6 +123,15 @@ void tst_QFlags::constExpr()
#endif
}
+// (statically) check QTypeInfo for QFlags instantiations:
+enum MyEnum { Zero, One, Two, Four=4 };
+Q_DECLARE_FLAGS( MyFlags, MyEnum );
+Q_DECLARE_OPERATORS_FOR_FLAGS( MyFlags );
+
+Q_STATIC_ASSERT( !QTypeInfo<MyFlags>::isComplex );
+Q_STATIC_ASSERT( !QTypeInfo<MyFlags>::isStatic );
+Q_STATIC_ASSERT( !QTypeInfo<MyFlags>::isLarge );
+Q_STATIC_ASSERT( !QTypeInfo<MyFlags>::isPointer );
QTEST_MAIN(tst_QFlags)
#include "tst_qflags.moc"
diff --git a/tests/auto/corelib/kernel/qeventloop/tst_qeventloop.cpp b/tests/auto/corelib/kernel/qeventloop/tst_qeventloop.cpp
index e2144134d9..61484c1736 100644
--- a/tests/auto/corelib/kernel/qeventloop/tst_qeventloop.cpp
+++ b/tests/auto/corelib/kernel/qeventloop/tst_qeventloop.cpp
@@ -132,7 +132,7 @@ public:
class StartStopEvent: public QEvent
{
public:
- StartStopEvent(int type, QEventLoop *loop = 0)
+ explicit StartStopEvent(int type, QEventLoop *loop = 0)
: QEvent(Type(type)), el(loop)
{ }
diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
index 72913d10f2..f8403f11a1 100644
--- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
+++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
@@ -682,6 +682,36 @@ public:
};
Q_DECLARE_METATYPE(CustomMultiInheritanceObject*);
+class C { char _[4]; };
+class M { char _[4]; };
+class P { char _[4]; };
+
+QT_BEGIN_NAMESPACE
+Q_DECLARE_TYPEINFO(M, Q_MOVABLE_TYPE);
+Q_DECLARE_TYPEINFO(P, Q_PRIMITIVE_TYPE);
+QT_END_NAMESPACE
+
+// avoid the comma:
+typedef QPair<C,C> QPairCC;
+typedef QPair<C,M> QPairCM;
+typedef QPair<C,P> QPairCP;
+typedef QPair<M,C> QPairMC;
+typedef QPair<M,M> QPairMM;
+typedef QPair<M,P> QPairMP;
+typedef QPair<P,C> QPairPC;
+typedef QPair<P,M> QPairPM;
+typedef QPair<P,P> QPairPP;
+
+Q_DECLARE_METATYPE(QPairCC)
+Q_DECLARE_METATYPE(QPairCM)
+Q_DECLARE_METATYPE(QPairCP)
+Q_DECLARE_METATYPE(QPairMC)
+Q_DECLARE_METATYPE(QPairMM)
+Q_DECLARE_METATYPE(QPairMP)
+Q_DECLARE_METATYPE(QPairPC)
+Q_DECLARE_METATYPE(QPairPM)
+Q_DECLARE_METATYPE(QPairPP)
+
void tst_QMetaType::flags_data()
{
QTest::addColumn<int>("type");
@@ -700,6 +730,15 @@ QT_FOR_EACH_STATIC_CORE_POINTER(ADD_METATYPE_TEST_ROW)
QTest::newRow("CustomMovable") << ::qMetaTypeId<CustomMovable>() << true << true << false;
QTest::newRow("CustomObject*") << ::qMetaTypeId<CustomObject*>() << true << false << true;
QTest::newRow("CustomMultiInheritanceObject*") << ::qMetaTypeId<CustomMultiInheritanceObject*>() << true << false << true;
+ QTest::newRow("QPair<C,C>") << ::qMetaTypeId<QPair<C,C> >() << false << true << false;
+ QTest::newRow("QPair<C,M>") << ::qMetaTypeId<QPair<C,M> >() << false << true << false;
+ QTest::newRow("QPair<C,P>") << ::qMetaTypeId<QPair<C,P> >() << false << true << false;
+ QTest::newRow("QPair<M,C>") << ::qMetaTypeId<QPair<M,C> >() << false << true << false;
+ QTest::newRow("QPair<M,M>") << ::qMetaTypeId<QPair<M,M> >() << true << true << false;
+ QTest::newRow("QPair<M,P>") << ::qMetaTypeId<QPair<M,P> >() << true << true << false;
+ QTest::newRow("QPair<P,C>") << ::qMetaTypeId<QPair<P,C> >() << false << true << false;
+ QTest::newRow("QPair<P,M>") << ::qMetaTypeId<QPair<P,M> >() << true << true << false;
+ QTest::newRow("QPair<P,P>") << ::qMetaTypeId<QPair<P,P> >() << true << false << false;
}
void tst_QMetaType::flags()
@@ -1014,6 +1053,61 @@ void tst_QMetaType::registerStreamBuiltin()
Q_DECLARE_METATYPE(QSharedPointer<QObject>)
+typedef QHash<int, uint> IntUIntHash;
+Q_DECLARE_METATYPE(IntUIntHash)
+typedef QMap<int, uint> IntUIntMap;
+Q_DECLARE_METATYPE(IntUIntMap)
+typedef QPair<int, uint> IntUIntPair;
+Q_DECLARE_METATYPE(IntUIntPair)
+
+struct CustomComparable
+{
+ CustomComparable(int i_ = 0) :i(i_) { }
+ bool operator==(const CustomComparable &other) const
+ {
+ return i == other.i;
+ }
+ int i;
+};
+
+struct UnregisteredType {};
+
+typedef QHash<int, CustomComparable> IntComparableHash;
+Q_DECLARE_METATYPE(IntComparableHash)
+typedef QMap<int, CustomComparable> IntComparableMap;
+Q_DECLARE_METATYPE(IntComparableMap)
+typedef QPair<int, CustomComparable> IntComparablePair;
+Q_DECLARE_METATYPE(IntComparablePair)
+
+typedef QHash<int, int> IntIntHash;
+typedef int NaturalNumber;
+class AutoMetaTypeObject : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(IntIntHash someHash READ someHash CONSTANT)
+ Q_PROPERTY(NaturalNumber someInt READ someInt CONSTANT)
+public:
+ AutoMetaTypeObject(QObject *parent = 0)
+ : QObject(parent), m_int(42)
+ {
+ m_hash.insert(4, 2);
+ }
+
+ QHash<int,int> someHash() const
+ {
+ return m_hash;
+ }
+
+ int someInt() const
+ {
+ return m_int;
+ }
+
+private:
+ QHash<int,int> m_hash;
+ int m_int;
+};
+
void tst_QMetaType::automaticTemplateRegistration()
{
{
@@ -1055,6 +1149,84 @@ void tst_QMetaType::automaticTemplateRegistration()
vectorList << sharedPointerList;
QVERIFY(QVariant::fromValue(vectorList).value<QVector<QList<QSharedPointer<QObject> > > >().first().first() == testObject);
}
+ {
+ IntIntHash intIntHash;
+ intIntHash.insert(4, 2);
+ QCOMPARE(QVariant::fromValue(intIntHash).value<IntIntHash>().value(4), 2);
+
+ AutoMetaTypeObject amto;
+
+ qRegisterMetaType<QHash<int, int> >("IntIntHash");
+ QVariant hashVariant = amto.property("someHash");
+ QCOMPARE(hashVariant.value<IntIntHash>().value(4), 2);
+
+ qRegisterMetaType<int>("NaturalNumber");
+ QVariant intVariant = amto.property("someInt");
+ QCOMPARE(intVariant.value<NaturalNumber>(), 42);
+ }
+ {
+ IntUIntHash intUIntHash;
+ intUIntHash.insert(4, 2);
+ QCOMPARE(QVariant::fromValue(intUIntHash).value<IntUIntHash>().value(4), (uint)2);
+ }
+ {
+ IntComparableHash intComparableHash;
+ CustomComparable m;
+ intComparableHash.insert(4, m);
+ QCOMPARE(QVariant::fromValue(intComparableHash).value<IntComparableHash>().value(4), m);
+ }
+ {
+ QVariantHash variantHash;
+ variantHash.insert(QStringLiteral("4"), 2);
+ QCOMPARE(QVariant::fromValue(variantHash).value<QVariantHash>().value(QStringLiteral("4")), QVariant(2));
+ }
+ {
+ typedef QMap<int, int> IntIntMap;
+ IntIntMap intIntMap;
+ intIntMap.insert(4, 2);
+ QCOMPARE(QVariant::fromValue(intIntMap).value<IntIntMap>().value(4), 2);
+ }
+ {
+ IntUIntMap intUIntMap;
+ intUIntMap.insert(4, 2);
+ QCOMPARE(QVariant::fromValue(intUIntMap).value<IntUIntMap>().value(4), (uint)2);
+ }
+ {
+ IntComparableMap intComparableMap;
+ CustomComparable m;
+ intComparableMap.insert(4, m);
+ QCOMPARE(QVariant::fromValue(intComparableMap).value<IntComparableMap>().value(4), m);
+ }
+ {
+ QVariantMap variantMap;
+ variantMap.insert(QStringLiteral("4"), 2);
+ QCOMPARE(QVariant::fromValue(variantMap).value<QVariantMap>().value(QStringLiteral("4")), QVariant(2));
+ }
+ {
+ typedef QPair<int, int> IntIntPair;
+ IntIntPair intIntPair = qMakePair(4, 2);
+ QCOMPARE(QVariant::fromValue(intIntPair).value<IntIntPair>().first, 4);
+ QCOMPARE(QVariant::fromValue(intIntPair).value<IntIntPair>().second, 2);
+ }
+ {
+ IntUIntPair intUIntPair = qMakePair<int, uint>(4, 2);
+ QCOMPARE(QVariant::fromValue(intUIntPair).value<IntUIntPair>().first, 4);
+ QCOMPARE(QVariant::fromValue(intUIntPair).value<IntUIntPair>().second, (uint)2);
+ }
+ {
+ CustomComparable m;
+ IntComparablePair intComparablePair = qMakePair(4, m);
+ QCOMPARE(QVariant::fromValue(intComparablePair).value<IntComparablePair>().first, 4);
+ QCOMPARE(QVariant::fromValue(intComparablePair).value<IntComparablePair>().second, m);
+ }
+ {
+ typedef QHash<int, UnregisteredType> IntUnregisteredTypeHash;
+ QVERIFY(qRegisterMetaType<IntUnregisteredTypeHash>("IntUnregisteredTypeHash") > 0);
+ }
+ {
+ typedef QList<UnregisteredType> UnregisteredTypeList;
+ QVERIFY(qRegisterMetaType<UnregisteredTypeList>("UnregisteredTypeList") > 0);
+ }
}
// Compile-time test, it should be possible to register function pointer types
diff --git a/tests/auto/corelib/tools/qpair/qpair.pro b/tests/auto/corelib/tools/qpair/qpair.pro
new file mode 100644
index 0000000000..9c7752327e
--- /dev/null
+++ b/tests/auto/corelib/tools/qpair/qpair.pro
@@ -0,0 +1,4 @@
+CONFIG += testcase parallel_test
+TARGET = tst_qpair
+QT = core testlib
+SOURCES = tst_qpair.cpp
diff --git a/tests/auto/corelib/tools/qpair/tst_qpair.cpp b/tests/auto/corelib/tools/qpair/tst_qpair.cpp
new file mode 100644
index 0000000000..5de1e8f8bb
--- /dev/null
+++ b/tests/auto/corelib/tools/qpair/tst_qpair.cpp
@@ -0,0 +1,105 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+
+#include <QPair>
+
+class tst_QPair : public QObject
+{
+ Q_OBJECT
+private Q_SLOTS:
+ void dummy() {}
+};
+
+class C { char _[4]; };
+class M { char _[4]; };
+class P { char _[4]; };
+
+QT_BEGIN_NAMESPACE
+Q_DECLARE_TYPEINFO(M, Q_MOVABLE_TYPE);
+Q_DECLARE_TYPEINFO(P, Q_PRIMITIVE_TYPE);
+QT_END_NAMESPACE
+
+// avoid the comma:
+typedef QPair<C,C> QPairCC;
+typedef QPair<C,M> QPairCM;
+typedef QPair<C,P> QPairCP;
+typedef QPair<M,C> QPairMC;
+typedef QPair<M,M> QPairMM;
+typedef QPair<M,P> QPairMP;
+typedef QPair<P,C> QPairPC;
+typedef QPair<P,M> QPairPM;
+typedef QPair<P,P> QPairPP;
+
+Q_STATIC_ASSERT( QTypeInfo<QPairCC>::isComplex);
+Q_STATIC_ASSERT( QTypeInfo<QPairCC>::isStatic );
+
+Q_STATIC_ASSERT( QTypeInfo<QPairCM>::isComplex);
+Q_STATIC_ASSERT( QTypeInfo<QPairCM>::isStatic );
+
+Q_STATIC_ASSERT( QTypeInfo<QPairCP>::isComplex);
+Q_STATIC_ASSERT( QTypeInfo<QPairCP>::isStatic );
+
+Q_STATIC_ASSERT( QTypeInfo<QPairMC>::isComplex);
+Q_STATIC_ASSERT( QTypeInfo<QPairMC>::isStatic );
+
+Q_STATIC_ASSERT( QTypeInfo<QPairMM>::isComplex);
+Q_STATIC_ASSERT(!QTypeInfo<QPairMM>::isStatic );
+
+Q_STATIC_ASSERT( QTypeInfo<QPairMP>::isComplex);
+Q_STATIC_ASSERT(!QTypeInfo<QPairMP>::isStatic );
+
+Q_STATIC_ASSERT( QTypeInfo<QPairPC>::isComplex);
+Q_STATIC_ASSERT( QTypeInfo<QPairPC>::isStatic );
+
+Q_STATIC_ASSERT( QTypeInfo<QPairPM>::isComplex);
+Q_STATIC_ASSERT(!QTypeInfo<QPairPM>::isStatic );
+
+Q_STATIC_ASSERT(!QTypeInfo<QPairPP>::isComplex);
+Q_STATIC_ASSERT(!QTypeInfo<QPairPP>::isStatic );
+
+Q_STATIC_ASSERT(!QTypeInfo<QPairPP>::isDummy );
+Q_STATIC_ASSERT(!QTypeInfo<QPairPP>::isPointer);
+
+
+QTEST_APPLESS_MAIN(tst_QPair)
+#include "tst_qpair.moc"
diff --git a/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/stringbuilder.cpp b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/stringbuilder.cpp
index afc16078b8..556b9ac16a 100644
--- a/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/stringbuilder.cpp
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/stringbuilder.cpp
@@ -73,6 +73,7 @@ void runScenario()
QString string(l1string);
QStringRef stringref(&string, 2, 10);
QLatin1Char achar('c');
+ QChar::SpecialCharacter special(QChar::Nbsp);
QString r2(QLatin1String(LITERAL LITERAL));
QString r3 = QString::fromUtf8(UTF8_LITERAL UTF8_LITERAL);
QString r;
@@ -97,6 +98,8 @@ void runScenario()
QCOMPARE(r, QString(string P achar));
r = achar + string;
QCOMPARE(r, QString(achar P string));
+ r = special + string;
+ QCOMPARE(r, QString(special P string));
#ifdef Q_COMPILER_UNICODE_STRINGS
r = QStringLiteral(UNICODE_LITERAL);
diff --git a/tests/auto/corelib/tools/tools.pro b/tests/auto/corelib/tools/tools.pro
index 930799e3b3..89bb3bc416 100644
--- a/tests/auto/corelib/tools/tools.pro
+++ b/tests/auto/corelib/tools/tools.pro
@@ -20,6 +20,7 @@ SUBDIRS=\
qlocale \
qmap \
qmargins \
+ qpair \
qpoint \
qqueue \
qrect \
diff --git a/tests/auto/gui/text/qtextdocumentfragment/tst_qtextdocumentfragment.cpp b/tests/auto/gui/text/qtextdocumentfragment/tst_qtextdocumentfragment.cpp
index 50ae22c530..7ca4fc981b 100644
--- a/tests/auto/gui/text/qtextdocumentfragment/tst_qtextdocumentfragment.cpp
+++ b/tests/auto/gui/text/qtextdocumentfragment/tst_qtextdocumentfragment.cpp
@@ -2938,7 +2938,7 @@ void tst_QTextDocumentFragment::backgroundImage()
doc.setHtml("<p style=\"background-image: url(testPixmap)\">Hello</p>");
QBrush bg = doc.begin().blockFormat().background();
QVERIFY(bg.style() == Qt::TexturePattern);
- QVERIFY(bg.texture().serialNumber() == doc.testPixmap.serialNumber());
+ QCOMPARE(bg.texture().cacheKey(), doc.testPixmap.cacheKey());
}
void tst_QTextDocumentFragment::dontMergePreAndNonPre()
diff --git a/tests/auto/network/kernel/qauthenticator/tst_qauthenticator.cpp b/tests/auto/network/kernel/qauthenticator/tst_qauthenticator.cpp
index 9c1b8c32f6..7cb5dfd5cd 100644
--- a/tests/auto/network/kernel/qauthenticator/tst_qauthenticator.cpp
+++ b/tests/auto/network/kernel/qauthenticator/tst_qauthenticator.cpp
@@ -93,7 +93,7 @@ void tst_QAuthenticator::basicAuth()
QVERIFY(priv->phase == QAuthenticatorPrivate::Start);
QList<QPair<QByteArray, QByteArray> > headers;
- headers << qMakePair(QByteArray("WWW-Authenticate"), "Basic " + data.toUtf8());
+ headers << qMakePair<QByteArray, QByteArray>(QByteArray("WWW-Authenticate"), "Basic " + data.toUtf8());
priv->parseHttpResponse(headers, /*isProxy = */ false);
QCOMPARE(auth.realm(), realm);
@@ -104,7 +104,7 @@ void tst_QAuthenticator::basicAuth()
QVERIFY(priv->phase == QAuthenticatorPrivate::Start);
- QCOMPARE(priv->calculateResponse("GET", "/").constData(), ("Basic " + expectedReply).constData());
+ QCOMPARE(priv->calculateResponse("GET", "/").constData(), QByteArray("Basic " + expectedReply).constData());
}
void tst_QAuthenticator::ntlmAuth_data()
@@ -138,7 +138,7 @@ void tst_QAuthenticator::ntlmAuth()
// NTLM phase 2: challenge
headers.clear();
- headers << qMakePair(QByteArray("WWW-Authenticate"), "NTLM " + data.toUtf8());
+ headers << qMakePair<QByteArray, QByteArray>(QByteArray("WWW-Authenticate"), "NTLM " + data.toUtf8());
priv->parseHttpResponse(headers, /*isProxy = */ false);
QEXPECT_FAIL("with-realm", "NTLM authentication code doesn't extract the realm", Continue);
diff --git a/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp b/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp
index 8b65c312bc..5395c7c28b 100644
--- a/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp
+++ b/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp
@@ -2242,7 +2242,7 @@ void tst_QTcpSocket::suddenRemoteDisconnect()
QString::fromLatin1("Could not start %1: %2").arg(processExe, serverProcess.errorString())));
while (!serverProcess.canReadLine())
QVERIFY(serverProcess.waitForReadyRead(10000));
- QCOMPARE(serverProcess.readLine().data(), (server.toLatin1() + "\n").data());
+ QCOMPARE(serverProcess.readLine().data(), QByteArray(server.toLatin1() + "\n").data());
// Start client
QProcess clientProcess;
@@ -2252,7 +2252,7 @@ void tst_QTcpSocket::suddenRemoteDisconnect()
QString::fromLatin1("Could not start %1: %2").arg(processExe, clientProcess.errorString())));
while (!clientProcess.canReadLine())
QVERIFY(clientProcess.waitForReadyRead(10000));
- QCOMPARE(clientProcess.readLine().data(), (client.toLatin1() + "\n").data());
+ QCOMPARE(clientProcess.readLine().data(), QByteArray(client.toLatin1() + "\n").data());
// Let them play for a while
qDebug("Running stress test for 5 seconds");
diff --git a/tests/auto/other/gestures/tst_gestures.cpp b/tests/auto/other/gestures/tst_gestures.cpp
index 01e26b6608..81881fc700 100644
--- a/tests/auto/other/gestures/tst_gestures.cpp
+++ b/tests/auto/other/gestures/tst_gestures.cpp
@@ -87,7 +87,7 @@ class CustomEvent : public QEvent
public:
static int EventType;
- CustomEvent(int serial_ = 0)
+ explicit CustomEvent(int serial_ = 0)
: QEvent(QEvent::Type(CustomEvent::EventType)),
serial(serial_), hasHotSpot(false)
{
diff --git a/tests/auto/testlib/selftests/alive/qtestalive.cpp b/tests/auto/testlib/selftests/alive/qtestalive.cpp
index c2e597ac18..d962b7801f 100644
--- a/tests/auto/testlib/selftests/alive/qtestalive.cpp
+++ b/tests/auto/testlib/selftests/alive/qtestalive.cpp
@@ -50,7 +50,7 @@ public:
enum { AliveEventType = QEvent::User + 422 };
- inline QTestAliveEvent(int aSequenceId)
+ explicit inline QTestAliveEvent(int aSequenceId)
: QEvent(QEvent::Type(AliveEventType)), seqId(aSequenceId)
{}
inline int sequenceId() const { return seqId; }
diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp
index 27db6cc59c..49095048bf 100644
--- a/tests/auto/tools/moc/tst_moc.cpp
+++ b/tests/auto/tools/moc/tst_moc.cpp
@@ -535,6 +535,7 @@ private slots:
void cxx11Enums_data();
void cxx11Enums();
void returnRefs();
+ void redefinedNames();
signals:
void sigWithUnsignedArg(unsigned foo);
@@ -1762,6 +1763,157 @@ void tst_Moc::returnRefs()
// they used to cause miscompilation of the moc generated file.
}
+struct ActualInterfaceName
+{
+ virtual ~ActualInterfaceName() {}
+ virtual void foo() = 0;
+};
+
+QT_BEGIN_NAMESPACE
+Q_DECLARE_INTERFACE(ActualInterfaceName, "foo.bar.ActualInterfaceName")
+QT_END_NAMESPACE
+
+#define DefinedInterfaceName ActualInterfaceName
+#define RedefinedInterfaceName DefinedInterfaceName
+
+struct ActualName {};
+#define DefinedName ActualName
+#define RedefinedName DefinedName
+
+template<typename T>
+struct ActualTemplateName {};
+
+#define DefinedTemplateName ActualTemplateName
+#define RedefinedTemplateName DefinedTemplateName
+
+#define ActualName ActualName
+
+class RedefinitionTest : public QObject, public RedefinedInterfaceName
+{
+ Q_OBJECT
+ Q_INTERFACES(RedefinedInterfaceName)
+
+ Q_PROPERTY(ActualName p1 READ getP1)
+
+ Q_PROPERTY(DefinedName p2 READ getP2)
+ Q_PROPERTY(RedefinedName p3 READ getP3)
+
+ Q_PROPERTY(DefinedName * p4 READ getP4)
+ Q_PROPERTY(RedefinedName * p5 READ getP5)
+
+ Q_PROPERTY(DefinedName ** p6 READ getP6)
+ Q_PROPERTY(RedefinedName ** p7 READ getP7)
+
+ Q_PROPERTY(DefinedName const ** p8 READ getP8)
+ Q_PROPERTY(RedefinedName const ** p9 READ getP9)
+
+ Q_PROPERTY(DefinedName const * const * p10 READ getP10)
+ Q_PROPERTY(RedefinedName const * const * p11 READ getP11)
+
+ Q_PROPERTY(DefinedTemplateName<DefinedName> p16 READ getP16)
+ Q_PROPERTY(RedefinedTemplateName<RedefinedName> p17 READ getP17)
+
+ Q_PROPERTY(DefinedTemplateName<DefinedName **> p18 READ getP18)
+ Q_PROPERTY(RedefinedTemplateName<RedefinedName **> p19 READ getP19)
+
+ Q_PROPERTY(DefinedTemplateName<DefinedName const * const> p20 READ getP20)
+ Q_PROPERTY(RedefinedTemplateName<RedefinedName const * const> p21 READ getP21)
+
+signals:
+ void signal1(ActualName);
+ void signal2(DefinedName);
+ void signal3(RedefinedName);
+
+public slots:
+ void slot1(ActualName x) { v = x; }
+ void slot2(DefinedName x) { v = x; }
+ void slot3(RedefinedName x) { v = x; }
+
+public:
+ void foo() {}
+
+ ActualName v;
+
+ ActualName *vp;
+ ActualName const *vcp;
+
+ ActualTemplateName<ActualName> tv;
+ ActualTemplateName<ActualName **> tvpp;
+ ActualTemplateName<ActualName const * const> tvcpc;
+
+ ActualName getP0() { return v; }
+ ActualName getP1() { return v; }
+
+ DefinedName getP2() { return v; }
+ RedefinedName getP3() { return v; }
+
+ DefinedName * getP4() { return &v; }
+ RedefinedName * getP5() { return &v; }
+
+ DefinedName ** getP6() { return &vp; }
+ RedefinedName ** getP7() { return &vp; }
+
+ DefinedName const ** getP8() { return &vcp; }
+ RedefinedName const ** getP9() { return &vcp; }
+
+ DefinedName const * const * getP10() const { return &vcp; }
+ RedefinedName const * const * getP11() const { return &vcp; }
+
+ DefinedTemplateName<DefinedName> getP16() { return tv; }
+ RedefinedTemplateName<RedefinedName> getP17() { return tv; }
+
+ DefinedTemplateName<DefinedName **> getP18() { return tvpp; }
+ RedefinedTemplateName<RedefinedName **> getP19() { return tvpp; }
+
+ DefinedTemplateName<DefinedName const * const> getP20() { return tvcpc; }
+ RedefinedTemplateName<RedefinedName const * const> getP21() { return tvcpc; }
+};
+
+void tst_Moc::redefinedNames()
+{
+ RedefinitionTest tst;
+ const QMetaObject *mobj = tst.metaObject();
+ QVERIFY(mobj->indexOfProperty("p1") != -1);
+
+ // Use the true slot name rather than the declared name
+ QVERIFY(QObject::connect(&tst, SIGNAL(signal1(ActualName)),
+ &tst, SLOT(slot1(ActualName))));
+
+ QVERIFY(QObject::connect(&tst, SIGNAL(signal2(ActualName)),
+ &tst, SLOT(slot2(ActualName))));
+
+ QVERIFY(QObject::connect(&tst, SIGNAL(signal3(ActualName)),
+ &tst, SLOT(slot3(ActualName))));
+
+ // Use the declared slot name rather than the true name
+ QVERIFY(QObject::connect(&tst, SIGNAL(signal1(ActualName)),
+ &tst, SLOT(slot2(DefinedName))));
+
+ QVERIFY(QObject::connect(&tst, SIGNAL(signal1(ActualName)),
+ &tst, SLOT(slot3(RedefinedName))));
+
+ // Use the declared signal name rather than the true name
+ QVERIFY(QObject::connect(&tst, SIGNAL(signal2(DefinedName)),
+ &tst, SLOT(slot1(ActualName))));
+
+ QVERIFY(QObject::connect(&tst, SIGNAL(signal3(RedefinedName)),
+ &tst, SLOT(slot1(ActualName))));
+
+ // Use both declared names
+ QVERIFY(QObject::connect(&tst, SIGNAL(signal2(DefinedName)),
+ &tst, SLOT(slot2(DefinedName))));
+
+ QVERIFY(QObject::connect(&tst, SIGNAL(signal2(DefinedName)),
+ &tst, SLOT(slot3(RedefinedName))));
+
+ QVERIFY(QObject::connect(&tst, SIGNAL(signal3(RedefinedName)),
+ &tst, SLOT(slot2(DefinedName))));
+
+ QVERIFY(QObject::connect(&tst, SIGNAL(signal3(RedefinedName)),
+ &tst, SLOT(slot3(RedefinedName))));
+}
+
+
QTEST_APPLESS_MAIN(tst_Moc)
#include "tst_moc.moc"
diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
index 0fe93995a1..f9eb8b6159 100644
--- a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
+++ b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
@@ -1335,7 +1335,7 @@ void tst_QComboBox::textpixmapdata()
for (int i = 0; i<text.count(); ++i) {
QIcon icon = testWidget->itemIcon(i);
- QVERIFY(icon.serialNumber() == icons.at(i).serialNumber());
+ QCOMPARE(icon.cacheKey(), icons.at(i).cacheKey());
QPixmap original = icons.at(i).pixmap(1024);
QPixmap pixmap = icon.pixmap(1024);
QVERIFY(pixmap.toImage() == original.toImage());