1 /*DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64
4 for INTEL64(R), AMD64(R)
6 Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved.
8 Redistribution and use in source and binary forms, with or without
9 modification, are permitted provided that the following conditions are met:
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.
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.
29 DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64*/
31 /* File Info -----------------------------------------------------------
35 ----------------------------------------------------------------------*/
37 #define DRD64_SRC_TEST_LIBGOBLIN_SRCFILE
38 #include"drd64_libgoblin.h"
39 #include"test_libgoblin.h"
42 /* SrcFile_DispenseSrcFile() & FreeSrcFile() *****************/
43 /*--------------------------------------------------------------------*/
45 char str_filename[128];
49 void Test_SrcFile_DispenseFree_test00_003( void )
55 LibGoblin_BinaryFile *p_bfile;
56 LibGoblin_SrcFile *p_srcfile;
57 SrcFile_TestData *p_test;
58 SrcFile_TestData *p_now;
60 // Generate TestData ----
61 p_test = (SrcFile_TestData *)malloc( sizeof( SrcFile_TestData ) * 500 );
62 CU_ASSERT( NULL != p_test );
64 memset( p_test, 0x00, ( sizeof( SrcFile_TestData ) * 500 ) );
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);
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';
77 if( 100 == i_len ) { i_len = 3; }
79 p_now->dw_hash = Common_CalcDJBhash( p_now->str_filename);
83 i_result = LibBrownie_Init();
84 CU_ASSERT( 0x00 == i_result );
86 i_result = BinaryFile_Init();
87 CU_ASSERT( 0x00 == i_result );
89 p_bfile = BinaryFile_AllocBinaryFile();
90 CU_ASSERT( NULL != p_bfile );
93 i_result = SrcFile_Init( p_bfile );
94 CU_ASSERT( 0x00 == i_result );
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 );
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 );
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 );
116 i_result = SrcFile_Term( p_bfile );
117 CU_ASSERT( 0x00 == i_result );
120 i_result = BinaryFile_FreeBinaryFile( p_bfile );
121 CU_ASSERT( 0x00 == i_result );
123 i_result = BinaryFile_Term();
124 CU_ASSERT( 0x00 == i_result );
132 /* SrcFile_AllocSrcFile() & FreeSrcFile() *****************/
133 /*--------------------------------------------------------------------*/
134 void Test_SrcFile_AllocFree_test00_002( void )
138 LibGoblin_BinaryFile *p_bfile;
139 LibGoblin_SrcFile *p_srcfile;
141 i_result = LibBrownie_Init();
142 CU_ASSERT( 0x00 == i_result );
144 i_result = BinaryFile_Init();
145 CU_ASSERT( 0x00 == i_result );
147 p_bfile = BinaryFile_AllocBinaryFile();
148 CU_ASSERT( NULL != p_bfile );
151 i_result = SrcFile_Init( p_bfile );
152 CU_ASSERT( 0x00 == i_result );
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 );
160 for( i_cnt = 0; i_cnt < 32; i_cnt ++ ) {
162 p_srcfile = SrcFile_GetSrcFile( p_bfile, (i_cnt * 8) );
163 CU_ASSERT( NULL != p_srcfile );
165 i_result = SrcFile_FreeSrcFile( p_bfile, p_srcfile );
166 CU_ASSERT( 0x00 == i_result );
169 for( i_cnt = 0; i_cnt < 32; i_cnt++ ) {
171 p_srcfile = SrcFile_AllocSrcFile( p_bfile );
172 CU_ASSERT( NULL != p_srcfile );
173 CU_ASSERT( (i_cnt * 8) == p_srcfile->i_id );
176 for( i_cnt = 0; i_cnt < 300; i_cnt++ ) {
178 p_srcfile = SrcFile_GetSrcFile( p_bfile, i_cnt );
179 CU_ASSERT( NULL != p_srcfile );
181 i_result = SrcFile_FreeSrcFile( p_bfile, p_srcfile );
182 CU_ASSERT( 0x00 == i_result );
185 p_srcfile = SrcFile_GetSrcFile( p_bfile, 0 );
186 CU_ASSERT( NULL == p_srcfile );
188 i_result = SrcFile_Term( p_bfile );
189 CU_ASSERT( 0x00 == i_result );
192 i_result = BinaryFile_FreeBinaryFile( p_bfile );
193 CU_ASSERT( 0x00 == i_result );
195 i_result = BinaryFile_Term();
196 CU_ASSERT( 0x00 == i_result );
204 /* EOF of drd64_.c ----------------------------------- */
205 /*--------------------------------------------------------------------*/
206 void Test_SrcFile_AllocFree_test00_001( void )
209 LibGoblin_BinaryFile *p_bfile;
210 LibGoblin_SrcFile *p_srcfile;
212 i_result = LibBrownie_Init();
213 CU_ASSERT( 0x00 == i_result );
215 i_result = BinaryFile_Init();
216 CU_ASSERT( 0x00 == i_result );
218 p_bfile = BinaryFile_AllocBinaryFile();
219 CU_ASSERT( NULL != p_bfile );
222 i_result = SrcFile_Init( p_bfile );
223 CU_ASSERT( 0x00 == i_result );
225 p_srcfile = SrcFile_AllocSrcFile( p_bfile );
226 CU_ASSERT( NULL != p_srcfile );
228 i_result = SrcFile_FreeSrcFile( p_bfile, p_srcfile );
229 CU_ASSERT( 0x00 == i_result );
231 i_result = SrcFile_Term( p_bfile );
232 CU_ASSERT( 0x00 == i_result );
235 i_result = BinaryFile_FreeBinaryFile( p_bfile );
236 CU_ASSERT( 0x00 == i_result );
238 i_result = BinaryFile_Term();
239 CU_ASSERT( 0x00 == i_result );
247 /* SrcFile_Init() & Term() ****************************************/
248 /*--------------------------------------------------------------------*/
249 void Test_SrcFile_InitTerm_test00_001( void )
252 LibGoblin_BinaryFile *p_bfile;
254 i_result = LibBrownie_Init();
255 CU_ASSERT( 0x00 == i_result );
257 i_result = BinaryFile_Init();
258 CU_ASSERT( 0x00 == i_result );
260 p_bfile = BinaryFile_AllocBinaryFile();
261 CU_ASSERT( NULL != p_bfile );
264 i_result = SrcFile_Init( p_bfile );
265 CU_ASSERT( 0x00 == i_result );
267 i_result = SrcFile_Term( p_bfile );
268 CU_ASSERT( 0x00 == i_result );
271 i_result = BinaryFile_FreeBinaryFile( p_bfile );
272 CU_ASSERT( 0x00 == i_result );
274 i_result = BinaryFile_Term();
275 CU_ASSERT( 0x00 == i_result );
283 /*----------------------------------------------------------------------
284 ----------------------------------------------------------------------*/
285 DRD64_TEST_LIBGOBLIN_SRCFILE_EXTERN
287 Test_LibGoblin_SrcFile(
292 pt_goblin = CU_add_suite( "LibGoblin_SrcFile", NULL, NULL );
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 );
307 /* EOF of drd64_.c ----------------------------------- */