summaryrefslogtreecommitdiffstats
path: root/test/API/th5s.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/API/th5s.c')
-rw-r--r--test/API/th5s.c236
1 files changed, 123 insertions, 113 deletions
diff --git a/test/API/th5s.c b/test/API/th5s.c
index cb1c899..f09cfeb 100644
--- a/test/API/th5s.c
+++ b/test/API/th5s.c
@@ -115,13 +115,11 @@ struct space4_struct {
static void
test_h5s_basic(void)
{
- hid_t fid1; /* HDF5 File IDs */
- hid_t sid1, sid2; /* Dataspace ID */
- hid_t dset1; /* Dataset ID */
-#ifndef NO_VALIDATE_DATASPACE
- hid_t aid1; /* Attribute ID */
-#endif
- int rank; /* Logical rank of dataspace */
+ hid_t fid1; /* HDF5 File IDs */
+ hid_t sid1, sid2; /* Dataspace ID */
+ hid_t dset1; /* Dataset ID */
+ hid_t aid1; /* Attribute ID */
+ int rank; /* Logical rank of dataspace */
hsize_t dims1[] = {SPACE1_DIM1, SPACE1_DIM2, SPACE1_DIM3};
hsize_t dims2[] = {SPACE2_DIM1, SPACE2_DIM2, SPACE2_DIM3, SPACE2_DIM4};
hsize_t dims3[H5S_MAX_RANK + 1];
@@ -254,15 +252,18 @@ test_h5s_basic(void)
CHECK(sid1, FAIL, "H5Screate");
sid2 = H5Screate_simple(1, dims1, dims1);
CHECK(sid2, FAIL, "H5Screate");
-#ifndef NO_VALIDATE_DATASPACE
- /* This dataset's space has no extent; it should not be created */
- H5E_BEGIN_TRY
- {
- dset1 = H5Dcreate2(fid1, BASICDATASET, H5T_NATIVE_INT, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+
+ if (vol_cap_flags_g & H5VL_CAP_FLAG_DATASET_BASIC) {
+ /* This dataset's space has no extent; it should not be created */
+ H5E_BEGIN_TRY
+ {
+ dset1 =
+ H5Dcreate2(fid1, BASICDATASET, H5T_NATIVE_INT, sid1, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
+ }
+ H5E_END_TRY
+ VERIFY(dset1, FAIL, "H5Dcreate2");
}
- H5E_END_TRY
- VERIFY(dset1, FAIL, "H5Dcreate2");
-#endif
+
dset1 = H5Dcreate2(fid1, BASICDATASET2, H5T_NATIVE_INT, sid2, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
CHECK(dset1, FAIL, "H5Dcreate2");
@@ -273,21 +274,23 @@ test_h5s_basic(void)
}
H5E_END_TRY
VERIFY(ret, FAIL, "H5Dwrite");
-#ifndef NO_VALIDATE_DATASPACE
- H5E_BEGIN_TRY
- {
- ret = H5Dwrite(dset1, H5T_NATIVE_INT, H5S_ALL, sid1, H5P_DEFAULT, &n);
- }
- H5E_END_TRY
- VERIFY(ret, FAIL, "H5Dwrite");
- H5E_BEGIN_TRY
- {
- ret = H5Dwrite(dset1, H5T_NATIVE_INT, sid1, sid1, H5P_DEFAULT, &n);
+ if (vol_cap_flags_g & H5VL_CAP_FLAG_DATASET_BASIC) {
+ H5E_BEGIN_TRY
+ {
+ ret = H5Dwrite(dset1, H5T_NATIVE_INT, H5S_ALL, sid1, H5P_DEFAULT, &n);
+ }
+ H5E_END_TRY
+ VERIFY(ret, FAIL, "H5Dwrite");
+
+ H5E_BEGIN_TRY
+ {
+ ret = H5Dwrite(dset1, H5T_NATIVE_INT, sid1, sid1, H5P_DEFAULT, &n);
+ }
+ H5E_END_TRY
+ VERIFY(ret, FAIL, "H5Dwrite");
}
- H5E_END_TRY
- VERIFY(ret, FAIL, "H5Dwrite");
-#endif
+
/* Try to iterate using the bad dataspace */
H5E_BEGIN_TRY
{
@@ -303,15 +306,17 @@ test_h5s_basic(void)
}
H5E_END_TRY
VERIFY(ret, FAIL, "H5Dfill");
-#ifndef NO_VALIDATE_DATASPACE
- /* Now use the bad dataspace as the space for an attribute */
- H5E_BEGIN_TRY
- {
- aid1 = H5Acreate2(dset1, BASICATTR, H5T_NATIVE_INT, sid1, H5P_DEFAULT, H5P_DEFAULT);
+
+ if ((vol_cap_flags_g & H5VL_CAP_FLAG_DATASET_BASIC) && (vol_cap_flags_g & H5VL_CAP_FLAG_ATTR_BASIC)) {
+ /* Now use the bad dataspace as the space for an attribute */
+ H5E_BEGIN_TRY
+ {
+ aid1 = H5Acreate2(dset1, BASICATTR, H5T_NATIVE_INT, sid1, H5P_DEFAULT, H5P_DEFAULT);
+ }
+ H5E_END_TRY
+ VERIFY(aid1, FAIL, "H5Acreate2");
}
- H5E_END_TRY
- VERIFY(aid1, FAIL, "H5Acreate2");
-#endif
+
/* Make sure that dataspace reads using the bad dataspace fail */
H5E_BEGIN_TRY
{
@@ -319,21 +324,23 @@ test_h5s_basic(void)
}
H5E_END_TRY
VERIFY(ret, FAIL, "H5Dread");
-#ifndef NO_VALIDATE_DATASPACE
- H5E_BEGIN_TRY
- {
- ret = H5Dread(dset1, H5T_NATIVE_INT, H5S_ALL, sid1, H5P_DEFAULT, &n);
- }
- H5E_END_TRY
- VERIFY(ret, FAIL, "H5Dread");
- H5E_BEGIN_TRY
- {
- ret = H5Dread(dset1, H5T_NATIVE_INT, sid1, sid1, H5P_DEFAULT, &n);
+ if (vol_cap_flags_g & H5VL_CAP_FLAG_DATASET_BASIC) {
+ H5E_BEGIN_TRY
+ {
+ ret = H5Dread(dset1, H5T_NATIVE_INT, H5S_ALL, sid1, H5P_DEFAULT, &n);
+ }
+ H5E_END_TRY
+ VERIFY(ret, FAIL, "H5Dread");
+
+ H5E_BEGIN_TRY
+ {
+ ret = H5Dread(dset1, H5T_NATIVE_INT, sid1, sid1, H5P_DEFAULT, &n);
+ }
+ H5E_END_TRY
+ VERIFY(ret, FAIL, "H5Dread");
}
- H5E_END_TRY
- VERIFY(ret, FAIL, "H5Dread");
-#endif
+
/* Clean up */
ret = H5Dclose(dset1);
CHECK(ret, FAIL, "H5Dclose");
@@ -577,35 +584,33 @@ test_h5s_null(void)
static void
test_h5s_zero_dim(void)
{
- hid_t fid1; /* HDF5 File IDs */
- hid_t sid1, attr_sid; /* Dataspace ID */
- hid_t sid_chunk; /* Dataspace ID for chunked dataset */
- hid_t dset1; /* Dataset ID */
- hid_t plist_id; /* Dataset creation property list */
- hid_t attr; /* Attribute ID */
- int rank; /* Logical rank of dataspace */
- hsize_t dims1[] = {0, SPACE1_DIM2, SPACE1_DIM3};
- hsize_t max_dims[] = {SPACE1_DIM1 + 1, SPACE1_DIM2, SPACE1_DIM3};
- hsize_t extend_dims[] = {SPACE1_DIM1, SPACE1_DIM2, SPACE1_DIM3};
- hsize_t chunk_dims[] = {SPACE1_DIM1, SPACE1_DIM2 / 3, SPACE1_DIM3};
- hsize_t tdims[SPACE1_RANK]; /* Dimension array to test with */
- int wdata[SPACE1_DIM2][SPACE1_DIM3];
- int rdata[SPACE1_DIM2][SPACE1_DIM3];
- short wdata_short[SPACE1_DIM2][SPACE1_DIM3];
- short rdata_short[SPACE1_DIM2][SPACE1_DIM3];
- int wdata_real[SPACE1_DIM1][SPACE1_DIM2][SPACE1_DIM3];
- int rdata_real[SPACE1_DIM1][SPACE1_DIM2][SPACE1_DIM3];
-#ifndef NO_CHECK_SELECTION_BOUNDS
- int val = 3;
- hsize_t start[] = {0, 0, 0};
- hsize_t count[] = {3, 15, 13};
- hsize_t coord[1][3]; /* Coordinates for point selection */
-#endif
- hssize_t nelem; /* Number of elements */
- H5S_sel_type sel_type; /* Type of selection currently */
- H5S_class_t stype; /* dataspace type */
- H5D_alloc_time_t alloc_time; /* Space allocation time */
- herr_t ret; /* Generic return value */
+ hid_t fid1; /* HDF5 File IDs */
+ hid_t sid1, attr_sid; /* Dataspace ID */
+ hid_t sid_chunk; /* Dataspace ID for chunked dataset */
+ hid_t dset1; /* Dataset ID */
+ hid_t plist_id; /* Dataset creation property list */
+ hid_t attr; /* Attribute ID */
+ int rank; /* Logical rank of dataspace */
+ hsize_t dims1[] = {0, SPACE1_DIM2, SPACE1_DIM3};
+ hsize_t max_dims[] = {SPACE1_DIM1 + 1, SPACE1_DIM2, SPACE1_DIM3};
+ hsize_t extend_dims[] = {SPACE1_DIM1, SPACE1_DIM2, SPACE1_DIM3};
+ hsize_t chunk_dims[] = {SPACE1_DIM1, SPACE1_DIM2 / 3, SPACE1_DIM3};
+ hsize_t tdims[SPACE1_RANK]; /* Dimension array to test with */
+ int wdata[SPACE1_DIM2][SPACE1_DIM3];
+ int rdata[SPACE1_DIM2][SPACE1_DIM3];
+ short wdata_short[SPACE1_DIM2][SPACE1_DIM3];
+ short rdata_short[SPACE1_DIM2][SPACE1_DIM3];
+ int wdata_real[SPACE1_DIM1][SPACE1_DIM2][SPACE1_DIM3];
+ int rdata_real[SPACE1_DIM1][SPACE1_DIM2][SPACE1_DIM3];
+ int val = 3;
+ hsize_t start[] = {0, 0, 0};
+ hsize_t count[] = {3, 15, 13};
+ hsize_t coord[1][3]; /* Coordinates for point selection */
+ hssize_t nelem; /* Number of elements */
+ H5S_sel_type sel_type; /* Type of selection currently */
+ H5S_class_t stype; /* dataspace type */
+ H5D_alloc_time_t alloc_time; /* Space allocation time */
+ herr_t ret; /* Generic return value */
unsigned int i, j, k;
/* Output message about test being performed */
@@ -743,38 +748,42 @@ test_h5s_zero_dim(void)
}
}
}
-#ifndef NO_CHECK_SELECTION_BOUNDS
- /* Select a hyperslab beyond its current dimension sizes, then try to write
- * the data. It should fail. */
- ret = H5Sselect_hyperslab(sid1, H5S_SELECT_SET, start, NULL, count, NULL);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
- H5E_BEGIN_TRY
- {
- ret = H5Dwrite(dset1, H5T_NATIVE_INT, H5S_ALL, sid1, H5P_DEFAULT, wdata);
+ if (vol_cap_flags_g & H5VL_CAP_FLAG_DATASET_BASIC) {
+ /* Select a hyperslab beyond its current dimension sizes, then try to write
+ * the data. It should fail. */
+ ret = H5Sselect_hyperslab(sid1, H5S_SELECT_SET, start, NULL, count, NULL);
+ CHECK(ret, FAIL, "H5Sselect_hyperslab");
+
+ H5E_BEGIN_TRY
+ {
+ ret = H5Dwrite(dset1, H5T_NATIVE_INT, H5S_ALL, sid1, H5P_DEFAULT, wdata);
+ }
+ H5E_END_TRY;
+ VERIFY(ret, FAIL, "H5Dwrite");
}
- H5E_END_TRY;
- VERIFY(ret, FAIL, "H5Dwrite");
-#endif
+
/* Change to "none" selection */
ret = H5Sselect_none(sid1);
CHECK(ret, FAIL, "H5Sselect_none");
-#ifndef NO_CHECK_SELECTION_BOUNDS
- /* Select a point beyond the dimension size, then try to write the data.
- * It should fail. */
- coord[0][0] = 2;
- coord[0][1] = 5;
- coord[0][2] = 3;
- ret = H5Sselect_elements(sid1, H5S_SELECT_SET, (size_t)1, (const hsize_t *)coord);
- CHECK(ret, FAIL, "H5Sselect_elements");
- H5E_BEGIN_TRY
- {
- ret = H5Dwrite(dset1, H5T_NATIVE_INT, H5S_ALL, sid1, H5P_DEFAULT, &val);
+ if (vol_cap_flags_g & H5VL_CAP_FLAG_DATASET_BASIC) {
+ /* Select a point beyond the dimension size, then try to write the data.
+ * It should fail. */
+ coord[0][0] = 2;
+ coord[0][1] = 5;
+ coord[0][2] = 3;
+ ret = H5Sselect_elements(sid1, H5S_SELECT_SET, (size_t)1, (const hsize_t *)coord);
+ CHECK(ret, FAIL, "H5Sselect_elements");
+
+ H5E_BEGIN_TRY
+ {
+ ret = H5Dwrite(dset1, H5T_NATIVE_INT, H5S_ALL, sid1, H5P_DEFAULT, &val);
+ }
+ H5E_END_TRY;
+ VERIFY(ret, FAIL, "H5Dwrite");
}
- H5E_END_TRY;
- VERIFY(ret, FAIL, "H5Dwrite");
-#endif
+
/* Restore the selection to all */
ret = H5Sselect_all(sid1);
CHECK(ret, FAIL, "H5Sselect_all");
@@ -864,17 +873,18 @@ test_h5s_zero_dim(void)
HDprintf("element [%d][%d] is %d but should have been 7\n", i, j, rdata[i][j]);
}
}
-#ifndef NO_CHECK_SELECTION_BOUNDS
- /* Now extend the first dimension size of the dataset to SPACE1_DIM1*3 past the maximal size.
- * It is supposed to fail. */
- extend_dims[0] = SPACE1_DIM1 * 3;
- H5E_BEGIN_TRY
- {
- ret = H5Dset_extent(dset1, extend_dims);
+ if ((vol_cap_flags_g & H5VL_CAP_FLAG_DATASET_BASIC) &&
+ (vol_cap_flags_g & H5VL_CAP_FLAG_DATASET_MORE)) {
+ /* Now extend the first dimension size of the dataset to SPACE1_DIM1*3 past the maximal size.
+ * It is supposed to fail. */
+ extend_dims[0] = SPACE1_DIM1 * 3;
+ H5E_BEGIN_TRY
+ {
+ ret = H5Dset_extent(dset1, extend_dims);
+ }
+ H5E_END_TRY;
+ VERIFY(ret, FAIL, "H5Dset_extent");
}
- H5E_END_TRY;
- VERIFY(ret, FAIL, "H5Dset_extent");
-#endif
ret = H5Pclose(plist_id);
CHECK(ret, FAIL, "H5Pclose");