OSDN Git Service

(LibGoblin)
[drdeamon64/drdeamon64.git] / libgoblin / test_libgoblin_srcfile.c
1 /*DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64
2
3                          D r . D e a m o n  6 4
4                         for INTEL64(R), AMD64(R)
5         
6    Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved.
7
8 Redistribution and use in source and binary forms, with or without
9 modification, are permitted provided that the following conditions are met:
10
11  1. Redistributions of source code must retain the above copyright notice,
12     this list of conditions and the following disclaimer.
13  2. Redistributions in binary form must reproduce the above copyright
14     notice, this list of conditions and the following disclaimer in the
15     documentation and/or other materials provided with the distribution.
16
17 THIS SOFTWARE IS PROVIDED BY Koine Yuusuke(koinec) ``AS IS'' AND ANY
18 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 DISCLAIMED. IN NO EVENT SHALL Koine Yuusuke(koinec) OR CONTRIBUTORS BE
21 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
27 OF THE POSSIBILITY OF SUCH DAMAGE.
28
29 DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64*/
30
31 /* File Info -----------------------------------------------------------
32 File: drd64_.c
33 Function: 
34 Comment: 
35 ----------------------------------------------------------------------*/
36
37 #define DRD64_SRC_TEST_LIBGOBLIN_SRCFILE
38 #include"drd64_libgoblin.h"
39 #include"test_libgoblin.h"
40
41
42 /* SrcFile_DispenseSrcFile() & FreeSrcFile() *****************/
43 /*--------------------------------------------------------------------*/
44 typedef struct  {
45         char    str_filename[128];
46         DWord   dw_hash;
47 } SrcFile_TestData;
48
49 void Test_SrcFile_DispenseFree_test00_003( void )
50 {
51         int             i_cnt;
52         int             i_len;
53         int             i_pos;
54         int             i_result;
55         LibGoblin_BinaryFile    *p_bfile;
56         LibGoblin_SrcFile       *p_srcfile;
57         SrcFile_TestData        *p_test;
58         SrcFile_TestData        *p_now;
59
60         // Generate TestData ----
61         p_test  = (SrcFile_TestData *)malloc( sizeof( SrcFile_TestData ) * 500 );
62         CU_ASSERT( NULL != p_test );
63
64         memset( p_test, 0x00, ( sizeof( SrcFile_TestData ) * 500 ) );
65
66         i_len   = 3;
67         p_now   = p_test;
68         for( i_cnt = 0; i_cnt < 500; i_cnt++, p_now++ ) {
69                 for( i_pos = 0; i_pos < i_len; i_pos++ )        {
70                         p_now->str_filename[i_pos]      = 'a' + (random() % 26);
71                 }
72                 p_now->str_filename[i_pos + 0]  = '.';
73                 p_now->str_filename[i_pos + 1]  = 'c';
74                 p_now->str_filename[i_pos + 2]  = '\0';
75
76                 i_len++;
77                 if( 100 == i_len )      { i_len = 3; }
78
79                 p_now->dw_hash  = Common_CalcDJBhash( p_now->str_filename);
80         }
81
82         // Testing ---
83         i_result        = LibBrownie_Init();
84         CU_ASSERT( 0x00 == i_result );
85
86         i_result        = BinaryFile_Init();
87         CU_ASSERT( 0x00 == i_result );
88         
89         p_bfile         = BinaryFile_AllocBinaryFile();
90         CU_ASSERT( NULL != p_bfile );
91
92
93         i_result        = SrcFile_Init( p_bfile );
94         CU_ASSERT( 0x00 == i_result );
95
96         p_now   = p_test;
97         for( i_cnt = 0; i_cnt < 500; i_cnt++, p_now++ ) {
98                 p_srcfile       = SrcFile_DispenseSrcFile( p_bfile, p_now->str_filename );
99                 CU_ASSERT( NULL != p_srcfile );
100         }
101
102         p_now   = p_test;
103         for( i_cnt = 0; i_cnt < 500; i_cnt++, p_now++ ) {
104                 p_srcfile       = SrcFile_GetSrcFile( p_bfile, i_cnt );
105                 CU_ASSERT( NULL != p_srcfile );
106                 CU_ASSERT( i_cnt == p_srcfile->i_id );
107                 CU_ASSERT( p_now->dw_hash == p_srcfile->dw_hash );
108         }
109
110         for( i_cnt = 500; i_cnt > 0; i_cnt-- )  {
111                 p_srcfile       = SrcFile_GetSrcFile( p_bfile, i_cnt - 1 );
112                 SrcFile_FreeSrcFile( p_bfile, p_srcfile );
113                 CU_ASSERT( -0x01 == p_srcfile->i_id );
114         }
115         
116         i_result        = SrcFile_Term( p_bfile );
117         CU_ASSERT( 0x00 == i_result );
118
119
120         i_result        = BinaryFile_FreeBinaryFile( p_bfile );
121         CU_ASSERT( 0x00 == i_result );
122
123         i_result        = BinaryFile_Term();
124         CU_ASSERT( 0x00 == i_result );
125
126         LibBrownie_Term();
127
128         return;
129 }
130
131
132 /* SrcFile_AllocSrcFile() & FreeSrcFile() *****************/
133 /*--------------------------------------------------------------------*/
134 void Test_SrcFile_AllocFree_test00_002( void )
135 {
136         int             i_cnt;
137         int             i_result;
138         LibGoblin_BinaryFile    *p_bfile;
139         LibGoblin_SrcFile       *p_srcfile;
140
141         i_result        = LibBrownie_Init();
142         CU_ASSERT( 0x00 == i_result );
143
144         i_result        = BinaryFile_Init();
145         CU_ASSERT( 0x00 == i_result );
146         
147         p_bfile         = BinaryFile_AllocBinaryFile();
148         CU_ASSERT( NULL != p_bfile );
149
150
151         i_result        = SrcFile_Init( p_bfile );
152         CU_ASSERT( 0x00 == i_result );
153
154         for( i_cnt = 0; i_cnt < 300; i_cnt++ )  {
155                 p_srcfile       = SrcFile_AllocSrcFile( p_bfile );
156                 CU_ASSERT( NULL != p_srcfile );
157                 CU_ASSERT( i_cnt == p_srcfile->i_id );
158         }
159
160         for( i_cnt = 0; i_cnt < 32; i_cnt ++ )  {
161                 p_srcfile       = NULL;
162                 p_srcfile       = SrcFile_GetSrcFile( p_bfile, (i_cnt * 8) );
163                 CU_ASSERT( NULL != p_srcfile );
164
165                 i_result        = SrcFile_FreeSrcFile( p_bfile, p_srcfile );
166                 CU_ASSERT( 0x00 == i_result );
167         }
168
169         for( i_cnt = 0; i_cnt < 32; i_cnt++ )   {
170                 p_srcfile       = NULL;
171                 p_srcfile       = SrcFile_AllocSrcFile( p_bfile );
172                 CU_ASSERT( NULL != p_srcfile );
173                 CU_ASSERT( (i_cnt * 8) == p_srcfile->i_id );
174         }
175
176         for( i_cnt = 0; i_cnt < 300; i_cnt++ )  {
177                 p_srcfile       = NULL;
178                 p_srcfile       = SrcFile_GetSrcFile( p_bfile, i_cnt );
179                 CU_ASSERT( NULL != p_srcfile );
180
181                 i_result        = SrcFile_FreeSrcFile( p_bfile, p_srcfile );
182                 CU_ASSERT( 0x00 == i_result );
183         }
184
185         p_srcfile       = SrcFile_GetSrcFile( p_bfile, 0 );
186         CU_ASSERT( NULL == p_srcfile );
187
188         i_result        = SrcFile_Term( p_bfile );
189         CU_ASSERT( 0x00 == i_result );
190
191
192         i_result        = BinaryFile_FreeBinaryFile( p_bfile );
193         CU_ASSERT( 0x00 == i_result );
194
195         i_result        = BinaryFile_Term();
196         CU_ASSERT( 0x00 == i_result );
197
198         LibBrownie_Term();
199
200         return;
201 }
202
203
204 /* EOF of drd64_.c ----------------------------------- */
205 /*--------------------------------------------------------------------*/
206 void Test_SrcFile_AllocFree_test00_001( void )
207 {
208         int             i_result;
209         LibGoblin_BinaryFile    *p_bfile;
210         LibGoblin_SrcFile       *p_srcfile;
211
212         i_result        = LibBrownie_Init();
213         CU_ASSERT( 0x00 == i_result );
214
215         i_result        = BinaryFile_Init();
216         CU_ASSERT( 0x00 == i_result );
217         
218         p_bfile         = BinaryFile_AllocBinaryFile();
219         CU_ASSERT( NULL != p_bfile );
220
221
222         i_result        = SrcFile_Init( p_bfile );
223         CU_ASSERT( 0x00 == i_result );
224
225         p_srcfile       = SrcFile_AllocSrcFile( p_bfile );
226         CU_ASSERT( NULL != p_srcfile );
227
228         i_result        = SrcFile_FreeSrcFile( p_bfile, p_srcfile );
229         CU_ASSERT( 0x00 == i_result );
230
231         i_result        = SrcFile_Term( p_bfile );
232         CU_ASSERT( 0x00 == i_result );
233
234
235         i_result        = BinaryFile_FreeBinaryFile( p_bfile );
236         CU_ASSERT( 0x00 == i_result );
237
238         i_result        = BinaryFile_Term();
239         CU_ASSERT( 0x00 == i_result );
240
241         LibBrownie_Term();
242
243         return;
244 }
245
246
247 /* SrcFile_Init() & Term() ****************************************/
248 /*--------------------------------------------------------------------*/
249 void Test_SrcFile_InitTerm_test00_001( void )
250 {
251         int             i_result;
252         LibGoblin_BinaryFile    *p_bfile;
253
254         i_result        = LibBrownie_Init();
255         CU_ASSERT( 0x00 == i_result );
256
257         i_result        = BinaryFile_Init();
258         CU_ASSERT( 0x00 == i_result );
259         
260         p_bfile         = BinaryFile_AllocBinaryFile();
261         CU_ASSERT( NULL != p_bfile );
262
263
264         i_result        = SrcFile_Init( p_bfile );
265         CU_ASSERT( 0x00 == i_result );
266
267         i_result        = SrcFile_Term( p_bfile );
268         CU_ASSERT( 0x00 == i_result );
269
270
271         i_result        = BinaryFile_FreeBinaryFile( p_bfile );
272         CU_ASSERT( 0x00 == i_result );
273
274         i_result        = BinaryFile_Term();
275         CU_ASSERT( 0x00 == i_result );
276
277         LibBrownie_Term();
278
279         return;
280 }
281
282
283 /*----------------------------------------------------------------------
284 ----------------------------------------------------------------------*/
285 DRD64_TEST_LIBGOBLIN_SRCFILE_EXTERN
286 int
287         Test_LibGoblin_SrcFile(
288                 void )
289 {
290         CU_pSuite       pt_goblin;
291
292         pt_goblin       = CU_add_suite( "LibGoblin_SrcFile", NULL, NULL );
293
294         CU_add_test( pt_goblin, "SrcFile_InitTerm_test00_001",
295                                                                  Test_SrcFile_InitTerm_test00_001 );
296         CU_add_test( pt_goblin, "SrcFile_AllocFree_test00_001",
297                                                                  Test_SrcFile_AllocFree_test00_001 );
298         CU_add_test( pt_goblin, "SrcFile_AllocFree_test00_001",
299                                                                  Test_SrcFile_AllocFree_test00_002 );
300         CU_add_test( pt_goblin, "SrcFile_DispenseFree_test00_001",
301                                                                  Test_SrcFile_DispenseFree_test00_003 );
302
303         return 0x00;
304 }
305
306
307 /* EOF of drd64_.c ----------------------------------- */