#include"test_libgoblin.h"
+/* SrcFile_DispenseSrcFile() & FreeSrcFile() *****************/
+/*--------------------------------------------------------------------*/
+typedef struct {
+ char str_filename[128];
+ DWord dw_hash;
+} SrcFile_TestData;
+
+void Test_SrcFile_DispenseFree_test00_003( void )
+{
+ int i_cnt;
+ int i_len;
+ int i_pos;
+ int i_result;
+ LibGoblin_SrcFile *p_srcfile;
+ SrcFile_TestData *p_test;
+ SrcFile_TestData *p_now;
+
+ p_test = (SrcFile_TestData *)malloc( sizeof( SrcFile_TestData ) * 500 );
+ CU_ASSERT( NULL != p_test );
+
+ memset( p_test, 0x00, ( sizeof( SrcFile_TestData ) * 500 ) );
+
+ i_len = 3;
+ p_now = p_test;
+ for( i_cnt = 0; i_cnt < 500; i_cnt++, p_now++ ) {
+ for( i_pos = 0; i_pos < i_len; i_pos++ ) {
+ p_now->str_filename[i_pos] = 'a' + (random() % 26);
+ }
+ p_now->str_filename[i_pos + 0] = '.';
+ p_now->str_filename[i_pos + 1] = 'c';
+ p_now->str_filename[i_pos + 2] = '\0';
+
+ i_len++;
+ if( 100 == i_len ) { i_len = 3; }
+
+ p_now->dw_hash = Common_CalcDJBhash( p_now->str_filename);
+ }
+
+ i_result = SrcFile_Init();
+ CU_ASSERT( 0x00 == i_result );
+
+ p_now = p_test;
+ for( i_cnt = 0; i_cnt < 500; i_cnt++, p_now++ ) {
+ p_srcfile = SrcFile_DispenseSrcFile( p_now->str_filename );
+ CU_ASSERT( NULL != p_srcfile );
+ }
+
+ p_now = p_test;
+ for( i_cnt = 0; i_cnt < 500; i_cnt++, p_now++ ) {
+ p_srcfile = SrcFile_GetSrcFile( i_cnt );
+ CU_ASSERT( NULL != p_srcfile );
+ CU_ASSERT( i_cnt == p_srcfile->i_id );
+ CU_ASSERT( p_now->dw_hash == p_srcfile->dw_hash );
+ }
+
+ for( i_cnt = 500; i_cnt > 0; i_cnt-- ) {
+ p_srcfile = SrcFile_GetSrcFile( i_cnt - 1 );
+ SrcFile_FreeSrcFile( p_srcfile );
+ CU_ASSERT( -0x01 == p_srcfile->i_id );
+ }
+
+ i_result = SrcFile_Term();
+ CU_ASSERT( 0x00 == i_result );
+
+ return;
+}
+
+
/* SrcFile_AllocSrcFile() & FreeSrcFile() *****************/
/*--------------------------------------------------------------------*/
void Test_SrcFile_AllocFree_test00_002( void )
Test_SrcFile_AllocFree_test00_001 );
CU_add_test( pt_goblin, "SrcFile_AllocFree_test00_001",
Test_SrcFile_AllocFree_test00_002 );
+ CU_add_test( pt_goblin, "SrcFile_DispenseFree_test00_001",
+ Test_SrcFile_DispenseFree_test00_003 );
return 0x00;
}