int main() { int ncid, varid; int retval; size_t start[RANK]; size_t count[RANK]; const char* topsrcdir; char url[4096]; topsrcdir = gettopsrcdir(); strncpy(url,"file://",sizeof(url)); strlcat(url,topsrcdir,sizeof(url)); strlcat(url,"/ncdap_test/testdata3/test.06",sizeof(url)); printf("test_vara: url=%s\n",url); memset((void*)threeD,0,sizeof(threeD)); if((retval = nc_open(url, NC_NOWRITE, &ncid))) ERR(retval); if((retval = nc_inq_varid(ncid, VAR, &varid))) ERR(retval); /* test 1: Read the whole variable */ memcpy(start,start0,sizeof(start0)); memcpy(count,count0,sizeof(count0)); if((retval = nc_get_vara_float(ncid,varid,start,count,(float*)threeD))) ERR(retval); if(!check(start,count)) goto fail; /* test 2: Read the slice with X=0 */ memcpy(start,start0,sizeof(start0)); memcpy(count,count0,sizeof(count0)); count[0] = 1; if((retval = nc_get_vara_float(ncid,varid,start,count,(float*)threeD))) ERR(retval); if(!check(start,count)) goto fail; if((retval = nc_close(ncid))) ERR(retval); printf("*** PASS\n"); return 0; fail: printf("*** FAIL\n"); return 1; }
int main() { int ncid, varid; int ncstat = NC_NOERR; char url[8102]; const char* topsrcdir; #ifndef USE_NETCDF4 int i,j; #endif /* location of our target url: use file:// to avoid remote server downtime issues */ topsrcdir = gettopsrcdir(); url[0] = '\0'; #ifdef DEBUG strlcat(url,"[log][show=fetch]",sizeof(url)); #endif strlcat(url,"file://",sizeof(url)); strlcat(url,topsrcdir,sizeof(url)); strlcat(url,"/ncdap_test/testdata3/test.02",sizeof(url)); printf("*** Test: var conversions on URL: %s\n",url); /* open file, get varid */ CHECK(nc_open(url, NC_NOWRITE, &ncid)); /* extract the string case for netcdf-3*/ #ifndef USE_NETCDF4 CHECK(nc_inq_varid(ncid, "s", &varid)); CHECK(nc_get_var_text(ncid,varid,(char*)string3)); #ifdef GENERATE printf("static %s string3_data[DIMSIZE][STRLEN]={","char"); for(i=0;i<DIMSIZE;i++) { int j; /* Do simple escape */ for(j=0;j<STRLEN;j++) { if(string3[i][j] > 0 && string3[i][j] != '\n' && string3[i][j] != '\r' && string3[i][j] != '\t' &&(string3[i][j] < ' ' || string3[i][j] >= '\177')) string3[i][j] = '?'; } printf("%s\"%s\"",COMMA,string3[i]); } printf("};\n"); #else fprintf(stdout,"*** testing: %s\n","string3"); for(i=0;i<DIMSIZE;i++) { for(j=0;j<STRLEN;j++) { if(string3[i][j] != string3_data[i][j]) {report(i,"string3",__LINE__); break;} } } #endif #endif CHECK(nc_inq_varid(ncid, "b", &varid)); CHECK(nc_get_var_text(ncid,varid,ch)); #ifdef GENERATE printf("static %s ch_data[DIMSIZE]={","char"); for(i=0;i<DIMSIZE;i++) printf("%s'\\%03hho'",COMMA,ch[i]); printf("};\n"); #else COMPARE(NC_CHAR,NC_CHAR,ch,ch_data); #endif CHECK(nc_inq_varid(ncid, "b", &varid)); CHECK(nc_get_var_schar(ncid,varid,int8v)); #ifdef GENERATE printf("static %s int8_data[DIMSIZE]={","signed char"); for(i=0;i<DIMSIZE;i++) printf("%s%hhd",COMMA,int8v[i]); printf("};\n"); #else COMPARE(NC_BYTE,NC_BYTE,int8v,int8_data); #endif CHECK(nc_inq_varid(ncid, "b", &varid)); CHECK(nc_get_var_uchar(ncid,varid,uint8v)); #ifdef GENERATE printf("static %s uint8_data[DIMSIZE]={","unsigned char"); for(i=0;i<DIMSIZE;i++) printf("%s%hhu",COMMA,uint8v[i]); printf("};\n"); #else COMPARE(NC_UBYTE,NC_UBYTE,uint8v,uint8_data); #endif CHECK(nc_inq_varid(ncid, "b", &varid)); CHECK(nc_get_var_int(ncid,varid,int32v)); #ifdef GENERATE printf("static %s int8toint32_data[DIMSIZE]={","int"); for(i=0;i<DIMSIZE;i++) printf("%s%d",COMMA,int32v[i]); printf("};\n"); #else COMPARE(NC_BYTE,NC_INT,int32v,int8toint32_data); #endif CHECK(nc_inq_varid(ncid, "b", &varid)); CHECK(nc_get_var_float(ncid,varid,float32v)); #ifdef GENERATE printf("static %s int82float32_data[DIMSIZE]={","float"); for(i=0;i<DIMSIZE;i++) printf("%s%1.3f",COMMA,float32v[i]); printf("};\n"); #else COMPARE(NC_FLOAT,NC_FLOAT,float32v,int82float32_data); #endif CHECK(nc_inq_varid(ncid, "i16", &varid)); CHECK(nc_get_var_short(ncid,varid,int16v)); #ifdef GENERATE printf("static %s int16_data[DIMSIZE]={","short"); for(i=0;i<DIMSIZE;i++) printf("%s%hd",COMMA,int16v[i]); printf("};\n"); #else COMPARE(NC_SHORT,NC_SHORT,int16v,int16_data); #endif CHECK(nc_inq_varid(ncid, "i16", &varid)); CHECK(nc_get_var_int(ncid,varid,int32v)); #ifdef GENERATE printf("static %s int16toint32_data[DIMSIZE]={","int"); for(i=0;i<DIMSIZE;i++) printf("%s%d",COMMA,int32v[i]); printf("};\n"); #else COMPARE(NC_SHORT,NC_INT,int32v,int16toint32_data); #endif CHECK(nc_inq_varid(ncid, "i16", &varid)); CHECK(nc_get_var_float(ncid,varid,float32v)); #ifdef GENERATE printf("static %s int162float32_data[DIMSIZE]={","float"); for(i=0;i<DIMSIZE;i++) printf("%s%1.3f",COMMA,float32v[i]); printf("};\n"); #else COMPARE(NC_SHORT,NC_FLOAT,float32v,int162float32_data); #endif CHECK(nc_inq_varid(ncid, "i32", &varid)); CHECK(nc_get_var_int(ncid,varid,int32v)); #ifdef GENERATE printf("static %s int32_data[DIMSIZE]={","int"); for(i=0;i<DIMSIZE;i++) printf("%s%d",COMMA,int32v[i]); printf("};\n"); #else COMPARE(NC_INT,NC_INT,int32v,int32_data); #endif CHECK(nc_inq_varid(ncid, "i32", &varid)); CHECK(nc_get_var_float(ncid,varid,float32v)); #ifdef GENERATE printf("static %s int32tofloat32_data[DIMSIZE]={","float"); for(i=0;i<DIMSIZE;i++) printf("%s%1.3f",COMMA,float32v[i]); printf("};\n"); #else COMPARE(NC_INT,NC_FLOAT,float32v,int32tofloat32_data); #endif CHECK(nc_inq_varid(ncid, "i32", &varid)); CHECK(nc_get_var_long(ncid,varid,ilong)); #ifdef GENERATE printf("static %s int32toilong_data[DIMSIZE]={","long"); for(i=0;i<DIMSIZE;i++) printf("%s%ld",COMMA,ilong[i]); printf("};\n"); #else COMPARE(NC_INT,NC_NAT,ilong,int32toilong_data); #endif CHECK(nc_inq_varid(ncid, "f32", &varid)); CHECK(nc_get_var_float(ncid,varid,float32v)); #ifdef GENERATE printf("static %s float32_data[DIMSIZE]={","float"); for(i=0;i<DIMSIZE;i++) printf("%s%1.3f",COMMA,float32v[i]); printf("};\n"); #else COMPARE(NC_FLOAT,NC_FLOAT,float32v,float32_data); #endif CHECK(nc_inq_varid(ncid, "f64", &varid)); CHECK(nc_get_var_double(ncid,varid,float64v)); #ifdef GENERATE printf("static %s float64_data[DIMSIZE]={","double"); for(i=0;i<DIMSIZE;i++) printf("%s%1.3f",COMMA,float64v[i]); printf("};\n"); #else COMPARE(NC_DOUBLE,NC_DOUBLE,float64v,float64_data); #endif if(failure) { printf("ncstat=%d %s",ncstat,nc_strerror(ncstat)); exit(1); } nc_close(ncid); return 0; }