summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib')
-rw-r--r--tests/auto/corelib/global/qglobalstatic/qglobalstatic.pro1
-rw-r--r--tests/auto/corelib/io/qbuffer/tst_qbuffer.cpp2
-rw-r--r--tests/auto/corelib/io/qfile/tst_qfile.cpp4
-rw-r--r--tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp2
-rw-r--r--tests/auto/corelib/io/qlockfile/tst_qlockfile.cpp65
-rw-r--r--tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp16
-rw-r--r--tests/auto/corelib/kernel/qmetaenum/tst_qmetaenum.cpp8
-rw-r--r--tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp9
-rw-r--r--tests/auto/corelib/kernel/qobject/tst_qobject.cpp24
-rw-r--r--tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp174
-rw-r--r--tests/auto/corelib/tools/qcontiguouscache/tst_qcontiguouscache.cpp12
11 files changed, 300 insertions, 17 deletions
diff --git a/tests/auto/corelib/global/qglobalstatic/qglobalstatic.pro b/tests/auto/corelib/global/qglobalstatic/qglobalstatic.pro
index 21cab8f67d..7b374505ce 100644
--- a/tests/auto/corelib/global/qglobalstatic/qglobalstatic.pro
+++ b/tests/auto/corelib/global/qglobalstatic/qglobalstatic.pro
@@ -1,3 +1,4 @@
+CONFIG += testcase
QT += testlib core-private
QT -= gui
diff --git a/tests/auto/corelib/io/qbuffer/tst_qbuffer.cpp b/tests/auto/corelib/io/qbuffer/tst_qbuffer.cpp
index f792b34d48..3b730d97f9 100644
--- a/tests/auto/corelib/io/qbuffer/tst_qbuffer.cpp
+++ b/tests/auto/corelib/io/qbuffer/tst_qbuffer.cpp
@@ -151,7 +151,7 @@ void tst_QBuffer::readBlock()
QCOMPARE(b.bytesAvailable(), (qint64) arraySize);
b.open(QIODevice::WriteOnly);
QCOMPARE(b.bytesAvailable(), (qint64) arraySize);
- QTest::ignoreMessage(QtWarningMsg, "QIODevice::read: WriteOnly device");
+ QTest::ignoreMessage(QtWarningMsg, "QIODevice::read (QBuffer): WriteOnly device");
QCOMPARE(b.read(a, arraySize), (qint64) -1); // no read access
b.close();
diff --git a/tests/auto/corelib/io/qfile/tst_qfile.cpp b/tests/auto/corelib/io/qfile/tst_qfile.cpp
index 98963108be..5025dd38db 100644
--- a/tests/auto/corelib/io/qfile/tst_qfile.cpp
+++ b/tests/auto/corelib/io/qfile/tst_qfile.cpp
@@ -2334,7 +2334,7 @@ void tst_QFile::readFromWriteOnlyFile()
QFile file("writeonlyfile");
QVERIFY(file.open(QFile::WriteOnly));
char c;
- QTest::ignoreMessage(QtWarningMsg, "QIODevice::read: WriteOnly device");
+ QTest::ignoreMessage(QtWarningMsg, "QIODevice::read (QFile, \"writeonlyfile\"): WriteOnly device");
QCOMPARE(file.read(&c, 1), qint64(-1));
}
@@ -2343,7 +2343,7 @@ void tst_QFile::writeToReadOnlyFile()
QFile file("readonlyfile");
QVERIFY(file.open(QFile::ReadOnly));
char c = 0;
- QTest::ignoreMessage(QtWarningMsg, "QIODevice::write: ReadOnly device");
+ QTest::ignoreMessage(QtWarningMsg, "QIODevice::write (QFile, \"readonlyfile\"): ReadOnly device");
QCOMPARE(file.write(&c, 1), qint64(-1));
}
diff --git a/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp b/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp
index f756588e80..565ca18899 100644
--- a/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp
+++ b/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp
@@ -224,7 +224,7 @@ void tst_QIODevice::unget()
buf[0] = '@';
buf[1] = '@';
QTest::ignoreMessage(QtWarningMsg,
- "QIODevice::readLine: Called with maxSize < 2");
+ "QIODevice::readLine (QBuffer): Called with maxSize < 2");
QCOMPARE(buffer.readLine(buf, 1), qint64(-1));
QCOMPARE(buffer.readLine(buf, 2), qint64(i < 4 ? 1 : -1));
switch (i) {
diff --git a/tests/auto/corelib/io/qlockfile/tst_qlockfile.cpp b/tests/auto/corelib/io/qlockfile/tst_qlockfile.cpp
index bef3d3a012..27614e0eb8 100644
--- a/tests/auto/corelib/io/qlockfile/tst_qlockfile.cpp
+++ b/tests/auto/corelib/io/qlockfile/tst_qlockfile.cpp
@@ -57,11 +57,16 @@ private slots:
void waitForLock();
void staleLockFromCrashedProcess_data();
void staleLockFromCrashedProcess();
+ void staleLockFromCrashedProcessReusedPid();
void staleShortLockFromBusyProcess();
void staleLongLockFromBusyProcess();
void staleLockRace();
void noPermissions();
void noPermissionsWindows();
+ void corruptedLockFile();
+
+private:
+ static bool overwritePidInLockFile(const QString &filePath, qint64 pid);
public:
QString m_helperApp;
@@ -276,6 +281,30 @@ void tst_QLockFile::staleLockFromCrashedProcess()
#endif // !QT_NO_PROCESS
}
+void tst_QLockFile::staleLockFromCrashedProcessReusedPid()
+{
+#if defined(QT_NO_PROCESS)
+ QSKIP("This test requires QProcess support");
+#elif defined(Q_OS_WINRT) || defined(Q_OS_WINCE) || defined(Q_OS_IOS)
+ QSKIP("We cannot retrieve information about other processes on this platform.");
+#else
+ const QString fileName = dir.path() + "/staleLockFromCrashedProcessReusedPid";
+
+ int ret = QProcess::execute(m_helperApp, QStringList() << fileName << "-crash");
+ QCOMPARE(ret, int(QLockFile::NoError));
+ QVERIFY(QFile::exists(fileName));
+ QVERIFY(overwritePidInLockFile(fileName, QCoreApplication::applicationPid()));
+
+ QLockFile secondLock(fileName);
+ qint64 pid = 0;
+ secondLock.getLockInfo(&pid, 0, 0);
+ QCOMPARE(pid, QCoreApplication::applicationPid());
+ secondLock.setStaleLockTime(0);
+ QVERIFY(secondLock.tryLock());
+ QCOMPARE(int(secondLock.error()), int(QLockFile::NoError));
+#endif // !QT_NO_PROCESS
+}
+
void tst_QLockFile::staleShortLockFromBusyProcess()
{
#ifdef QT_NO_PROCESS
@@ -480,5 +509,41 @@ void tst_QLockFile::noPermissionsWindows()
QCOMPARE(int(lockFile.error()), int(QLockFile::PermissionError));
}
+void tst_QLockFile::corruptedLockFile()
+{
+ const QString fileName = dir.path() + "/corruptedLockFile";
+
+ {
+ // Create a empty file. Typically the result of a computer crash or hard disk full.
+ QFile file(fileName);
+ QVERIFY(file.open(QFile::WriteOnly));
+ }
+
+ QLockFile secondLock(fileName);
+ secondLock.setStaleLockTime(100);
+ QVERIFY(secondLock.tryLock(10000));
+ QCOMPARE(int(secondLock.error()), int(QLockFile::NoError));
+}
+
+bool tst_QLockFile::overwritePidInLockFile(const QString &filePath, qint64 pid)
+{
+ QFile f(filePath);
+ if (!f.open(QFile::ReadWrite)) {
+ qWarning("Cannot open %s.", qPrintable(filePath));
+ return false;
+ }
+ QByteArray buf = f.readAll();
+ int i = buf.indexOf('\n');
+ if (i < 0) {
+ qWarning("Unexpected lockfile content.");
+ return false;
+ }
+ buf.remove(0, i);
+ buf.prepend(QByteArray::number(pid));
+ f.seek(0);
+ f.resize(buf.size());
+ return f.write(buf) == buf.size();
+}
+
QTEST_MAIN(tst_QLockFile)
#include "tst_qlockfile.moc"
diff --git a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
index ff4963a960..924db17c04 100644
--- a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
+++ b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
@@ -112,6 +112,22 @@ void tst_QCoreApplication::qAppName()
// The application name should still be available after destruction;
// global statics often rely on this.
QCOMPARE(QCoreApplication::applicationName(), QString::fromLatin1(appName));
+
+ // Setting the appname before creating the application should work (QTBUG-45283)
+ const QString wantedAppName("my app name");
+ {
+ int argc = 1;
+ char *argv[] = { const_cast<char*>(appName) };
+ QCoreApplication::setApplicationName(wantedAppName);
+ TestApplication app(argc, argv);
+ QCOMPARE(::qAppName(), QString::fromLatin1(appName));
+ QCOMPARE(QCoreApplication::applicationName(), wantedAppName);
+ }
+ QCOMPARE(QCoreApplication::applicationName(), wantedAppName);
+
+ // Restore to initial value
+ QCoreApplication::setApplicationName(QString());
+ QCOMPARE(QCoreApplication::applicationName(), QString());
}
void tst_QCoreApplication::argc()
diff --git a/tests/auto/corelib/kernel/qmetaenum/tst_qmetaenum.cpp b/tests/auto/corelib/kernel/qmetaenum/tst_qmetaenum.cpp
index 17b00ebf63..5a10cf51e6 100644
--- a/tests/auto/corelib/kernel/qmetaenum/tst_qmetaenum.cpp
+++ b/tests/auto/corelib/kernel/qmetaenum/tst_qmetaenum.cpp
@@ -91,5 +91,13 @@ void tst_QMetaEnum::valuesToKeys()
QCOMPARE(me.valueToKeys(windowFlags), expected);
}
+Q_STATIC_ASSERT(QtPrivate::IsQEnumHelper<tst_QMetaEnum::SuperEnum>::Value);
+Q_STATIC_ASSERT(QtPrivate::IsQEnumHelper<Qt::WindowFlags>::Value);
+Q_STATIC_ASSERT(QtPrivate::IsQEnumHelper<Qt::Orientation>::Value);
+Q_STATIC_ASSERT(!QtPrivate::IsQEnumHelper<int>::Value);
+Q_STATIC_ASSERT(!QtPrivate::IsQEnumHelper<QObject>::Value);
+Q_STATIC_ASSERT(!QtPrivate::IsQEnumHelper<QObject*>::Value);
+Q_STATIC_ASSERT(!QtPrivate::IsQEnumHelper<void>::Value);
+
QTEST_MAIN(tst_QMetaEnum)
#include "tst_qmetaenum.moc"
diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
index b3333c6d68..9cdb1f47f8 100644
--- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
+++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
@@ -142,8 +142,14 @@ public:
class CustomGadget {
Q_GADGET
};
+class CustomGadget_NonDefaultConstructible {
+ Q_GADGET
+public:
+ CustomGadget_NonDefaultConstructible(int) {};
+};
class CustomNonQObject {};
+class GadgetDerived : public CustomGadget {};
void tst_QMetaType::defined()
{
@@ -153,11 +159,12 @@ void tst_QMetaType::defined()
QCOMPARE(int(QMetaTypeId2<int*>::Defined), 0);
QCOMPARE(int(QMetaTypeId2<CustomQObject::CustomQEnum>::Defined), 1);
QCOMPARE(int(QMetaTypeId2<CustomGadget>::Defined), 1);
+ QVERIFY(!QMetaTypeId2<GadgetDerived>::Defined);
QVERIFY(int(QMetaTypeId2<CustomQObject*>::Defined));
QVERIFY(!QMetaTypeId2<CustomQObject>::Defined);
QVERIFY(!QMetaTypeId2<CustomNonQObject>::Defined);
QVERIFY(!QMetaTypeId2<CustomNonQObject*>::Defined);
- QVERIFY(!QMetaTypeId2<CustomGadget*>::Defined);
+ QVERIFY(!QMetaTypeId2<CustomGadget_NonDefaultConstructible>::Defined);
}
struct Bar
diff --git a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
index 263cc5a07a..3ec84b5198 100644
--- a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
+++ b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
@@ -128,6 +128,7 @@ private slots:
void connectWithReference();
void connectManyArguments();
void connectForwardDeclare();
+ void connectNoDefaultConstructorArg();
void returnValue_data();
void returnValue();
void returnValue2_data();
@@ -5227,6 +5228,29 @@ void tst_QObject::connectForwardDeclare()
QVERIFY(connect(&ob, &ForwardDeclareArguments::mySignal, &ob, &ForwardDeclareArguments::mySlot, Qt::QueuedConnection));
}
+class NoDefaultConstructor
+{
+ Q_GADGET
+public:
+ NoDefaultConstructor(int) {}
+};
+
+class NoDefaultContructorArguments : public QObject
+{
+ Q_OBJECT
+signals:
+ void mySignal(const NoDefaultConstructor&);
+public slots:
+ void mySlot(const NoDefaultConstructor&) {}
+};
+
+void tst_QObject::connectNoDefaultConstructorArg()
+{
+ NoDefaultContructorArguments ob;
+ // it should compile
+ QVERIFY(connect(&ob, &NoDefaultContructorArguments::mySignal, &ob, &NoDefaultContructorArguments::mySlot, Qt::QueuedConnection));
+}
+
class ReturnValue : public QObject {
friend class tst_QObject;
Q_OBJECT
diff --git a/tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp b/tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp
index 96d0a62f6b..1292c3b98f 100644
--- a/tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp
+++ b/tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp
@@ -247,6 +247,9 @@ private slots:
void qtbug_44963();
void qtbug_44783();
+ void internalTransition();
+ void conflictingTransition();
+ void qtbug_46059();
};
class TestState : public QState
@@ -256,10 +259,12 @@ public:
Entry,
Exit
};
- TestState(QState *parent)
- : QState(parent) {}
- TestState(ChildMode mode)
- : QState(mode) {}
+ TestState(QState *parent, const QString &objectName = QString())
+ : QState(parent)
+ { setObjectName(objectName); }
+ TestState(ChildMode mode, const QString &objectName = QString())
+ : QState(mode)
+ { setObjectName(objectName); }
QList<QPair<int, Event> > events;
protected:
virtual void onEntry(QEvent *) {
@@ -273,9 +278,9 @@ protected:
class TestTransition : public QAbstractTransition
{
public:
- TestTransition(QAbstractState *target)
+ TestTransition(QAbstractState *target, const QString &objectName = QString())
: QAbstractTransition()
- { setTargetState(target); }
+ { setTargetState(target); setObjectName(objectName); }
QList<int> triggers;
protected:
virtual bool eventTest(QEvent *) {
@@ -1352,15 +1357,16 @@ void tst_QStateMachine::stateEntryAndExit()
{
QStateMachine machine;
- TestState *s1 = new TestState(&machine);
- TestState *s11 = new TestState(s1);
- TestState *s12 = new TestState(s1);
- TestState *s2 = new TestState(&machine);
+ TestState *s1 = new TestState(&machine, "s1");
+ TestState *s11 = new TestState(s1, "s11");
+ TestState *s12 = new TestState(s1, "s12");
+ TestState *s2 = new TestState(&machine, "s2");
QFinalState *s3 = new QFinalState(&machine);
+ s3->setObjectName("s3");
s1->setInitialState(s11);
- TestTransition *t1 = new TestTransition(s12);
+ TestTransition *t1 = new TestTransition(s12, "t1");
s11->addTransition(t1);
- TestTransition *t2 = new TestTransition(s2);
+ TestTransition *t2 = new TestTransition(s2, "t2");
s12->addTransition(t2);
s2->addTransition(s3);
@@ -6335,5 +6341,149 @@ void tst_QStateMachine::qtbug_44783()
QVERIFY(machine.isRunning());
}
+void tst_QStateMachine::internalTransition()
+{
+ SignalEmitter emitter;
+
+ QStateMachine machine;
+ QState *s = new QState(&machine);
+ QState *s1 = new QState(s);
+ QState *s11 = new QState(s1);
+
+ DEFINE_ACTIVE_SPY(s);
+ DEFINE_ACTIVE_SPY(s1);
+ DEFINE_ACTIVE_SPY(s11);
+
+ machine.setInitialState(s);
+ s->setInitialState(s1);
+ s1->setInitialState(s11);
+ QSignalTransition *t = s1->addTransition(&emitter, SIGNAL(signalWithNoArg()), s11);
+ t->setObjectName("s1->s11");
+ t->setTransitionType(QAbstractTransition::InternalTransition);
+
+ s->setObjectName("s");
+ s1->setObjectName("s1");
+ s11->setObjectName("s11");
+
+ machine.start();
+
+ QTRY_COMPARE(machine.configuration().contains(s), true);
+ QTRY_COMPARE(machine.configuration().contains(s1), true);
+ QTRY_COMPARE(machine.configuration().contains(s11), true);
+ TEST_ACTIVE_CHANGED(s, 1);
+ TEST_ACTIVE_CHANGED(s1, 1);
+ TEST_ACTIVE_CHANGED(s11, 1);
+
+ emitter.emitSignalWithNoArg();
+
+ QTRY_COMPARE(machine.configuration().contains(s), true);
+ QTRY_COMPARE(machine.configuration().contains(s1), true);
+ QTRY_COMPARE(machine.configuration().contains(s11), true);
+ TEST_ACTIVE_CHANGED(s11, 3);
+ TEST_ACTIVE_CHANGED(s1, 1); // external transitions will return 3, internal transitions should return 1.
+ TEST_ACTIVE_CHANGED(s, 1);
+}
+
+void tst_QStateMachine::conflictingTransition()
+{
+ SignalEmitter emitter;
+
+ QStateMachine machine;
+ QState b(QState::ParallelStates, &machine);
+ QState c(&b);
+ QState d(QState::ParallelStates, &b);
+ QState e(&d);
+ QState e1(&e);
+ QState e2(&e);
+ QState f(&d);
+ QState f1(&f);
+ QState f2(&f);
+ QState a1(&machine);
+
+ machine.setInitialState(&b);
+ e.setInitialState(&e1);
+ f.setInitialState(&f1);
+ c.addTransition(&emitter, SIGNAL(signalWithNoArg()), &a1)->setObjectName("c->a1");
+ e1.addTransition(&emitter, SIGNAL(signalWithNoArg()), &e2)->setObjectName("e1->e2");
+ f1.addTransition(&emitter, SIGNAL(signalWithNoArg()), &f2)->setObjectName("f1->f2");
+
+ b.setObjectName("b");
+ c.setObjectName("c");
+ d.setObjectName("d");
+ e.setObjectName("e");
+ e1.setObjectName("e1");
+ e2.setObjectName("e2");
+ f.setObjectName("f");
+ f1.setObjectName("f1");
+ f2.setObjectName("f2");
+ a1.setObjectName("a1");
+
+ machine.start();
+
+ QTRY_COMPARE(machine.configuration().contains(&b), true);
+ QTRY_COMPARE(machine.configuration().contains(&c), true);
+ QTRY_COMPARE(machine.configuration().contains(&d), true);
+ QTRY_COMPARE(machine.configuration().contains(&e), true);
+ QTRY_COMPARE(machine.configuration().contains(&e1), true);
+ QTRY_COMPARE(machine.configuration().contains(&e2), false);
+ QTRY_COMPARE(machine.configuration().contains(&f), true);
+ QTRY_COMPARE(machine.configuration().contains(&f1), true);
+ QTRY_COMPARE(machine.configuration().contains(&f2), false);
+ QTRY_COMPARE(machine.configuration().contains(&a1), false);
+
+ emitter.emitSignalWithNoArg();
+
+ QTRY_COMPARE(machine.configuration().contains(&b), true);
+ QTRY_COMPARE(machine.configuration().contains(&c), true);
+ QTRY_COMPARE(machine.configuration().contains(&d), true);
+ QTRY_COMPARE(machine.configuration().contains(&e), true);
+ QTRY_COMPARE(machine.configuration().contains(&e1), false);
+ QTRY_COMPARE(machine.configuration().contains(&e2), true);
+ QTRY_COMPARE(machine.configuration().contains(&f), true);
+ QTRY_COMPARE(machine.configuration().contains(&f1), false);
+ QTRY_COMPARE(machine.configuration().contains(&f2), true);
+ QTRY_COMPARE(machine.configuration().contains(&a1), false);
+
+ QVERIFY(machine.isRunning());
+}
+
+void tst_QStateMachine::qtbug_46059()
+{
+ QStateMachine machine;
+ QState a(&machine);
+ QState b(&a);
+ QState c(&a);
+ QState success(&a);
+ QState failure(&machine);
+
+ machine.setInitialState(&a);
+ a.setInitialState(&b);
+ b.addTransition(new EventTransition(QEvent::Type(QEvent::User + 1), &c));
+ c.addTransition(new EventTransition(QEvent::Type(QEvent::User + 2), &success));
+ b.addTransition(new EventTransition(QEvent::Type(QEvent::User + 2), &failure));
+
+ machine.start();
+ QCoreApplication::processEvents();
+
+ QTRY_COMPARE(machine.configuration().contains(&a), true);
+ QTRY_COMPARE(machine.configuration().contains(&b), true);
+ QTRY_COMPARE(machine.configuration().contains(&c), false);
+ QTRY_COMPARE(machine.configuration().contains(&failure), false);
+ QTRY_COMPARE(machine.configuration().contains(&success), false);
+
+ machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 0)), QStateMachine::HighPriority);
+ machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 1)), QStateMachine::HighPriority);
+ machine.postEvent(new QEvent(QEvent::Type(QEvent::User + 2)), QStateMachine::NormalPriority);
+ QCoreApplication::processEvents();
+
+ QTRY_COMPARE(machine.configuration().contains(&a), true);
+ QTRY_COMPARE(machine.configuration().contains(&b), false);
+ QTRY_COMPARE(machine.configuration().contains(&c), false);
+ QTRY_COMPARE(machine.configuration().contains(&failure), false);
+ QTRY_COMPARE(machine.configuration().contains(&success), true);
+
+ QVERIFY(machine.isRunning());
+}
+
QTEST_MAIN(tst_QStateMachine)
#include "tst_qstatemachine.moc"
diff --git a/tests/auto/corelib/tools/qcontiguouscache/tst_qcontiguouscache.cpp b/tests/auto/corelib/tools/qcontiguouscache/tst_qcontiguouscache.cpp
index 01855a730e..76687bd478 100644
--- a/tests/auto/corelib/tools/qcontiguouscache/tst_qcontiguouscache.cpp
+++ b/tests/auto/corelib/tools/qcontiguouscache/tst_qcontiguouscache.cpp
@@ -43,6 +43,8 @@ class tst_QContiguousCache : public QObject
{
Q_OBJECT
private slots:
+ void assignment();
+
void empty();
void swap();
@@ -64,6 +66,16 @@ private slots:
QTEST_MAIN(tst_QContiguousCache)
+void tst_QContiguousCache::assignment()
+{
+ // compile-only test: QTBUG-45783
+ QContiguousCache<int> cc1, cc2;
+ // copy:
+ cc1 = cc2;
+ // move:
+ cc1 = qMove(cc2);
+}
+
void tst_QContiguousCache::empty()
{
QContiguousCache<int> c(10);