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

Go to the documentation of this file.
00001 #include "utils/utils.h"
00002 #include <check.h>
00003 
00004 #include "sed_sediment.h"
00005 
00006 START_TEST ( test_sed_sediment_new )
00007 {
00008    {
00009       Sed_sediment s = sed_sediment_new( );
00010 
00011       fail_if    ( s==NULL                    , "NULL is not a valid sediment" );
00012       fail_unless( sed_sediment_n_types(s)==0 , "New sediment should have 0 sediment types" );
00013 
00014       sed_sediment_destroy(s);
00015    }
00016 }
00017 END_TEST
00018 
00019 START_TEST ( test_sed_type_new )
00020 {
00021    {
00022       Sed_type t = sed_type_new();
00023 
00024       fail_if    ( t==NULL                             , "NULL is not a valid sediment type" );
00025       fail_unless( fabs(sed_type_grain_size(t))<=1e-12 , "New type should have 0 grain size" );
00026       fail_unless( fabs(sed_type_density_0(t)) <=1e-12 , "New type should have 0 density" );
00027 
00028       sed_type_destroy( t );
00029    }
00030 }
00031 END_TEST
00032 
00033 START_TEST ( test_sed_type_copy )
00034 {
00035    {
00036       Sed_type t_1 = sed_type_new();
00037       Sed_type t_2 = sed_type_new();
00038       Sed_type temp;
00039 
00040       sed_type_set_grain_size( t_1 , 1945 );
00041       sed_type_set_grain_size( t_2 , 1973 );
00042 
00043       temp = sed_type_copy( t_1 , t_2 );
00044 
00045       fail_unless( sed_type_is_same_size(t_1,t_2) , "Type not copied correctly" );
00046       fail_unless( temp==t_1                      , "Destination should be returned" );
00047 
00048       sed_type_destroy( t_1 );
00049       sed_type_destroy( t_2 );
00050    }
00051 
00052    {
00053       Sed_type t_1 = sed_type_new();
00054       Sed_type t_2;
00055 
00056       sed_type_set_grain_size( t_1 , 1945 );
00057       t_2 = sed_type_copy( NULL , t_1 );
00058 
00059       fail_unless( sed_type_is_same_size(t_1,t_2) , "NULL destination should duplicate" );
00060       fail_if    ( t_2==t_1                       , "Should make a copy" );
00061 
00062       sed_type_destroy( t_1 );
00063       sed_type_destroy( t_2 );
00064    }
00065 }
00066 END_TEST
00067 
00068 START_TEST ( test_sed_sediment_add )
00069 {
00070    {
00071       Sed_sediment s = sed_sediment_new();
00072       Sed_sediment s_0;
00073       Sed_type     t = sed_type_new();
00074       Sed_type     t_0;
00075 
00076       sed_type_set_grain_size( t , 142 );
00077 
00078       s_0 = sed_sediment_add_type( s , t );
00079 
00080       fail_unless( sed_sediment_n_types(s)==1 , "Sediment size not increased" );
00081       fail_unless( s_0==s                     , "Original sediment should be returned" );
00082 
00083       t_0 = sed_sediment_type(s,0);
00084 
00085       fail_if    ( t_0==t                  , "A copy of the type should be added" );
00086       fail_unless( sed_type_is_same(t,t_0) , "Added type not copied correctly" );
00087 
00088       sed_sediment_destroy( s );
00089       sed_type_destroy( t );
00090    }
00091 }
00092 END_TEST
00093 
00094 START_TEST ( test_sed_sediment_scan )
00095 {
00096    {
00097       Sed_sediment s = sed_sediment_scan( SED_SEDIMENT_TEST_FILE , NULL );
00098 
00099       fail_if    ( s==NULL                    , "Invalid sediment scanned" );
00100       fail_unless( sed_sediment_n_types(s)==5 , "Sediment not scanned properly from file" );
00101 
00102 //      sed_sediment_fprint( stdout , s );
00103 
00104       sed_sediment_destroy( s );
00105    }
00106 }
00107 END_TEST
00108 
00109 Suite *sed_sediment_suite( void )
00110 {
00111    Suite *s = suite_create( "Sed_sediment" );
00112    TCase *test_case_core = tcase_create( "Core" );
00113 
00114    suite_add_tcase( s , test_case_core );
00115 
00116    tcase_add_test( test_case_core , test_sed_sediment_new  );
00117    tcase_add_test( test_case_core , test_sed_sediment_add  );
00118    tcase_add_test( test_case_core , test_sed_sediment_scan  );
00119 
00120    tcase_add_test( test_case_core , test_sed_type_new  );
00121    tcase_add_test( test_case_core , test_sed_type_copy );
00122 
00123    return s;
00124 }
00125 
00126 int test_sed_sediment( void )
00127 {
00128    int n;
00129 
00130    {
00131       Suite *s = sed_sediment_suite();
00132       SRunner *sr = srunner_create( s );
00133 
00134       srunner_run_all( sr , CK_NORMAL );
00135       n = srunner_ntests_failed( sr );
00136       srunner_free( sr );
00137    }
00138 
00139    return n;
00140 }
00141 
00142 

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