1#include <nc_tests.h>
2#include "err_macros.h"
3#include <stdio.h>
4#include <stdlib.h>
5#include <netcdf.h>
6
7#define FILECLASSIC "tst_dimsize_classic.nc"
8#define FILE64OFFSET "tst_dimsize_64offset.nc"
9#define FILE64DATA "tst_dimsize_64data.nc"
10
11#define DIMMAXCLASSIC (NC_MAX_INT - 3)
12#define DIMMAX64OFFSET (NC_MAX_UINT - 3)
13#define DIMMAX64DATA (NC_MAX_UINT64 - 3)
14
15/*
16Test that at least the meta-data works
17for dimension sizes X modes.
18NC_CLASSIC => NC_INT_MAX - 3
19NC_64BIT_OFFSET => NC_UINT_MAX - 3
20NC_64BIT_DATA => NC_UINT64_MAX - 3
21Note that this will not test the last case when
22|size_t| == 4.
23Also, leave the files around so we can test with ncdump.
24*/
25
26int
27main(int argc, char **argv)
28{
29    int ncid;
30    size_t dimsize;
31    int dimid;
32    int stat = NC_NOERR;
33
34    printf("\n*** Testing Max Dimension Sizes\n");
35
36    printf("\n|size_t|=%lu\n",(unsigned long)sizeof(size_t));
37
38    printf("\n*** Writing Max Dimension Size For NC_CLASSIC\n");
39    if ((stat=nc_create(FILECLASSICNC_CLOBBER, &ncid))) ERRSTAT(stat);
40    dimsize = DIMMAXCLASSIC;
41    if ((stat=nc_def_dim(ncid, "testdim", dimsize, &dimid))) ERRSTAT(stat);
42    if ((stat=nc_close(ncid))) ERRSTAT(stat);
43
44    printf("\n*** Reading Max Dimension Size For NC_CLASSIC\n");
45    if ((stat=nc_open(FILECLASSICNC_NOCLOBBER, &ncid))) ERRSTAT(stat);
46    if ((stat=nc_inq_dimid(ncid, "testdim", &dimid))) ERRSTAT(stat);
47    if ((stat=nc_inq_dimlen(nciddimid, &dimsize))) ERRSTAT(stat);
48    if(dimsize != DIMMAXCLASSICERR;
49    if ((stat=nc_close(ncid))) ERRSTAT(stat);
50
51    printf("\n*** Writing Max Dimension Size For NC_64BIT_OFFSET\n");
52    if ((stat=nc_create(FILE64OFFSETNC_CLOBBER | NC_64BIT_OFFSET, &ncid))) ERRSTAT(stat);
53    dimsize = DIMMAX64OFFSET;
54    if ((stat=nc_def_dim(ncid, "testdim", dimsize, &dimid))) ERRSTAT(stat);
55    if ((stat=nc_close(ncid))) ERRSTAT(stat);
56
57    printf("\n*** Reading Max Dimension Size For NC_64BIT_OFFSET\n");
58    if ((stat=nc_open(FILE64OFFSETNC_NOCLOBBER|NC_64BIT_OFFSET, &ncid))) ERRSTAT(stat);
59    if ((stat=nc_inq_dimid(ncid, "testdim", &dimid))) ERRSTAT(stat);
60    if ((stat=nc_inq_dimlen(nciddimid, &dimsize))) ERRSTAT(stat);
61    if(dimsize != DIMMAX64OFFSETERR;
62    if ((stat=nc_close(ncid))) ERRSTAT(stat);
63
64    if(sizeof(size_t) == 8) {
65        printf("\n*** Writing Max Dimension Size For NC_64BIT_DATA\n");
66        if ((stat=nc_create(FILE64DATANC_CLOBBER | NC_64BIT_DATA, &ncid))) ERRSTAT(stat);
67        dimsize = (size_t)DIMMAX64DATA;
68        if ((stat=nc_def_dim(ncid, "testdim", dimsize, &dimid))) ERRSTAT(stat);
69        if ((stat=nc_close(ncid))) ERRSTAT(stat);
70
71 printf("\n*** Reading Max Dimension Size For NC_64BIT_DATA\n");
72 if ((stat=nc_open(FILE64DATANC_NOCLOBBER|NC_64BIT_DATA, &ncid))) ERRSTAT(stat);
73 if ((stat=nc_inq_dimid(ncid, "testdim", &dimid))) ERRSTAT(stat);
74 if ((stat=nc_inq_dimlen(nciddimid, &dimsize))) ERRSTAT(stat);
75 if(dimsize != DIMMAX64DATAERR;
76 if ((stat=nc_close(ncid))) ERRSTAT(stat);
77    }
78
79    SUMMARIZE_ERR;
80    FINAL_RESULTS;
81}


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