1/* This is part of the netCDF package.
2   Copyright 2005 University Corporation for Atmospheric Research/Unidata
3   See COPYRIGHT file for conditions of use.
4
5   Test HDF5 file code. These are not intended to be exhaustive tests,
6   but they use HDF5 the same way that netCDF-4 does, so if these
7   tests don't work, than netCDF-4 won't work either.
8
9   $Id: tst_h_dimscales1.c,v 1.2 2010/06/01 15:34:51 ed Exp $
10*/
11#include "h5_err_macros.h"
12#include <hdf5.h>
13#include <H5DSpublic.h>
14
15#define FILE_NAME "tst_h_dimscales.h5"
16int
17main()
18{
19   printf("\n*** Checking HDF5 dimension scales.\n");
20#define GRP_NAME "simple_scales"
21#define DIMSCALE_NAME "dimscale"
22#define NAME_ATTRIBUTE "Billy-Bob"
23#define VAR1_NAME "var1"
24#define VAR2_NAME "var2"
25#define VAR3_NAME "var3"
26#define DIM1_LEN 3
27#define DIM2_LEN 2
28#define FIFTIES_SONG "Mamma said they'll be days like this. They'll be days like this, my mamma said."
29
30   printf("*** Creating simple dimension scales file, with scale detach...");
31   {
32      hid_t fileidgrpiddimscaleid;
33      hid_t dimscale_spaceidvar1_spaceidvar3_spaceid;
34      hid_t var1_datasetidvar2_datasetidvar3_datasetid;
35      hsize_t dims[2] = {DIM1_LENDIM2_LEN};
36      hsize_t dimscale_dims[1] = {DIM1_LEN};
37
38      /* Open file and create group. */
39      if ((fileid = H5Fcreate(FILE_NAMEH5F_ACC_TRUNCH5P_DEFAULT,
40       H5P_DEFAULT)) < 0) ERR;
41      if ((grpid = H5Gcreate(fileidGRP_NAME, 0)) < 0) ERR;
42
43      /* Create our dimension scale. Use the built-in NAME attribute
44       * on the dimscale. */
45      if ((dimscale_spaceid = H5Screate_simple(1, dimscale_dims,
46        dimscale_dims)) < 0) ERR;
47      if ((dimscaleid = H5Dcreate(grpidDIMSCALE_NAMEH5T_NATIVE_INT,
48   dimscale_spaceidH5P_DEFAULT)) < 0) ERR;
49      if (H5DSset_scale(dimscaleidNAME_ATTRIBUTE) < 0) ERR;
50
51      /* Create a 1D variable which uses the dimscale. Attach a label
52       * to this scale. */
53      if ((var1_spaceid = H5Screate_simple(1, dimsdims)) < 0) ERR;
54      if ((var1_datasetid = H5Dcreate(grpidVAR1_NAMEH5T_NATIVE_INT,
55       var1_spaceidH5P_DEFAULT)) < 0) ERR;
56      if (H5DSattach_scale(var1_datasetiddimscaleid, 0) < 0) ERR;
57      if (H5DSset_label(var1_datasetid, 0, FIFTIES_SONG) < 0) ERR;
58
59      /* Create a 1D variabls that doesn't use the dimension scale. */
60      if ((var2_datasetid = H5Dcreate(grpidVAR2_NAMEH5T_NATIVE_INT,
61       var1_spaceidH5P_DEFAULT)) < 0) ERR;
62
63      /* Create a 2D dataset which uses the scale for one of its
64       * dimensions. */
65      if ((var3_spaceid = H5Screate_simple(2, dimsdims)) < 0) ERR;
66      if ((var3_datasetid = H5Dcreate(grpidVAR3_NAMEH5T_NATIVE_INT,
67       var3_spaceidH5P_DEFAULT)) < 0) ERR;
68      if (H5DSattach_scale(var3_datasetiddimscaleid, 0) < 0) ERR;
69
70      /* Detach the scale. */
71      if (H5DSdetach_scale(var3_datasetiddimscaleid, 0) < 0) ERR;
72
73      /* Close up the shop. */
74      if (H5Dclose(dimscaleid) < 0 ||
75   H5Dclose(var1_datasetid) < 0 ||
76   H5Dclose(var2_datasetid) < 0 ||
77   H5Dclose(var3_datasetid) < 0 ||
78   H5Sclose(var1_spaceid) < 0 ||
79   H5Sclose(var3_spaceid) < 0 ||
80   H5Sclose(dimscale_spaceid) < 0 ||
81   H5Gclose(grpid) < 0 ||
82   H5Fclose(fileid) < 0) ERR;
83   }
84   SUMMARIZE_ERR;
85   FINAL_RESULTS;
86}
87


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