OSDN Git Service

2019/02/24(Sun) 18:41
[drdeamon64/drdeamon64.git] / libgoblin / test_libgoblin_srcfile.c
index a622093..f6af577 100644 (file)
@@ -39,6 +39,74 @@ Comment:
 #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 )
@@ -147,6 +215,8 @@ int
                                                                 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;
 }