summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/io/qfile/tst_qfile.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2017-02-08 15:48:29 +0100
committerLiang Qi <liang.qi@qt.io>2017-02-08 15:49:18 +0100
commitdd756011da13b95fdb630a1bbb90234f1e60f415 (patch)
treea6259b1e9b6463108796ce912e3d1752e301505f /tests/auto/corelib/io/qfile/tst_qfile.cpp
parent0c50edbe84914469973a3b10e0170023ccdd66fe (diff)
parentb6bf2a33f4c33a212da7b58a049b3b5b20b3f327 (diff)
Merge remote-tracking branch 'origin/5.8' into 5.9
Conflicts: configure.json mkspecs/win32-icc/qmake.conf Change-Id: Ibf40546b024d644c7d9ed490bee15b82597f4d3f
Diffstat (limited to 'tests/auto/corelib/io/qfile/tst_qfile.cpp')
-rw-r--r--tests/auto/corelib/io/qfile/tst_qfile.cpp62
1 files changed, 62 insertions, 0 deletions
diff --git a/tests/auto/corelib/io/qfile/tst_qfile.cpp b/tests/auto/corelib/io/qfile/tst_qfile.cpp
index e2a0c80396..57e197aa83 100644
--- a/tests/auto/corelib/io/qfile/tst_qfile.cpp
+++ b/tests/auto/corelib/io/qfile/tst_qfile.cpp
@@ -243,6 +243,8 @@ private slots:
void invalidFile_data();
void invalidFile();
+ void reuseQFile();
+
private:
enum FileType {
OpenQFile,
@@ -3434,5 +3436,65 @@ void tst_QFile::autocloseHandle()
}
}
+void tst_QFile::reuseQFile()
+{
+ // QTemporaryDir is current dir, no need to remove these files
+ const QString filename1("filegt16k");
+ const QString filename2("file16k");
+
+ // create test files for reusing QFile object
+ QFile file;
+ file.setFileName(filename1);
+ QVERIFY(file.open(QIODevice::WriteOnly));
+ QByteArray ba(17408, 'a');
+ qint64 written = file.write(ba);
+ QCOMPARE(written, 17408);
+ file.close();
+
+ file.setFileName(filename2);
+ QVERIFY(file.open(QIODevice::WriteOnly));
+ ba.resize(16384);
+ written = file.write(ba);
+ QCOMPARE(written, 16384);
+ file.close();
+
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ QCOMPARE(file.size(), 16384);
+ QCOMPARE(file.pos(), qint64(0));
+ QVERIFY(file.seek(10));
+ QCOMPARE(file.pos(), qint64(10));
+ QVERIFY(file.seek(0));
+ QCOMPARE(file.pos(), qint64(0));
+ QCOMPARE(file.readAll(), ba);
+ file.close();
+
+ file.setFileName(filename1);
+ QVERIFY(file.open(QIODevice::ReadOnly));
+
+ // read first file
+ {
+ // get file size without touching QFile
+ QFileInfo fi(filename1);
+ const qint64 fileSize = fi.size();
+ file.read(fileSize);
+ QVERIFY(file.atEnd());
+ file.close();
+ }
+
+ // try again with the next file with the same QFile object
+ file.setFileName(filename2);
+ QVERIFY(file.open(QIODevice::ReadOnly));
+
+ // read second file
+ {
+ // get file size without touching QFile
+ QFileInfo fi(filename2);
+ const qint64 fileSize = fi.size();
+ file.read(fileSize);
+ QVERIFY(file.atEnd());
+ file.close();
+ }
+}
+
QTEST_MAIN(tst_QFile)
#include "tst_qfile.moc"