/Users/huttone/Devel/sedflux-new/sedflux/trunk/ew/utils/eh_io_unit_test.c

Go to the documentation of this file.
00001 #include <eh_utils.h>
00002 #include <check.h>
00003 
00004 START_TEST ( test_getline_one_line )
00005 {
00006    gchar* name = NULL;
00007    FILE*  fp = eh_open_temp_file( NULL , &name );
00008    gchar* line_str = NULL;
00009    gsize  len      = 0;
00010    gchar* line_1 = "one line\n";
00011    gint   n;
00012 
00013    fprintf( fp , "%s" , line_1 );
00014    fclose(fp);
00015 
00016    fp = fopen( name , "r" );
00017    n = getline( &line_str , &len , fp );
00018    fclose(fp);
00019 
00020    fail_unless( line_str!=NULL );
00021    fail_unless( n==strlen(line_1) );
00022    fail_unless( strlen(line_str)==9 );
00023 
00024    fclose(fp);
00025 }
00026 END_TEST
00027 
00028 START_TEST ( test_getline_no_new_line )
00029 {
00030    gchar* name = NULL;
00031    FILE*  fp = eh_open_temp_file( NULL , &name );
00032    gchar* line_str = NULL;
00033    gsize  len      = 0;
00034    gchar* line_1 = "no new line char";
00035    gint   n;
00036 
00037    fprintf( fp , "%s" , line_1 );
00038    fclose(fp);
00039 
00040    fp = fopen( name , "r" );
00041    n = getline( &line_str , &len , fp );
00042    fclose(fp);
00043 
00044    fail_unless( line_str!=NULL );
00045    fail_unless( n==-1 );
00046    fail_unless( strlen(line_str)==strlen(line_1) );
00047    fail_unless( strcmp(line_str,line_1)==0 );
00048 }
00049 END_TEST
00050 
00051 START_TEST ( test_getline_empty_file )
00052 {
00053    gchar* name = NULL;
00054    FILE*  fp = eh_open_temp_file( NULL , &name );
00055    gchar* line_str = NULL;
00056    gsize  len      = 0;
00057    gint   n;
00058 
00059    fprintf( fp , "" );
00060    fclose(fp);
00061 
00062    fp = fopen( name , "r" );
00063    n = getline( &line_str , &len , fp );
00064    fclose(fp);
00065 
00066    fail_unless( line_str!=NULL );
00067    fail_unless( n==-1 );
00068    fail_unless( strlen(line_str)==0 );
00069 }
00070 END_TEST
00071 
00072 START_TEST ( test_getline_empty_line )
00073 {
00074    gchar* name = NULL;
00075    FILE*  fp = eh_open_temp_file( NULL , &name );
00076    gchar* line_str = NULL;
00077    gsize  len      = 0;
00078    gsize  n;
00079 
00080    fprintf( fp , "\n" );
00081    fclose(fp);
00082 
00083    fp = fopen( name , "r" );
00084    n = getline( &line_str , &len , fp );
00085    fclose(fp);
00086 
00087    fail_unless( line_str!=NULL );
00088    fail_unless( n==1 );
00089    fail_unless( strlen(line_str)==1 );
00090    fail_unless( line_str[0] == '\n' );
00091 }
00092 END_TEST
00093 
00094 START_TEST ( test_getline_multi_line )
00095 {
00096    gchar* name = NULL;
00097    FILE*  fp = eh_open_temp_file( NULL , &name );
00098    gchar* line_str = NULL;
00099    gsize  len      = 0;
00100    gchar* line_1   = "The first line\n";
00101    gchar* line_2   = "The second line without a new line char";
00102    gint   n;
00103 
00104    fprintf( fp , "%s" , line_1 );
00105    fprintf( fp , "%s" , line_2 );
00106    fclose(fp);
00107 
00108    fp = fopen( name , "r" );
00109    getline( &line_str , &len , fp );
00110    n = getline( &line_str , &len , fp );
00111    fclose(fp);
00112 
00113    fail_unless( line_str!=NULL );
00114    fail_unless( n==-1 );
00115    fail_unless( strlen(line_str)==strlen(line_2) );
00116    fail_unless( strcmp( line_str , line_2 ) == 0 );
00117 }
00118 END_TEST
00119 
00120 Suite *eh_io_suite( void )
00121 {
00122    Suite *s = suite_create( "Input/output functions" );
00123    TCase *test_case_core = tcase_create( "Core" );
00124 
00125    suite_add_tcase( s , test_case_core );
00126 
00127    tcase_add_test( test_case_core , test_getline_one_line );
00128    tcase_add_test( test_case_core , test_getline_no_new_line );
00129    tcase_add_test( test_case_core , test_getline_empty_file );
00130    tcase_add_test( test_case_core , test_getline_empty_line );
00131    tcase_add_test( test_case_core , test_getline_multi_line );
00132 
00133    return s;
00134 }
00135 
00136 int test_io( void )
00137 {
00138    int n;
00139 
00140    {
00141       Suite *s = eh_io_suite();
00142       SRunner *sr = srunner_create( s );
00143 
00144       srunner_run_all( sr , CK_NORMAL );
00145       n = srunner_ntests_failed( sr );
00146       srunner_free( sr );
00147    }
00148 
00149    return n;
00150 }
00151 

Generated on Fri Jan 4 18:04:16 2008 for sedflux by  doxygen 1.5.2