int main(int argc, char *argv[]) { extern int optind; extern int optopt; extern char *optarg; int c; int nfailsTotal = 0; /* total number of failures */ #if 1 /* both CRAY MPP and OSF/1 Alpha systems need this */ /* * Some of the extreme test assignments in this program trigger * floating point exceptions on CRAY T90 */ (void) signal(SIGFPE, SIG_IGN); #endif progname = argv[0]; create_file = 0; /* file test.nc will normally already exist */ read_only = 0; /* assume may write in test dir as default */ verbose = 0; max_nmpt = 8; while ((c = getopt(argc, argv, "chrvn:")) != EOF) switch(c) { case 'c': /* Create file test.nc */ create_file = 1; break; case 'r': /* just perform read-only tests */ read_only = 1; break; case 'v': /* verbose mode */ verbose = 1; break; case 'n': /* verbose mode */ max_nmpt = atoi(optarg); break; case 'h': case '?': usage(); return 1; } /* Initialize global variables defining test file */ init_gvars(); if ( create_file ) { write_file(testfile); return nfailsTotal > 0; } /* delete any existing scratch netCDF file */ if ( ! read_only ) (void) remove(scratch); /* Test read-only functions, using pregenerated test-file */ NC_TEST(nc_strerror); NC_TEST(nc_open); NC_TEST(nc_close); NC_TEST(nc_inq); NC_TEST(nc_inq_dimid); NC_TEST(nc_inq_dim); NC_TEST(nc_inq_dimlen); NC_TEST(nc_inq_dimname); NC_TEST(nc_inq_varid); NC_TEST(nc_inq_var); NC_TEST(nc_inq_natts); NC_TEST(nc_inq_ndims); NC_TEST(nc_inq_nvars); NC_TEST(nc_inq_unlimdim); NC_TEST(nc_inq_vardimid); NC_TEST(nc_inq_varname); NC_TEST(nc_inq_varnatts); NC_TEST(nc_inq_varndims); NC_TEST(nc_inq_vartype); NC_TEST(nc_get_var_text); NC_TEST(nc_get_var_uchar); NC_TEST(nc_get_var_schar); NC_TEST(nc_get_var_short); NC_TEST(nc_get_var_int); NC_TEST(nc_get_var_long); NC_TEST(nc_get_var_float); NC_TEST(nc_get_var_double); NC_TEST(nc_get_var1_text); NC_TEST(nc_get_var1_uchar); NC_TEST(nc_get_var1_schar); NC_TEST(nc_get_var1_short); NC_TEST(nc_get_var1_int); NC_TEST(nc_get_var1_long); NC_TEST(nc_get_var1_float); NC_TEST(nc_get_var1_double); #ifdef TEST_VOIDSTAR NC_TEST(nc_get_var1); #endif /* TEST_VOIDSTAR */ NC_TEST(nc_get_vara_text); NC_TEST(nc_get_vara_uchar); NC_TEST(nc_get_vara_schar); NC_TEST(nc_get_vara_short); NC_TEST(nc_get_vara_int); NC_TEST(nc_get_vara_long); NC_TEST(nc_get_vara_float); NC_TEST(nc_get_vara_double); #ifdef TEST_VOIDSTAR NC_TEST(nc_get_vara); #endif /* TEST_VOIDSTAR */ NC_TEST(nc_get_vars_text); NC_TEST(nc_get_vars_uchar); NC_TEST(nc_get_vars_schar); NC_TEST(nc_get_vars_short); NC_TEST(nc_get_vars_int); NC_TEST(nc_get_vars_long); NC_TEST(nc_get_vars_float); NC_TEST(nc_get_vars_double); #ifdef TEST_VOIDSTAR NC_TEST(nc_get_vars); #endif /* TEST_VOIDSTAR */ NC_TEST(nc_get_varm_text); NC_TEST(nc_get_varm_uchar); NC_TEST(nc_get_varm_schar); NC_TEST(nc_get_varm_short); NC_TEST(nc_get_varm_int); NC_TEST(nc_get_varm_long); NC_TEST(nc_get_varm_float); NC_TEST(nc_get_varm_double); #ifdef TEST_VOIDSTAR NC_TEST(nc_get_varm); #endif /* TEST_VOIDSTAR */ NC_TEST(nc_get_att_text); NC_TEST(nc_get_att_uchar); NC_TEST(nc_get_att_schar); NC_TEST(nc_get_att_short); NC_TEST(nc_get_att_int); NC_TEST(nc_get_att_long); NC_TEST(nc_get_att_float); NC_TEST(nc_get_att_double); #ifdef TEST_VOIDSTAR NC_TEST(nc_get_att); #endif /* TEST_VOIDSTAR */ NC_TEST(nc_inq_att); NC_TEST(nc_inq_attname); NC_TEST(nc_inq_attid); NC_TEST(nc_inq_attlen); NC_TEST(nc_inq_atttype); /* Test write functions */ if (! read_only) { NC_TEST(nc_create); NC_TEST(nc_redef); /* NC_TEST(nc_enddef); *//* redundant */ NC_TEST(nc_sync); NC_TEST(nc_abort); NC_TEST(nc_def_dim); NC_TEST(nc_rename_dim); NC_TEST(nc_def_var); NC_TEST(nc_put_var_text); NC_TEST(nc_put_var_uchar); NC_TEST(nc_put_var_schar); NC_TEST(nc_put_var_short); NC_TEST(nc_put_var_int); NC_TEST(nc_put_var_long); NC_TEST(nc_put_var_float); NC_TEST(nc_put_var_double); NC_TEST(nc_put_var1_text); NC_TEST(nc_put_var1_uchar); NC_TEST(nc_put_var1_schar); NC_TEST(nc_put_var1_short); NC_TEST(nc_put_var1_int); NC_TEST(nc_put_var1_long); NC_TEST(nc_put_var1_float); NC_TEST(nc_put_var1_double); #ifdef TEST_VOIDSTAR NC_TEST(nc_put_var1); #endif /* TEST_VOIDSTAR */ NC_TEST(nc_put_vara_text); NC_TEST(nc_put_vara_uchar); NC_TEST(nc_put_vara_schar); NC_TEST(nc_put_vara_short); NC_TEST(nc_put_vara_int); NC_TEST(nc_put_vara_long); NC_TEST(nc_put_vara_float); NC_TEST(nc_put_vara_double); #ifdef TEST_VOIDSTAR NC_TEST(nc_put_vara); #endif /* TEST_VOIDSTAR */ NC_TEST(nc_put_vars_text); NC_TEST(nc_put_vars_uchar); NC_TEST(nc_put_vars_schar); NC_TEST(nc_put_vars_short); NC_TEST(nc_put_vars_int); NC_TEST(nc_put_vars_long); NC_TEST(nc_put_vars_float); NC_TEST(nc_put_vars_double); #ifdef TEST_VOIDSTAR NC_TEST(nc_put_vars); #endif /* TEST_VOIDSTAR */ NC_TEST(nc_put_varm_text); NC_TEST(nc_put_varm_uchar); NC_TEST(nc_put_varm_schar); NC_TEST(nc_put_varm_short); NC_TEST(nc_put_varm_int); NC_TEST(nc_put_varm_long); NC_TEST(nc_put_varm_float); NC_TEST(nc_put_varm_double); #ifdef TEST_VOIDSTAR NC_TEST(nc_put_varm); #endif /* TEST_VOIDSTAR */ NC_TEST(nc_rename_var); NC_TEST(nc_put_att_text); NC_TEST(nc_put_att_uchar); NC_TEST(nc_put_att_schar); NC_TEST(nc_put_att_short); NC_TEST(nc_put_att_int); NC_TEST(nc_put_att_long); NC_TEST(nc_put_att_float); NC_TEST(nc_put_att_double); #ifdef TEST_VOIDSTAR NC_TEST(nc_put_att); #endif /* TEST_VOIDSTAR */ NC_TEST(nc_copy_att); NC_TEST(nc_rename_att); NC_TEST(nc_del_att); NC_TEST(nc_set_fill); } print( "\nTotal number of failures: %d\n", nfailsTotal); return nfailsTotal > 0; }
int main(int argc, char *argv[]) { int i; int nfailsTotal = 0; /* total number of failures */ /* Both CRAY MPP and OSF/1 Alpha systems need this. Some of the * extreme test assignments in this program trigger floating point * exceptions on CRAY T90 */ (void) signal(SIGFPE, SIG_IGN); verbose = 0; max_nmpt = 8; /* Initialize global variables defining test file */ init_gvars(); /* If you uncomment the nc_set_log_level line, you will get a lot * of debugging info. If you set the number higher, you'll get * more. 6 is max, 0 shows only errors. 3 is a good place to * start. */ /*nc_set_log_level(3);*/ fprintf(stderr, "Testing %d different netCDF formats.\n", NUM_FORMATS); /* Go thru formats and run all tests for each of two (for netCDF-3 * only builds), or 3 (for netCDF-4 builds) different formats. Do * the netCDF-4 format last, however, because, as an additional * test, the ../nc_test4/tst_nc_test_file program looks at the * output of this program. */ for (i = 1; i <= NUM_FORMATS; i++) { switch (i) { case NC_FORMAT_CLASSIC: nc_set_default_format(NC_FORMAT_CLASSIC, NULL); fprintf(stderr, "\n\nSwitching to netCDF classic format.\n"); strcpy(testfile, "nc_test_classic.nc"); break; case NC_FORMAT_64BIT: nc_set_default_format(NC_FORMAT_64BIT, NULL); fprintf(stderr, "\n\nSwitching to 64-bit offset format.\n"); strcpy(testfile, "nc_test_64bit.nc"); break; #ifdef USE_NETCDF4 case NC_FORMAT_NETCDF4: /* actually it's _CLASSIC. */ nc_set_default_format(NC_FORMAT_NETCDF4_CLASSIC, NULL); strcpy(testfile, "nc_test_netcdf4.nc"); fprintf(stderr, "\n\nSwitching to netCDF-4 format (with NC_CLASSIC_MODEL).\n"); break; #endif default: fprintf(stderr, "Unexpected format!\n"); return 2; } /* Write the test file, needed for the read-only tests below. */ write_file(testfile); /* delete any existing scratch netCDF file */ (void) remove(scratch); /* Test read-only functions, using pre-generated test-file */ NC_TEST(nc_strerror); NC_TEST(nc_open); NC_TEST(nc_close); NC_TEST(nc_inq); NC_TEST(nc_inq_dimid); NC_TEST(nc_inq_dim); NC_TEST(nc_inq_dimlen); NC_TEST(nc_inq_dimname); NC_TEST(nc_inq_varid); NC_TEST(nc_inq_var); NC_TEST(nc_inq_natts); NC_TEST(nc_inq_ndims); NC_TEST(nc_inq_nvars); NC_TEST(nc_inq_unlimdim); NC_TEST(nc_inq_vardimid); NC_TEST(nc_inq_varname); NC_TEST(nc_inq_varnatts); NC_TEST(nc_inq_varndims); NC_TEST(nc_inq_vartype); NC_TEST(nc_get_var_text); NC_TEST(nc_get_var_uchar); NC_TEST(nc_get_var_schar); NC_TEST(nc_get_var_short); NC_TEST(nc_get_var_int); NC_TEST(nc_get_var_long); NC_TEST(nc_get_var_float); NC_TEST(nc_get_var_double); NC_TEST(nc_get_var1_text); NC_TEST(nc_get_var1_uchar); NC_TEST(nc_get_var1_schar); NC_TEST(nc_get_var1_short); NC_TEST(nc_get_var1_int); NC_TEST(nc_get_var1_long); NC_TEST(nc_get_var1_float); NC_TEST(nc_get_var1_double); NC_TEST(nc_get_var1); NC_TEST(nc_get_vara_text); NC_TEST(nc_get_vara_uchar); NC_TEST(nc_get_vara_schar); NC_TEST(nc_get_vara_short); NC_TEST(nc_get_vara_int); NC_TEST(nc_get_vara_long); NC_TEST(nc_get_vara_float); NC_TEST(nc_get_vara_double); NC_TEST(nc_get_vara); NC_TEST(nc_get_vars_text); NC_TEST(nc_get_vars_uchar); NC_TEST(nc_get_vars_schar); NC_TEST(nc_get_vars_short); NC_TEST(nc_get_vars_int); NC_TEST(nc_get_vars_long); NC_TEST(nc_get_vars_float); NC_TEST(nc_get_vars_double); NC_TEST(nc_get_vars); NC_TEST(nc_get_varm_text); NC_TEST(nc_get_varm_uchar); NC_TEST(nc_get_varm_schar); NC_TEST(nc_get_varm_short); NC_TEST(nc_get_varm_int); NC_TEST(nc_get_varm_long); NC_TEST(nc_get_varm_float); NC_TEST(nc_get_varm_double); NC_TEST(nc_get_varm); NC_TEST(nc_get_att_text); NC_TEST(nc_get_att_uchar); NC_TEST(nc_get_att_schar); NC_TEST(nc_get_att_short); NC_TEST(nc_get_att_int); NC_TEST(nc_get_att_long); NC_TEST(nc_get_att_float); NC_TEST(nc_get_att_double); NC_TEST(nc_get_att); NC_TEST(nc_inq_att); NC_TEST(nc_inq_attname); NC_TEST(nc_inq_attid); NC_TEST(nc_inq_attlen); NC_TEST(nc_inq_atttype); /* Test write functions */ NC_TEST(nc_create); NC_TEST(nc_redef); /* NC_TEST(nc_enddef); *//* redundant */ NC_TEST(nc_sync); NC_TEST(nc_abort); NC_TEST(nc_def_dim); NC_TEST(nc_rename_dim); NC_TEST(nc_def_var); NC_TEST(nc_put_var_text); NC_TEST(nc_put_var_uchar); NC_TEST(nc_put_var_schar); NC_TEST(nc_put_var_short); NC_TEST(nc_put_var_int); NC_TEST(nc_put_var_long); NC_TEST(nc_put_var_float); NC_TEST(nc_put_var_double); NC_TEST(nc_put_var1_text); NC_TEST(nc_put_var1_uchar); NC_TEST(nc_put_var1_schar); NC_TEST(nc_put_var1_short); NC_TEST(nc_put_var1_int); NC_TEST(nc_put_var1_long); NC_TEST(nc_put_var1_float); NC_TEST(nc_put_var1_double); NC_TEST(nc_put_var1); NC_TEST(nc_put_vara_text); NC_TEST(nc_put_vara_uchar); NC_TEST(nc_put_vara_schar); NC_TEST(nc_put_vara_short); NC_TEST(nc_put_vara_int); NC_TEST(nc_put_vara_long); NC_TEST(nc_put_vara_float); NC_TEST(nc_put_vara_double); NC_TEST(nc_put_vara); NC_TEST(nc_put_vars_text); NC_TEST(nc_put_vars_uchar); NC_TEST(nc_put_vars_schar); NC_TEST(nc_put_vars_short); NC_TEST(nc_put_vars_int); NC_TEST(nc_put_vars_long); NC_TEST(nc_put_vars_float); NC_TEST(nc_put_vars_double); NC_TEST(nc_put_vars); NC_TEST(nc_put_varm_text); NC_TEST(nc_put_varm_uchar); NC_TEST(nc_put_varm_schar); NC_TEST(nc_put_varm_short); NC_TEST(nc_put_varm_int); NC_TEST(nc_put_varm_long); NC_TEST(nc_put_varm_float); NC_TEST(nc_put_varm_double); NC_TEST(nc_put_varm); NC_TEST(nc_rename_var); NC_TEST(nc_put_att_text); NC_TEST(nc_put_att_uchar); NC_TEST(nc_put_att_schar); NC_TEST(nc_put_att_short); NC_TEST(nc_put_att_int); NC_TEST(nc_put_att_long); NC_TEST(nc_put_att_float); NC_TEST(nc_put_att_double); NC_TEST(nc_put_att); NC_TEST(nc_copy_att); NC_TEST(nc_rename_att); NC_TEST(nc_del_att); NC_TEST(nc_set_default_format); } fprintf(stderr, "\n*** Total number of failures: %d\n", nfailsTotal); if (nfailsTotal) { fprintf(stderr, "*** nc_test FAILURE!!!\n"); return 2; } else fprintf(stderr, "*** nc_test SUCCESS!!!\n"); return 0; }