Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/Tests/OgreMain/src/ZipArchiveTests.cpp @ 3

Last change on this file since 3 was 3, checked in by anonymous, 17 years ago

=update

File size: 11.1 KB
Line 
1/*
2-----------------------------------------------------------------------------
3This source file is part of OGRE
4(Object-oriented Graphics Rendering Engine)
5For the latest info, see http://www.ogre3d.org/
6
7Copyright (c) 2000-2006 Torus Knot Software Ltd
8Also see acknowledgements in Readme.html
9
10This program is free software; you can redistribute it and/or modify it under
11the terms of the GNU Lesser General Public License as published by the Free Software
12Foundation; either version 2 of the License, or (at your option) any later
13version.
14
15This program is distributed in the hope that it will be useful, but WITHOUT
16ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
18
19You should have received a copy of the GNU Lesser General Public License along with
20this program; if not, write to the Free Software Foundation, Inc., 59 Temple
21Place - Suite 330, Boston, MA 02111-1307, USA, or go to
22http://www.gnu.org/copyleft/lesser.txt.
23
24You may alternatively use this source under the terms of a specific version of
25the OGRE Unrestricted License provided you have obtained such a license from
26Torus Knot Software Ltd.
27-----------------------------------------------------------------------------
28*/
29#include "ZipArchiveTests.h"
30#include "OgreZip.h"
31
32using namespace Ogre;
33
34// Regsiter the suite
35CPPUNIT_TEST_SUITE_REGISTRATION( ZipArchiveTests );
36
37void ZipArchiveTests::setUp()
38{
39#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
40    testPath = "../../../../Tests/OgreMain/misc/ArchiveTest.zip";
41#else
42    testPath = "../../../Tests/OgreMain/misc/ArchiveTest.zip";
43#endif
44}
45void ZipArchiveTests::tearDown()
46{
47}
48
49void ZipArchiveTests::testListNonRecursive()
50{
51    ZipArchive arch(testPath, "Zip");
52    arch.load();
53    StringVectorPtr vec = arch.list(false);
54
55    CPPUNIT_ASSERT_EQUAL((size_t)2, vec->size());
56    CPPUNIT_ASSERT_EQUAL(String("rootfile.txt"), vec->at(0));
57    CPPUNIT_ASSERT_EQUAL(String("rootfile2.txt"), vec->at(1));
58
59}
60void ZipArchiveTests::testListRecursive()
61{
62    ZipArchive arch(testPath, "Zip");
63    arch.load();
64    StringVectorPtr vec = arch.list(true);
65
66    CPPUNIT_ASSERT_EQUAL((size_t)6, vec->size());
67    CPPUNIT_ASSERT_EQUAL(String("level1/materials/scripts/file.material"), vec->at(0));
68    CPPUNIT_ASSERT_EQUAL(String("level1/materials/scripts/file2.material"), vec->at(1));
69    CPPUNIT_ASSERT_EQUAL(String("level2/materials/scripts/file3.material"), vec->at(2));
70    CPPUNIT_ASSERT_EQUAL(String("level2/materials/scripts/file4.material"), vec->at(3));
71    CPPUNIT_ASSERT_EQUAL(String("rootfile.txt"), vec->at(4));
72    CPPUNIT_ASSERT_EQUAL(String("rootfile2.txt"), vec->at(5));
73}
74void ZipArchiveTests::testListFileInfoNonRecursive()
75{
76    ZipArchive arch(testPath, "Zip");
77    arch.load();
78    FileInfoListPtr vec = arch.listFileInfo(false);
79
80    CPPUNIT_ASSERT_EQUAL((size_t)2, vec->size());
81    FileInfo& fi1 = vec->at(0);
82    CPPUNIT_ASSERT_EQUAL(String("rootfile.txt"), fi1.filename);
83    CPPUNIT_ASSERT_EQUAL(String("rootfile.txt"), fi1.basename);
84    CPPUNIT_ASSERT_EQUAL(StringUtil::BLANK, fi1.path);
85    CPPUNIT_ASSERT_EQUAL((size_t)40, fi1.compressedSize);
86    CPPUNIT_ASSERT_EQUAL((size_t)130, fi1.uncompressedSize);
87
88    FileInfo& fi2 = vec->at(1);
89    CPPUNIT_ASSERT_EQUAL(String("rootfile2.txt"), fi2.filename);
90    CPPUNIT_ASSERT_EQUAL(String("rootfile2.txt"), fi2.basename);
91    CPPUNIT_ASSERT_EQUAL(StringUtil::BLANK, fi2.path);
92    CPPUNIT_ASSERT_EQUAL((size_t)45, fi2.compressedSize);
93    CPPUNIT_ASSERT_EQUAL((size_t)156, fi2.uncompressedSize);
94}
95void ZipArchiveTests::testListFileInfoRecursive()
96{
97    ZipArchive arch(testPath, "Zip");
98    arch.load();
99    FileInfoListPtr vec = arch.listFileInfo(true);
100
101    CPPUNIT_ASSERT_EQUAL((size_t)6, vec->size());
102    FileInfo& fi3 = vec->at(0);
103    CPPUNIT_ASSERT_EQUAL(String("level1/materials/scripts/file.material"), fi3.filename);
104    CPPUNIT_ASSERT_EQUAL(String("file.material"), fi3.basename);
105    CPPUNIT_ASSERT_EQUAL(String("level1/materials/scripts/"), fi3.path);
106    CPPUNIT_ASSERT_EQUAL((size_t)0, fi3.compressedSize);
107    CPPUNIT_ASSERT_EQUAL((size_t)0, fi3.uncompressedSize);
108
109    FileInfo& fi4 = vec->at(1);
110    CPPUNIT_ASSERT_EQUAL(String("level1/materials/scripts/file2.material"), fi4.filename);
111    CPPUNIT_ASSERT_EQUAL(String("file2.material"), fi4.basename);
112    CPPUNIT_ASSERT_EQUAL(String("level1/materials/scripts/"), fi4.path);
113    CPPUNIT_ASSERT_EQUAL((size_t)0, fi4.compressedSize);
114    CPPUNIT_ASSERT_EQUAL((size_t)0, fi4.uncompressedSize);
115
116
117    FileInfo& fi5 = vec->at(2);
118    CPPUNIT_ASSERT_EQUAL(String("level2/materials/scripts/file3.material"), fi5.filename);
119    CPPUNIT_ASSERT_EQUAL(String("file3.material"), fi5.basename);
120    CPPUNIT_ASSERT_EQUAL(String("level2/materials/scripts/"), fi5.path);
121    CPPUNIT_ASSERT_EQUAL((size_t)0, fi5.compressedSize);
122    CPPUNIT_ASSERT_EQUAL((size_t)0, fi5.uncompressedSize);
123
124    FileInfo& fi6 = vec->at(3);
125    CPPUNIT_ASSERT_EQUAL(String("level2/materials/scripts/file4.material"), fi6.filename);
126    CPPUNIT_ASSERT_EQUAL(String("file4.material"), fi6.basename);
127    CPPUNIT_ASSERT_EQUAL(String("level2/materials/scripts/"), fi6.path);
128    CPPUNIT_ASSERT_EQUAL((size_t)0, fi6.compressedSize);
129    CPPUNIT_ASSERT_EQUAL((size_t)0, fi6.uncompressedSize);
130
131    FileInfo& fi1 = vec->at(4);
132    CPPUNIT_ASSERT_EQUAL(String("rootfile.txt"), fi1.filename);
133    CPPUNIT_ASSERT_EQUAL(String("rootfile.txt"), fi1.basename);
134    CPPUNIT_ASSERT_EQUAL(StringUtil::BLANK, fi1.path);
135    CPPUNIT_ASSERT_EQUAL((size_t)40, fi1.compressedSize);
136    CPPUNIT_ASSERT_EQUAL((size_t)130, fi1.uncompressedSize);
137
138    FileInfo& fi2 = vec->at(5);
139    CPPUNIT_ASSERT_EQUAL(String("rootfile2.txt"), fi2.filename);
140    CPPUNIT_ASSERT_EQUAL(String("rootfile2.txt"), fi2.basename);
141    CPPUNIT_ASSERT_EQUAL(StringUtil::BLANK, fi2.path);
142    CPPUNIT_ASSERT_EQUAL((size_t)45, fi2.compressedSize);
143    CPPUNIT_ASSERT_EQUAL((size_t)156, fi2.uncompressedSize);
144
145}
146void ZipArchiveTests::testFindNonRecursive()
147{
148    ZipArchive arch(testPath, "Zip");
149    arch.load();
150    StringVectorPtr vec = arch.find("*.txt", false);
151
152    CPPUNIT_ASSERT_EQUAL((size_t)2, vec->size());
153    CPPUNIT_ASSERT_EQUAL(String("rootfile.txt"), vec->at(0));
154    CPPUNIT_ASSERT_EQUAL(String("rootfile2.txt"), vec->at(1));
155}
156void ZipArchiveTests::testFindRecursive()
157{
158    ZipArchive arch(testPath, "Zip");
159    arch.load();
160    StringVectorPtr vec = arch.find("*.material", true);
161
162    CPPUNIT_ASSERT_EQUAL((size_t)4, vec->size());
163    CPPUNIT_ASSERT_EQUAL(String("level1/materials/scripts/file.material"), vec->at(0));
164    CPPUNIT_ASSERT_EQUAL(String("level1/materials/scripts/file2.material"), vec->at(1));
165    CPPUNIT_ASSERT_EQUAL(String("level2/materials/scripts/file3.material"), vec->at(2));
166    CPPUNIT_ASSERT_EQUAL(String("level2/materials/scripts/file4.material"), vec->at(3));
167}
168void ZipArchiveTests::testFindFileInfoNonRecursive()
169{
170    ZipArchive arch(testPath, "Zip");
171    arch.load();
172    FileInfoListPtr vec = arch.findFileInfo("*.txt", false);
173
174    CPPUNIT_ASSERT_EQUAL((size_t)2, vec->size());
175    FileInfo& fi1 = vec->at(0);
176    CPPUNIT_ASSERT_EQUAL(String("rootfile.txt"), fi1.filename);
177    CPPUNIT_ASSERT_EQUAL(String("rootfile.txt"), fi1.basename);
178    CPPUNIT_ASSERT_EQUAL(StringUtil::BLANK, fi1.path);
179    CPPUNIT_ASSERT_EQUAL((size_t)40, fi1.compressedSize);
180    CPPUNIT_ASSERT_EQUAL((size_t)130, fi1.uncompressedSize);
181
182    FileInfo& fi2 = vec->at(1);
183    CPPUNIT_ASSERT_EQUAL(String("rootfile2.txt"), fi2.filename);
184    CPPUNIT_ASSERT_EQUAL(String("rootfile2.txt"), fi2.basename);
185    CPPUNIT_ASSERT_EQUAL(StringUtil::BLANK, fi2.path);
186    CPPUNIT_ASSERT_EQUAL((size_t)45, fi2.compressedSize);
187    CPPUNIT_ASSERT_EQUAL((size_t)156, fi2.uncompressedSize);
188}
189void ZipArchiveTests::testFindFileInfoRecursive()
190{
191    ZipArchive arch(testPath, "Zip");
192    arch.load();
193    FileInfoListPtr vec = arch.findFileInfo("*.material", true);
194
195    CPPUNIT_ASSERT_EQUAL((size_t)4, vec->size());
196
197    FileInfo& fi3 = vec->at(0);
198    CPPUNIT_ASSERT_EQUAL(String("level1/materials/scripts/file.material"), fi3.filename);
199    CPPUNIT_ASSERT_EQUAL(String("file.material"), fi3.basename);
200    CPPUNIT_ASSERT_EQUAL(String("level1/materials/scripts/"), fi3.path);
201    CPPUNIT_ASSERT_EQUAL((size_t)0, fi3.compressedSize);
202    CPPUNIT_ASSERT_EQUAL((size_t)0, fi3.uncompressedSize);
203
204    FileInfo& fi4 = vec->at(1);
205    CPPUNIT_ASSERT_EQUAL(String("level1/materials/scripts/file2.material"), fi4.filename);
206    CPPUNIT_ASSERT_EQUAL(String("file2.material"), fi4.basename);
207    CPPUNIT_ASSERT_EQUAL(String("level1/materials/scripts/"), fi4.path);
208    CPPUNIT_ASSERT_EQUAL((size_t)0, fi4.compressedSize);
209    CPPUNIT_ASSERT_EQUAL((size_t)0, fi4.uncompressedSize);
210
211
212    FileInfo& fi5 = vec->at(2);
213    CPPUNIT_ASSERT_EQUAL(String("level2/materials/scripts/file3.material"), fi5.filename);
214    CPPUNIT_ASSERT_EQUAL(String("file3.material"), fi5.basename);
215    CPPUNIT_ASSERT_EQUAL(String("level2/materials/scripts/"), fi5.path);
216    CPPUNIT_ASSERT_EQUAL((size_t)0, fi5.compressedSize);
217    CPPUNIT_ASSERT_EQUAL((size_t)0, fi5.uncompressedSize);
218
219    FileInfo& fi6 = vec->at(3);
220    CPPUNIT_ASSERT_EQUAL(String("level2/materials/scripts/file4.material"), fi6.filename);
221    CPPUNIT_ASSERT_EQUAL(String("file4.material"), fi6.basename);
222    CPPUNIT_ASSERT_EQUAL(String("level2/materials/scripts/"), fi6.path);
223    CPPUNIT_ASSERT_EQUAL((size_t)0, fi6.compressedSize);
224    CPPUNIT_ASSERT_EQUAL((size_t)0, fi6.uncompressedSize);
225}
226void ZipArchiveTests::testFileRead()
227{
228    ZipArchive arch(testPath, "Zip");
229    arch.load();
230
231    DataStreamPtr stream = arch.open("rootfile.txt");
232    CPPUNIT_ASSERT_EQUAL(String("this is line 1 in file 1"), stream->getLine());
233    CPPUNIT_ASSERT_EQUAL(String("this is line 2 in file 1"), stream->getLine());
234    CPPUNIT_ASSERT_EQUAL(String("this is line 3 in file 1"), stream->getLine());
235    CPPUNIT_ASSERT_EQUAL(String("this is line 4 in file 1"), stream->getLine());
236    CPPUNIT_ASSERT_EQUAL(String("this is line 5 in file 1"), stream->getLine());
237    CPPUNIT_ASSERT(stream->eof());
238
239}
240void ZipArchiveTests::testReadInterleave()
241{
242    // Test overlapping reads from same archive
243
244    ZipArchive arch(testPath, "Zip");
245    arch.load();
246
247    // File 1
248    DataStreamPtr stream1 = arch.open("rootfile.txt");
249    CPPUNIT_ASSERT_EQUAL(String("this is line 1 in file 1"), stream1->getLine());
250    CPPUNIT_ASSERT_EQUAL(String("this is line 2 in file 1"), stream1->getLine());
251
252    // File 2
253    DataStreamPtr stream2 = arch.open("rootfile2.txt");
254    CPPUNIT_ASSERT_EQUAL(String("this is line 1 in file 2"), stream2->getLine());
255    CPPUNIT_ASSERT_EQUAL(String("this is line 2 in file 2"), stream2->getLine());
256    CPPUNIT_ASSERT_EQUAL(String("this is line 3 in file 2"), stream2->getLine());
257
258
259    // File 1
260    CPPUNIT_ASSERT_EQUAL(String("this is line 3 in file 1"), stream1->getLine());
261    CPPUNIT_ASSERT_EQUAL(String("this is line 4 in file 1"), stream1->getLine());
262    CPPUNIT_ASSERT_EQUAL(String("this is line 5 in file 1"), stream1->getLine());
263    CPPUNIT_ASSERT(stream1->eof());
264
265
266    // File 2
267    CPPUNIT_ASSERT_EQUAL(String("this is line 4 in file 2"), stream2->getLine());
268    CPPUNIT_ASSERT_EQUAL(String("this is line 5 in file 2"), stream2->getLine());
269    CPPUNIT_ASSERT_EQUAL(String("this is line 6 in file 2"), stream2->getLine());
270    CPPUNIT_ASSERT(stream2->eof());
271
272}
Note: See TracBrowser for help on using the repository browser.