diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-07-22 20:13:50 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-07-22 20:21:19 +0200 |
commit | abd3b8030cbcc50379578b88ce6019e338ff8597 (patch) | |
tree | 7a7acb89e594b57180e9823c4ab03dcce66d5b5f /tests/auto/network | |
parent | 5cb581b3b4c3305a0dfebead1ec7049ab6f2ebc4 (diff) | |
parent | 6f3bb0aafab877c34dea3d9141a9931b5a7914a5 (diff) |
Merge remote-tracking branch 'origin/5.3' into dev
Conflicts:
src/widgets/kernel/qwidget_qpa.cpp
src/widgets/widgets.pro
Change-Id: I697eec936c4e1a6c360edc8f0b472e23c0461ecb
Diffstat (limited to 'tests/auto/network')
-rw-r--r-- | tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp b/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp index 4740b92b84..d28f11ff9d 100644 --- a/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp +++ b/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp @@ -85,6 +85,9 @@ private slots: void oldCacheVersionFile_data(); void oldCacheVersionFile(); + void streamVersion_data(); + void streamVersion(); + void sync(); void crashWhenParentingCache(); @@ -568,6 +571,74 @@ void tst_QNetworkDiskCache::oldCacheVersionFile() } } +void tst_QNetworkDiskCache::streamVersion_data() +{ + QTest::addColumn<int>("version"); + QTest::newRow("Qt 5.1") << int(QDataStream::Qt_5_1); + QDataStream ds; + QTest::newRow("current") << ds.version(); + QTest::newRow("higher than current") << ds.version() + 1; +} + +void tst_QNetworkDiskCache::streamVersion() +{ + SubQNetworkDiskCache cache; + QUrl url(EXAMPLE_URL); + cache.setupWithOne(tempDir.path(), url); + + QString cacheFile; + // find the file + QStringList files = countFiles(cache.cacheDirectory()); + foreach (const QString &file, files) { + QFileInfo info(file); + if (info.isFile()) { + cacheFile = file; + break; + } + } + + QFile file(cacheFile); + QVERIFY(file.open(QFile::ReadWrite|QIODevice::Truncate)); + QDataStream out(&file); + QFETCH(int, version); + if (version < out.version()) + out.setVersion(version); + out << qint32(0xe8); // cache magic + // Following code works only for cache file version 8 and should be updated on version change + out << qint32(8); + out << qint32(version); + + QNetworkCacheMetaData md; + md.setUrl(url); + QNetworkCacheMetaData::RawHeader header("content-type", "text/html"); + QNetworkCacheMetaData::RawHeaderList list; + list.append(header); + md.setRawHeaders(list); + md.setLastModified(QDateTime::currentDateTimeUtc().toOffsetFromUtc(3600)); + out << md; + + bool compressed = true; + out << compressed; + + QByteArray data("Hello World!"); + out << qCompress(data); + + file.close(); + + QNetworkCacheMetaData cachedMetaData = cache.call_fileMetaData(cacheFile); + if (version > out.version()) { + QVERIFY(!cachedMetaData.isValid()); + QVERIFY(!QFile::exists(cacheFile)); + } else { + QVERIFY(cachedMetaData.isValid()); + QVERIFY(QFile::exists(cacheFile)); + QIODevice *dataDevice = cache.data(url); + QVERIFY(dataDevice != 0); + QByteArray cachedData = dataDevice->readAll(); + QCOMPARE(cachedData, data); + } +} + class Runner : public QThread { |