summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/CMakeTests.cmake14
-rw-r--r--test/cmpd_dset.c73
-rw-r--r--test/dtypes.c84
-rw-r--r--test/select_io_dset.c5
4 files changed, 132 insertions, 44 deletions
diff --git a/test/CMakeTests.cmake b/test/CMakeTests.cmake
index 296d430..ec92a76 100644
--- a/test/CMakeTests.cmake
+++ b/test/CMakeTests.cmake
@@ -344,7 +344,7 @@ set (H5TEST_SEPARATE_TESTS
)
foreach (h5_test ${H5_TESTS})
if (NOT h5_test IN_LIST H5TEST_SEPARATE_TESTS)
- if (HDF5_ENABLE_USING_MEMCHECKER)
+ if (HDF5_USING_ANALYSIS_TOOL)
add_test (NAME H5TEST-${h5_test} COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:${h5_test}>)
set_tests_properties (H5TEST-${h5_test} PROPERTIES
FIXTURES_REQUIRED clear_H5TEST
@@ -403,7 +403,7 @@ if (NOT CYGWIN)
WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST
)
set_tests_properties (H5TEST-cache-clean-objects PROPERTIES FIXTURES_CLEANUP clear_cache)
- if (HDF5_ENABLE_USING_MEMCHECKER)
+ if (HDF5_USING_ANALYSIS_TOOL)
add_test (NAME H5TEST-cache COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:cache>)
else ()
add_test (NAME H5TEST-cache COMMAND "${CMAKE_COMMAND}"
@@ -477,7 +477,7 @@ add_test (
WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST
)
set_tests_properties (H5TEST-external_env-clean-objects PROPERTIES FIXTURES_CLEANUP clear_external_env)
-if (HDF5_ENABLE_USING_MEMCHECKER)
+if (HDF5_USING_ANALYSIS_TOOL)
add_test (NAME H5TEST-external_env COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:external_env>)
else ()
add_test (NAME H5TEST-external_env COMMAND "${CMAKE_COMMAND}"
@@ -512,7 +512,7 @@ add_test (
${HDF5_TEST_BINARY_DIR}/H5TEST
)
set_tests_properties (H5TEST-vds_env-clean-objects PROPERTIES FIXTURES_CLEANUP clear_vds_env)
-if (HDF5_ENABLE_USING_MEMCHECKER)
+if (HDF5_USING_ANALYSIS_TOOL)
add_test (NAME H5TEST-vds_env COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:vds_env>)
else ()
add_test (NAME H5TEST-vds_env COMMAND "${CMAKE_COMMAND}"
@@ -559,7 +559,7 @@ add_test (NAME H5TEST-flush-clean-objects
WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST
)
set_tests_properties (H5TEST-flush-clean-objects PROPERTIES FIXTURES_CLEANUP clear_flush)
-if (HDF5_ENABLE_USING_MEMCHECKER)
+if (HDF5_USING_ANALYSIS_TOOL)
add_test (NAME H5TEST-flush1 COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:flush1>)
else ()
add_test (NAME H5TEST-flush1 COMMAND "${CMAKE_COMMAND}"
@@ -581,7 +581,7 @@ set_tests_properties (H5TEST-flush1 PROPERTIES
if ("H5TEST-flush1" MATCHES "${HDF5_DISABLE_TESTS_REGEX}")
set_tests_properties (H5TEST-flush1 PROPERTIES DISABLED true)
endif ()
-if (HDF5_ENABLE_USING_MEMCHECKER)
+if (HDF5_USING_ANALYSIS_TOOL)
add_test (NAME H5TEST-flush2 COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:flush2>)
else ()
add_test (NAME H5TEST-flush2 COMMAND "${CMAKE_COMMAND}"
@@ -814,7 +814,7 @@ add_test (NAME H5TEST-links_env-clean-objects
${HDF5_TEST_BINARY_DIR}/H5TEST
)
set_tests_properties (H5TEST-links_env-clean-objects PROPERTIES FIXTURES_CLEANUP clear_links_env)
-if (HDF5_ENABLE_USING_MEMCHECKER)
+if (HDF5_USING_ANALYSIS_TOOL)
add_test (NAME H5TEST-links_env COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:links_env>)
else ()
add_test (NAME H5TEST-links_env COMMAND "${CMAKE_COMMAND}"
diff --git a/test/cmpd_dset.c b/test/cmpd_dset.c
index 460c8ae..227b0c3 100644
--- a/test/cmpd_dset.c
+++ b/test/cmpd_dset.c
@@ -450,9 +450,12 @@ test_select_src_subset(char *fname, hid_t fapl, hid_t in_dxpl, unsigned set_fill
hsize_t dims[2] = {NX, NY};
hsize_t chunk_dims[2] = {NX / 10, NY / 10};
unsigned char *rew_buf = NULL, *save_rew_buf = NULL, *rbuf = NULL;
- int fillvalue = (-1);
+ stype1 fillvalue;
size_t ss, ss1, ss2;
+ /* Initialize the fill value */
+ memset(&fillvalue, 0, sizeof(stype1));
+
/* Create the file for this test */
if ((fid = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
goto error;
@@ -625,9 +628,12 @@ test_select_dst_subset(char *fname, hid_t fapl, hid_t in_dxpl, unsigned set_fill
hsize_t dims[2] = {NX, NY};
hsize_t chunk_dims[2] = {NX / 10, NY / 10};
unsigned char *rew_buf = NULL, *save_rew_buf = NULL, *rbuf = NULL;
- int fillvalue = (-1);
+ stype2 fillvalue;
size_t ss, ss1, ss2;
+ /* Initialize the fill value */
+ memset(&fillvalue, 0, sizeof(stype2));
+
/* Create the file for this test */
if ((fid = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
goto error;
@@ -810,17 +816,22 @@ test_select_compound(char *fname, hid_t fapl, hid_t in_dxpl, unsigned set_fillva
/* Other variables */
unsigned int i;
- hid_t fid = H5I_INVALID_HID;
- hid_t did = H5I_INVALID_HID;
- hid_t sid = H5I_INVALID_HID;
- hid_t dcpl = H5I_INVALID_HID;
- hid_t dxpl = H5I_INVALID_HID;
- hid_t array_dt = H5I_INVALID_HID;
- static hsize_t dim[] = {NX, NY};
- int fillvalue = (-1);
+ hid_t fid = H5I_INVALID_HID;
+ hid_t did = H5I_INVALID_HID;
+ hid_t sid = H5I_INVALID_HID;
+ hid_t dcpl = H5I_INVALID_HID;
+ hid_t dxpl = H5I_INVALID_HID;
+ hid_t array_dt = H5I_INVALID_HID;
+ static hsize_t dim[] = {NX, NY};
+ s1_t fillvalue1;
+ s7_t fillvalue7;
size_t ss = 0, ss1 = 0, ss2 = 0;
hsize_t memb_size[1] = {4};
+ /* Initialize the fill values */
+ memset(&fillvalue1, 0, sizeof(s1_t));
+ memset(&fillvalue7, 0, sizeof(s7_t));
+
/* Allocate buffers */
if (NULL == (s1 = (s1_t *)calloc(NX * NY, sizeof(s1_t))))
goto error;
@@ -900,7 +911,7 @@ test_select_compound(char *fname, hid_t fapl, hid_t in_dxpl, unsigned set_fillva
/* Set fill value accordingly */
if (set_fillvalue) {
- if (H5Pset_fill_value(dcpl, s1_tid, &fillvalue) < 0)
+ if (H5Pset_fill_value(dcpl, s1_tid, &fillvalue1) < 0)
goto error;
}
@@ -1022,7 +1033,7 @@ test_select_compound(char *fname, hid_t fapl, hid_t in_dxpl, unsigned set_fillva
/* Set fill value accordingly */
if (set_fillvalue) {
- if (H5Pset_fill_value(dcpl, s7_tid, &fillvalue) < 0)
+ if (H5Pset_fill_value(dcpl, s7_tid, &fillvalue7) < 0)
goto error;
}
@@ -1115,6 +1126,7 @@ test_select_compound(char *fname, hid_t fapl, hid_t in_dxpl, unsigned set_fillva
/* Release buffers */
free(s1);
+ free(save_s1);
free(s3);
free(save_s3);
free(rbuf1);
@@ -1145,30 +1157,19 @@ error:
H5E_END_TRY
/* Release resources */
- if (s1)
- free(s1);
- if (s3)
- free(s3);
- if (save_s3)
- free(save_s3);
- if (rbuf1)
- free(rbuf1);
- if (rbuf3)
- free(rbuf3);
- if (s7)
- free(s7);
- if (save_s7)
- free(save_s7);
- if (s8)
- free(s8);
- if (save_s8)
- free(save_s8);
- if (rbuf7)
- free(rbuf7);
- if (rbuf8)
- free(rbuf8);
- if (save_rbuf8)
- free(save_rbuf8);
+ free(s1);
+ free(save_s1);
+ free(s3);
+ free(save_s3);
+ free(rbuf1);
+ free(rbuf3);
+ free(s7);
+ free(save_s7);
+ free(s8);
+ free(save_s8);
+ free(rbuf7);
+ free(rbuf8);
+ free(save_rbuf8);
printf("\n*** SELECT COMPOUND DATASET TESTS FAILED ***\n");
return 1;
diff --git a/test/dtypes.c b/test/dtypes.c
index ac8697e..7aa3b17 100644
--- a/test/dtypes.c
+++ b/test/dtypes.c
@@ -4157,6 +4157,89 @@ error:
}
/*-------------------------------------------------------------------------
+ * Function: test_set_fields_offset
+ *
+ * Purpose: Tests for a bug in H5Tset_fields in which the function
+ * didn't account for an offset set for a floating-point
+ * datatype when checking whether the values set for the
+ * floating-point fields make sense for the datatype.
+ *
+ * Return: Success: 0
+ * Failure: number of errors
+ *
+ *-------------------------------------------------------------------------
+ */
+static int
+test_set_fields_offset(void)
+{
+ hid_t tid = H5I_INVALID_HID;
+
+ if ((tid = H5Tcopy(H5T_NATIVE_FLOAT)) < 0) {
+ H5_FAILED();
+ printf("Can't copy datatype\n");
+ goto error;
+ }
+
+ /* Create a custom 128-bit floating-point datatype */
+ if (H5Tset_size(tid, 16) < 0) {
+ H5_FAILED();
+ printf("Can't set datatype size\n");
+ goto error;
+ }
+
+ /* We will have 7 bytes of MSB padding + 5 bytes of offset padding */
+ if (H5Tset_precision(tid, 116) < 0) {
+ H5_FAILED();
+ printf("Can't set datatype size\n");
+ goto error;
+ }
+
+ if (H5Tset_offset(tid, 5) < 0) {
+ H5_FAILED();
+ printf("Can't set datatype offset\n");
+ goto error;
+ }
+
+ if (H5Tset_ebias(tid, 16383) < 0) {
+ H5_FAILED();
+ printf("Can't set datatype exponent bias\n");
+ goto error;
+ }
+
+ /*
+ * Floating-point type with the following:
+ *
+ * - 5 bits of LSB padding (bits 0 - 4)
+ * - 100-bit mantissa starting at bit 5
+ * - 15-bit exponent starting at bit 105
+ * - 1 sign bit at bit 120
+ * - 7 bits of MSB padding
+ */
+ if (H5Tset_fields(tid, 120, 105, 15, 5, 100) < 0) {
+ H5_FAILED();
+ printf("Can't set datatype's floating-point fields\n");
+ goto error;
+ }
+
+ if (H5Tclose(tid) < 0) {
+ H5_FAILED();
+ printf("Can't close datatype\n");
+ goto error;
+ }
+
+ return 0;
+
+error:
+ H5E_BEGIN_TRY
+ {
+ H5Tclose(tid);
+ }
+ H5E_END_TRY;
+
+ return 1;
+}
+
+/*-------------------------------------------------------------------------
* Function: test_transient
*
* Purpose: Tests transient datatypes.
@@ -9032,6 +9115,7 @@ main(void)
nerrors += test_detect();
nerrors += test_compound_1();
nerrors += test_query();
+ nerrors += test_set_fields_offset();
nerrors += test_transient(fapl);
nerrors += test_named(fapl);
nerrors += test_encode();
diff --git a/test/select_io_dset.c b/test/select_io_dset.c
index 33b1c84..1ff7fe2 100644
--- a/test/select_io_dset.c
+++ b/test/select_io_dset.c
@@ -773,7 +773,10 @@ test_cmpd_with_bkg(hid_t fid, unsigned chunked, unsigned mwbuf)
s2_t *s2_wbuf_bak = NULL;
s2_t *s2_rbuf = NULL;
char dset_name[DSET_NAME_LEN];
- int fillvalue = -1;
+ s1_t fillvalue;
+
+ /* Initialize the fill value */
+ memset(&fillvalue, 0, sizeof(s1_t));
/* Create dataset transfer property list */
if ((dxpl = H5Pcreate(H5P_DATASET_XFER)) < 0)