/Users/huttone/Devel/sedflux-new/sedflux/trunk/ew/sed/sed_cube_unit_test.c

Go to the documentation of this file.
00001 #include "utils/utils.h"
00002 #include <check.h>
00003 
00004 #include "sed_cube.h"
00005 
00006 START_TEST ( test_sed_cube_new )
00007 {
00008    {
00009       Sed_cube c = sed_cube_new( 2 , 5 );
00010 
00011       fail_if    ( c==NULL                             , "NULL is not a valid cube" );
00012       fail_unless( sed_cube_n_x(c)==2                  , "New is of incorrect dimension" );
00013       fail_unless( sed_cube_n_y(c)==5                  , "New is of incorrect dimension" );
00014       fail_unless( eh_compare_dbl(sed_cube_mass(c),0,1e-12) , "New cube should be empty" );
00015 
00016       sed_cube_destroy( c );
00017    }
00018 }
00019 END_TEST
00020 
00021 START_TEST ( test_sed_cube_destroy )
00022 {
00023    Sed_cube c = sed_cube_new( 5 , 2 );
00024 
00025    c = sed_cube_destroy(c);
00026 
00027    fail_unless( c==NULL , "Destroyed cube should be NULL" );
00028 }
00029 END_TEST
00030 
00031 gchar* test_seqfile[] =
00032 {
00033    " # Begin the first record\n" ,
00034    "[ TiMe: 1 ] /* Label is case insensitive*/\n" ,
00035    "0, -1\n" ,
00036    "10, 1\n" ,
00037    "/* The second record.\n" ,
00038    "*/\n" ,
00039    "[ time : 3 ]\n" ,
00040    "0, -1\n" ,
00041    "5, -2\n" ,
00042    "9, 1// file ending without an empty line" ,
00043    NULL
00044 };
00045 
00046 START_TEST ( test_sequence_2 )
00047 {
00048    char* file = tempnam( "/tmp" , "SED_CUBE_TEST_" );
00049    Eh_sequence* s;
00050    gint n_y = 10;
00051    double* y = eh_linspace( 0 , 9 , n_y );
00052 
00053    {
00054       FILE* fp = eh_fopen( file , "w" );
00055       gchar** line;
00056 
00057       for ( line=test_seqfile ; *line ; line++ )
00058          fprintf( fp , "%s" , *line );
00059 
00060       fclose( fp );
00061    }
00062 
00063    {
00064       GError* err = NULL;
00065 
00066       s = sed_get_floor_sequence_2( file , y , n_y , &err );
00067 
00068       if ( err )
00069          fprintf( stderr , "%s" , err->message );
00070 
00071    }
00072 
00073    fail_unless( s!=NULL   , "NULL is not a valid sequence" );
00074    fail_unless( s->len==2 , "Incorrect number of records read" );
00075 
00076 
00077 }
00078 END_TEST
00079 
00080 START_TEST ( test_cube_to_cell )
00081 {
00082    Sed_cube p = sed_cube_new( 25 , 50 );
00083    Sed_cell dest;
00084    double cube_mass, cell_mass;
00085 
00086    sed_cube_set_x_res( p , 1. );
00087    sed_cube_set_y_res( p , 1. );
00088    sed_cube_set_z_res( p , 1. );
00089 
00090    {
00091       Sed_cell c = sed_cell_new_env( );
00092       gint i;
00093 
00094       sed_cell_set_equal_fraction( c );
00095       sed_cell_resize( c , 1. );
00096 
00097       for ( i=0 ; i<sed_cube_size(p) ; i++ )
00098          sed_column_add_cell( sed_cube_col(p,i) , c );
00099 
00100       sed_cell_destroy( c );
00101    }
00102 
00103    dest = sed_cube_to_cell( p , NULL );
00104 
00105    cell_mass = sed_cell_mass( dest );
00106    cube_mass = sed_cube_mass( p    );
00107 
00108    fail_unless( eh_compare_dbl(cube_mass,cell_mass,1e-12) , "Mass balance error" );
00109 
00110    sed_cube_destroy( p );
00111 }
00112 END_TEST
00113 
00114 Suite *sed_cube_suite( void )
00115 {
00116    Suite *s = suite_create( "Sed_cube" );
00117    TCase *test_case_core   = tcase_create( "Core" );
00118 
00119    suite_add_tcase( s , test_case_core   );
00120 
00121    tcase_add_test( test_case_core , test_sed_cube_new      );
00122    tcase_add_test( test_case_core , test_sed_cube_destroy  );
00123    tcase_add_test( test_case_core , test_sequence_2        );
00124    tcase_add_test( test_case_core , test_cube_to_cell      );
00125 
00126    return s;
00127 }
00128 
00129 int test_sed_cube( void )
00130 {
00131    int n;
00132 
00133    {
00134       Suite *s = sed_cube_suite();
00135       SRunner *sr = srunner_create( s );
00136 
00137       srunner_run_all( sr , CK_NORMAL );
00138       n = srunner_ntests_failed( sr );
00139       srunner_free( sr );
00140    }
00141 
00142    return n;
00143 }
00144 
00145 

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