#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) |
|
|
Definition at line 15 of file tst_opaques.c. |
|
|
Definition at line 17 of file tst_opaques.c. |
|
|
Definition at line 14 of file tst_opaques.c. |
|
|
Definition at line 16 of file tst_opaques.c. |
|
|
Definition at line 13 of file tst_opaques.c. |
|
|
Definition at line 19 of file tst_opaques.c. |
|
|
Definition at line 18 of file tst_opaques.c. |
|
||||||||||||
|
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 }
|
1.4.4