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
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