1/* This is part of the netCDF package.  Copyright 2011 University
2   Corporation for Atmospheric Research/Unidata See COPYRIGHT file for
3   conditions of use.
4
5   Test netcdf-4 syncs.
6*/
7
8#include <nc_tests.h>
9#include "err_macros.h"
10
11#define FILE_NAME "tst_sync.nc"
12#define DIM_NAME "x"
13#define VAR1_NAME "var1"
14#define VAR2_NAME "var2"
15
16int
17main(int argc, char **argv)
18{
19   printf("\n*** Testing netcdf-4 variable syncing.\n");
20   printf("**** testing that sync works in netCDF-4...");
21   {
22      int ncidvar1_idvar2_idvar3_iddimid;
23      int ndimsnvarsnattsunlimdimiddimid_in;
24      nc_type xtype_in;
25      char name_in[NC_MAX_NAME + 1];
26
27      /* Create a file with one dim, and two vars that use it. For
28       * fun, do a sync between the def_var calls. */
29      if (nc_create(FILE_NAMENC_NETCDF4, &ncid)) ERR;
30      if (nc_def_dim(ncidDIM_NAME, 1, &dimid)) ERR;
31      if (nc_def_var(ncidVAR1_NAMENC_FLOAT, 1, &dimid, &var1_id)) ERR;
32      if (nc_sync(ncid)) ERR;
33      if (nc_def_var(ncidVAR2_NAMENC_FLOAT, 1, &dimid, &var2_id)) ERR;
34
35      /* Now define a coordinate variable for the dimension. */
36      if (nc_def_var(ncidDIM_NAMENC_FLOAT, 1, &dimid, &var3_id)) ERR;
37      if (nc_close(ncid)) ERR;
38
39      /* Reopen the file and check it. */
40      if (nc_open(FILE_NAMENC_NOWRITE, &ncid)) ERR;
41      if (nc_inq(ncid, &ndims, &nvars, &natts, &unlimdimid)) ERR;
42      if (ndims != 1 || nvars != 3 || natts != 0 || unlimdimid != -1) ERR;
43      if (nc_inq_var(ncid, 2, name_in, &xtype_in, &ndims, &dimid_in, &natts)) ERR;
44      if (strcmp(name_inDIM_NAME) || xtype_in != NC_FLOAT || ndims != 1 ||
45   dimid_in != 0 || natts != 0) ERR;
46      if (nc_close(ncid)) ERR;
47   }
48   SUMMARIZE_ERR;
49   printf("**** testing that sync works in netCDF-4, with test contributed by Jeff W....");
50   {
51      int ncidvar1_idvar2_idvar3_iddimid;
52
53      /* Create a file with one dim and two variables. */
54      if (nc_create(FILE_NAMENC_NETCDF4, &ncid)) ERR;
55      if (nc_def_dim(ncidDIM_NAME, 1, &dimid)) ERR;
56      if (nc_def_var(ncidVAR1_NAMENC_FLOAT, 1, &dimid, &var1_id)) ERR;
57      if (nc_def_var(ncidVAR2_NAMENC_FLOAT, 1,&dimid, &var2_id)) ERR;
58
59      /* Sync the file and add a coordinate variable. */
60      if (nc_sync(ncid)) ERR;
61      if (nc_def_var(ncidDIM_NAMENC_FLOAT, 1, &dimid, &var3_id)) ERR;
62
63      /* Close the file. */
64      if (nc_close(ncid)) ERR;
65   }
66   SUMMARIZE_ERR;
67   printf("**** testing that sync works in netCDF-4, with test contributed by Jeff W....");
68   {
69      int ncidvar1_idvar2_idvar3_iddimid;
70      float xx;
71
72      if (nc_create(FILE_NAMENC_NETCDF4 | NC_CLOBBER, &ncid)) ERR;
73      if (nc_def_dim(ncidDIM_NAME, 1, &dimid)) ERR;
74      if (nc_def_var(ncidVAR1_NAMENC_FLOAT, 1, &dimid, &var1_id)) ERR;
75      xx = 1.0;
76      if (nc_put_var_float(ncidvar1_id, &xx)) ERR;
77      if (nc_sync(ncid)) ERR;
78      if (nc_def_var(ncidVAR2_NAMENC_FLOAT, 1,&dimid, &var2_id)) ERR;
79      xx = 2.0;
80      if (nc_put_var_float(ncidvar2_id, &xx)) ERR;
81      if (nc_sync(ncid)) ERR;
82      if (nc_def_var(ncidDIM_NAMENC_FLOAT, 1, &dimid, &var3_id)) ERR;
83      xx = 3.0;
84      if (nc_put_var_float(ncidvar3_id, &xx)) ERR;
85      if (nc_sync(ncid)) ERR;
86      if (nc_close(ncid)) ERR;
87   }
88   SUMMARIZE_ERR;
89   FINAL_RESULTS;
90}


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