source: Vago/quazip-0.7.2/qztest/testquaziodevice.cpp@ 1092

Last change on this file since 1092 was 1049, checked in by s10k, 8 years ago
File size: 3.8 KB
Line 
1/*
2Copyright (C) 2005-2014 Sergey A. Tachenov
3
4This file is part of QuaZIP test suite.
5
6QuaZIP is free software: you can redistribute it and/or modify
7it under the terms of the GNU Lesser General Public License as published by
8the Free Software Foundation, either version 2.1 of the License, or
9(at your option) any later version.
10
11QuaZIP is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU Lesser General Public License for more details.
15
16You should have received a copy of the GNU Lesser General Public License
17along with QuaZIP. If not, see <http://www.gnu.org/licenses/>.
18
19See COPYING file for the full LGPL text.
20
21Original ZIP package is copyrighted by Gilles Vollant and contributors,
22see quazip/(un)zip.h files for details. Basically it's the zlib license.
23*/
24
25#include "testquaziodevice.h"
26#include <quazip/quaziodevice.h>
27#include <QBuffer>
28#include <QByteArray>
29#include <QtTest/QtTest>
30
31void TestQuaZIODevice::read()
32{
33 QByteArray buf(256, 0);
34 z_stream zouts;
35 zouts.zalloc = (alloc_func) NULL;
36 zouts.zfree = (free_func) NULL;
37 zouts.opaque = NULL;
38 deflateInit(&zouts, Z_DEFAULT_COMPRESSION);
39 zouts.next_in = reinterpret_cast<Bytef*>(const_cast<char*>("test"));
40 zouts.avail_in = 4;
41 zouts.next_out = reinterpret_cast<Bytef*>(buf.data());
42 zouts.avail_out = buf.size();
43 deflate(&zouts, Z_FINISH);
44 deflateEnd(&zouts);
45 QBuffer testBuffer(&buf);
46 testBuffer.open(QIODevice::ReadOnly);
47 QuaZIODevice testDevice(&testBuffer);
48 QVERIFY(testDevice.open(QIODevice::ReadOnly));
49 char outBuf[5];
50 QCOMPARE(testDevice.read(outBuf, 5), static_cast<qint64>(4));
51 testDevice.close();
52 QVERIFY(!testDevice.isOpen());
53}
54
55void TestQuaZIODevice::readMany()
56{
57 QByteArray buf(256, 0);
58 z_stream zouts;
59 zouts.zalloc = (alloc_func) NULL;
60 zouts.zfree = (free_func) NULL;
61 zouts.opaque = NULL;
62 deflateInit(&zouts, Z_DEFAULT_COMPRESSION);
63 zouts.next_in = reinterpret_cast<Bytef*>(const_cast<char*>("testtest"));
64 zouts.avail_in = 8;
65 zouts.next_out = reinterpret_cast<Bytef*>(buf.data());
66 zouts.avail_out = buf.size();
67 deflate(&zouts, Z_FINISH);
68 deflateEnd(&zouts);
69 QBuffer testBuffer(&buf);
70 testBuffer.open(QIODevice::ReadOnly);
71 QuaZIODevice testDevice(&testBuffer);
72 QVERIFY(testDevice.open(QIODevice::ReadOnly));
73 char outBuf[4];
74 QCOMPARE(testDevice.read(outBuf, 4), static_cast<qint64>(4));
75 QVERIFY(!testDevice.atEnd());
76 QVERIFY(testDevice.bytesAvailable() > 0);
77 QCOMPARE(testDevice.read(4).size(), 4);
78 QCOMPARE(testDevice.bytesAvailable(), static_cast<qint64>(0));
79 QVERIFY(testDevice.atEnd());
80 testDevice.close();
81 QVERIFY(!testDevice.isOpen());
82}
83
84void TestQuaZIODevice::write()
85{
86 QByteArray buf(256, 0);
87 QBuffer testBuffer(&buf);
88 testBuffer.open(QIODevice::WriteOnly);
89 QuaZIODevice *testDevice = new QuaZIODevice(&testBuffer);
90 QCOMPARE(testDevice->getIoDevice(), &testBuffer);
91 QVERIFY(testDevice->open(QIODevice::WriteOnly));
92 QCOMPARE(testDevice->write("test", 4), static_cast<qint64>(4));
93 testDevice->close();
94 QVERIFY(!testDevice->isOpen());
95 z_stream zins;
96 zins.zalloc = (alloc_func) NULL;
97 zins.zfree = (free_func) NULL;
98 zins.opaque = NULL;
99 inflateInit(&zins);
100 zins.next_in = reinterpret_cast<Bytef*>(buf.data());
101 zins.avail_in = testBuffer.pos();
102 char outBuf[5];
103 zins.next_out = reinterpret_cast<Bytef*>(outBuf);
104 zins.avail_out = 5;
105 inflate(&zins, Z_FINISH);
106 inflateEnd(&zins);
107 int size = 5 - zins.avail_out;
108 QCOMPARE(size, 4);
109 outBuf[4] = '\0';
110 QCOMPARE(static_cast<const char*>(outBuf), "test");
111 delete testDevice; // Test D0 destructor
112}
Note: See TracBrowser for help on using the repository browser.