ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/s10k/CommonLibs/quazip-0.7.2/qztest/qztest.cpp
Revision: 1096
Committed: Sat Dec 30 14:40:33 2017 UTC (7 years, 9 months ago) by s10k
Content type: text/x-c++src
File size: 7846 byte(s)
Log Message:
Added zlib, quazip, basicxmlsyntaxhighlighter, conditionalsemaphore and linenumberdisplay libraries. zlib and quazip are pre-compiled, but you can compile them yourself, just delete the dll files (or equivalent binary files to your OS)

File Contents

# Content
1 /*
2 Copyright (C) 2005-2014 Sergey A. Tachenov
3
4 This file is part of QuaZIP test suite.
5
6 QuaZIP is free software: you can redistribute it and/or modify
7 it under the terms of the GNU Lesser General Public License as published by
8 the Free Software Foundation, either version 2.1 of the License, or
9 (at your option) any later version.
10
11 QuaZIP is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU Lesser General Public License for more details.
15
16 You should have received a copy of the GNU Lesser General Public License
17 along with QuaZIP. If not, see <http://www.gnu.org/licenses/>.
18
19 See COPYING file for the full LGPL text.
20
21 Original ZIP package is copyrighted by Gilles Vollant and contributors,
22 see quazip/(un)zip.h files for details. Basically it's the zlib license.
23 */
24
25 #include "qztest.h"
26 #include "testquazip.h"
27 #include "testquazipfile.h"
28 #include "testquachecksum32.h"
29 #include "testjlcompress.h"
30 #include "testquazipdir.h"
31 #include "testquagzipfile.h"
32 #include "testquaziodevice.h"
33 #include "testquazipnewinfo.h"
34 #include "testquazipfileinfo.h"
35
36 #include <quazip/quazip.h>
37 #include <quazip/quazipfile.h>
38
39 #include <QCoreApplication>
40 #include <QDir>
41 #include <QFileInfo>
42 #include <QTextStream>
43
44 #include <QtTest/QtTest>
45
46 bool createTestFiles(const QStringList &fileNames, const QString &dir)
47 {
48 QDir curDir;
49 foreach (QString fileName, fileNames) {
50 QString filePath = QDir(dir).filePath(fileName);
51 QDir testDir = QFileInfo(filePath).dir();
52 if (!testDir.exists()) {
53 if (!curDir.mkpath(testDir.path())) {
54 qWarning("Couldn't mkpath %s",
55 testDir.path().toUtf8().constData());
56 return false;
57 }
58 }
59 if (fileName.endsWith('/')) {
60 if (!curDir.mkpath(filePath)) {
61 qWarning("Couldn't mkpath %s",
62 fileName.toUtf8().constData());
63 return false;
64 }
65 } else {
66 QFile testFile(filePath);
67 if (!testFile.open(QIODevice::WriteOnly | QIODevice::Text)) {
68 qWarning("Couldn't create %s",
69 fileName.toUtf8().constData());
70 return false;
71 }
72 QTextStream testStream(&testFile);
73 testStream << "This is a test file named " << fileName << endl;
74 }
75 }
76 return true;
77 }
78
79 bool createTestArchive(QuaZip &zip, const QString &zipName,
80 const QStringList &fileNames,
81 QTextCodec *codec,
82 const QString &dir)
83 {
84 if (codec != NULL) {
85 zip.setFileNameCodec(codec);
86 }
87 if (!zip.open(QuaZip::mdCreate)) {
88 qWarning("Couldn't open %s", zipName.toUtf8().constData());
89 return false;
90 }
91 int i = 0;
92 QDateTime dt1;
93 foreach (QString fileName, fileNames) {
94 QuaZipFile zipFile(&zip);
95 QString filePath = QDir(dir).filePath(fileName);
96 QFileInfo fileInfo(filePath);
97 QuaZipNewInfo newInfo(fileName, filePath);
98 if (i == 0) // to test code that needs different timestamps
99 newInfo.dateTime = newInfo.dateTime.addSecs(-60);
100 else if (i == 1) // will use for the next file too
101 dt1 = newInfo.dateTime;
102 else if (i == 2) // to test identical timestamps
103 newInfo.dateTime = dt1;
104 if (!zipFile.open(QIODevice::WriteOnly,
105 newInfo, NULL, 0,
106 fileInfo.isDir() ? 0 : 8)) {
107 qWarning("Couldn't open %s in %s", fileName.toUtf8()
108 .constData(), zipName.toUtf8().constData());
109 return false;
110 }
111 if (!fileInfo.isDir()) {
112 QFile file(filePath);
113 if (!file.open(QIODevice::ReadOnly)) {
114 qWarning("Couldn't open %s", filePath.toUtf8()
115 .constData());
116 return false;
117 }
118 while (!file.atEnd()) {
119 char buf[4096];
120 qint64 l = file.read(buf, 4096);
121 if (l <= 0) {
122 qWarning("Couldn't read %s", filePath.toUtf8()
123 .constData());
124 return false;
125 }
126 if (zipFile.write(buf, l) != l) {
127 qWarning("Couldn't write to %s in %s",
128 filePath.toUtf8().constData(),
129 zipName.toUtf8().constData());
130 return false;
131 }
132 }
133 file.close();
134 }
135 zipFile.close();
136 ++i;
137 }
138 zip.setComment(QString("This is the test archive"));
139 zip.close();
140 if (zipName.startsWith("<")) { // something like "<QIODevice pointer>"
141 return true;
142 } else {
143 return QFileInfo(zipName).exists();
144 }
145 }
146
147 bool createTestArchive(const QString &zipName,
148 const QStringList &fileNames,
149 const QString &dir) {
150 return createTestArchive(zipName, fileNames, NULL, dir);
151 }
152
153 bool createTestArchive(QIODevice *ioDevice,
154 const QStringList &fileNames,
155 QTextCodec *codec,
156 const QString &dir)
157 {
158 QuaZip zip(ioDevice);
159 return createTestArchive(zip, "<QIODevice pointer>", fileNames, codec, dir);
160 }
161
162 bool createTestArchive(const QString &zipName,
163 const QStringList &fileNames,
164 QTextCodec *codec,
165 const QString &dir) {
166 QuaZip zip(zipName);
167 return createTestArchive(zip, zipName, fileNames, codec, dir);
168 }
169
170 void removeTestFiles(const QStringList &fileNames, const QString &dir)
171 {
172 QDir curDir;
173 foreach (QString fileName, fileNames) {
174 curDir.remove(QDir(dir).filePath(fileName));
175 }
176 foreach (QString fileName, fileNames) {
177 QDir fileDir = QFileInfo(QDir(dir).filePath(fileName)).dir();
178 if (fileDir.exists()) {
179 // Non-empty dirs won't get removed, and that's good.
180 curDir.rmpath(fileDir.path());
181 }
182 }
183 }
184
185 int main(int argc, char **argv)
186 {
187 QCoreApplication app(argc, argv);
188 int err = 0;
189 {
190 TestQuaZip testQuaZip;
191 err = qMax(err, QTest::qExec(&testQuaZip, app.arguments()));
192 }
193 {
194 TestQuaZipFile testQuaZipFile;
195 err = qMax(err, QTest::qExec(&testQuaZipFile, app.arguments()));
196 }
197 {
198 TestQuaChecksum32 testQuaChecksum32;
199 err = qMax(err, QTest::qExec(&testQuaChecksum32, app.arguments()));
200 }
201 {
202 TestJlCompress testJlCompress;
203 err = qMax(err, QTest::qExec(&testJlCompress, app.arguments()));
204 }
205 {
206 TestQuaZipDir testQuaZipDir;
207 err = qMax(err, QTest::qExec(&testQuaZipDir, app.arguments()));
208 }
209 {
210 TestQuaZIODevice testQuaZIODevice;
211 err = qMax(err, QTest::qExec(&testQuaZIODevice, app.arguments()));
212 }
213 {
214 TestQuaGzipFile testQuaGzipFile;
215 err = qMax(err, QTest::qExec(&testQuaGzipFile, app.arguments()));
216 }
217 {
218 TestQuaZipNewInfo testQuaZipNewInfo;
219 err = qMax(err, QTest::qExec(&testQuaZipNewInfo, app.arguments()));
220 }
221 {
222 TestQuaZipFileInfo testQuaZipFileInfo;
223 err = qMax(err, QTest::qExec(&testQuaZipFileInfo, app.arguments()));
224 }
225 if (err == 0) {
226 qDebug("All tests executed successfully");
227 } else {
228 qWarning("There were errors in some of the tests above.");
229 }
230 return err;
231 }