00001
00010 #include <config.h>
00011 #include <libcf_src.h>
00012 #include <netcdf.h>
00013 #include <nc_tests.h>
00014
00015 #define FILE_NAME "tst_vars.nc"
00016
00017 int
00018 main(int argc, char **argv)
00019 {
00020 printf("\n*** Testing libcf variable stuff.\n");
00021
00022 #define INSTITUTION "Unidata Programmaing Drone Sector 7G"
00023 #define SOURCE "We buy our data at DataMart."
00024 #define COMMENT "Happy trails to you!"
00025 #define REFERENCES "Why bother?"
00026 #define MAX_LEN 100
00027 #define NDIMS 1
00028 #define VAR_NAME "Programmer_Productivity"
00029 #define DIM_NAME "Lines_of_code_per_cube_per_second"
00030
00031 printf("*** testing variable notes...");
00032 {
00033 int ncid, varid, dimids[NDIMS];
00034 size_t ilen, slen, clen, rlen;
00035 char inst_in[MAX_LEN], source_in[MAX_LEN];
00036 char comment_in[MAX_LEN], ref_in[MAX_LEN];
00037
00038
00039 if (nc_create(FILE_NAME, 0, &ncid)) ERR;
00040 if (nc_def_dim(ncid, DIM_NAME, NC_UNLIMITED, dimids)) ERR;
00041 if (nc_def_var(ncid, VAR_NAME, NC_INT, NDIMS, dimids, &varid)) ERR;
00042 if (nccf_def_notes(ncid, varid, INSTITUTION, SOURCE,
00043 COMMENT, REFERENCES)) ERR;
00044
00045
00046 if (nccf_inq_notes(ncid, varid, &ilen, inst_in, &slen, source_in,
00047 &clen, comment_in, &rlen, ref_in)) ERR;
00048 if (ilen != strlen(INSTITUTION) + 1 || slen != strlen(SOURCE) + 1 ||
00049 clen != strlen(COMMENT) + 1 || rlen != strlen(REFERENCES) + 1) ERR;
00050 if (strncmp(inst_in, INSTITUTION, ilen) ||
00051 strncmp(source_in, SOURCE, slen) ||
00052 strncmp(comment_in, COMMENT, clen) ||
00053 strncmp(ref_in, REFERENCES, rlen)) ERR;
00054
00055 if (nc_close(ncid)) ERR;
00056
00057 if (nc_open(FILE_NAME, 0, &ncid)) ERR;
00058
00059
00060 if (nccf_inq_notes(ncid, varid, &ilen, inst_in, &slen, source_in,
00061 &clen, comment_in, &rlen, ref_in)) ERR;
00062 if (ilen != strlen(INSTITUTION) + 1 || slen != strlen(SOURCE) + 1 ||
00063 clen != strlen(COMMENT) + 1 || rlen != strlen(REFERENCES) + 1) ERR;
00064 if (strncmp(inst_in, INSTITUTION, ilen) ||
00065 strncmp(source_in, SOURCE, slen) ||
00066 strncmp(comment_in, COMMENT, clen) ||
00067 strncmp(ref_in, REFERENCES, rlen)) ERR;
00068
00069 if (nc_close(ncid)) ERR;
00070
00071 }
00072 SUMMARIZE_ERR;
00073
00074 #define VALID_MIN -10.0
00075 #define VALID_MAX 10.0
00076 #define FILL_VALUE 99.9
00077 #define VAR2_NAME "manager_salary"
00078
00079 printf("*** testing missing values...");
00080 {
00081 int ncid, varid, varid2, dimids[NDIMS];
00082 int valid_min = VALID_MIN, valid_max = VALID_MAX;
00083 int fill_value = FILL_VALUE;
00084 int fill_value_in, valid_min_in, valid_max_in;
00085
00086
00087 if (nc_create(FILE_NAME, 0, &ncid)) ERR;
00088 if (nc_def_dim(ncid, DIM_NAME, NC_UNLIMITED, dimids)) ERR;
00089 if (nc_def_var(ncid, VAR_NAME, NC_INT, NDIMS, dimids, &varid)) ERR;
00090 if (nc_def_var(ncid, VAR2_NAME, NC_INT, NDIMS, dimids, &varid2)) ERR;
00091 if (nccf_def_var_missing(ncid, varid, &fill_value, &valid_min,
00092 &valid_max)) ERR;
00093
00094
00095 if (nccf_inq_var_missing(ncid, varid, &fill_value_in,
00096 &valid_min_in, &valid_max_in)) ERR;
00097 if (fill_value_in != fill_value || valid_min_in != valid_min ||
00098 valid_max_in != valid_max) ERR;
00099 if (nccf_inq_var_missing(ncid, varid2, &fill_value_in,
00100 &valid_min_in, &valid_max_in)) ERR;
00101 if (fill_value_in != NC_FILL_INT || valid_min_in != CF_INT_MIN ||
00102 valid_max_in != CF_INT_MAX) ERR;
00103
00104 if (nc_close(ncid)) ERR;
00105
00106 if (nc_open(FILE_NAME, 0, &ncid)) ERR;
00107
00108
00109 if (nccf_inq_var_missing(ncid, varid, &fill_value_in,
00110 &valid_min_in, &valid_max_in)) ERR;
00111 if (fill_value_in != fill_value || valid_min_in != valid_min ||
00112 valid_max_in != valid_max) ERR;
00113
00114 if (nc_close(ncid)) ERR;
00115
00116 }
00117 SUMMARIZE_ERR;
00118 FINAL_RESULTS;
00119 }
00120