1/*********************************************************************
2 * Copyright 1993-2006, UCAR/Unidata
3 * See COPYRIGHT file for copying and redistribution conditions.
4 *
5 * Test driver for netCDF implementation.  This program performs tests
6 * against the netCDF specification for all user-level functions in an
7 * implementation of the netCDF library.  Must be invoked from a
8 * directory in which the invoker has write permission.
9 *
10 * $Id: driver.c,v 1.32 2008/10/20 01:48:07 ed Exp $
11 *********************************************************************/
12
13#include <config.h>
14#include <stdlib.h>
15#include <netcdf.h>
16#include <stdio.h>
17#include <string.h>
18#include "testcdf.h" /* defines in-memory test netcdf structure */
19#include "tests.h"
20
21/* Test everything for classic and 64-bit offsetfiles. If netcdf-4 is
22 * included, that means another whole round of testing. */
23#ifdef USE_NETCDF4
24#define NUM_FORMATS (3)
25#else
26#define NUM_FORMATS (2)
27#endif
28
29int
30main(int argc, char **argv)
31{
32  /*EXTERNL int ncopts; */ /* netCDF error options */
33    char *testfiles[] = {"nonesuch", "nctest_classic.nc",
34  "nctest_64bit_offset.nc", "nctest_netcdf4.nc"};
35    char *testfile = NULL;
36    int inerrs = 0;
37
38    ncopts &= ~NC_FATAL; /* make errors nonfatal */
39    ncopts &= ~NC_VERBOSE; /* turn off error messages */
40
41    fprintf(stderr, "Testing V2 API with %d different netCDF formats.\n",
42    NUM_FORMATS);
43
44    for (i = 1; i <= NUM_FORMATSi++)
45    {
46       switch (i)
47       {
48   case NC_FORMAT_CLASSIC:
49      nc_set_default_format(NC_FORMAT_CLASSICNULL);
50      fprintf(stderr, "\n\nSwitching to netCDF classic format.\n");
51      break;
52   case NC_FORMAT_64BIT_OFFSET:
53      nc_set_default_format(NC_FORMAT_64BIT_OFFSETNULL);
54      fprintf(stderr, "\n\nSwitching to 64-bit offset format.\n");
55      break;
56#ifdef USE_NETCDF4
57   case NC_FORMAT_NETCDF4: /* actually it's _CLASSIC. */
58      nc_set_default_format(NC_FORMAT_NETCDF4_CLASSICNULL);
59      fprintf(stderr, "\n\nSwitching to netCDF-4 format (with NC_CLASSIC_MODEL).\n");
60      break;
61#endif
62   default:
63      fprintf(stderr, "Unexpected format!\n");
64      return 2;
65       }
66       testfile = testfiles[i];
67
68       /* Run all the tests for this format. */
69
70       nerrs += test_nccreate(testfile);
71       nerrs += test_ncopen(testfile);
72       nerrs += test_ncredef(testfile);
73       nerrs += test_ncendef(testfile);
74       nerrs += test_ncclose(testfile);
75       nerrs += test_ncinquire(testfile);
76       nerrs += test_ncsync(testfile);
77       nerrs += test_ncabort(testfile);
78       nerrs += test_ncdimdef(testfile);
79       nerrs += test_ncdimid(testfile);
80       nerrs += test_ncdiminq(testfile);
81       nerrs += test_ncdimrename(testfile);
82       nerrs += test_ncvardef(testfile);
83       nerrs += test_ncvarid(testfile);
84       nerrs += test_ncvarinq(testfile);
85    nerrs += test_ncvarputg(testfile);
86       nerrs += test_ncvarput1(testfile);
87       nerrs += test_ncvarget1(testfile);
88       nerrs += test_ncvarput(testfile);
89       nerrs += test_ncvarget(testfile);
90       nerrs += test_ncvarputg(testfile);
91       nerrs += test_ncvargetg(testfile);
92       nerrs += test_ncrecinq(testfile);
93       nerrs += test_ncrecput(testfile);
94       nerrs += test_ncrecget(testfile);
95       nerrs += test_ncvarrename(testfile);
96       nerrs += test_ncattput(testfile);
97       nerrs += test_ncattinq(testfile);
98       nerrs += test_ncattget(testfile);
99       nerrs += test_ncattcopy(testfile, "test2.nc");
100       nerrs += test_ncattname(testfile);
101       nerrs += test_ncattrename(testfile);
102       nerrs += test_ncattdel(testfile);
103       nerrs += test_nctypelen();
104
105       /* Clean up in-memory struct. */
106       {
107   int i;
108
109   for (i = 0; i < test.ndimsi++)
110      free(test.dims[i].name);
111
112   for (i = 0; i < test.nvarsi++)
113   {
114      free(test.vars[i].name);
115      free(test.vars[i].dims);
116   }
117
118   for (i = 0; i < test.nattsi++)
119      free(test.atts[i].name);
120
121       }
122    }
123
124    fprintf(stderr, "\nTotal number of failures: %d\n", nerrs);
125
126    if (nerrs)
127    {
128       fprintf(stderr, "nctest FAILURE!!!\n");
129       return 2;
130    }
131    else
132       fprintf(stderr, "nctest SUCCESS!!!\n");
133
134    return 0;
135}


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