summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorDana Robinson <43805+derobins@users.noreply.github.com>2023-08-28 13:45:16 (GMT)
committerGitHub <noreply@github.com>2023-08-28 13:45:16 (GMT)
commit11f3fee390def4b6af0a3770db8a9f53f8805dfc (patch)
treed6e11c065b1b5c74cca10f74a97af8ac31d0ecf6 /test
parent8f9098b284b1551bae0fa9339eeeda64cc1d8641 (diff)
downloadhdf5-11f3fee390def4b6af0a3770db8a9f53f8805dfc.zip
hdf5-11f3fee390def4b6af0a3770db8a9f53f8805dfc.tar.gz
hdf5-11f3fee390def4b6af0a3770db8a9f53f8805dfc.tar.bz2
Bring strndup changes from develop (#3437)
Diffstat (limited to 'test')
-rw-r--r--test/CMakeLists.txt1
-rw-r--r--test/Makefile.am2
-rw-r--r--test/testhdf5.c1
-rw-r--r--test/testhdf5.h2
-rw-r--r--test/th5_system.c90
5 files changed, 95 insertions, 1 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index e7f9e86..3dc9ef0 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -184,6 +184,7 @@ set (testhdf5_SOURCES
${HDF5_TEST_SOURCE_DIR}/tattr.c
${HDF5_TEST_SOURCE_DIR}/tchecksum.c
${HDF5_TEST_SOURCE_DIR}/tconfig.c
+ ${HDF5_TEST_SOURCE_DIR}/th5_system.c
${HDF5_TEST_SOURCE_DIR}/tcoords.c
${HDF5_TEST_SOURCE_DIR}/tfile.c
${HDF5_TEST_SOURCE_DIR}/tgenprop.c
diff --git a/test/Makefile.am b/test/Makefile.am
index 95d9e4f..551c695 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -214,7 +214,7 @@ CHECK_CLEANFILES+=accum.h5 cmpd_dset.h5 compact_dataset.h5 dataset.h5 dset_offse
# Sources for testhdf5 executable
testhdf5_SOURCES=testhdf5.c tarray.c tattr.c tchecksum.c tconfig.c tfile.c \
- tgenprop.c th5o.c th5s.c tcoords.c tid.c titerate.c tmeta.c tmisc.c \
+ tgenprop.c th5o.c th5s.c th5_system.c tcoords.c tid.c titerate.c tmeta.c tmisc.c \
trefer.c trefstr.c tselect.c tskiplist.c tsohm.c ttime.c tunicode.c \
tvlstr.c tvltypes.c
diff --git a/test/testhdf5.c b/test/testhdf5.c
index 587d916..e4d5c3e 100644
--- a/test/testhdf5.c
+++ b/test/testhdf5.c
@@ -42,6 +42,7 @@ main(int argc, char *argv[])
/* Tests are generally arranged from least to most complexity... */
AddTest("config", test_configure, cleanup_configure, "Configure definitions", NULL);
+ AddTest("h5system", test_h5_system, cleanup_h5_system, "H5system routines", NULL);
AddTest("metadata", test_metadata, cleanup_metadata, "Encoding/decoding metadata", NULL);
AddTest("checksum", test_checksum, cleanup_checksum, "Checksum algorithm", NULL);
AddTest("skiplist", test_skiplist, NULL, "Skip Lists", NULL);
diff --git a/test/testhdf5.h b/test/testhdf5.h
index 8abe890..eb2d464 100644
--- a/test/testhdf5.h
+++ b/test/testhdf5.h
@@ -219,6 +219,7 @@ void test_iterate(void);
void test_array(void);
void test_genprop(void);
void test_configure(void);
+void test_h5_system(void);
void test_misc(void);
void test_ids(void);
void test_skiplist(void);
@@ -242,6 +243,7 @@ void cleanup_iterate(void);
void cleanup_array(void);
void cleanup_genprop(void);
void cleanup_configure(void);
+void cleanup_h5_system(void);
void cleanup_sohm(void);
void cleanup_misc(void);
void cleanup_unicode(void);
diff --git a/test/th5_system.c b/test/th5_system.c
new file mode 100644
index 0000000..e25e4a0
--- /dev/null
+++ b/test/th5_system.c
@@ -0,0 +1,90 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Copyright by The HDF Group. *
+ * All rights reserved. *
+ * *
+ * This file is part of HDF5. The full HDF5 copyright notice, including *
+ * terms governing use, modification, and redistribution, is contained in *
+ * the COPYING file, which can be found at the root of the source code *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
+ * If you do not have access to either file, you may request a copy from *
+ * help@hdfgroup.org. *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+#define H5_SYSTEM_TEST_PATH_MAX 4096
+
+/***********************************************************
+ *
+ * Test program: th5_system
+ *
+ * Testing for the routines available in H5system.c
+ *
+ *************************************************************/
+
+#include "testhdf5.h"
+
+#include "H5MMprivate.h"
+
+static void
+test_h5_strndup(void)
+{
+#ifdef H5_HAVE_WIN32_API
+ const char *const teststr = "myteststring";
+ char *str = NULL;
+
+ MESSAGE(5, ("Testing H5_strndup\n"));
+
+ /* Check that H5_strndup fails for a NULL string pointer */
+ H5E_BEGIN_TRY
+ {
+ str = H5_strndup(NULL, 20);
+ }
+ H5E_END_TRY
+ CHECK_PTR_NULL(str, "H5_strndup with NULL string pointer");
+ H5Eclear2(H5E_DEFAULT);
+
+ /* Check that H5_strndup correctly performs a 0-byte copy */
+ str = H5_strndup(teststr, 0);
+ CHECK_PTR(str, "H5_strndup for 0-byte copy");
+ if (str)
+ VERIFY_STR(str, "", "comparing H5_strndup for 0-byte copy to empty string");
+ str = H5MM_xfree(str);
+
+ /* Check that H5_strndup correctly performs partial copies */
+ str = H5_strndup(teststr, 6);
+ CHECK_PTR(str, "H5_strndup for partial copy");
+ if (str)
+ VERIFY_STR(str, "mytest", "comparing H5_strndup for partial copy to partial string");
+ str = H5MM_xfree(str);
+
+ /* Check that H5_strndup correctly performs identical copies */
+ str = H5_strndup(teststr, HDstrlen(teststr));
+ CHECK_PTR(str, "H5_strndup for identical copy");
+ if (str)
+ VERIFY_STR(str, teststr, "comparing H5_strndup for identical copy to original string");
+ str = H5MM_xfree(str);
+
+ /*
+ * Check that H5_strndup correctly performs copies when
+ * `n` is greater than the original string
+ */
+ str = H5_strndup(teststr, HDstrlen(teststr) + 2);
+ CHECK_PTR(str, "H5_strndup for larger 'n'");
+ if (str)
+ VERIFY_STR(str, teststr, "comparing H5_strndup with larger 'n' value to original string");
+ str = H5MM_xfree(str);
+#endif /* H5_HAVE_WIN32_API */
+}
+
+void
+test_h5_system(void)
+{
+ MESSAGE(5, ("Testing H5system routines\n"));
+
+ test_h5_strndup();
+}
+
+void
+cleanup_h5_system(void)
+{
+ /* Nothing to cleanup yet */
+}