1/* This is part of the netCDF package. Copyright 2008 University
2   Corporation for Atmospheric Research/Unidata See COPYRIGHT file for
3   conditions of use. See www.unidata.ucar.edu for more info.
4
5   Create a test file with fill values for a variable of specified
6   endianness.
7
8   $Id: tst_endian_fill.c,v 1.4 2009/06/25 14:57:29 ed Exp $
9*/
10
11#include <nc_tests.h>
12#include "err_macros.h"
13#include <stdlib.h>
14#include <stdio.h>
15#include <netcdf.h>
16
17#define FILE_NAME "tst_endian_fill.nc"
18#define VAR_NAME "v1"
19#define VAR2_NAME "v2"
20#define VAR3_NAME "v3"
21#define VAR_RANK 0
22int
23main(int argc, char **argv)
24{
25   printf("\n*** Testing specified endiannesss fill values.\n");
26   printf("*** testing simple case with int...");
27   {
28      int  ncidvaridvar2idvar3id;
29      int data_in;
30      int fill = NC_FILL_INT;
31
32      /* Create file with a scalar int var that's big-endian. */
33      if (nc_create(FILE_NAMENC_NETCDF4, &ncid)) ERR;
34      if (nc_def_var(ncidVAR_NAMENC_INTVAR_RANK, 0, &varid)) ERR;
35      if (nc_def_var_endian(ncidvaridNC_ENDIAN_BIG)) ERR;
36      if (nc_def_var(ncidVAR2_NAMENC_INTVAR_RANK, 0, &var2id)) ERR;
37      if (nc_def_var_endian(ncidvar2idNC_ENDIAN_LITTLE)) ERR;
38      /* close without writing data, so vars 1 and 2 should contain
39       * NC_FILL_INT */
40      if (nc_def_var(ncidVAR3_NAMENC_INTVAR_RANK, 0, &var3id)) ERR;
41      if (nc_def_var_endian(ncidvar3idNC_ENDIAN_BIG)) ERR;
42      if (nc_put_var(ncidvar3id, &fill)) ERR;
43      if (nc_close(ncid)) ERR;
44
45      /* Check it out. */
46      if (nc_open(FILE_NAMENC_NOWRITE, &ncid)) ERR;
47      if (nc_inq_varid(ncidVAR_NAME, &varid)) ERR;
48      if (nc_inq_varid(ncidVAR2_NAME, &var2id)) ERR;
49      if (nc_get_var_int(ncidvarid, &data_in)) ERR;
50      if (data_in != NC_FILL_INTERR;
51      if (nc_get_var_int(ncidvar2id, &data_in)) ERR;
52      if (data_in != NC_FILL_INTERR;
53      if (nc_close(ncid)) ERR;
54   }
55   SUMMARIZE_ERR;
56   printf("*** testing short, int, int64, and unsigned...");
57   {
58#define NUM_TYPES_TO_CHECK 6
59      int  ncidvarid[NUM_TYPES_TO_CHECK];
60      int check_type[NUM_TYPES_TO_CHECK] = {NC_SHORTNC_USHORTNC_INT,
61     NC_UINTNC_INT64NC_UINT64};
62      char var_name[NUM_TYPES_TO_CHECK][NC_MAX_NAME + 1] = {"SHORT", "USHORT",
63    "INT", "UINT", "INT64",
64    "UINT64"};
65      long long fill_value[NUM_TYPES_TO_CHECK] = {NC_FILL_SHORTNC_FILL_USHORTNC_FILL_INT,
66   NC_FILL_UINTNC_FILL_INT64NC_FILL_UINT64};
67      long long data_in;
68      int t;
69
70      /* Create file with a scalar vars. */
71      if (nc_create(FILE_NAMENC_NETCDF4, &ncid)) ERR;
72      for (t = 0; t < NUM_TYPES_TO_CHECKt++)
73      {
74  if (nc_def_var(ncidvar_name[t], check_type[t], 0, 0, &varid[t])) ERR;
75  if (nc_def_var_endian(ncidvarid[t], NC_ENDIAN_BIG)) ERR;
76      }
77      if (nc_close(ncid)) ERR;
78
79      /* Check it out. */
80      if (nc_open(FILE_NAMENC_NOWRITE, &ncid)) ERR;
81      for (t = 0; t < NUM_TYPES_TO_CHECKt++)
82      {
83  int err = nc_get_var_longlong(ncidvarid[t], &data_in);
84  if(err && err != NC_ERANGE)
85    ERR;
86  if (data_in != fill_value[t])
87    ERR;
88      }
89      if (nc_close(ncid)) ERR;
90   }
91   SUMMARIZE_ERR;
92   FINAL_RESULTS;
93
94   return 0;
95}


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