1/* This is part of the netCDF package.  Copyright 2005-2011,
2   University Corporation for Atmospheric Research/Unidata. See
3   COPYRIGHT file for conditions of use.
4
5   Test that NetCDF-4 can read HDF4 files.
6*/
7#include <config.h>
8#include <nc_tests.h>
9#include "err_macros.h"
10#include <hdf5.h>
11#include <H5DSpublic.h>
12#include <mfhdf.h>
13
14#define CHUNKEDFILE "chunked.hdf4"
15#define CHUNKEDVAR "LandWater"
16
17#define CONTIGFILE "contiguous.hdf4"
18#define CONTIGVAR "pres"
19
20#define LAT_LEN 3
21#define LON_LEN 2
22#define DIMS_2 2
23
24static size_t EXPECTED_CHUNKSIZES[2] = {1,1200};
25
26int
27main(int argc, char **argv)
28{
29   int ncid;
30   int varid;
31   int rank;
32   int d;
33   int storage;
34   size_t chunksizes[NC_MAX_VAR_DIMS];
35   const char* srcdir = ".";
36
37   printf("\n*** Testing HDF4/NetCDF-4 chunking API: chunked...\n");
38   {
39
40      /* Open with netCDF */
41      if (nc_open(CHUNKEDFILENC_NOWRITE, &ncid)) ERR;
42
43      /* Get a variable id */
44      if(nc_inq_varid(ncid,CHUNKEDVAR,&varid)) ERR;
45
46      /* get rank */
47      if(nc_inq_varndims(ncid,varid,&rank)) ERR;
48
49      /* get chunk info */
50      memset(chunksizes,0,sizeof(chunksizes));
51      if(nc_inq_var_chunking(ncid,varid,&storage,chunksizes)) ERR;
52
53      if(storage == NC_CONTIGUOUS) {
54 fprintf(stderr,"nc_inq_var_chunking did not return CHUNKED\n");
55 ERR;
56      }
57
58      for(d=0;d<rank;d++) {
59 if(EXPECTED_CHUNKSIZES[d] != chunksizes[d]) {
60     fprintf(stderr,"chunk size mismatch: [%d] %ld :: %ld\n",d,chunksizes[d],EXPECTED_CHUNKSIZES[d]);
61     ERR;
62 }
63      }
64      if (nc_close(ncid)) ERR;
65   }
66
67   printf("\n*** Testing HDF4/NetCDF-4 chunking API: contiguous...\n");
68   {
69      /* Open with netCDF */
70      if (nc_open(CONTIGFILENC_NOWRITE, &ncid)) ERR;
71
72      /* Get a variable id */
73      if(nc_inq_varid(ncid,CONTIGVAR,&varid)) ERR;
74
75      /* get rank */
76      if(nc_inq_varndims(ncid,varid,&rank)) ERR;
77
78      /* get chunk info */
79      memset(chunksizes,0,sizeof(chunksizes));
80      if(nc_inq_var_chunking(ncid,varid,&storage,chunksizes)) ERR;
81
82      if(storage != NC_CONTIGUOUS) {
83 fprintf(stderr,"nc_inq_var_chunking did not return CONTIGUOUS\n");
84 ERR;
85      }
86
87      if (nc_close(ncid)) ERR;
88   }
89
90   SUMMARIZE_ERR;
91   FINAL_RESULTS;
92}


HyperKWIC - Version 7.20DA executed at 11:37 on 27 Oct 2017 | Polyhedron Solutions - INTERNAL USE | COMMERCIAL (Any O/S) SN 4AKIed