summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/io/qtemporarydir/tst_qtemporarydir.cpp
diff options
context:
space:
mode:
authorLuca Di Sera <luca.disera@qt.io>2022-03-17 11:22:44 +0100
committerMarc Mutz <marc.mutz@qt.io>2022-03-18 20:56:19 +0000
commit33d62de7c88551218124c8d7c91736366720a849 (patch)
tree13c3c63653ba6a7b1e00d01222bc99db5ab1da64 /tests/auto/corelib/io/qtemporarydir/tst_qtemporarydir.cpp
parente14466aa66406da46da5dc70f94529ccfe6fb911 (diff)
Enable move semantics for QTemporaryDir
Add move constructor and move assignment operator. To allow for the the change to be implemented QTemporaryDir, the internal d_ptr was modified from a QScopedPointer, which is not movable, to a raw pointer. Add member + free swap implementations. Add tests. [ChangeLog][QtCore][QTemporaryDir] Enabled move semantics. Change-Id: I9f196a77c70b4ca0b7f0c06505d00fdd87a9785c Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Diffstat (limited to 'tests/auto/corelib/io/qtemporarydir/tst_qtemporarydir.cpp')
-rw-r--r--tests/auto/corelib/io/qtemporarydir/tst_qtemporarydir.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/tests/auto/corelib/io/qtemporarydir/tst_qtemporarydir.cpp b/tests/auto/corelib/io/qtemporarydir/tst_qtemporarydir.cpp
index d4760c0afd..65835ab91a 100644
--- a/tests/auto/corelib/io/qtemporarydir/tst_qtemporarydir.cpp
+++ b/tests/auto/corelib/io/qtemporarydir/tst_qtemporarydir.cpp
@@ -49,6 +49,8 @@
#include "qplatformdefs.h"
#endif
+#include <optional>
+
class tst_QTemporaryDir : public QObject
{
Q_OBJECT
@@ -59,6 +61,7 @@ public slots:
private slots:
void construction();
+ void moveSemantics();
void fileTemplate();
void fileTemplate_data();
void getSetCheck();
@@ -105,6 +108,58 @@ void tst_QTemporaryDir::construction()
QCOMPARE(dir.errorString(), QString());
}
+void tst_QTemporaryDir::moveSemantics()
+{
+ {
+ auto original = std::optional<QTemporaryDir>(std::in_place);
+ QVERIFY(original->isValid());
+
+ original->setAutoRemove(true);
+
+ auto OriginalDirectoryInfo = QFileInfo(original->path());
+ OriginalDirectoryInfo.setCaching(false);
+ QVERIFY(OriginalDirectoryInfo.exists());
+
+ QTemporaryDir movedInto = std::move(*original);
+
+ original.reset();
+
+ QVERIFY(OriginalDirectoryInfo.exists());
+ QVERIFY(movedInto.path() == OriginalDirectoryInfo.filePath());
+ }
+
+ {
+ auto movedInto = QTemporaryDir();
+ QVERIFY(movedInto.isValid());
+
+ movedInto.setAutoRemove(true);
+
+ auto movedIntoInitialDirectoryInfo = QFileInfo(movedInto.path());
+ movedIntoInitialDirectoryInfo.setCaching(false);
+ QVERIFY(movedIntoInitialDirectoryInfo.exists());
+
+ auto OriginalDirectoryInfo = QFileInfo();
+ OriginalDirectoryInfo.setCaching(false);
+
+ {
+ auto original = QTemporaryDir();
+ QVERIFY(original.isValid());
+
+ original.setAutoRemove(true);
+
+ OriginalDirectoryInfo.setFile(original.path());
+ QVERIFY(OriginalDirectoryInfo.exists());
+
+ movedInto = std::move(original);
+ }
+
+ QVERIFY(!movedIntoInitialDirectoryInfo.exists());
+ QVERIFY(OriginalDirectoryInfo.exists());
+
+ QVERIFY(movedInto.path() == OriginalDirectoryInfo.filePath());
+ }
+}
+
// Testing get/set functions
void tst_QTemporaryDir::getSetCheck()
{