ncdf4a13/libsrc4/tst_opaques.c File Reference

#include <netcdf.h>
#include <nc_tests.h>

Include dependency graph for tst_opaques.c:

Go to the source code of this file.

Defines

#define FILE_NAME   "tst_opaques.nc"
#define DIM_LEN   3
#define ATT_NAME   "att_name"
#define DIM_NAME   "dim"
#define BASE_SIZE   20
#define VAR_NAME   "var"
#define TYPE_NAME   "type"

Functions

int main (int argc, char **argv)


Define Documentation

#define ATT_NAME   "att_name"
 

Definition at line 15 of file tst_opaques.c.

#define BASE_SIZE   20
 

Definition at line 17 of file tst_opaques.c.

#define DIM_LEN   3
 

Definition at line 14 of file tst_opaques.c.

#define DIM_NAME   "dim"
 

Definition at line 16 of file tst_opaques.c.

#define FILE_NAME   "tst_opaques.nc"
 

Definition at line 13 of file tst_opaques.c.

#define TYPE_NAME   "type"
 

Definition at line 19 of file tst_opaques.c.

#define VAR_NAME   "var"
 

Definition at line 18 of file tst_opaques.c.


Function Documentation

int main int  argc,
char **  argv
 

Definition at line 22 of file tst_opaques.c.

References ATT_NAME, BASE_SIZE, DIM_LEN, DIM_NAME, ERR, FILE_NAME, FINAL_RESULTS, natts, NC_CLOBBER, nc_close, nc_create, nc_def_dim, nc_def_opaque(), nc_def_var, nc_get_att, nc_get_var(), NC_GLOBAL, nc_inq, nc_inq_att, nc_inq_opaque(), nc_inq_user_type(), nc_inq_var, NC_MAX_NAME, NC_NETCDF4, NC_NOWRITE, NC_OPAQUE, nc_open, nc_put_att, nc_put_var(), ncid, ndims, nvars, SUMMARIZE_ERR, TYPE_NAME, VAR_NAME, var_name, and var_type.

00023 {
00024    int ncid;
00025    size_t size_in;
00026    nc_type xtype;
00027    unsigned char data[DIM_LEN][BASE_SIZE], data_in[DIM_LEN][BASE_SIZE];
00028    int i, j;
00029 
00030    printf("\n*** Testing netcdf-4 opaque type.\n");
00031 
00032    for (i=0; i<DIM_LEN; i++)
00033       for (j=0; j<BASE_SIZE; j++)
00034          data[i][j] = 0;
00035 
00036    /*nc_set_log_level(5);*/
00037    
00038    printf("*** testing opaque attribute...");
00039    {
00040       char name_in[NC_MAX_NAME+1];
00041       nc_type base_nc_type_in;
00042       size_t base_size_in;
00043       size_t nfields_in;
00044       int class_in;
00045 
00046       /* Create a file that has an opaque attribute. */
00047       if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR;
00048 
00049       if (nc_def_opaque(ncid, BASE_SIZE, TYPE_NAME, &xtype)) ERR;
00050 
00051       /* Check it out. */
00052       if (nc_inq_user_type(ncid, xtype, name_in, &base_size_in, &base_nc_type_in, 
00053                            &nfields_in, &class_in)) ERR;
00054       if (strcmp(name_in, TYPE_NAME) || base_size_in != BASE_SIZE || 
00055           base_nc_type_in != 0 || nfields_in != 0 || class_in != NC_OPAQUE) ERR;
00056       if (nc_inq_opaque(ncid, xtype, name_in, &base_size_in)) ERR;
00057       if (strcmp(name_in, TYPE_NAME) || base_size_in != BASE_SIZE) ERR;
00058 
00059       /* Write an att. */
00060       if (nc_put_att(ncid, NC_GLOBAL, ATT_NAME, xtype, DIM_LEN, data)) ERR;
00061 
00062       if (nc_close(ncid)) ERR;
00063 
00064       /* Reopen. */
00065       if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR;
00066 
00067       /* Check it out. */
00068       if (nc_inq_att(ncid, NC_GLOBAL, ATT_NAME, &xtype, &size_in)) ERR;
00069       if (size_in != DIM_LEN) ERR;
00070       if (nc_inq_user_type(ncid, xtype, name_in, &base_size_in, &base_nc_type_in, &nfields_in, &class_in)) ERR;
00071       if (strcmp(name_in, TYPE_NAME) || base_size_in != BASE_SIZE || 
00072           base_nc_type_in != 0 || nfields_in != 0 || class_in != NC_OPAQUE) ERR;
00073       if (nc_inq_opaque(ncid, xtype, name_in, &base_size_in)) ERR;
00074       if (strcmp(name_in, TYPE_NAME) || base_size_in != BASE_SIZE) ERR;
00075       if (nc_get_att(ncid, NC_GLOBAL, ATT_NAME, data_in)) ERR; 
00076       for (i=0; i<DIM_LEN; i++) 
00077          for (j=0; j<BASE_SIZE; j++) 
00078             if (data_in[i][j] != data[i][j]) ERR; 
00079 
00080       if (nc_close(ncid)) ERR;
00081    }
00082 
00083    SUMMARIZE_ERR;
00084 
00085    printf("*** testing opaque variable...");
00086    {
00087       int dimid, varid, dimids[] = {0};
00088       char name_in[NC_MAX_NAME+1];
00089       nc_type base_nc_type_in, var_type;
00090       size_t nfields_in, base_size_in;
00091       int class_in;
00092       char var_name[NC_MAX_NAME+1];
00093       int  nvars, natts, ndims, unlimdimid, dimids_var[1];
00094 
00095       /* Create a file that has an opaque variable. */
00096       if (nc_create(FILE_NAME, NC_NETCDF4|NC_CLOBBER, &ncid)) ERR;
00097       if (nc_def_opaque(ncid, BASE_SIZE, TYPE_NAME, &xtype)) ERR;
00098       if (nc_inq_user_type(ncid, xtype, name_in, &base_size_in, &base_nc_type_in, &nfields_in, &class_in)) ERR;
00099       if (strcmp(name_in, TYPE_NAME) || base_size_in != BASE_SIZE || 
00100           base_nc_type_in != 0 || nfields_in != 0 || class_in != NC_OPAQUE) ERR;
00101       if (nc_inq_opaque(ncid, xtype, name_in, &base_size_in)) ERR;
00102       if (strcmp(name_in, TYPE_NAME) || base_size_in != BASE_SIZE) ERR;
00103       if (nc_def_dim(ncid, DIM_NAME, DIM_LEN, &dimid)) ERR;
00104       if (nc_def_var(ncid, VAR_NAME, xtype, 1, dimids, &varid)) ERR;
00105       if (nc_put_var(ncid, varid, data)) ERR;
00106       if (nc_close(ncid)) ERR;
00107       
00108       /* Check it out. */
00109       if (nc_open(FILE_NAME, NC_NOWRITE, &ncid)) ERR;
00110       if (nc_inq(ncid, &ndims, &nvars, &natts, &unlimdimid)) ERR;
00111       if (ndims != 1 || nvars != 1 || natts != 0 || unlimdimid != -1) ERR;
00112       if (nc_inq_var(ncid, 0, var_name, &var_type, &ndims, dimids_var, &natts)) ERR;
00113       if (ndims != 1 || strcmp(var_name, VAR_NAME) || 
00114           dimids_var[0] != dimids[0] || natts != 0) ERR;
00115       if (nc_get_var(ncid, 0, data_in)) ERR;
00116       for (i=0; i<DIM_LEN; i++) 
00117          for (j=0; j<BASE_SIZE; j++) 
00118             if (data_in[i][j] != data[i][j]) ERR; 
00119       if (nc_close(ncid)) ERR;
00120    }
00121 
00122    SUMMARIZE_ERR;
00123 
00124    FINAL_RESULTS;
00125 }


Generated on Thu Mar 16 18:11:52 2006 for nco by  doxygen 1.4.4