summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/io/qfile/tst_qfile.cpp
diff options
context:
space:
mode:
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 2ef4c2c6a1..34ad2813b0 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,
@@ -3436,5 +3438,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"