void test_filename() { const char * src_file1 = "/some/very/long/path/file1.txt"; const char * src_file2 = "relative/path/file2"; const char * src_file3 = "/tmp"; char * file1 = util_split_alloc_filename( src_file1 ); char * file2 = util_split_alloc_filename( src_file2 ); char * file3 = util_split_alloc_filename( src_file3 ); test_assert_string_equal( "file1.txt" , file1); test_assert_string_equal( "file2" , file2); test_assert_NULL( file3 ); free( file1 ); free( file2 ); }
bool ecl_util_valid_basename_fmt(const char * basename_fmt) { bool valid; char * eclbasename_fmt = util_split_alloc_filename(basename_fmt); const char * percent_ptr = strchr(eclbasename_fmt, '%'); if (percent_ptr) { percent_ptr++; while (true) { if (*percent_ptr == 'd') { char * basename_instance = util_alloc_sprintf(eclbasename_fmt, 0); valid = ecl_util_valid_basename(basename_instance); free(basename_instance); break; } else if (!isdigit(*percent_ptr)) { valid = false; break; } else percent_ptr++; } } else valid = ecl_util_valid_basename(eclbasename_fmt); free(eclbasename_fmt); return valid; }
bool ecl_util_valid_basename( const char * basename ) { char * eclbasename = util_split_alloc_filename(basename); int upper_count = 0; int lower_count = 0; int index; for (index = 0; index < strlen( eclbasename ); index++) { int c = eclbasename[index]; if (isalpha(c)) { if (isupper(c)) upper_count++; else lower_count++; } } free(eclbasename); if ((lower_count * upper_count) != 0) return false; else return true; }
void test_copy_file( const char * src_file ) { char * filename = util_split_alloc_filename( src_file ); test_work_area_type * work_area = test_work_area_alloc( "copy-file" ); test_work_area_copy_file( work_area , src_file ); test_assert_true( util_file_exists( filename )); test_work_area_free( work_area ); free( filename ); }
ert_test_context_type * ert_test_context_alloc( const char * test_name , const char * model_config , const char * site_config) { ert_test_context_type * test_context = util_malloc( sizeof * test_context ); UTIL_TYPE_ID_INIT( test_context , ERT_TEST_CONTEXT_TYPE_ID ); if (util_file_exists(model_config)) { test_context->work_area = test_work_area_alloc(test_name); test_work_area_set_store( test_context->work_area , false ); test_work_area_copy_parent_content(test_context->work_area , model_config ); { char * config_file = util_split_alloc_filename( model_config ); test_context->enkf_main = enkf_main_bootstrap( site_config , config_file , true , false ); free( config_file ); } test_context->rng = rng_alloc( MZRAN , INIT_DEV_URANDOM ); } else { test_context->enkf_main = NULL; test_context->work_area = NULL; test_context->rng = NULL; } return test_context; }
void test_writable(const char * src_file ) { test_work_area_type * work_area = test_work_area_alloc("ecl_file_writable" ); char * fname = util_split_alloc_filename( src_file ); test_work_area_copy_file( work_area , src_file ); { ecl_file_type * ecl_file = ecl_file_open( fname , ECL_FILE_WRITABLE); ecl_kw_type * swat = ecl_file_iget_named_kw( ecl_file , "SWAT" , 0 ); ecl_kw_type * swat0 = ecl_kw_alloc_copy( swat ); test_assert_true( ecl_kw_equal( swat , swat0 )); ecl_kw_iset_float( swat , 0 , 1000.0 ); ecl_file_save_kw( ecl_file , swat ); test_assert_true( ecl_file_writable( ecl_file )); ecl_file_close( ecl_file ); ecl_file = ecl_file_open( fname , 0); swat = ecl_file_iget_named_kw( ecl_file , "SWAT" , 0 ); test_assert_true( util_double_approx_equal( ecl_kw_iget_float( swat , 0 ) , 1000 )); } test_work_area_free( work_area ); }