src/tst_vars.c

Go to the documentation of this file.
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       /* CReate a file and use nccd_def_file to annotate it. */
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       /* Check the file. */
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       /* Check the file. */
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       /* CReate a file and use nccd_def_file to annotate it. */
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       /* Check the file. */
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       /* Check the file. */
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 
 All Classes Files Functions Defines

Generated on Tue Mar 1 2011 06:36:59 for libCF. LibCF is a Unidata library.