source: OGRE/trunk/ogrenew/Tests/OgreMain/src/FileSystemArchiveTests.cpp @ 690

Revision 690, 11.8 KB checked in by mattausch, 18 years ago (diff)

added ogre 1.07 main

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-2005 The OGRE Team
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-----------------------------------------------------------------------------
24*/
25#include "FileSystemArchiveTests.h"
26#include "OgreFileSystem.h"
27
28// Regsiter the suite
29CPPUNIT_TEST_SUITE_REGISTRATION( FileSystemArchiveTests );
30
31void FileSystemArchiveTests::setUp()
32{
33#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
34    testPath = "../../../../Tests/OgreMain/misc/ArchiveTest/";
35#else
36    testPath = "../../../Tests/OgreMain/misc/ArchiveTest/";
37#endif
38}
39void FileSystemArchiveTests::tearDown()
40{
41}
42
43void FileSystemArchiveTests::testListNonRecursive()
44{
45    FileSystemArchive arch(testPath, "FileSystem");
46    arch.load();
47    StringVectorPtr vec = arch.list(false);
48
49    CPPUNIT_ASSERT_EQUAL((size_t)2, vec->size());
50    CPPUNIT_ASSERT_EQUAL(String("rootfile.txt"), vec->at(0));
51    CPPUNIT_ASSERT_EQUAL(String("rootfile2.txt"), vec->at(1));
52
53}
54void FileSystemArchiveTests::testListRecursive()
55{
56    FileSystemArchive arch(testPath, "FileSystem");
57    arch.load();
58    StringVectorPtr vec = arch.list(true);
59
60    CPPUNIT_ASSERT_EQUAL((size_t)41, vec->size()); // 41 including CVS folders!
61    CPPUNIT_ASSERT_EQUAL(String("rootfile.txt"), vec->at(0));
62    CPPUNIT_ASSERT_EQUAL(String("rootfile2.txt"), vec->at(1));
63    CPPUNIT_ASSERT_EQUAL(String("level1/materials/scripts/file.material"), vec->at(2));
64    CPPUNIT_ASSERT_EQUAL(String("level1/materials/scripts/file2.material"), vec->at(3));
65    CPPUNIT_ASSERT_EQUAL(String("level2/materials/scripts/file3.material"), vec->at(19));
66    CPPUNIT_ASSERT_EQUAL(String("level2/materials/scripts/file4.material"), vec->at(20));
67}
68void FileSystemArchiveTests::testListFileInfoNonRecursive()
69{
70    FileSystemArchive arch(testPath, "FileSystem");
71    arch.load();
72    FileInfoListPtr vec = arch.listFileInfo(false);
73
74    CPPUNIT_ASSERT_EQUAL((size_t)2, vec->size());
75    FileInfo& fi1 = vec->at(0);
76    CPPUNIT_ASSERT_EQUAL(String("rootfile.txt"), fi1.filename);
77    CPPUNIT_ASSERT_EQUAL(String("rootfile.txt"), fi1.basename);
78    CPPUNIT_ASSERT_EQUAL(StringUtil::BLANK, fi1.path);
79    CPPUNIT_ASSERT_EQUAL((size_t)130, fi1.compressedSize);
80    CPPUNIT_ASSERT_EQUAL((size_t)130, fi1.uncompressedSize);
81
82    FileInfo& fi2 = vec->at(1);
83    CPPUNIT_ASSERT_EQUAL(String("rootfile2.txt"), fi2.filename);
84    CPPUNIT_ASSERT_EQUAL(String("rootfile2.txt"), fi2.basename);
85    CPPUNIT_ASSERT_EQUAL(StringUtil::BLANK, fi2.path);
86    CPPUNIT_ASSERT_EQUAL((size_t)156, fi2.compressedSize);
87    CPPUNIT_ASSERT_EQUAL((size_t)156, fi2.uncompressedSize);
88}
89void FileSystemArchiveTests::testListFileInfoRecursive()
90{
91    FileSystemArchive arch(testPath, "FileSystem");
92    arch.load();
93    FileInfoListPtr vec = arch.listFileInfo(true);
94
95    CPPUNIT_ASSERT_EQUAL((size_t)41, vec->size()); // 41 including CVS folders!
96    FileInfo& fi1 = vec->at(0);
97    CPPUNIT_ASSERT_EQUAL(String("rootfile.txt"), fi1.filename);
98    CPPUNIT_ASSERT_EQUAL(String("rootfile.txt"), fi1.basename);
99    CPPUNIT_ASSERT_EQUAL(StringUtil::BLANK, fi1.path);
100    CPPUNIT_ASSERT_EQUAL((size_t)130, fi1.compressedSize);
101    CPPUNIT_ASSERT_EQUAL((size_t)130, fi1.uncompressedSize);
102
103    FileInfo& fi2 = vec->at(1);
104    CPPUNIT_ASSERT_EQUAL(String("rootfile2.txt"), fi2.filename);
105    CPPUNIT_ASSERT_EQUAL(String("rootfile2.txt"), fi2.basename);
106    CPPUNIT_ASSERT_EQUAL(StringUtil::BLANK, fi2.path);
107    CPPUNIT_ASSERT_EQUAL((size_t)156, fi2.compressedSize);
108    CPPUNIT_ASSERT_EQUAL((size_t)156, fi2.uncompressedSize);
109
110    FileInfo& fi3 = vec->at(2);
111    CPPUNIT_ASSERT_EQUAL(String("level1/materials/scripts/file.material"), fi3.filename);
112    CPPUNIT_ASSERT_EQUAL(String("file.material"), fi3.basename);
113    CPPUNIT_ASSERT_EQUAL(String("level1/materials/scripts/"), fi3.path);
114    CPPUNIT_ASSERT_EQUAL((size_t)0, fi3.compressedSize);
115    CPPUNIT_ASSERT_EQUAL((size_t)0, fi3.uncompressedSize);
116
117    FileInfo& fi4 = vec->at(3);
118    CPPUNIT_ASSERT_EQUAL(String("level1/materials/scripts/file2.material"), fi4.filename);
119    CPPUNIT_ASSERT_EQUAL(String("file2.material"), fi4.basename);
120    CPPUNIT_ASSERT_EQUAL(String("level1/materials/scripts/"), fi4.path);
121    CPPUNIT_ASSERT_EQUAL((size_t)0, fi4.compressedSize);
122    CPPUNIT_ASSERT_EQUAL((size_t)0, fi4.uncompressedSize);
123
124
125    FileInfo& fi5 = vec->at(19);
126    CPPUNIT_ASSERT_EQUAL(String("level2/materials/scripts/file3.material"), fi5.filename);
127    CPPUNIT_ASSERT_EQUAL(String("file3.material"), fi5.basename);
128    CPPUNIT_ASSERT_EQUAL(String("level2/materials/scripts/"), fi5.path);
129    CPPUNIT_ASSERT_EQUAL((size_t)0, fi5.compressedSize);
130    CPPUNIT_ASSERT_EQUAL((size_t)0, fi5.uncompressedSize);
131
132    FileInfo& fi6 = vec->at(20);
133    CPPUNIT_ASSERT_EQUAL(String("level2/materials/scripts/file4.material"), fi6.filename);
134    CPPUNIT_ASSERT_EQUAL(String("file4.material"), fi6.basename);
135    CPPUNIT_ASSERT_EQUAL(String("level2/materials/scripts/"), fi6.path);
136    CPPUNIT_ASSERT_EQUAL((size_t)0, fi6.compressedSize);
137    CPPUNIT_ASSERT_EQUAL((size_t)0, fi6.uncompressedSize);
138}
139void FileSystemArchiveTests::testFindNonRecursive()
140{
141    FileSystemArchive arch(testPath, "FileSystem");
142    arch.load();
143    StringVectorPtr vec = arch.find("*.txt", false);
144
145    CPPUNIT_ASSERT_EQUAL((size_t)2, vec->size());
146    CPPUNIT_ASSERT_EQUAL(String("rootfile.txt"), vec->at(0));
147    CPPUNIT_ASSERT_EQUAL(String("rootfile2.txt"), vec->at(1));
148}
149void FileSystemArchiveTests::testFindRecursive()
150{
151    FileSystemArchive arch(testPath, "FileSystem");
152    arch.load();
153    StringVectorPtr vec = arch.find("*.material", true);
154
155    CPPUNIT_ASSERT_EQUAL((size_t)4, vec->size());
156    CPPUNIT_ASSERT_EQUAL(String("level1/materials/scripts/file.material"), vec->at(0));
157    CPPUNIT_ASSERT_EQUAL(String("level1/materials/scripts/file2.material"), vec->at(1));
158    CPPUNIT_ASSERT_EQUAL(String("level2/materials/scripts/file3.material"), vec->at(2));
159    CPPUNIT_ASSERT_EQUAL(String("level2/materials/scripts/file4.material"), vec->at(3));
160}
161void FileSystemArchiveTests::testFindFileInfoNonRecursive()
162{
163    FileSystemArchive arch(testPath, "FileSystem");
164    arch.load();
165    FileInfoListPtr vec = arch.findFileInfo("*.txt", false);
166
167    CPPUNIT_ASSERT_EQUAL((size_t)2, vec->size());
168    FileInfo& fi1 = vec->at(0);
169    CPPUNIT_ASSERT_EQUAL(String("rootfile.txt"), fi1.filename);
170    CPPUNIT_ASSERT_EQUAL(String("rootfile.txt"), fi1.basename);
171    CPPUNIT_ASSERT_EQUAL(StringUtil::BLANK, fi1.path);
172    CPPUNIT_ASSERT_EQUAL((size_t)130, fi1.compressedSize);
173    CPPUNIT_ASSERT_EQUAL((size_t)130, fi1.uncompressedSize);
174
175    FileInfo& fi2 = vec->at(1);
176    CPPUNIT_ASSERT_EQUAL(String("rootfile2.txt"), fi2.filename);
177    CPPUNIT_ASSERT_EQUAL(String("rootfile2.txt"), fi2.basename);
178    CPPUNIT_ASSERT_EQUAL(StringUtil::BLANK, fi2.path);
179    CPPUNIT_ASSERT_EQUAL((size_t)156, fi2.compressedSize);
180    CPPUNIT_ASSERT_EQUAL((size_t)156, fi2.uncompressedSize);
181}
182void FileSystemArchiveTests::testFindFileInfoRecursive()
183{
184    FileSystemArchive arch(testPath, "FileSystem");
185    arch.load();
186    FileInfoListPtr vec = arch.findFileInfo("*.material", true);
187
188    CPPUNIT_ASSERT_EQUAL((size_t)4, vec->size());
189
190    FileInfo& fi3 = vec->at(0);
191    CPPUNIT_ASSERT_EQUAL(String("level1/materials/scripts/file.material"), fi3.filename);
192    CPPUNIT_ASSERT_EQUAL(String("file.material"), fi3.basename);
193    CPPUNIT_ASSERT_EQUAL(String("level1/materials/scripts/"), fi3.path);
194    CPPUNIT_ASSERT_EQUAL((size_t)0, fi3.compressedSize);
195    CPPUNIT_ASSERT_EQUAL((size_t)0, fi3.uncompressedSize);
196
197    FileInfo& fi4 = vec->at(1);
198    CPPUNIT_ASSERT_EQUAL(String("level1/materials/scripts/file2.material"), fi4.filename);
199    CPPUNIT_ASSERT_EQUAL(String("file2.material"), fi4.basename);
200    CPPUNIT_ASSERT_EQUAL(String("level1/materials/scripts/"), fi4.path);
201    CPPUNIT_ASSERT_EQUAL((size_t)0, fi4.compressedSize);
202    CPPUNIT_ASSERT_EQUAL((size_t)0, fi4.uncompressedSize);
203
204
205    FileInfo& fi5 = vec->at(2);
206    CPPUNIT_ASSERT_EQUAL(String("level2/materials/scripts/file3.material"), fi5.filename);
207    CPPUNIT_ASSERT_EQUAL(String("file3.material"), fi5.basename);
208    CPPUNIT_ASSERT_EQUAL(String("level2/materials/scripts/"), fi5.path);
209    CPPUNIT_ASSERT_EQUAL((size_t)0, fi5.compressedSize);
210    CPPUNIT_ASSERT_EQUAL((size_t)0, fi5.uncompressedSize);
211
212    FileInfo& fi6 = vec->at(3);
213    CPPUNIT_ASSERT_EQUAL(String("level2/materials/scripts/file4.material"), fi6.filename);
214    CPPUNIT_ASSERT_EQUAL(String("file4.material"), fi6.basename);
215    CPPUNIT_ASSERT_EQUAL(String("level2/materials/scripts/"), fi6.path);
216    CPPUNIT_ASSERT_EQUAL((size_t)0, fi6.compressedSize);
217    CPPUNIT_ASSERT_EQUAL((size_t)0, fi6.uncompressedSize);
218}
219void FileSystemArchiveTests::testFileRead()
220{
221    FileSystemArchive arch(testPath, "FileSystem");
222    arch.load();
223 
224    DataStreamPtr stream = arch.open("rootfile.txt");
225    CPPUNIT_ASSERT_EQUAL(String("this is line 1 in file 1"), stream->getLine());
226    CPPUNIT_ASSERT_EQUAL(String("this is line 2 in file 1"), stream->getLine());
227    CPPUNIT_ASSERT_EQUAL(String("this is line 3 in file 1"), stream->getLine());
228    CPPUNIT_ASSERT_EQUAL(String("this is line 4 in file 1"), stream->getLine());
229    CPPUNIT_ASSERT_EQUAL(String("this is line 5 in file 1"), stream->getLine());
230    CPPUNIT_ASSERT_EQUAL(StringUtil::BLANK, stream->getLine()); // blank at end of file
231    CPPUNIT_ASSERT(stream->eof());
232
233}
234void FileSystemArchiveTests::testReadInterleave()
235{
236    // Test overlapping reads from same archive
237
238    FileSystemArchive arch(testPath, "FileSystem");
239    arch.load();
240
241    // File 1
242    DataStreamPtr stream1 = arch.open("rootfile.txt");
243    CPPUNIT_ASSERT_EQUAL(String("this is line 1 in file 1"), stream1->getLine());
244    CPPUNIT_ASSERT_EQUAL(String("this is line 2 in file 1"), stream1->getLine());
245
246    // File 2
247    DataStreamPtr stream2 = arch.open("rootfile2.txt");
248    CPPUNIT_ASSERT_EQUAL(String("this is line 1 in file 2"), stream2->getLine());
249    CPPUNIT_ASSERT_EQUAL(String("this is line 2 in file 2"), stream2->getLine());
250    CPPUNIT_ASSERT_EQUAL(String("this is line 3 in file 2"), stream2->getLine());
251
252
253    // File 1
254    CPPUNIT_ASSERT_EQUAL(String("this is line 3 in file 1"), stream1->getLine());
255    CPPUNIT_ASSERT_EQUAL(String("this is line 4 in file 1"), stream1->getLine());
256    CPPUNIT_ASSERT_EQUAL(String("this is line 5 in file 1"), stream1->getLine());
257    CPPUNIT_ASSERT_EQUAL(StringUtil::BLANK, stream1->getLine()); // blank at end of file
258    CPPUNIT_ASSERT(stream1->eof());
259
260
261    // File 2
262    CPPUNIT_ASSERT_EQUAL(String("this is line 4 in file 2"), stream2->getLine());
263    CPPUNIT_ASSERT_EQUAL(String("this is line 5 in file 2"), stream2->getLine());
264    CPPUNIT_ASSERT_EQUAL(String("this is line 6 in file 2"), stream2->getLine());
265    CPPUNIT_ASSERT_EQUAL(StringUtil::BLANK, stream2->getLine()); // blank at end of file
266    CPPUNIT_ASSERT(stream2->eof());
267
268}
Note: See TracBrowser for help on using the repository browser.