diff options
author | Liang Qi <liang.qi@qt.io> | 2017-02-08 15:48:29 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2017-02-08 15:49:18 +0100 |
commit | dd756011da13b95fdb630a1bbb90234f1e60f415 (patch) | |
tree | a6259b1e9b6463108796ce912e3d1752e301505f /tests/auto/corelib/io/qfile/tst_qfile.cpp | |
parent | 0c50edbe84914469973a3b10e0170023ccdd66fe (diff) | |
parent | b6bf2a33f4c33a212da7b58a049b3b5b20b3f327 (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.cpp | 62 |
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" |