00001 #include <eh_utils.h>
00002 #include <check.h>
00003
00004 START_TEST ( test_create_input_val )
00005 {
00006 Eh_input_val v;
00007
00008 v = eh_input_val_new( );
00009
00010 fail_if( v==NULL , "Bad input_val handle" );
00011
00012 v = eh_input_val_destroy( v );
00013
00014 fail_unless( v==NULL , "Destroyed input_val should be set to NULL" );
00015
00016 }
00017 END_TEST
00018
00019 START_TEST ( test_set_input_val )
00020 {
00021 Eh_input_val v;
00022
00023 {
00024 GError* err = NULL;
00025
00026 v = eh_input_val_set( "-.5" , &err );
00027
00028 if ( err!=NULL )
00029 fprintf( stderr , "%s" , err->message );
00030
00031 fail_unless( eh_input_val_eval(v)==-.5 , "Scalar value set incorrectly" );
00032 v = eh_input_val_destroy( v );
00033
00034 g_clear_error( &err );
00035 }
00036
00037 {
00038 gssize n_evals = 100000;
00039 gssize i;
00040 double* vals = eh_new( double , n_evals );
00041 double mean, var;
00042 GError* err = NULL;
00043
00044 v = eh_input_val_set( "normal=-.5,.1" , &err );
00045
00046 if ( err!=NULL )
00047 fprintf( stderr , "%s" , err->message );
00048
00049 for ( i=0 ; i<n_evals ; i++ )
00050 vals[i] = eh_input_val_eval( v );
00051 mean = eh_dbl_array_mean( vals , n_evals );
00052 var = eh_dbl_array_var ( vals , n_evals );
00053
00054 fail_unless( eh_compare_dbl(mean,-.5,.01) , "Normal distribution mean set incorrectly" );
00055 fail_unless( eh_compare_dbl(sqrt(var),.1,.01) , "Normal distribution variance set incorrectly" );
00056
00057 eh_free( vals );
00058 v = eh_input_val_destroy( v );
00059
00060 g_clear_error( &err );
00061 }
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072 }
00073 END_TEST
00074
00075 Suite *eh_input_val_suite( void )
00076 {
00077 Suite *s = suite_create( "Eh_input_val" );
00078 TCase *test_case_core = tcase_create( "Core" );
00079
00080 suite_add_tcase( s , test_case_core );
00081
00082 tcase_add_test( test_case_core , test_create_input_val );
00083 tcase_add_test( test_case_core , test_set_input_val );
00084
00085 return s;
00086 }
00087
00088 int test_input_val( void )
00089 {
00090 int n;
00091
00092 {
00093 Suite *s = eh_input_val_suite();
00094 SRunner *sr = srunner_create( s );
00095
00096 srunner_run_all( sr , CK_NORMAL );
00097 n = srunner_ntests_failed( sr );
00098 srunner_free( sr );
00099 }
00100
00101 return n;
00102 }
00103