summaryrefslogtreecommitdiffstats
path: root/test/tselect.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2014-11-03 20:13:25 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2014-11-03 20:13:25 (GMT)
commit89e2c8822ddacd982bd326be153e30fc5cbc3d3a (patch)
treecc0adbefb22b72392b505283eda0ebb1456bf5a4 /test/tselect.c
parent2fcec016a8c827cae8bb0f0caa7c74b4dc005285 (diff)
downloadhdf5-89e2c8822ddacd982bd326be153e30fc5cbc3d3a.zip
hdf5-89e2c8822ddacd982bd326be153e30fc5cbc3d3a.tar.gz
hdf5-89e2c8822ddacd982bd326be153e30fc5cbc3d3a.tar.bz2
[svn-r25766] Description:
Revert r25273, 25283 & 25439 (the hyperslab improvement changes). They are buggy and it's taking me a long time to correct the problem. I'll check in a revised form of the changes when I've got them straightened out. Tested on: Mac OSX 10.10.0 (amazon) w/gcc 4.9.x, C++, FORTRAN Linux 2.6.x (jam) w/parallel
Diffstat (limited to 'test/tselect.c')
-rw-r--r--test/tselect.c1827
1 files changed, 301 insertions, 1526 deletions
diff --git a/test/tselect.c b/test/tselect.c
index a945ca8..d5a1f4c 100644
--- a/test/tselect.c
+++ b/test/tselect.c
@@ -159,12 +159,6 @@
#define SPACERE5_DIM3 12
#define SPACERE5_DIM4 8
-/* Information for Space update diminfo test */
-#define SPACEUD1_DIM0 20
-#define SPACEUD3_DIM0 9
-#define SPACEUD3_DIM1 12
-#define SPACEUD3_DIM2 13
-
/* #defines for shape same / different rank tests */
#define SS_DR_MAX_RANK 5
@@ -1646,8 +1640,8 @@ verify_select_hyper_contig_dr__run_test(const uint16_t *cube_buf,
/* Advance to next element */
cube_ptr++;
expected_value++;
- s++;
- m++;
+ s++;
+ m++;
} while((cube_rank > 0) && (m < edge_size));
l++;
} while((cube_rank > 1) && (l < edge_size));
@@ -1664,10 +1658,10 @@ verify_select_hyper_contig_dr__run_test(const uint16_t *cube_buf,
/****************************************************************
**
-** test_select_hyper_contig_dr__run_test(): Test H5S (dataspace)
-** selection code with contiguous source and target having
+** test_select_hyper_contig_dr__run_test(): Test H5S (dataspace)
+** selection code with contiguous source and target having
** different ranks but the same shape. We have already
-** tested H5S_shape_same in isolation, so now we try to do
+** tested H5S_shape_same in isolation, so now we try to do
** I/O.
**
****************************************************************/
@@ -1771,13 +1765,13 @@ test_select_hyper_contig_dr__run_test(int test_num, const uint16_t *cube_buf,
CHECK(file_large_cube_sid, FAIL, "H5Screate_simple");
/* if chunk edge size is greater than zero, set up the small and
- * large data set creation property lists to specify chunked
+ * large data set creation property lists to specify chunked
* datasets.
*/
if(chunk_edge_size > 0) {
hsize_t chunk_dims[SS_DR_MAX_RANK]; /* Chunk dimensions */
- chunk_dims[0] = chunk_dims[1] =
+ chunk_dims[0] = chunk_dims[1] =
chunk_dims[2] = chunk_dims[3] = chunk_dims[4] = (hsize_t)chunk_edge_size;
small_cube_dcpl_id = H5Pcreate(H5P_DATASET_CREATE);
@@ -1801,7 +1795,7 @@ test_select_hyper_contig_dr__run_test(int test_num, const uint16_t *cube_buf,
} /* end if */
/* create the small cube dataset */
- small_cube_dataset = H5Dcreate2(fid1, "small_cube_dataset", dset_type,
+ small_cube_dataset = H5Dcreate2(fid1, "small_cube_dataset", dset_type,
small_cube_sid, H5P_DEFAULT, small_cube_dcpl_id, H5P_DEFAULT);
CHECK(small_cube_dataset, FAIL, "H5Dcreate2");
@@ -1812,7 +1806,7 @@ test_select_hyper_contig_dr__run_test(int test_num, const uint16_t *cube_buf,
} /* end if */
/* create the large cube dataset */
- large_cube_dataset = H5Dcreate2(fid1, "large_cube_dataset", dset_type,
+ large_cube_dataset = H5Dcreate2(fid1, "large_cube_dataset", dset_type,
file_large_cube_sid, H5P_DEFAULT, large_cube_dcpl_id, H5P_DEFAULT);
CHECK(large_cube_dataset, FAIL, "H5Dcreate2");
@@ -1824,16 +1818,16 @@ test_select_hyper_contig_dr__run_test(int test_num, const uint16_t *cube_buf,
/* write initial data to the on disk datasets */
- ret = H5Dwrite(small_cube_dataset, H5T_NATIVE_UINT16, small_cube_sid,
+ ret = H5Dwrite(small_cube_dataset, H5T_NATIVE_UINT16, small_cube_sid,
small_cube_sid, xfer_plist, cube_buf);
CHECK(ret, FAIL, "H5Dwrite");
- ret = H5Dwrite(large_cube_dataset, H5T_NATIVE_UINT16, mem_large_cube_sid,
+ ret = H5Dwrite(large_cube_dataset, H5T_NATIVE_UINT16, mem_large_cube_sid,
file_large_cube_sid, xfer_plist, cube_buf);
CHECK(ret, FAIL, "H5Dwrite");
/* read initial data from disk and verify that it is as expected. */
- ret = H5Dread(small_cube_dataset, H5T_NATIVE_UINT16, small_cube_sid,
+ ret = H5Dread(small_cube_dataset, H5T_NATIVE_UINT16, small_cube_sid,
small_cube_sid, xfer_plist, small_cube_buf_1);
CHECK(ret, FAIL, "H5Dread");
@@ -1841,7 +1835,7 @@ test_select_hyper_contig_dr__run_test(int test_num, const uint16_t *cube_buf,
verify_select_hyper_contig_dr__run_test(small_cube_buf_1, small_cube_size,
edge_size, small_rank);
- ret = H5Dread(large_cube_dataset, H5T_NATIVE_UINT16, mem_large_cube_sid,
+ ret = H5Dread(large_cube_dataset, H5T_NATIVE_UINT16, mem_large_cube_sid,
file_large_cube_sid, xfer_plist, large_cube_buf_1);
CHECK(ret, FAIL, "H5Dread");
@@ -1854,12 +1848,12 @@ test_select_hyper_contig_dr__run_test(int test_num, const uint16_t *cube_buf,
* of different rank that H5S_select_shape_same() views as being of the
* same shape.
*
- * Start by reading small_rank-D slice from the on disk large cube, and
- * verifying that the data read is correct. Verify that H5S_select_shape_same()
+ * Start by reading small_rank-D slice from the on disk large cube, and
+ * verifying that the data read is correct. Verify that H5S_select_shape_same()
* returns true on the memory and file selections.
*/
-
+
/* set up start, stride, count, and block -- note that we will
* change start[] so as to read slices of the large cube.
*/
@@ -1891,18 +1885,18 @@ test_select_hyper_contig_dr__run_test(int test_num, const uint16_t *cube_buf,
start[3] = (hsize_t)x;
start[4] = (hsize_t)0;
- ret = H5Sselect_hyperslab(file_large_cube_sid,
+ ret = H5Sselect_hyperslab(file_large_cube_sid,
H5S_SELECT_SET,
- start_ptr,
- stride_ptr,
- count_ptr,
+ start_ptr,
+ stride_ptr,
+ count_ptr,
block_ptr);
CHECK(ret, FAIL, "H5Sselect_hyperslab");
- /* verify that H5S_select_shape_same() reports the two
+ /* verify that H5S_select_shape_same() reports the two
* selections as having the same shape.
*/
- check = H5S_select_shape_same_test(small_cube_sid,
+ check = H5S_select_shape_same_test(small_cube_sid,
file_large_cube_sid);
VERIFY(check, TRUE, "H5S_select_shape_same_test");
@@ -1939,7 +1933,7 @@ test_select_hyper_contig_dr__run_test(int test_num, const uint16_t *cube_buf,
} while((large_rank >= 4) && (small_rank <= 3) && (v < edge_size));
u++;
} while((large_rank >= 5) && (small_rank <= 4) && (u < edge_size));
-
+
/* similarly, read the on disk small cube into slices through the in memory
* large cube, and verify that the correct data (and only the correct data)
@@ -1967,19 +1961,19 @@ test_select_hyper_contig_dr__run_test(int test_num, const uint16_t *cube_buf,
start[3] = (hsize_t)x;
start[4] = (hsize_t)0;
- ret = H5Sselect_hyperslab(mem_large_cube_sid,
+ ret = H5Sselect_hyperslab(mem_large_cube_sid,
H5S_SELECT_SET,
- start_ptr,
- stride_ptr,
- count_ptr,
+ start_ptr,
+ stride_ptr,
+ count_ptr,
block_ptr);
CHECK(ret, FAIL, "H5Sselect_hyperslab");
- /* verify that H5S_select_shape_same() reports the two
+ /* verify that H5S_select_shape_same() reports the two
* selections as having the same shape.
*/
- check = H5S_select_shape_same_test(small_cube_sid,
+ check = H5S_select_shape_same_test(small_cube_sid,
mem_large_cube_sid);
VERIFY(check, TRUE, "H5S_select_shape_same_test");
@@ -1994,7 +1988,7 @@ test_select_hyper_contig_dr__run_test(int test_num, const uint16_t *cube_buf,
CHECK(ret, FAIL, "H5Dread");
- /* verify that the expected data and only the
+ /* verify that the expected data and only the
* expected data was read.
*/
start_index = (u * edge_size * edge_size * edge_size * edge_size) +
@@ -2030,7 +2024,7 @@ test_select_hyper_contig_dr__run_test(int test_num, const uint16_t *cube_buf,
/* Zero out the buffer for the next pass */
HDmemset(large_cube_buf_1 + start_index, 0, small_cube_size * sizeof(uint16_t));
-
+
x++;
} while((large_rank >= 2) && (small_rank <= 1) && (x < edge_size));
w++;
@@ -2041,16 +2035,16 @@ test_select_hyper_contig_dr__run_test(int test_num, const uint16_t *cube_buf,
} while((large_rank >= 5) && (small_rank <= 4) && (u < edge_size));
- /* now we go in the opposite direction, verifying that we can write
- * from memory to file using selections of different rank that
+ /* now we go in the opposite direction, verifying that we can write
+ * from memory to file using selections of different rank that
* H5S_select_shape_same() views as being of the same shape.
*
- * Start by writing small_rank D slices from the in memory large cube, to
+ * Start by writing small_rank D slices from the in memory large cube, to
* the the on disk small cube dataset. After each write, read the small
* cube dataset back from disk, and verify that it contains the expected
- * data. Verify that H5S_select_shape_same() returns true on the
+ * data. Verify that H5S_select_shape_same() returns true on the
* memory and file selections.
- */
+ */
u = 0;
do {
@@ -2066,15 +2060,15 @@ test_select_hyper_contig_dr__run_test(int test_num, const uint16_t *cube_buf,
*/
/* zero out the on disk small cube */
- ret = H5Dwrite(small_cube_dataset,
- H5T_NATIVE_UINT16,
- small_cube_sid,
- small_cube_sid,
- xfer_plist,
+ ret = H5Dwrite(small_cube_dataset,
+ H5T_NATIVE_UINT16,
+ small_cube_sid,
+ small_cube_sid,
+ xfer_plist,
zero_buf);
CHECK(ret, FAIL, "H5Dwrite");
- /* select the portion of the in memory large cube from which we
+ /* select the portion of the in memory large cube from which we
* are going to write data.
*/
start[0] = (hsize_t)u;
@@ -2083,40 +2077,40 @@ test_select_hyper_contig_dr__run_test(int test_num, const uint16_t *cube_buf,
start[3] = (hsize_t)x;
start[4] = (hsize_t)0;
- ret = H5Sselect_hyperslab(mem_large_cube_sid,
+ ret = H5Sselect_hyperslab(mem_large_cube_sid,
H5S_SELECT_SET,
- start_ptr,
- stride_ptr,
- count_ptr,
+ start_ptr,
+ stride_ptr,
+ count_ptr,
block_ptr);
CHECK(ret, FAIL, "H5Sselect_hyperslab");
- /* verify that H5S_select_shape_same() reports the in
- * memory slice through the cube selection and the
+ /* verify that H5S_select_shape_same() reports the in
+ * memory slice through the cube selection and the
* on disk full small cube selections as having the same shape.
*/
- check = H5S_select_shape_same_test(small_cube_sid,
+ check = H5S_select_shape_same_test(small_cube_sid,
mem_large_cube_sid);
VERIFY(check, TRUE, "H5S_select_shape_same_test");
/* write the slice from the in memory large cube to the on disk small cube */
- ret = H5Dwrite(small_cube_dataset,
- H5T_NATIVE_UINT16,
- mem_large_cube_sid,
- small_cube_sid,
- xfer_plist,
+ ret = H5Dwrite(small_cube_dataset,
+ H5T_NATIVE_UINT16,
+ mem_large_cube_sid,
+ small_cube_sid,
+ xfer_plist,
cube_buf);
CHECK(ret, FAIL, "H5Dwrite");
/* read the on disk small cube into memory */
- ret = H5Dread(small_cube_dataset,
+ ret = H5Dread(small_cube_dataset,
H5T_NATIVE_UINT16,
small_cube_sid,
- small_cube_sid,
- xfer_plist,
+ small_cube_sid,
+ xfer_plist,
small_cube_buf_1);
CHECK(ret, FAIL, "H5Dread");
@@ -2136,7 +2130,7 @@ test_select_hyper_contig_dr__run_test(int test_num, const uint16_t *cube_buf,
} /* end for */
if(mis_match )
TestErrPrintf("small cube data don't match! Line=%d\n",__LINE__);
-
+
x++;
} while((large_rank >= 2) && (small_rank <= 1) && (x < edge_size));
w++;
@@ -2147,10 +2141,10 @@ test_select_hyper_contig_dr__run_test(int test_num, const uint16_t *cube_buf,
} while((large_rank >= 5) && (small_rank <= 4) && (u < edge_size));
- /* Now write the contents of the in memory small cube to slices of
+ /* Now write the contents of the in memory small cube to slices of
* the on disk cube. After each write, read the on disk cube
- * into memeory, and verify that it contains the expected
- * data. Verify that H5S_select_shape_same() returns true on
+ * into memeory, and verify that it contains the expected
+ * data. Verify that H5S_select_shape_same() returns true on
* the memory and file selections.
*/
@@ -2175,16 +2169,16 @@ test_select_hyper_contig_dr__run_test(int test_num, const uint16_t *cube_buf,
*/
/* zero out the on disk cube */
- ret = H5Dwrite(large_cube_dataset,
- H5T_NATIVE_USHORT,
- mem_large_cube_sid,
- file_large_cube_sid,
- xfer_plist,
+ ret = H5Dwrite(large_cube_dataset,
+ H5T_NATIVE_USHORT,
+ mem_large_cube_sid,
+ file_large_cube_sid,
+ xfer_plist,
zero_buf);
CHECK(ret, FAIL, "H5Dwrite");
- /* select the portion of the in memory large cube to which we
+ /* select the portion of the in memory large cube to which we
* are going to write data.
*/
start[0] = (hsize_t)u;
@@ -2193,31 +2187,31 @@ test_select_hyper_contig_dr__run_test(int test_num, const uint16_t *cube_buf,
start[3] = (hsize_t)x;
start[4] = (hsize_t)0;
- ret = H5Sselect_hyperslab(file_large_cube_sid,
+ ret = H5Sselect_hyperslab(file_large_cube_sid,
H5S_SELECT_SET,
- start_ptr,
- stride_ptr,
- count_ptr,
+ start_ptr,
+ stride_ptr,
+ count_ptr,
block_ptr);
CHECK(ret, FAIL, "H5Sselect_hyperslab");
- /* verify that H5S_select_shape_same() reports the in
- * memory full selection of the small cube and the
- * on disk slice through the large cube selection
+ /* verify that H5S_select_shape_same() reports the in
+ * memory full selection of the small cube and the
+ * on disk slice through the large cube selection
* as having the same shape.
*/
- check = H5S_select_shape_same_test(small_cube_sid,
+ check = H5S_select_shape_same_test(small_cube_sid,
file_large_cube_sid);
VERIFY(check, TRUE, "H5S_select_shape_same_test");
/* write the cube from memory to the target slice of the disk cube */
- ret = H5Dwrite(large_cube_dataset,
- H5T_NATIVE_UINT16,
- small_cube_sid,
- file_large_cube_sid,
- xfer_plist,
+ ret = H5Dwrite(large_cube_dataset,
+ H5T_NATIVE_UINT16,
+ small_cube_sid,
+ file_large_cube_sid,
+ xfer_plist,
cube_buf);
CHECK(ret, FAIL, "H5Dwrite");
@@ -2226,16 +2220,16 @@ test_select_hyper_contig_dr__run_test(int test_num, const uint16_t *cube_buf,
ret = H5Sselect_all(file_large_cube_sid);
CHECK(ret, FAIL, "H5Sselect_all");
- ret = H5Dread(large_cube_dataset,
+ ret = H5Dread(large_cube_dataset,
H5T_NATIVE_UINT16,
mem_large_cube_sid,
- file_large_cube_sid,
- xfer_plist,
+ file_large_cube_sid,
+ xfer_plist,
large_cube_buf_1);
CHECK(ret, FAIL, "H5Dread");
- /* verify that the expected data and only the
+ /* verify that the expected data and only the
* expected data was read.
*/
start_index = (u * edge_size * edge_size * edge_size * edge_size) +
@@ -2268,7 +2262,7 @@ test_select_hyper_contig_dr__run_test(int test_num, const uint16_t *cube_buf,
} /* end for */
if(mis_match)
TestErrPrintf("large cube written from small cube has bad data! Line=%d\n", __LINE__);
-
+
x++;
} while((large_rank >= 2) && (small_rank <= 1) && (x < edge_size));
w++;
@@ -2311,10 +2305,10 @@ test_select_hyper_contig_dr__run_test(int test_num, const uint16_t *cube_buf,
/****************************************************************
**
-** test_select_hyper_contig_dr(): Test H5S (dataspace)
-** selection code with contiguous source and target having
+** test_select_hyper_contig_dr(): Test H5S (dataspace)
+** selection code with contiguous source and target having
** different ranks but the same shape. We have already
-** tested H5S_shape_same in isolation, so now we try to do
+** tested H5S_shape_same in isolation, so now we try to do
** I/O.
**
****************************************************************/
@@ -2379,12 +2373,12 @@ test_select_hyper_contig_dr(hid_t dset_type, hid_t xfer_plist)
/****************************************************************
**
-** test_select_hyper_checker_board_dr__select_checker_board():
-** Given an n-cube data space with each edge of length
+** test_select_hyper_checker_board_dr__select_checker_board():
+** Given an n-cube data space with each edge of length
** edge_size, and a checker_edge_size either select a checker
** board selection of the entire cube(if sel_rank == n),
** or select a checker board selection of a
-** sel_rank dimensional slice through n-cube parallel to the
+** sel_rank dimensional slice through n-cube parallel to the
** sel_rank fastest changing indices, with origin (in the
** higher indices) as indicated by the start array.
**
@@ -2440,7 +2434,7 @@ test_select_hyper_checker_board_dr__select_checker_board(hid_t tgt_n_cube_sid,
offset_count++;
/* Now set up the stride and block arrays, and portions of the start
- * and count arrays that will not be altered during the selection of
+ * and count arrays that will not be altered during the selection of
* the checker board.
*/
u = 0;
@@ -2469,7 +2463,7 @@ test_select_hyper_checker_board_dr__select_checker_board(hid_t tgt_n_cube_sid,
u++;
} /* end while */
-
+
i = 0;
do {
if(0 >= sel_offset) {
@@ -2484,7 +2478,7 @@ test_select_hyper_checker_board_dr__select_checker_board(hid_t tgt_n_cube_sid,
} /* end if */
j = 0;
- do {
+ do {
if(1 >= sel_offset) {
if(j == 0 ) {
start[1] = 0;
@@ -2537,22 +2531,22 @@ test_select_hyper_checker_board_dr__select_checker_board(hid_t tgt_n_cube_sid,
if(((i + j + k + l + m) % 2) == 0) {
if(first_selection) {
- first_selection = FALSE;
+ first_selection = FALSE;
- ret = H5Sselect_hyperslab(tgt_n_cube_sid,
+ ret = H5Sselect_hyperslab(tgt_n_cube_sid,
H5S_SELECT_SET,
- &(start[n_cube_offset]),
- &(stride[n_cube_offset]),
- &(count[n_cube_offset]),
+ &(start[n_cube_offset]),
+ &(stride[n_cube_offset]),
+ &(count[n_cube_offset]),
&(block[n_cube_offset]));
CHECK(ret, FAIL, "H5Sselect_hyperslab");
} /* end if */
else {
- ret = H5Sselect_hyperslab(tgt_n_cube_sid,
+ ret = H5Sselect_hyperslab(tgt_n_cube_sid,
H5S_SELECT_OR,
- &(start[n_cube_offset]),
- &(stride[n_cube_offset]),
- &(count[n_cube_offset]),
+ &(start[n_cube_offset]),
+ &(stride[n_cube_offset]),
+ &(count[n_cube_offset]),
&(block[n_cube_offset]));
CHECK(ret, FAIL, "H5Sselect_hyperslab");
} /* end else */
@@ -2590,21 +2584,21 @@ test_select_hyper_checker_board_dr__select_checker_board(hid_t tgt_n_cube_sid,
/****************************************************************
**
-** test_select_hyper_checker_board_dr__verify_data():
+** test_select_hyper_checker_board_dr__verify_data():
**
-** Examine the supplied buffer to see if it contains the
-** expected data. Return TRUE if it does, and FALSE
+** Examine the supplied buffer to see if it contains the
+** expected data. Return TRUE if it does, and FALSE
** otherwise.
**
** The supplied buffer is presumed to contain the results
-** of read or writing a checkerboard selection of an
+** of read or writing a checkerboard selection of an
** n-cube, or a checkerboard selection of an m (1 <= m < n)
-** dimensional slice through an n-cube parallel to the
-** fastest changing indices.
+** dimensional slice through an n-cube parallel to the
+** fastest changing indices.
**
** It is further presumed that the buffer was zeroed before
-** the read, and that the n-cube was initialize with the
-** natural numbers listed in order from the origin along
+** the read, and that the n-cube was initialize with the
+** natural numbers listed in order from the origin along
** the fastest changing axis.
**
** Thus for a 10x10x10 3-cube, the value stored in location
@@ -2613,19 +2607,19 @@ test_select_hyper_checker_board_dr__select_checker_board(hid_t tgt_n_cube_sid,
**
** (10 * 10 * x) + (10 * y) + z
**
-** Thus, if the buffer contains the result of reading a
+** Thus, if the buffer contains the result of reading a
** checker board selection of a 10x10x10 3-cube, location
** (x, y, z) will contain zero if it is not in a checker,
** and 100x + 10y + z if (x, y, z) is in a checker.
**
-** If the buffer contains the result of reading a 3
+** If the buffer contains the result of reading a 3
** dimensional slice (parallel to the three fastest changing
-** indices) through an n cube (n > 3), then the expected
+** indices) through an n cube (n > 3), then the expected
** values in the buffer will be the same, save that we will
-** add a constant determined by the origin of the 3-cube
+** add a constant determined by the origin of the 3-cube
** in the n-cube.
**
-** Finally, the function presumes that the first element
+** Finally, the function presumes that the first element
** of the buffer resides either at the origin of either
** a selected or an unselected checker.
**
@@ -2685,7 +2679,7 @@ test_select_hyper_checker_board_dr__verify_data(uint16_t * buf_ptr,
l = 0;
y = 0;
start_in_checker[3] = start_in_checker[2];
- do {
+ do {
if(y >= checker_edge_size) {
start_in_checker[3] = ! start_in_checker[3];
y = 0;
@@ -2699,7 +2693,7 @@ test_select_hyper_checker_board_dr__verify_data(uint16_t * buf_ptr,
in_checker = ! in_checker;
z = 0;
} /* end if */
-
+
if(in_checker) {
if(*val_ptr != expected_value)
good_data = FALSE;
@@ -2708,10 +2702,10 @@ test_select_hyper_checker_board_dr__verify_data(uint16_t * buf_ptr,
if(*val_ptr != 0)
good_data = FALSE;
} /* end else */
-
+
val_ptr++;
expected_value++;
-
+
m++;
z++;
} while((rank >= (test_max_rank - 4)) && (m < edge_size));
@@ -2734,10 +2728,10 @@ test_select_hyper_checker_board_dr__verify_data(uint16_t * buf_ptr,
/****************************************************************
**
-** test_select_hyper_checker_board_dr__run_test(): Test H5S
-** (dataspace) selection code with checker board source and
-** target selections having different ranks but the same
-** shape. We have already tested H5S_shape_same in
+** test_select_hyper_checker_board_dr__run_test(): Test H5S
+** (dataspace) selection code with checker board source and
+** target selections having different ranks but the same
+** shape. We have already tested H5S_shape_same in
** isolation, so now we try to do I/O.
**
****************************************************************/
@@ -2862,11 +2856,11 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
/* if chunk edge size is greater than zero, set up the small and
- * large data set creation property lists to specify chunked
+ * large data set creation property lists to specify chunked
* datasets.
*/
if(chunk_edge_size > 0) {
- chunk_dims[0] = chunk_dims[1] =
+ chunk_dims[0] = chunk_dims[1] =
chunk_dims[2] = chunk_dims[3] = chunk_dims[4] = chunk_edge_size;
small_cube_dcpl_id = H5Pcreate(H5P_DATASET_CREATE);
@@ -2891,7 +2885,7 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
/* create the small cube dataset */
- small_cube_dataset = H5Dcreate2(fid, "small_cube_dataset", dset_type,
+ small_cube_dataset = H5Dcreate2(fid, "small_cube_dataset", dset_type,
file_small_cube_sid, H5P_DEFAULT, small_cube_dcpl_id, H5P_DEFAULT);
CHECK(small_cube_dataset, FAIL, "H5Dcreate2");
@@ -2902,7 +2896,7 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
} /* end if */
/* create the large cube dataset */
- large_cube_dataset = H5Dcreate2(fid, "large_cube_dataset", dset_type,
+ large_cube_dataset = H5Dcreate2(fid, "large_cube_dataset", dset_type,
file_large_cube_sid, H5P_DEFAULT, large_cube_dcpl_id, H5P_DEFAULT);
CHECK(large_cube_dataset, FAIL, "H5Dcreate2");
@@ -2914,17 +2908,17 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
/* write initial data to the on disk datasets */
- ret = H5Dwrite(small_cube_dataset, H5T_NATIVE_UINT16, full_small_cube_sid,
+ ret = H5Dwrite(small_cube_dataset, H5T_NATIVE_UINT16, full_small_cube_sid,
full_small_cube_sid, xfer_plist, cube_buf);
CHECK(ret, FAIL, "H5Dwrite");
- ret = H5Dwrite(large_cube_dataset, H5T_NATIVE_UINT16, full_large_cube_sid,
+ ret = H5Dwrite(large_cube_dataset, H5T_NATIVE_UINT16, full_large_cube_sid,
full_large_cube_sid, xfer_plist, cube_buf);
CHECK(ret, FAIL, "H5Dwrite");
/* read initial small cube data from disk and verify that it is as expected. */
- ret = H5Dread(small_cube_dataset, H5T_NATIVE_UINT16, full_small_cube_sid,
+ ret = H5Dread(small_cube_dataset, H5T_NATIVE_UINT16, full_small_cube_sid,
full_small_cube_sid, xfer_plist, small_cube_buf_1);
CHECK(ret, FAIL, "H5Dread");
@@ -2933,7 +2927,7 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
edge_size, small_rank);
/* read initial large cube data from disk and verify that it is as expected. */
- ret = H5Dread(large_cube_dataset, H5T_NATIVE_UINT16, full_large_cube_sid,
+ ret = H5Dread(large_cube_dataset, H5T_NATIVE_UINT16, full_large_cube_sid,
full_large_cube_sid, xfer_plist, large_cube_buf_1);
CHECK(ret, FAIL, "H5Dread");
@@ -2946,11 +2940,11 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
* of different rank that H5S_select_shape_same() views as being of the
* same shape.
*
- * Start by reading small_rank-D slice from the on disk large cube, and
- * verifying that the data read is correct. Verify that H5S_select_shape_same()
+ * Start by reading small_rank-D slice from the on disk large cube, and
+ * verifying that the data read is correct. Verify that H5S_select_shape_same()
* returns true on the memory and file selections.
*
- * The first step is to set up the needed checker board selection in the
+ * The first step is to set up the needed checker board selection in the
* in memory small small cube
*/
@@ -2963,8 +2957,8 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
small_rank,
sel_start);
- /* now read slices from the large, on-disk cube into the small cube.
- * Note how we adjust sel_start only in the dimensions peculiar to the
+ /* now read slices from the large, on-disk cube into the small cube.
+ * Note how we adjust sel_start only in the dimensions peculiar to the
* large cube.
*/
@@ -3009,10 +3003,10 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
sel_start
);
- /* verify that H5S_select_shape_same() reports the two
+ /* verify that H5S_select_shape_same() reports the two
* selections as having the same shape.
*/
- check = H5S_select_shape_same_test(mem_small_cube_sid,
+ check = H5S_select_shape_same_test(mem_small_cube_sid,
file_large_cube_sid);
VERIFY(check, TRUE, "H5S_select_shape_same_test");
@@ -3047,18 +3041,18 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
TestErrPrintf("small cube read from largecube has bad data! Line=%d\n",__LINE__);
x++;
- } while((large_rank >= (test_max_rank - 3)) &&
+ } while((large_rank >= (test_max_rank - 3)) &&
(small_rank <= (test_max_rank - 4)) && (x < edge_size));
w++;
- } while((large_rank >= (test_max_rank - 2)) &&
+ } while((large_rank >= (test_max_rank - 2)) &&
(small_rank <= (test_max_rank - 3)) && (w < edge_size));
v++;
- } while((large_rank >= (test_max_rank - 1)) &&
+ } while((large_rank >= (test_max_rank - 1)) &&
(small_rank <= (test_max_rank - 2)) && (v < edge_size));
u++;
- } while((large_rank >= test_max_rank) &&
+ } while((large_rank >= test_max_rank) &&
(small_rank <= (test_max_rank - 1)) && (u < edge_size));
-
+
/* similarly, read the on disk small cube into slices through the in memory
* large cube, and verify that the correct data (and only the correct data)
@@ -3116,10 +3110,10 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
sel_start
);
- /* verify that H5S_select_shape_same() reports the two
+ /* verify that H5S_select_shape_same() reports the two
* selections as having the same shape.
*/
- check = H5S_select_shape_same_test(file_small_cube_sid,
+ check = H5S_select_shape_same_test(file_small_cube_sid,
mem_large_cube_sid);
VERIFY(check, TRUE, "H5S_select_shape_same_test");
@@ -3137,7 +3131,7 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
CHECK(ret, FAIL, "H5Dread");
- /* verify that the expected data and only the
+ /* verify that the expected data and only the
* expected data was read.
*/
data_ok = TRUE;
@@ -3185,29 +3179,29 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
TestErrPrintf("large cube read from small cube has bad data! Line=%d\n",__LINE__);
x++;
- } while((large_rank >= (test_max_rank - 3)) &&
+ } while((large_rank >= (test_max_rank - 3)) &&
(small_rank <= (test_max_rank - 4)) && (x < edge_size));
w++;
- } while((large_rank >= (test_max_rank - 2)) &&
+ } while((large_rank >= (test_max_rank - 2)) &&
(small_rank <= (test_max_rank - 3)) && (w < edge_size));
v++;
- } while((large_rank >= (test_max_rank - 1)) &&
+ } while((large_rank >= (test_max_rank - 1)) &&
(small_rank <= (test_max_rank - 2)) && (v < edge_size));
u++;
- } while((large_rank >= test_max_rank) &&
+ } while((large_rank >= test_max_rank) &&
(small_rank <= (test_max_rank - 1)) && (u < edge_size));
- /* now we go in the opposite direction, verifying that we can write
- * from memory to file using selections of different rank that
+ /* now we go in the opposite direction, verifying that we can write
+ * from memory to file using selections of different rank that
* H5S_select_shape_same() views as being of the same shape.
*
- * Start by writing small_rank D slices from the in memory large cube, to
+ * Start by writing small_rank D slices from the in memory large cube, to
* the the on disk small cube dataset. After each write, read the small
* cube dataset back from disk, and verify that it contains the expected
- * data. Verify that H5S_select_shape_same() returns true on the
+ * data. Verify that H5S_select_shape_same() returns true on the
* memory and file selections.
- */
+ */
/* select a checker board in the file small cube dataspace */
sel_start[0] = sel_start[1] = sel_start[2] = sel_start[3] = sel_start[4] = 0;
@@ -3239,11 +3233,11 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
sel_start[3] = x;
/* zero out the on disk small cube */
- ret = H5Dwrite(small_cube_dataset,
- H5T_NATIVE_UINT16,
- full_small_cube_sid,
- full_small_cube_sid,
- xfer_plist,
+ ret = H5Dwrite(small_cube_dataset,
+ H5T_NATIVE_UINT16,
+ full_small_cube_sid,
+ full_small_cube_sid,
+ xfer_plist,
zero_buf);
CHECK(ret, FAIL, "H5Dwrite");
@@ -3269,22 +3263,22 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
sel_start
);
- /* verify that H5S_select_shape_same() reports the two
+ /* verify that H5S_select_shape_same() reports the two
* selections as having the same shape.
*/
- check = H5S_select_shape_same_test(file_small_cube_sid,
+ check = H5S_select_shape_same_test(file_small_cube_sid,
mem_large_cube_sid);
VERIFY(check, TRUE, "H5S_select_shape_same_test");
- /* write the slice from the in memory large cube to the
- * on disk small cube
+ /* write the slice from the in memory large cube to the
+ * on disk small cube
*/
- ret = H5Dwrite(small_cube_dataset,
- H5T_NATIVE_UINT16,
- mem_large_cube_sid,
- file_small_cube_sid,
- xfer_plist,
+ ret = H5Dwrite(small_cube_dataset,
+ H5T_NATIVE_UINT16,
+ mem_large_cube_sid,
+ file_small_cube_sid,
+ xfer_plist,
cube_buf);
CHECK(ret, FAIL, "H5Dwrite");
@@ -3293,11 +3287,11 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
HDmemset(small_cube_buf_1, 0, sizeof(*small_cube_buf_1) * small_cube_size);
/* read the on disk small cube into memory */
- ret = H5Dread(small_cube_dataset,
+ ret = H5Dread(small_cube_dataset,
H5T_NATIVE_UINT16,
full_small_cube_sid,
- full_small_cube_sid,
- xfer_plist,
+ full_small_cube_sid,
+ xfer_plist,
small_cube_buf_1);
CHECK(ret, FAIL, "H5Dread");
@@ -3320,24 +3314,24 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
TestErrPrintf("small cube read from largecube has bad data! Line=%d\n",__LINE__);
x++;
- } while((large_rank >= (test_max_rank - 3)) &&
+ } while((large_rank >= (test_max_rank - 3)) &&
(small_rank <= (test_max_rank - 4)) && (x < edge_size));
w++;
- } while((large_rank >= (test_max_rank - 2)) &&
+ } while((large_rank >= (test_max_rank - 2)) &&
(small_rank <= (test_max_rank - 3)) && (w < edge_size));
v++;
- } while((large_rank >= (test_max_rank - 1)) &&
+ } while((large_rank >= (test_max_rank - 1)) &&
(small_rank <= (test_max_rank - 2)) && (v < edge_size));
u++;
- } while((large_rank >= test_max_rank) &&
+ } while((large_rank >= test_max_rank) &&
(small_rank <= (test_max_rank - 1)) && (u < edge_size));
- /* Now write checker board selections of the entries in memory
- * small cube to slices of the on disk cube. After each write,
- * read the on disk large cube * into memeory, and verify that
- * it contains the expected * data. Verify that
- * H5S_select_shape_same() returns true on the memory and file
+ /* Now write checker board selections of the entries in memory
+ * small cube to slices of the on disk cube. After each write,
+ * read the on disk large cube * into memeory, and verify that
+ * it contains the expected * data. Verify that
+ * H5S_select_shape_same() returns true on the memory and file
* selections.
*/
@@ -3371,11 +3365,11 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
sel_start[3] = x;
/* zero out the on disk cube */
- ret = H5Dwrite(large_cube_dataset,
- H5T_NATIVE_USHORT,
- full_large_cube_sid,
- full_large_cube_sid,
- xfer_plist,
+ ret = H5Dwrite(large_cube_dataset,
+ H5T_NATIVE_USHORT,
+ full_large_cube_sid,
+ full_large_cube_sid,
+ xfer_plist,
zero_buf);
CHECK(ret, FAIL, "H5Dwrite");
@@ -3401,10 +3395,10 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
sel_start
);
- /* verify that H5S_select_shape_same() reports the two
+ /* verify that H5S_select_shape_same() reports the two
* selections as having the same shape.
*/
- check = H5S_select_shape_same_test(file_large_cube_sid,
+ check = H5S_select_shape_same_test(file_large_cube_sid,
mem_small_cube_sid);
VERIFY(check, TRUE, "H5S_select_shape_same_test");
@@ -3413,11 +3407,11 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
* small cube to a slice through the on disk large
* cube.
*/
- ret = H5Dwrite(large_cube_dataset,
- H5T_NATIVE_UINT16,
- mem_small_cube_sid,
- file_large_cube_sid,
- xfer_plist,
+ ret = H5Dwrite(large_cube_dataset,
+ H5T_NATIVE_UINT16,
+ mem_small_cube_sid,
+ file_large_cube_sid,
+ xfer_plist,
cube_buf);
CHECK(ret, FAIL, "H5Dwrite");
@@ -3426,16 +3420,16 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
HDmemset(large_cube_buf_1, 0, sizeof(*large_cube_buf_1) * large_cube_size);
/* read the on disk large cube into memory */
- ret = H5Dread(large_cube_dataset,
+ ret = H5Dread(large_cube_dataset,
H5T_NATIVE_UINT16,
full_large_cube_sid,
- full_large_cube_sid,
- xfer_plist,
+ full_large_cube_sid,
+ xfer_plist,
large_cube_buf_1);
CHECK(ret, FAIL, "H5Dread");
- /* verify that the expected data and only the
+ /* verify that the expected data and only the
* expected data was written to the on disk large
* cube.
*/
@@ -3485,18 +3479,18 @@ test_select_hyper_checker_board_dr__run_test(int test_num, const uint16_t *cube_
TestErrPrintf("large cube written from small cube has bad data! Line=%d\n",__LINE__);
x++;
- } while((large_rank >= (test_max_rank - 3)) &&
+ } while((large_rank >= (test_max_rank - 3)) &&
(small_rank <= (test_max_rank - 4)) && (x < edge_size));
w++;
- } while((large_rank >= (test_max_rank - 2)) &&
+ } while((large_rank >= (test_max_rank - 2)) &&
(small_rank <= (test_max_rank - 3)) && (w < edge_size));
v++;
- } while((large_rank >= (test_max_rank - 1)) &&
+ } while((large_rank >= (test_max_rank - 1)) &&
(small_rank <= (test_max_rank - 2)) && (v < edge_size));
u++;
- } while((large_rank >= test_max_rank) &&
+ } while((large_rank >= test_max_rank) &&
(small_rank <= (test_max_rank - 1)) && (u < edge_size));
-
+
/* Close memory dataspaces */
ret = H5Sclose(full_small_cube_sid);
@@ -4931,11 +4925,12 @@ test_select_hyper_union(void)
HDfree(rbuf);
} /* test_select_hyper_union() */
+#ifdef NEW_HYPERSLAB_API
/****************************************************************
**
** test_select_hyper_union_stagger(): Test basic H5S (dataspace) selection code.
** Tests unions of staggered hyperslabs. (Uses H5Scombine_hyperslab
-** and H5Smodify_select instead of H5Sselect_hyperslab)
+** and H5Sselect_select instead of H5Sselect_hyperslab)
**
****************************************************************/
static void
@@ -5039,8 +5034,8 @@ test_select_hyper_union_stagger(void)
CHECK(error, FAIL, "H5Sselect_hyperslab");
/* Combine the copied dataspace with the temporary dataspace */
- error=H5Smodify_select(tmp_space,H5S_SELECT_OR,tmp2_space);
- CHECK(error, FAIL, "H5Smodify_select");
+ error=H5Sselect_select(tmp_space,H5S_SELECT_OR,tmp2_space);
+ CHECK(error, FAIL, "H5Sselect_select");
/* Create Memory Dataspace */
memspace=H5Screate_simple(memrank,dimsm,NULL);
@@ -5287,109 +5282,7 @@ test_select_hyper_union_3d(void)
HDfree(wbuf);
HDfree(rbuf);
} /* test_select_hyper_union_3d() */
-
-/****************************************************************
-**
-** test_select_hyper_valid_combination(): Tests invalid and valid
-** combinations of selections on dataspace for H5Scombine_select
-** and H5Smodify_select.
-**
-****************************************************************/
-static void
-test_select_hyper_valid_combination(void)
-{
- hid_t single_pt_sid; /* Dataspace ID with single point selection */
- hid_t single_hyper_sid; /* Dataspace ID with single block hyperslab selection */
- hid_t regular_hyper_sid; /* Dataspace ID with regular hyperslab selection */
- hid_t non_existent_sid = -1; /* A non-existent space id */
- hid_t tmp_sid; /* Temporary dataspace ID */
- hsize_t dims2D[] = {SPACE9_DIM1, SPACE9_DIM2};
- hsize_t dims3D[] = {SPACE4_DIM1, SPACE4_DIM2, SPACE4_DIM3};
-
- hsize_t coord1[1][SPACE2_RANK]; /* Coordinates for single point selection */
- hsize_t start[SPACE4_RANK]; /* Hyperslab start */
- hsize_t stride[SPACE4_RANK]; /* Hyperslab stride */
- hsize_t count[SPACE4_RANK]; /* Hyperslab block count */
- hsize_t block[SPACE4_RANK]; /* Hyperslab block size */
- herr_t ret; /* Generic return value */
-
- /* Output message about test being performed */
- MESSAGE(6, ("Testing Selection Combination Validity\n"));
- assert(SPACE9_DIM2>=POINT1_NPOINTS);
-
- /* Create dataspace for single point selection */
- single_pt_sid = H5Screate_simple(SPACE9_RANK, dims2D, NULL);
- CHECK(single_pt_sid, FAIL, "H5Screate_simple");
-
- /* Select sequence of ten points for multiple point selection */
- coord1[0][0] = 2; coord1[0][1] = 2;
- ret = H5Sselect_elements(single_pt_sid, H5S_SELECT_SET, (size_t)1, (const hsize_t *)coord1);
- CHECK(ret, FAIL, "H5Sselect_elements");
-
- /* Create dataspace for single hyperslab selection */
- single_hyper_sid = H5Screate_simple(SPACE9_RANK, dims2D, NULL);
- CHECK(single_hyper_sid, FAIL, "H5Screate_simple");
-
- /* Select 10x10 hyperslab for single hyperslab selection */
- start[0]=1; start[1]=1;
- stride[0]=1; stride[1]=1;
- count[0]=1; count[1]=1;
- block[0]=(SPACE9_DIM1-2); block[1]=(SPACE9_DIM2-2);
- ret = H5Sselect_hyperslab(single_hyper_sid,H5S_SELECT_SET,start,stride,count,block);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* Create dataspace for regular hyperslab selection */
- regular_hyper_sid = H5Screate_simple(SPACE4_RANK, dims3D, NULL);
- CHECK(regular_hyper_sid, FAIL, "H5Screate_simple");
-
- /* Select regular, strided hyperslab selection */
- start[0]=2; start[1]=2; start[2]=2;
- stride[0]=2; stride[1]=2; stride[2]=2;
- count[0]=5; count[1]=2; count[2]=5;
- block[0]=1; block[1]=1; block[2]=1;
- ret = H5Sselect_hyperslab(regular_hyper_sid,H5S_SELECT_SET,start,stride,count,block);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
-
- /* Test all the selections created */
-
- /* Test the invalid combinations between point and hyperslab */
- tmp_sid = H5Scombine_select(single_pt_sid, H5S_SELECT_AND, single_hyper_sid);
- VERIFY(tmp_sid, FAIL, "H5Scombine_select");
-
- tmp_sid = H5Smodify_select(single_pt_sid, H5S_SELECT_AND, single_hyper_sid);
- VERIFY(tmp_sid, FAIL, "H5Smodify_select");
-
- /* Test the invalid combination between two hyperslab but of different dimension size */
- tmp_sid = H5Scombine_select(single_hyper_sid, H5S_SELECT_AND, regular_hyper_sid);
- VERIFY(tmp_sid, FAIL, "H5Scombine_select");
-
- tmp_sid = H5Smodify_select(single_hyper_sid, H5S_SELECT_AND, regular_hyper_sid);
- VERIFY(tmp_sid, FAIL, "H5Smodify_select");
-
- /* Test invalid operation inputs to the two functions */
- tmp_sid = H5Scombine_select(single_hyper_sid, H5S_SELECT_SET, single_hyper_sid);
- VERIFY(tmp_sid, FAIL, "H5Scombine_select");
-
- tmp_sid = H5Smodify_select(single_hyper_sid, H5S_SELECT_SET, single_hyper_sid);
- VERIFY(tmp_sid, FAIL, "H5Smodify_select");
-
- /* Test inputs in case of non-existent space ids */
- tmp_sid = H5Scombine_select(single_hyper_sid, H5S_SELECT_AND, non_existent_sid);
- VERIFY(tmp_sid, FAIL, "H5Scombine_select");
-
- tmp_sid = H5Smodify_select(single_hyper_sid, H5S_SELECT_AND, non_existent_sid);
- VERIFY(tmp_sid, FAIL, "H5Smodify_select");
-
- /* Close dataspaces */
- ret = H5Sclose(single_pt_sid);
- CHECK(ret, FAIL, "H5Sclose");
- ret = H5Sclose(single_hyper_sid);
- CHECK(ret, FAIL, "H5Sclose");
- ret = H5Sclose(regular_hyper_sid);
- CHECK(ret, FAIL, "H5Sclose");
-} /* test_select_hyper_valid_combination() */
-
+#endif /* NEW_HYPERSLAB_API */
/****************************************************************
**
@@ -12014,8 +11907,7 @@ test_space_rebuild(void)
hid_t sid_irreg1,sid_irreg2,sid_irreg3,sid_irreg4,sid_irreg5;
/* rebuild status state */
- H5S_diminfo_valid_t rebuild_stat1,rebuild_stat2;
- htri_t rebuild_check;
+ htri_t rebuild_stat,rebuild_check;
herr_t ret;
/* dimensions of rank 1 to rank 5 */
@@ -12084,23 +11976,19 @@ test_space_rebuild(void)
ret = H5Sselect_hyperslab(sid_reg1,H5S_SELECT_OR,start1,stride1,count1,block1);
CHECK(ret, FAIL, "H5Sselect_hyperslab");
- ret = H5S_get_rebuild_status_test(sid_reg1,&rebuild_stat1,&rebuild_stat2);
- CHECK(ret, FAIL, "H5S_get_rebuild_status_test");
- /* In this case, rebuild_stat1 and rebuild_stat2 should be
- * H5S_DIMINFO_VALID_YES. */
- if(rebuild_stat1 != H5S_DIMINFO_VALID_YES) {
+ rebuild_stat = FALSE;
+ rebuild_stat = H5S_get_rebuild_status_test(sid_reg1);
+ assert(rebuild_stat!=FAIL);
+ /* In this case, rebuild_stat should be TRUE. */
+ if(!rebuild_stat){
ret = FAIL;
CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- if(rebuild_stat2 != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- if(ret != FAIL) {
+ }
+ else {
/* In this case, rebuild_check should be TRUE. */
rebuild_check = H5S_select_shape_same_test(sid_reg1,sid_reg_ori1);
CHECK(rebuild_check,FALSE,"H5S_hyper_rebuild");
- } /* end if */
+ }
/* For irregular hyperslab */
sid_irreg1 = H5Screate_simple(SPACERE1_RANK,dims1,NULL);
@@ -12120,19 +12008,14 @@ test_space_rebuild(void)
ret = H5Sselect_hyperslab(sid_irreg1,H5S_SELECT_OR,start1,stride1,count1,block1);
CHECK(ret, FAIL, "H5Sselect_hyperslab");
- ret = H5S_get_rebuild_status_test(sid_irreg1,&rebuild_stat1,&rebuild_stat2);
- CHECK(ret, FAIL, "H5S_get_rebuild_status_test");
- /* In this case, rebuild_stat1 should be H5S_DIMINFO_VALID_NO and
- * rebuild_stat2 should be H5S_DIMINFO_VALID_IMPOSSIBLE. */
- if(rebuild_stat1 != H5S_DIMINFO_VALID_NO) {
- ret = FAIL;
- CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- if(rebuild_stat2 != H5S_DIMINFO_VALID_IMPOSSIBLE) {
+ rebuild_stat = TRUE;
+ rebuild_stat = H5S_get_rebuild_status_test(sid_irreg1);
+ assert(rebuild_stat!=FAIL);
+ /* In this case, rebuild_stat should be FALSE. */
+ if(rebuild_stat){
ret = FAIL;
CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- /* No need to do shape comparision */
+ }/* No need to do shape comparision */
MESSAGE(7, ("Testing functionality to rebuild 2-D hyperslab selection\n"));
@@ -12172,23 +12055,19 @@ test_space_rebuild(void)
ret = H5Sselect_hyperslab(sid_reg2,H5S_SELECT_OR,start2,stride2,count2,block2);
CHECK(ret, FAIL, "H5Sselect_hyperslab");
- ret = H5S_get_rebuild_status_test(sid_reg2,&rebuild_stat1,&rebuild_stat2);
- CHECK(ret, FAIL, "H5S_get_rebuild_status_test");
- /* In this case, rebuild_stat1 and rebuild_stat2 should be
- * H5S_DIMINFO_VALID_YES. */
- if(rebuild_stat1 != H5S_DIMINFO_VALID_YES) {
+ rebuild_stat = FALSE;
+ rebuild_stat = H5S_get_rebuild_status_test(sid_reg2);
+ assert(rebuild_stat!=FAIL);
+ /* In this case, rebuild_stat should be TRUE. */
+ if(!rebuild_stat){
ret = FAIL;
CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- if(rebuild_stat2 != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- if(ret != FAIL) {
+ }
+ else {
/* In this case, rebuild_check should be TRUE. */
rebuild_check = H5S_select_shape_same_test(sid_reg2,sid_reg_ori2);
CHECK(rebuild_check,FALSE,"H5S_hyper_rebuild");
- } /* end if */
+ }
/* 2-D irregular case */
sid_irreg2 = H5Screate_simple(SPACERE2_RANK,dims2,NULL);
@@ -12213,19 +12092,14 @@ test_space_rebuild(void)
ret = H5Sselect_hyperslab(sid_irreg2,H5S_SELECT_OR,start2,stride2,count2,block2);
CHECK(ret, FAIL, "H5Sselect_hyperslab");
- ret = H5S_get_rebuild_status_test(sid_irreg2,&rebuild_stat1,&rebuild_stat2);
- CHECK(ret, FAIL, "H5S_get_rebuild_status_test");
- /* In this case, rebuild_stat1 should be H5S_DIMINFO_VALID_NO and
- * rebuild_stat2 should be H5S_DIMINFO_VALID_IMPOSSIBLE. */
- if(rebuild_stat1 != H5S_DIMINFO_VALID_NO) {
- ret = FAIL;
- CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- if(rebuild_stat2 != H5S_DIMINFO_VALID_IMPOSSIBLE) {
+ rebuild_stat = TRUE;
+ rebuild_stat = H5S_get_rebuild_status_test(sid_irreg2);
+ assert(rebuild_stat!=FAIL);
+ /* In this case, rebuild_stat should be FALSE. */
+ if(rebuild_stat){
ret = FAIL;
CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- /* No need to do shape comparision */
+ }/* No need to do shape comparision */
MESSAGE(7, ("Testing functionality to rebuild 3-D hyperslab selection\n"));
@@ -12270,23 +12144,20 @@ test_space_rebuild(void)
ret = H5Sselect_hyperslab(sid_reg3,H5S_SELECT_OR,start3,stride3,count3,block3);
CHECK(ret, FAIL, "H5Sselect_hyperslab");
- ret = H5S_get_rebuild_status_test(sid_reg3,&rebuild_stat1,&rebuild_stat2);
- CHECK(ret, FAIL, "H5S_get_rebuild_status_test");
- /* In this case, rebuild_stat1 and rebuild_stat2 should be
- * H5S_DIMINFO_VALID_YES. */
- if(rebuild_stat1 != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- if(rebuild_stat2 != H5S_DIMINFO_VALID_YES) {
+ rebuild_stat = FALSE;
+ rebuild_stat = H5S_get_rebuild_status_test(sid_reg3);
+ assert(rebuild_stat!=FAIL);
+
+ /* In this case, rebuild_stat should be TRUE. */
+ if(!rebuild_stat){
ret = FAIL;
CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- if(ret != FAIL) {
+ }
+ else {
/* In this case, rebuild_check should be TRUE. */
rebuild_check = H5S_select_shape_same_test(sid_reg3,sid_reg_ori3);
CHECK(rebuild_check,FALSE,"H5S_hyper_rebuild");
- } /* end if */
+ }
sid_irreg3 = H5Screate_simple(SPACERE3_RANK,dims3,NULL);
@@ -12316,19 +12187,14 @@ test_space_rebuild(void)
ret = H5Sselect_hyperslab(sid_irreg3,H5S_SELECT_OR,start3,stride3,count3,block3);
CHECK(ret, FAIL, "H5Sselect_hyperslab");
- ret = H5S_get_rebuild_status_test(sid_irreg3,&rebuild_stat1,&rebuild_stat2);
- CHECK(ret, FAIL, "H5S_get_rebuild_status_test");
- /* In this case, rebuild_stat1 should be H5S_DIMINFO_VALID_NO and
- * rebuild_stat2 should be H5S_DIMINFO_VALID_IMPOSSIBLE. */
- if(rebuild_stat1 != H5S_DIMINFO_VALID_NO) {
+ rebuild_stat = TRUE;
+ rebuild_stat = H5S_get_rebuild_status_test(sid_irreg3);
+ assert(rebuild_stat!=FAIL);
+ /* In this case, rebuild_stat should be FALSE. */
+ if(rebuild_stat){
ret = FAIL;
CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- if(rebuild_stat2 != H5S_DIMINFO_VALID_IMPOSSIBLE) {
- ret = FAIL;
- CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- /* No need to do shape comparision */
+ }/* No need to do shape comparision */
MESSAGE(7, ("Testing functionality to rebuild 4-D hyperslab selection\n"));
@@ -12381,23 +12247,19 @@ test_space_rebuild(void)
CHECK(ret, FAIL, "H5Sselect_hyperslab");
- ret = H5S_get_rebuild_status_test(sid_reg4,&rebuild_stat1,&rebuild_stat2);
- CHECK(ret, FAIL, "H5S_get_rebuild_status_test");
- /* In this case, rebuild_stat1 and rebuild_stat2 should be
- * H5S_DIMINFO_VALID_YES. */
- if(rebuild_stat1 != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- if(rebuild_stat2 != H5S_DIMINFO_VALID_YES) {
+ rebuild_stat = FALSE;
+ rebuild_stat = H5S_get_rebuild_status_test(sid_reg4);
+ assert(rebuild_stat!=FAIL);
+ /* In this case, rebuild_stat should be TRUE. */
+ if(!rebuild_stat){
ret = FAIL;
CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- if(ret != FAIL) {
+ }
+ else {
/* In this case, rebuild_check should be TRUE. */
rebuild_check = H5S_select_shape_same_test(sid_reg4,sid_reg_ori4);
CHECK(rebuild_check,FALSE,"H5S_hyper_rebuild");
- } /* end if */
+ }
/* Testing irregular selection */
sid_irreg4 = H5Screate_simple(SPACERE4_RANK,dims4,NULL);
@@ -12438,19 +12300,14 @@ test_space_rebuild(void)
ret = H5Sselect_hyperslab(sid_irreg4,H5S_SELECT_OR,start4,stride4,count4,block4);
CHECK(ret, FAIL, "H5Sselect_hyperslab");
- ret = H5S_get_rebuild_status_test(sid_irreg4,&rebuild_stat1,&rebuild_stat2);
- CHECK(ret, FAIL, "H5S_get_rebuild_status_test");
- /* In this case, rebuild_stat1 should be H5S_DIMINFO_VALID_NO and
- * rebuild_stat2 should be H5S_DIMINFO_VALID_IMPOSSIBLE. */
- if(rebuild_stat1 != H5S_DIMINFO_VALID_NO) {
+ rebuild_stat = TRUE;
+ rebuild_stat = H5S_get_rebuild_status_test(sid_irreg4);
+ assert(rebuild_stat!=FAIL);
+ /* In this case, rebuild_stat should be FALSE. */
+ if(rebuild_stat){
ret = FAIL;
CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- if(rebuild_stat2 != H5S_DIMINFO_VALID_IMPOSSIBLE) {
- ret = FAIL;
- CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- /* No need to do shape comparision */
+ }/* No need to do shape comparision */
MESSAGE(7, ("Testing functionality to rebuild 5-D hyperslab selection\n"));
@@ -12487,7 +12344,7 @@ test_space_rebuild(void)
ret = H5Sselect_hyperslab(sid_reg_ori5,H5S_SELECT_SET,start5,stride5,count5,block5);
CHECK(ret, FAIL, "H5Sselect_hyperslab");
- /* Build up five dimensional regular selection with H5_SELECT_OR, inside HDF5,
+ /* Build up four dimensional regular selection with H5_SELECT_OR, inside HDF5,
it will be treated as an irregular selection. */
start5[4] = 1;
count5[4] = 1;
@@ -12507,23 +12364,19 @@ test_space_rebuild(void)
CHECK(ret, FAIL, "H5Sselect_hyperslab");
- ret = H5S_get_rebuild_status_test(sid_reg5,&rebuild_stat1,&rebuild_stat2);
- CHECK(ret, FAIL, "H5S_get_rebuild_status_test");
- /* In this case, rebuild_stat1 and rebuild_stat2 should be
- * H5S_DIMINFO_VALID_YES. */
- if(rebuild_stat1 != H5S_DIMINFO_VALID_YES) {
+ rebuild_stat = FALSE;
+ rebuild_stat = H5S_get_rebuild_status_test(sid_reg5);
+ assert(rebuild_stat!=FAIL);
+ /* In this case, rebuild_stat should be TRUE. */
+ if(!rebuild_stat){
ret = FAIL;
CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- if(rebuild_stat2 != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- if(ret != FAIL) {
+ }
+ else {
/* In this case, rebuild_check should be TRUE. */
rebuild_check = H5S_select_shape_same_test(sid_reg5,sid_reg_ori5);
CHECK(rebuild_check,FALSE,"H5S_hyper_rebuild");
- } /* end if */
+ }
sid_irreg5 = H5Screate_simple(SPACERE5_RANK,dims5,NULL);
@@ -12569,19 +12422,14 @@ test_space_rebuild(void)
ret = H5Sselect_hyperslab(sid_irreg5,H5S_SELECT_OR,start5,stride5,count5,block5);
CHECK(ret, FAIL, "H5Sselect_hyperslab");
- ret = H5S_get_rebuild_status_test(sid_irreg5,&rebuild_stat1,&rebuild_stat2);
- CHECK(ret, FAIL, "H5S_get_rebuild_status_test");
- /* In this case, rebuild_stat1 should be H5S_DIMINFO_VALID_NO and
- * rebuild_stat2 should be H5S_DIMINFO_VALID_IMPOSSIBLE. */
- if(rebuild_stat1 != H5S_DIMINFO_VALID_NO) {
- ret = FAIL;
- CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- if(rebuild_stat2 != H5S_DIMINFO_VALID_IMPOSSIBLE) {
+ rebuild_stat = TRUE;
+ rebuild_stat = H5S_get_rebuild_status_test(sid_irreg5);
+ assert(rebuild_stat!=FAIL);
+ /* In this case, rebuild_stat should be FALSE. */
+ if(rebuild_stat){
ret = FAIL;
CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- /* No need to do shape comparision */
+ }/* No need to do shape comparision */
/* We use 5-D to test a special case with
rebuilding routine TRUE, FALSE and TRUE */
@@ -12615,20 +12463,13 @@ test_space_rebuild(void)
ret = H5Sselect_hyperslab(sid_spec,H5S_SELECT_SET,start5,stride5,count5,block5);
CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- ret = H5S_get_rebuild_status_test(sid_spec,&rebuild_stat1,&rebuild_stat2);
- CHECK(ret, FAIL, "H5S_get_rebuild_status_test");
- /* In this case, rebuild_stat1 and rebuild_stat2 should both be
- * H5S_DIMINFO_VALID_YES. */
- if(rebuild_stat1 != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- if(rebuild_stat2 != H5S_DIMINFO_VALID_YES) {
+ rebuild_stat = FALSE;
+ rebuild_stat = H5S_get_rebuild_status_test(sid_spec);
+ /* In this case, rebuild_stat should be TRUE. */
+ if(!rebuild_stat){
ret = FAIL;
CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- /* No need to do shape comparision */
+ }/* No need to do shape comparision */
/* Adding some selections to make it real irregular */
start5[3] = 1;
@@ -12644,21 +12485,15 @@ test_space_rebuild(void)
ret = H5Sselect_hyperslab(sid_spec,H5S_SELECT_OR,start5,stride5,count5,block5);
CHECK(ret, FAIL, "H5Sselect_hyperslab");
- ret = H5S_get_rebuild_status_test(sid_spec,&rebuild_stat1,&rebuild_stat2);
- CHECK(ret, FAIL, "H5S_get_rebuild_status_test");
- /* In this case, rebuild_stat1 should be H5S_DIMINFO_VALID_NO and
- * rebuild_stat2 should be H5S_DIMINFO_VALID_IMPOSSIBLE. */
- if(rebuild_stat1 != H5S_DIMINFO_VALID_NO) {
+ rebuild_stat = TRUE;
+ rebuild_stat = H5S_get_rebuild_status_test(sid_spec);
+ assert(rebuild_stat!=FAIL);
+ /* In this case, rebuild_stat should be FALSE. */
+ if(rebuild_stat){
ret = FAIL;
CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- if(rebuild_stat2 != H5S_DIMINFO_VALID_IMPOSSIBLE) {
- ret = FAIL;
- CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- /* No need to do shape comparision */
+ }/* No need to do shape comparision */
- /* Add more selections to make it regular again */
start5[3] = 5;
count5[3] = 1;
stride5[3] = 4;
@@ -12672,19 +12507,14 @@ test_space_rebuild(void)
ret = H5Sselect_hyperslab(sid_spec,H5S_SELECT_OR,start5,stride5,count5,block5);
CHECK(ret, FAIL, "H5Sselect_hyperslab");
- ret = H5S_get_rebuild_status_test(sid_spec,&rebuild_stat1,&rebuild_stat2);
- CHECK(ret, FAIL, "H5S_get_rebuild_status_test");
- /* In this case, rebuild_stat1 should be H5S_DIMINFO_VALID_NO and
- * rebuild_stat2 should be H5S_DIMINFO_VALID_YES. */
- if(rebuild_stat1 != H5S_DIMINFO_VALID_NO) {
- ret = FAIL;
- CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- if(rebuild_stat2 != H5S_DIMINFO_VALID_YES) {
+ rebuild_stat = FALSE;
+ rebuild_stat = H5S_get_rebuild_status_test(sid_spec);
+ assert(rebuild_stat!=FAIL);
+ /* In this case, rebuild_stat should be FALSE. */
+ if(!rebuild_stat){
ret = FAIL;
CHECK(ret,FAIL,"H5S_hyper_rebuild");
- } /* end if */
- /* No need to do shape comparision */
+ }/* No need to do shape comparision */
H5Sclose(sid_reg1);
CHECK(ret, FAIL, "H5Sclose");
@@ -12718,791 +12548,6 @@ test_space_rebuild(void)
/****************************************************************
**
-** test_space_update_diminfo(): Tests selection diminfo update
-** routine. We will test whether regular selections can be
-** quickly updated when the selection is modified.
-**
-**
-****************************************************************/
-static void
-test_space_update_diminfo(void)
-{
- hid_t space_id; /* Dataspace id */
- H5S_diminfo_valid_t diminfo_valid; /* Diminfo status */
- H5S_diminfo_valid_t rebuild_status; /* Diminfo status after rebuid */
- H5S_sel_type sel_type; /* Selection type */
- herr_t ret; /* Return value */
-
- /* dimensions of rank 1 to rank 5 */
- hsize_t dims1[] ={SPACEUD1_DIM0};
- hsize_t dims3[] ={SPACEUD3_DIM0, SPACEUD3_DIM1, SPACEUD3_DIM2};
-
- /* The start of the hyperslab */
- hsize_t start1[1], start3[3];
-
- /* The stride of the hyperslab */
- hsize_t stride1[1], stride3[3];
-
- /* The number of blocks for the hyperslab */
- hsize_t count1[1], count3[3];
-
- /* The size of each block for the hyperslab */
- hsize_t block1[1], block3[3];
-
-
- /* Output message about test being performed */
- MESSAGE(6, ("Testing functionality to update hyperslab dimension info\n"));
-
-
- MESSAGE(7, ("Testing functionality to update 1-D hyperslab dimension info\n"));
-
- /*
- * Test adding regularly spaced distinct blocks
- */
-
- /* Create 1-D dataspace */
- space_id = H5Screate_simple(1, dims1, NULL);
-
- /* Create single block */
- start1[0] = 3;
- count1[0] = 1;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_SET, start1, NULL, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Add block after first, with OR */
- start1[0] = 6;
- count1[0] = 1;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_OR, start1, NULL, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Add block before first, this time with XOR */
- start1[0] = 0;
- count1[0] = 1;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_XOR, start1, NULL, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Add two blocks after current block */
- start1[0] = 9;
- stride1[0] = 3;
- count1[0] = 2;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_OR, start1, stride1, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Add two blocks overlapping current block, with OR */
- start1[0] = 9;
- stride1[0] = 3;
- count1[0] = 2;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_OR, start1, stride1, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Add two blocks partially overlapping current block, with OR */
- start1[0] = 12;
- stride1[0] = 3;
- count1[0] = 2;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_OR, start1, stride1, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Add two blocks partially overlapping current block, with XOR */
- start1[0] = 15;
- stride1[0] = 3;
- count1[0] = 2;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_XOR, start1, stride1, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be NO, after rebuild it should be IMPOSSIBLE */
- ret = H5S_get_rebuild_status_test(space_id, &diminfo_valid,
- &rebuild_status);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_NO) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
- if(rebuild_status != H5S_DIMINFO_VALID_IMPOSSIBLE) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_rebuild");
- } /* end if */
-
- /* Fill in missing block */
- start1[0] = 15;
- count1[0] = 1;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_XOR, start1, NULL, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be NO, after rebuild it should be YES */
- ret = H5S_get_rebuild_status_test(space_id, &diminfo_valid,
- &rebuild_status);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_NO) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
- if(rebuild_status != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_rebuild");
- } /* end if */
-
- /*
- * Test adding contiguous blocks
- */
-
- /* Create single block */
- start1[0] = 3;
- count1[0] = 1;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_SET, start1, NULL, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Add block immediately after first, with OR */
- start1[0] = 5;
- count1[0] = 1;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_OR, start1, NULL, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Add block immediately before first, with XOR */
- start1[0] = 1;
- count1[0] = 1;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_OR, start1, NULL, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Add differently size block immediately after current, with OR */
- start1[0] = 7;
- count1[0] = 1;
- block1[0] = 7;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_OR, start1, NULL, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /*
- * Test adding overlapping blocks
- */
-
- /* Create single block */
- start1[0] = 3;
- count1[0] = 1;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_SET, start1, NULL, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Add block completely overlapping first, with OR */
- start1[0] = 3;
- count1[0] = 1;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_OR, start1, NULL, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Add block parially overlapping first, with OR */
- start1[0] = 4;
- count1[0] = 1;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_OR, start1, NULL, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Add block completely enclosing current, with OR */
- start1[0] = 2;
- count1[0] = 1;
- block1[0] = 5;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_OR, start1, NULL, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Add block completely enclosed by current, with OR */
- start1[0] = 3;
- count1[0] = 1;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_OR, start1, NULL, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Add equally sized block parially overlapping current, with XOR */
- start1[0] = 3;
- count1[0] = 1;
- block1[0] = 5;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_XOR, start1, NULL, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Fill in hole in block */
- start1[0] = 3;
- count1[0] = 1;
- block1[0] = 4;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_OR, start1, NULL, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be NO, after rebuild it should be YES */
- ret = H5S_get_rebuild_status_test(space_id, &diminfo_valid,
- &rebuild_status);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_NO) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
- if(rebuild_status != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_rebuild");
- } /* end if */
-
- /* Add differently sized block parially overlapping current, with XOR */
- start1[0] = 4;
- count1[0] = 1;
- block1[0] = 5;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_XOR, start1, NULL, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be NO */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_NO) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Fill in hole in block */
- start1[0] = 4;
- count1[0] = 1;
- block1[0] = 4;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_OR, start1, NULL, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be NO, after rebuild it should be YES */
- ret = H5S_get_rebuild_status_test(space_id, &diminfo_valid,
- &rebuild_status);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_NO) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
- if(rebuild_status != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_rebuild");
- } /* end if */
-
- /* Add block completely overlapping current, with XOR */
- start1[0] = 2;
- count1[0] = 1;
- block1[0] = 7;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_XOR, start1, NULL, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- sel_type = H5Sget_select_type(space_id);
- VERIFY(sel_type, H5S_SEL_NONE, "H5Sget_select_type");
-
- /*
- * Test various conditions that break the fast algorithm
- */
-
- /* Create multiple blocks */
- start1[0] = 3;
- stride1[0] = 3;
- count1[0] = 2;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_SET, start1, stride1, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Create single block with start out of phase */
- start1[0] = 8;
- count1[0] = 1;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_OR, start1, NULL, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be NO */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_NO) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Create multiple blocks */
- start1[0] = 3;
- stride1[0] = 3;
- count1[0] = 2;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_SET, start1, stride1, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Create multiple blocks with start out of phase */
- start1[0] = 8;
- stride1[0] = 3;
- count1[0] = 2;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_OR, start1, stride1, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be NO */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_NO) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Create multiple blocks */
- start1[0] = 3;
- stride1[0] = 3;
- count1[0] = 2;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_SET, start1, stride1, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Create multiple blocks with wrong stride */
- start1[0] = 9;
- stride1[0] = 4;
- count1[0] = 2;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_OR, start1, stride1, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be NO */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_NO) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Create single block */
- start1[0] = 3;
- count1[0] = 1;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_SET, start1, NULL, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Create single block with wrong size */
- start1[0] = 6;
- count1[0] = 1;
- block1[0] = 1;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_OR, start1, NULL, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be NO */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_NO) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Create single block */
- start1[0] = 3;
- count1[0] = 1;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_SET, start1, NULL, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Create multiple blocks with wrong size */
- start1[0] = 6;
- stride1[0] = 3;
- count1[0] = 2;
- block1[0] = 1;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_OR, start1, stride1, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be NO */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_NO) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Create multiple blocks */
- start1[0] = 3;
- stride1[0] = 3;
- count1[0] = 2;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_SET, start1, stride1, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Create single block with wrong size */
- start1[0] = 9;
- count1[0] = 1;
- block1[0] = 1;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_OR, start1, NULL, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be NO */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_NO) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Create multiple blocks */
- start1[0] = 3;
- stride1[0] = 3;
- count1[0] = 2;
- block1[0] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_SET, start1, stride1, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Create multiple blocks with wrong size */
- start1[0] = 9;
- stride1[0] = 3;
- count1[0] = 2;
- block1[0] = 1;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_OR, start1, stride1, count1, block1);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be NO */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_NO) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- ret = H5Sclose(space_id);
- CHECK(ret, FAIL, "H5Sclose");
-
-
- MESSAGE(7, ("Testing functionality to update 3-D hyperslab dimension info\n"));
-
- /* Create 3-D dataspace */
- space_id = H5Screate_simple(3, dims3, NULL);
-
- /* Create multiple blocks */
- start3[0] = 0;
- start3[1] = 1;
- start3[2] = 2;
- stride3[0] = 2;
- stride3[1] = 3;
- stride3[2] = 4;
- count3[0] = 4;
- count3[1] = 3;
- count3[2] = 2;
- block3[0] = 1;
- block3[1] = 2;
- block3[2] = 3;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_SET, start3, stride3, count3, block3);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Add blocks with same values in all dimensions */
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_OR, start3, stride3, count3, block3);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Add blocks with same values in two dimensions */
- start3[0] = 8;
- stride3[0] = 1;
- count3[0] = 1;
- block3[0] = 1;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_OR, start3, stride3, count3, block3);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Create multiple blocks */
- start3[0] = 0;
- start3[1] = 1;
- start3[2] = 2;
- stride3[0] = 2;
- stride3[1] = 3;
- stride3[2] = 4;
- count3[0] = 4;
- count3[1] = 3;
- count3[2] = 2;
- block3[0] = 1;
- block3[1] = 2;
- block3[2] = 3;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_SET, start3, stride3, count3, block3);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Add blocks with same values in one dimension */
- start3[0] = 8;
- start3[1] = 10;
- stride3[0] = 1;
- stride3[1] = 1;
- count3[0] = 1;
- count3[1] = 1;
- block3[0] = 1;
- block3[1] = 2;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_OR, start3, stride3, count3, block3);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be NO */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_NO) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Create multiple blocks */
- start3[0] = 0;
- start3[1] = 1;
- start3[2] = 2;
- stride3[0] = 2;
- stride3[1] = 3;
- stride3[2] = 4;
- count3[0] = 4;
- count3[1] = 3;
- count3[2] = 2;
- block3[0] = 1;
- block3[1] = 2;
- block3[2] = 3;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_SET, start3, stride3, count3, block3);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be YES */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_YES) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- /* Add blocks with same values in no dimensions */
- start3[0] = 8;
- start3[1] = 10;
- start3[2] = 10;
- stride3[0] = 1;
- stride3[1] = 1;
- stride3[2] = 1;
- count3[0] = 1;
- count3[1] = 1;
- count3[2] = 1;
- block3[0] = 1;
- block3[1] = 2;
- block3[2] = 3;
- ret = H5Sselect_hyperslab(space_id, H5S_SELECT_OR, start3, stride3, count3, block3);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* diminfo_valid should be NO */
- ret = H5S_get_diminfo_status_test(space_id, &diminfo_valid);
- CHECK(ret, FAIL, "H5S_get_diminfo_status_test");
- if(diminfo_valid != H5S_DIMINFO_VALID_NO) {
- ret = FAIL;
- CHECK(ret, FAIL, "H5S_hyper_update_diminfo");
- } /* end if */
-
- ret = H5Sclose(space_id);
- CHECK(ret, FAIL, "H5Sclose");
-} /* end test_space_update_diminfo() */
-
-
-/****************************************************************
-**
** test_select_hyper_chunk_offset(): Tests selections on dataspace,
** verify that offsets for hyperslab selections are working in
** chunked datasets.
@@ -14022,270 +13067,6 @@ test_select_bounds(void)
CHECK(ret, FAIL, "H5Sclose");
} /* test_select_bounds() */
-
-/****************************************************************
-**
-** test_internal_consistency(): Tests selections on dataspace, then
-** verify that internal states of data structures of selections are
-** consistent.
-**
-****************************************************************/
-static void
-test_internal_consistency(void)
-{
- hid_t all_sid; /* Dataspace ID with "all" selection */
- hid_t none_sid; /* Dataspace ID with "none" selection */
- hid_t single_pt_sid; /* Dataspace ID with single point selection */
- hid_t mult_pt_sid; /* Dataspace ID with multiple point selection */
- hid_t single_hyper_sid; /* Dataspace ID with single block hyperslab selection */
- hid_t single_hyper_all_sid; /* Dataspace ID with single block hyperslab
- * selection that is the entire dataspace
- */
- hid_t single_hyper_pt_sid; /* Dataspace ID with single block hyperslab
- * selection that is the same as the single
- * point selection
- */
- hid_t regular_hyper_sid; /* Dataspace ID with regular hyperslab selection */
- hid_t irreg_hyper_sid; /* Dataspace ID with irregular hyperslab selection */
- hid_t none_hyper_sid; /* Dataspace ID with "no hyperslabs" selection */
- hid_t scalar_all_sid; /* ID for scalar dataspace with "all" selection */
- hid_t scalar_none_sid; /* ID for scalar dataspace with "none" selection */
- hid_t tmp_sid; /* Temporary dataspace ID */
- hsize_t dims[] = {SPACE9_DIM1, SPACE9_DIM2};
- hsize_t coord1[1][SPACE2_RANK]; /* Coordinates for single point selection */
- hsize_t coord2[SPACE9_DIM2][SPACE9_RANK]; /* Coordinates for multiple point selection */
- hsize_t start[SPACE9_RANK]; /* Hyperslab start */
- hsize_t stride[SPACE9_RANK]; /* Hyperslab stride */
- hsize_t count[SPACE9_RANK]; /* Hyperslab block count */
- hsize_t block[SPACE9_RANK]; /* Hyperslab block size */
- htri_t check; /* Shape comparison return value */
- herr_t ret; /* Generic return value */
-
- /* Output message about test being performed */
- MESSAGE(6, ("Testing Consistency of Internal States\n"));
- assert(SPACE9_DIM2>=POINT1_NPOINTS);
-
- /* Create dataspace for "all" selection */
- all_sid = H5Screate_simple(SPACE9_RANK, dims, NULL);
- CHECK(all_sid, FAIL, "H5Screate_simple");
-
- /* Select entire extent for dataspace */
- ret = H5Sselect_all(all_sid);
- CHECK(ret, FAIL, "H5Sselect_all");
-
- /* Create dataspace for "none" selection */
- none_sid = H5Screate_simple(SPACE9_RANK, dims, NULL);
- CHECK(none_sid, FAIL, "H5Screate_simple");
-
- /* Un-Select entire extent for dataspace */
- ret = H5Sselect_none(none_sid);
- CHECK(ret, FAIL, "H5Sselect_none");
-
- /* Create dataspace for single point selection */
- single_pt_sid = H5Screate_simple(SPACE9_RANK, dims, NULL);
- CHECK(single_pt_sid, FAIL, "H5Screate_simple");
-
- /* Select sequence of ten points for multiple point selection */
- coord1[0][0] = 2; coord1[0][1] = 2;
- ret = H5Sselect_elements(single_pt_sid, H5S_SELECT_SET, (size_t)1, (const hsize_t *)coord1);
- CHECK(ret, FAIL, "H5Sselect_elements");
-
- /* Create dataspace for multiple point selection */
- mult_pt_sid = H5Screate_simple(SPACE9_RANK, dims, NULL);
- CHECK(mult_pt_sid, FAIL, "H5Screate_simple");
-
- /* Select sequence of ten points for multiple point selection */
- coord2[0][0]=2; coord2[0][1]=2;
- coord2[1][0]=7; coord2[1][1]=2;
- coord2[2][0]=1; coord2[2][1]=4;
- coord2[3][0]=2; coord2[3][1]=6;
- coord2[4][0]=0; coord2[4][1]=8;
- coord2[5][0]=3; coord2[5][1]=2;
- coord2[6][0]=4; coord2[6][1]=4;
- coord2[7][0]=1; coord2[7][1]=0;
- coord2[8][0]=5; coord2[8][1]=1;
- coord2[9][0]=9; coord2[9][1]=3;
- ret = H5Sselect_elements(mult_pt_sid, H5S_SELECT_SET, (size_t)POINT1_NPOINTS, (const hsize_t *)coord2);
- CHECK(ret, FAIL, "H5Sselect_elements");
-
- /* Create dataspace for single hyperslab selection */
- single_hyper_sid = H5Screate_simple(SPACE9_RANK, dims, NULL);
- CHECK(single_hyper_sid, FAIL, "H5Screate_simple");
-
- /* Select 10x10 hyperslab for single hyperslab selection */
- start[0]=1; start[1]=1;
- stride[0]=1; stride[1]=1;
- count[0]=1; count[1]=1;
- block[0]=(SPACE9_DIM1-2); block[1]=(SPACE9_DIM2-2);
- ret = H5Sselect_hyperslab(single_hyper_sid,H5S_SELECT_SET,start,stride,count,block);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* Create dataspace for single hyperslab selection with entire extent selected */
- single_hyper_all_sid = H5Screate_simple(SPACE9_RANK, dims, NULL);
- CHECK(single_hyper_all_sid, FAIL, "H5Screate_simple");
-
- /* Select entire extent for hyperslab selection */
- start[0]=0; start[1]=0;
- stride[0]=1; stride[1]=1;
- count[0]=1; count[1]=1;
- block[0]=SPACE9_DIM1; block[1]=SPACE9_DIM2;
- ret = H5Sselect_hyperslab(single_hyper_all_sid,H5S_SELECT_SET,start,stride,count,block);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* Create dataspace for single hyperslab selection with single point selected */
- single_hyper_pt_sid = H5Screate_simple(SPACE9_RANK, dims, NULL);
- CHECK(single_hyper_pt_sid, FAIL, "H5Screate_simple");
-
- /* Select entire extent for hyperslab selection */
- start[0]=2; start[1]=2;
- stride[0]=1; stride[1]=1;
- count[0]=1; count[1]=1;
- block[0]=1; block[1]=1;
- ret = H5Sselect_hyperslab(single_hyper_pt_sid,H5S_SELECT_SET,start,stride,count,block);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* Create dataspace for regular hyperslab selection */
- regular_hyper_sid = H5Screate_simple(SPACE9_RANK, dims, NULL);
- CHECK(regular_hyper_sid, FAIL, "H5Screate_simple");
-
- /* Select regular, strided hyperslab selection */
- start[0]=2; start[1]=2;
- stride[0]=2; stride[1]=2;
- count[0]=5; count[1]=2;
- block[0]=1; block[1]=1;
- ret = H5Sselect_hyperslab(regular_hyper_sid,H5S_SELECT_SET,start,stride,count,block);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* Create dataspace for irregular hyperslab selection */
- irreg_hyper_sid = H5Screate_simple(SPACE9_RANK, dims, NULL);
- CHECK(irreg_hyper_sid, FAIL, "H5Screate_simple");
-
- /* Create irregular hyperslab selection by OR'ing two blocks together */
- start[0]=2; start[1]=2;
- stride[0]=1; stride[1]=1;
- count[0]=1; count[1]=1;
- block[0]=1; block[1]=1;
- ret = H5Sselect_hyperslab(irreg_hyper_sid,H5S_SELECT_SET,start,stride,count,block);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- start[0]=4; start[1]=4;
- stride[0]=1; stride[1]=1;
- count[0]=1; count[1]=1;
- block[0]=3; block[1]=3;
- ret = H5Sselect_hyperslab(irreg_hyper_sid,H5S_SELECT_OR,start,stride,count,block);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* Create dataspace for "no" hyperslab selection */
- none_hyper_sid = H5Screate_simple(SPACE9_RANK, dims, NULL);
- CHECK(none_hyper_sid, FAIL, "H5Screate_simple");
-
- /* Create "no" hyperslab selection by XOR'ing same blocks together */
- start[0]=2; start[1]=2;
- stride[0]=1; stride[1]=1;
- count[0]=1; count[1]=1;
- block[0]=1; block[1]=1;
- ret = H5Sselect_hyperslab(none_hyper_sid,H5S_SELECT_SET,start,stride,count,block);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- ret = H5Sselect_hyperslab(none_hyper_sid,H5S_SELECT_XOR,start,stride,count,block);
- CHECK(ret, FAIL, "H5Sselect_hyperslab");
-
- /* Create scalar dataspace for "all" selection */
- scalar_all_sid = H5Screate(H5S_SCALAR);
- CHECK(scalar_all_sid, FAIL, "H5Screate");
-
- /* Create scalar dataspace for "none" selection */
- scalar_none_sid = H5Screate(H5S_SCALAR);
- CHECK(scalar_none_sid, FAIL, "H5Screate");
-
- /* Un-Select entire extent for dataspace */
- ret = H5Sselect_none(scalar_none_sid);
- CHECK(ret, FAIL, "H5Sselect_none");
-
- /* Test all the selections created */
-
- /* Test the copy of itself */
- tmp_sid=H5Scopy(all_sid);
- CHECK(tmp_sid, FAIL, "H5Scopy");
-
- check=H5S_internal_consistency_test(tmp_sid);
- VERIFY(check, TRUE, "H5S_internal_consistency_test");
-
- ret = H5Sclose(tmp_sid);
- CHECK(ret, FAIL, "H5Sclose");
-
- /* Test "none" selection */
- check=H5S_internal_consistency_test(none_sid);
- VERIFY(check, TRUE, "H5S_internal_consistency_test");
-
- /* Test single point selection */
- check=H5S_internal_consistency_test(single_pt_sid);
- VERIFY(check, TRUE, "H5S_internal_consistency_test");
-
- /* Test multiple point selection */
- check=H5S_internal_consistency_test(mult_pt_sid);
- VERIFY(check, TRUE, "H5S_internal_consistency_test");
-
- /* Test "plain" single hyperslab selection */
- check=H5S_internal_consistency_test(single_hyper_sid);
- VERIFY(check, TRUE, "H5S_internal_consistency_test");
-
- /* Test "all" single hyperslab selection */
- check=H5S_internal_consistency_test(single_hyper_all_sid);
- VERIFY(check, TRUE, "H5S_internal_consistency_test");
-
- /* Test "single point" single hyperslab selection */
- check=H5S_internal_consistency_test(single_hyper_pt_sid);
- VERIFY(check, TRUE, "H5S_internal_consistency_test");
-
- /* Test regular, strided hyperslab selection */
- check=H5S_internal_consistency_test(regular_hyper_sid);
- VERIFY(check, TRUE, "H5S_internal_consistency_test");
-
- /* Test irregular hyperslab selection */
- check=H5S_internal_consistency_test(irreg_hyper_sid);
- VERIFY(check, TRUE, "H5S_internal_consistency_test");
-
- /* Test "no" hyperslab selection */
- check=H5S_internal_consistency_test(none_hyper_sid);
- VERIFY(check, TRUE, "H5S_internal_consistency_test");
-
- /* Test scalar "all" hyperslab selection */
- check = H5S_internal_consistency_test(scalar_all_sid);
- VERIFY(check, TRUE, "H5S_internal_consistency_test");
-
- /* Test scalar "none" hyperslab selection */
- check = H5S_internal_consistency_test(scalar_none_sid);
- VERIFY(check, TRUE, "H5S_internal_consistency_test");
-
- /* Close dataspaces */
- ret = H5Sclose(all_sid);
- CHECK(ret, FAIL, "H5Sclose");
- ret = H5Sclose(none_sid);
- CHECK(ret, FAIL, "H5Sclose");
- ret = H5Sclose(single_pt_sid);
- CHECK(ret, FAIL, "H5Sclose");
- ret = H5Sclose(mult_pt_sid);
- CHECK(ret, FAIL, "H5Sclose");
- ret = H5Sclose(single_hyper_sid);
- CHECK(ret, FAIL, "H5Sclose");
- ret = H5Sclose(single_hyper_all_sid);
- CHECK(ret, FAIL, "H5Sclose");
- ret = H5Sclose(single_hyper_pt_sid);
- CHECK(ret, FAIL, "H5Sclose");
- ret = H5Sclose(regular_hyper_sid);
- CHECK(ret, FAIL, "H5Sclose");
- ret = H5Sclose(irreg_hyper_sid);
- CHECK(ret, FAIL, "H5Sclose");
- ret = H5Sclose(none_hyper_sid);
- CHECK(ret, FAIL, "H5Sclose");
- ret = H5Sclose(scalar_all_sid);
- CHECK(ret, FAIL, "H5Sclose");
- ret = H5Sclose(scalar_none_sid);
- CHECK(ret, FAIL, "H5Sclose");
-} /* test_internal_consistency() */
-
-
/****************************************************************
**
** test_select(): Main H5S selection testing routine.
@@ -14354,12 +13135,10 @@ test_select(void)
test_select_hyper_offset2();/* Test more selection offset code with hyperslabs */
test_select_point_offset(); /* Test selection offset code with elements */
test_select_hyper_union(); /* Test hyperslab union code */
-
- /* Fancy hyperslab API tests */
+#ifdef NEW_HYPERSLAB_API
test_select_hyper_union_stagger(); /* Test hyperslab union code for staggered slabs */
test_select_hyper_union_3d(); /* Test hyperslab union code for 3-D dataset */
- test_select_hyper_valid_combination(); /* Test different input combinations */
-
+#endif /* NEW_HYPERSLAB_API */
test_select_hyper_and_2d(); /* Test hyperslab intersection (AND) code for 2-D dataset */
test_select_hyper_xor_2d(); /* Test hyperslab XOR code for 2-D dataset */
test_select_hyper_notb_2d(); /* Test hyperslab NOTB code for 2-D dataset */
@@ -14435,14 +13214,13 @@ test_select(void)
/* Test "re-build" routine */
test_space_rebuild();
- /* Test "update diminfo" routine */
- test_space_update_diminfo();
/* Test point selections in chunked datasets */
test_select_point_chunk();
/* Test scalar dataspaces in chunked datasets */
test_select_scalar_chunk();
+
/* Test using selection offset on hyperslab in chunked dataset */
test_select_hyper_chunk_offset();
test_select_hyper_chunk_offset2();
@@ -14450,9 +13228,6 @@ test_select(void)
/* Test selection bounds with & without offsets */
test_select_bounds();
- /* Test the consistency of internal data structures of selection */
- test_internal_consistency();
-
} /* test_select() */