summaryrefslogtreecommitdiffstats
path: root/hl/c++/test
diff options
context:
space:
mode:
Diffstat (limited to 'hl/c++/test')
-rw-r--r--hl/c++/test/CMakeLists.txt59
-rw-r--r--hl/c++/test/CMakeTests.cmake11
-rw-r--r--hl/c++/test/Makefile.am2
-rw-r--r--hl/c++/test/Makefile.in28
-rw-r--r--hl/c++/test/ptableTest.cpp600
-rw-r--r--hl/c++/test/ptableTest.h4
6 files changed, 376 insertions, 328 deletions
diff --git a/hl/c++/test/CMakeLists.txt b/hl/c++/test/CMakeLists.txt
index b48d147..9a1d6fd 100644
--- a/hl/c++/test/CMakeLists.txt
+++ b/hl/c++/test/CMakeLists.txt
@@ -1,30 +1,37 @@
-cmake_minimum_required (VERSION 3.10)
-PROJECT (HDF5_HL_CPP_TEST)
-
-#-----------------------------------------------------------------------------
-# Setup include Directories
-#-----------------------------------------------------------------------------
-INCLUDE_DIRECTORIES (${HDF5_HL_SRC_DIR}/src)
-INCLUDE_DIRECTORIES (${HDF5_HL_SRC_DIR}/c++/src)
-
-# --------------------------------------------------------------------
-# Add in the unit tests for the packet table c++ wrapper
-# --------------------------------------------------------------------
-
-INCLUDE_DIRECTORIES (${HDF5_TEST_SRC_DIR})
-INCLUDE_DIRECTORIES (${HDF5_HL_SRC_DIR}/test)
-INCLUDE_DIRECTORIES (${HDF5_CPP_SRC_DIR}/src)
+cmake_minimum_required (VERSION 3.12)
+project (HDF5_HL_CPP_TEST CXX)
add_executable (hl_ptableTest ${HDF5_HL_CPP_TEST_SOURCE_DIR}/ptableTest.cpp)
-TARGET_C_PROPERTIES (hl_ptableTest STATIC " " " ")
-target_link_libraries (
- hl_ptableTest
- ${HDF5_LIB_TARGET}
- ${HDF5_TEST_LIB_TARGET}
- ${HDF5_CPP_LIB_TARGET}
- ${HDF5_HL_LIB_TARGET}
- ${HDF5_HL_CPP_LIB_TARGET}
-)
+target_compile_options(hl_ptableTest PRIVATE "${HDF5_CMAKE_CXX_FLAGS}")
+target_include_directories (hl_ptableTest PRIVATE "${HDF5_HL_SRC_DIR}/test;${HDF5_SRC_DIR};${HDF5_SRC_BINARY_DIR};$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_C_INCLUDE_DIRS}>")
+if (NOT BUILD_SHARED_LIBS)
+ TARGET_C_PROPERTIES (hl_ptableTest STATIC)
+ target_link_libraries (hl_ptableTest PRIVATE
+ ${HDF5_LIB_TARGET}
+ ${HDF5_TEST_LIB_TARGET}
+ ${HDF5_CPP_LIB_TARGET}
+ ${HDF5_HL_LIB_TARGET}
+ ${HDF5_HL_CPP_LIB_TARGET}
+ )
+else ()
+ TARGET_C_PROPERTIES (hl_ptableTest SHARED)
+ target_link_libraries (hl_ptableTest PRIVATE
+ ${HDF5_LIBSH_TARGET}
+ ${HDF5_TEST_LIBSH_TARGET}
+ ${HDF5_CPP_LIBSH_TARGET}
+ ${HDF5_HL_LIBSH_TARGET}
+ ${HDF5_HL_CPP_LIBSH_TARGET}
+ )
+endif ()
set_target_properties (hl_ptableTest PROPERTIES FOLDER test/hl/cpp)
-include (CMakeTests.cmake)
+#-----------------------------------------------------------------------------
+# Add Target to clang-format
+#-----------------------------------------------------------------------------
+if (HDF5_ENABLE_FORMATTERS)
+ clang_format (HDF5_HL_CPP_TEST_FORMAT hl_ptableTest)
+endif ()
+
+if (HDF5_TEST_CPP AND HDF5_TEST_SERIAL)
+ include (CMakeTests.cmake)
+endif ()
diff --git a/hl/c++/test/CMakeTests.cmake b/hl/c++/test/CMakeTests.cmake
index 785abca..28ee5df 100644
--- a/hl/c++/test/CMakeTests.cmake
+++ b/hl/c++/test/CMakeTests.cmake
@@ -5,7 +5,7 @@
# 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://support.hdfgroup.org/ftp/HDF5/releases.
+# 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.
#
@@ -16,10 +16,16 @@
##############################################################################
##############################################################################
+add_test (
+ NAME HL_CPP_ptableTest-clear-objects
+ COMMAND ${CMAKE_COMMAND}
+ -E remove ${example}.txt
+)
if (HDF5_ENABLE_USING_MEMCHECKER)
- add_test (NAME HL_CPP_ptableTest COMMAND $<TARGET_FILE:hl_ptableTest>)
+ add_test (NAME HL_CPP_ptableTest COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:hl_ptableTest>)
else ()
add_test (NAME HL_CPP_ptableTest COMMAND "${CMAKE_COMMAND}"
+ -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}"
-D "TEST_PROGRAM=$<TARGET_FILE:hl_ptableTest>"
-D "TEST_ARGS:STRING="
-D "TEST_EXPECT=0"
@@ -30,3 +36,4 @@ else ()
-P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake"
)
endif ()
+set_tests_properties (HL_CPP_ptableTest PROPERTIES DEPENDS HL_CPP_ptableTest-clear-objects)
diff --git a/hl/c++/test/Makefile.am b/hl/c++/test/Makefile.am
index 7031c34..a6759f3 100644
--- a/hl/c++/test/Makefile.am
+++ b/hl/c++/test/Makefile.am
@@ -6,7 +6,7 @@
# 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://support.hdfgroup.org/ftp/HDF5/releases.
+# 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.
##
diff --git a/hl/c++/test/Makefile.in b/hl/c++/test/Makefile.in
index 388c00c..33c2829 100644
--- a/hl/c++/test/Makefile.in
+++ b/hl/c++/test/Makefile.in
@@ -22,7 +22,7 @@
# 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://support.hdfgroup.org/ftp/HDF5/releases.
+# 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.
#
@@ -401,14 +401,14 @@ AMTAR = @AMTAR@
# AM_CFLAGS is an automake construct which should be used by Makefiles
# instead of CFLAGS, as CFLAGS is reserved solely for the user to define.
# This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well.
-AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@
+AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@ @H5_ECFLAGS@
# Include directories
AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src \
-I$(top_srcdir)/c++/src -I$(top_srcdir)/hl/src \
-I$(top_srcdir)/hl/c++/src -I$(top_srcdir)/test \
-I$(top_builddir)/hl/test -I$(top_srcdir)/hl/test
-AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@
+AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@ @H5_ECXXFLAGS@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@
AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@
@@ -423,6 +423,7 @@ CC = @CC@
CCDEPMODE = @CCDEPMODE@
CC_VERSION = @CC_VERSION@
CFLAGS = @CFLAGS@
+CLANG_SANITIZE_CHECKS = @CLANG_SANITIZE_CHECKS@
CLEARFILEBUF = @CLEARFILEBUF@
CODESTACK = @CODESTACK@
CONFIG_DATE = @CONFIG_DATE@
@@ -441,6 +442,7 @@ DEFAULT_API_VERSION = @DEFAULT_API_VERSION@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DEPRECATED_SYMBOLS = @DEPRECATED_SYMBOLS@
+DEV_WARNINGS = @DEV_WARNINGS@
DIRECT_VFD = @DIRECT_VFD@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
@@ -468,6 +470,8 @@ GREP = @GREP@
H5_CFLAGS = @H5_CFLAGS@
H5_CPPFLAGS = @H5_CPPFLAGS@
H5_CXXFLAGS = @H5_CXXFLAGS@
+H5_ECFLAGS = @H5_ECFLAGS@
+H5_ECXXFLAGS = @H5_ECXXFLAGS@
H5_FCFLAGS = @H5_FCFLAGS@
H5_FORTRAN_SHARED = @H5_FORTRAN_SHARED@
H5_LDFLAGS = @H5_LDFLAGS@
@@ -475,9 +479,12 @@ H5_VERSION = @H5_VERSION@
HADDR_T = @HADDR_T@
HAVE_DMALLOC = @HAVE_DMALLOC@
HAVE_FORTRAN_2003 = @HAVE_FORTRAN_2003@
+HAVE_LIBHDFS = @HAVE_LIBHDFS@
HAVE_PTHREAD = @HAVE_PTHREAD@
HDF5_HL = @HDF5_HL@
HDF5_INTERFACES = @HDF5_INTERFACES@
+HDF5_TESTS = @HDF5_TESTS@
+HDF5_TOOLS = @HDF5_TOOLS@
HDF_CXX = @HDF_CXX@
HDF_FORTRAN = @HDF_FORTRAN@
HDF_FORTRAN2003 = @HDF_FORTRAN2003@
@@ -493,6 +500,7 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INSTRUMENT = @INSTRUMENT@
INSTRUMENT_LIBRARY = @INSTRUMENT_LIBRARY@
+JNI_LDFLAGS = @JNI_LDFLAGS@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
@@ -514,6 +522,7 @@ NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJECT_NAMELEN_DEFAULT_F = @OBJECT_NAMELEN_DEFAULT_F@
OBJEXT = @OBJEXT@
+OPTIMIZATION = @OPTIMIZATION@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
@@ -526,8 +535,10 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
PARALLEL = @PARALLEL@
PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
+PROFILING = @PROFILING@
RANLIB = @RANLIB@
ROOT = @ROOT@
+ROS3_VFD = @ROS3_VFD@
RUNPARALLEL = @RUNPARALLEL@
RUNSERIAL = @RUNSERIAL@
R_INTEGER = @R_INTEGER@
@@ -541,6 +552,7 @@ STATIC_EXEC = @STATIC_EXEC@
STATIC_SHARED = @STATIC_SHARED@
STRICT_FORMAT_CHECKS = @STRICT_FORMAT_CHECKS@
STRIP = @STRIP@
+SYMBOLS = @SYMBOLS@
TESTPARALLEL = @TESTPARALLEL@
THREADSAFE = @THREADSAFE@
TIME = @TIME@
@@ -582,6 +594,7 @@ docdir = $(exec_prefix)/doc
dvidir = @dvidir@
enable_shared = @enable_shared@
enable_static = @enable_static@
+examplesdir = @examplesdir@
exec_prefix = @exec_prefix@
fortran_linux_linker_option = @fortran_linux_linker_option@
host = @host@
@@ -677,11 +690,11 @@ ptableTest_SOURCES = ptableTest.cpp
# Tell conclude.am that these are C++ tests.
CXX_API = yes
-# Automake needs to be taught how to build lib, dyn, progs, and tests targets.
+# Automake needs to be taught how to build lib, progs and tests targets.
# These will be filled in automatically for the most part (e.g.,
# lib_LIBRARIES are built for lib target), but EXTRA_LIB, EXTRA_PROG, and
# EXTRA_TEST variables are supplied to allow the user to force targets to
-# be built at certain times.
+# be built at certain times.
LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES) \
$(noinst_LTLIBRARIES) $(check_LIBRARIES) $(check_LTLIBRARIES) $(EXTRA_LIB)
@@ -1153,6 +1166,7 @@ uninstall-am:
help:
@$(top_srcdir)/bin/makehelp
+
# lib/progs/tests targets recurse into subdirectories. build-* targets
# build files in this directory.
build-lib: $(LIB)
@@ -1188,7 +1202,7 @@ all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS)
# make install-doc doesn't do anything outside of doc directory, but
# Makefiles should recognize it.
# UPDATE: docs no longer reside in this build tree, so this target
-# is depreciated.
+# is deprecated.
install-doc uninstall-doc:
@echo "Nothing to be done."
@@ -1349,7 +1363,7 @@ build-check-p: $(LIB) $(PROGS) $(chk_TESTS)
echo "**** Hint ****"; \
echo "Parallel test files reside in the current directory" \
"by default."; \
- echo "Set HDF5_PARAPREFIX to use another directory. E.g.,"; \
+ echo "Set HDF5_PARAPREFIX to use another directory. e.g.,"; \
echo " HDF5_PARAPREFIX=/PFS/user/me"; \
echo " export HDF5_PARAPREFIX"; \
echo " make check"; \
diff --git a/hl/c++/test/ptableTest.cpp b/hl/c++/test/ptableTest.cpp
index 340912e..bf60402 100644
--- a/hl/c++/test/ptableTest.cpp
+++ b/hl/c++/test/ptableTest.cpp
@@ -6,7 +6,7 @@
* 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://support.hdfgroup.org/ftp/HDF5/releases. *
+ * 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. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@@ -22,41 +22,40 @@ using namespace std;
#define TEST_FILE "packettest.h5"
/* Main test function */
-int main(void)
+int
+main(void)
{
herr_t err;
herr_t num_errors = 0;
/* Create new HDF5 file */
fileID = H5Fcreate(TEST_FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
- if(fileID <0)
- {
+ if (fileID < 0) {
fprintf(stderr, "Couldn't create file.\n");
num_errors = 1;
}
else {
- num_errors += BasicTest();
+ num_errors += BasicTest();
- num_errors += TestCompoundDatatype();
+ num_errors += TestCompoundDatatype();
- num_errors += TestGetPacket();
+ num_errors += TestGetPacket();
- num_errors += TestGetNext();
+ num_errors += TestGetNext();
- num_errors += TestCompress();
+ num_errors += TestCompress();
- num_errors += TestErrors();
+ num_errors += TestErrors();
- num_errors += SystemTest();
+ num_errors += SystemTest();
- /* Test data corruption in packed structs */
- num_errors += TestHDFFV_9758();
+ /* Test data corruption in packed structs */
+ num_errors += TestHDFFV_9758();
/* Terminate access to the file. */
err = H5Fclose(fileID);
- if( err < 0 )
- {
+ if (err < 0) {
fprintf(stderr, "Failed to close file.\n");
num_errors++;
}
@@ -66,37 +65,39 @@ int main(void)
}
if (num_errors == 0)
- /* ALL TESTS PASSED */
- return 0;
+ /* ALL TESTS PASSED */
+ return 0;
else
- /* ERRORS */
- return -1;
+ /* ERRORS */
+ return -1;
}
-const char* BASICTEST_PT("/basicTest");
-int BasicTest()
+const char *BASICTEST_PT("/basicTest");
+int
+BasicTest()
{
- herr_t err;
- int myRecord;
+ herr_t err;
+ int myRecord;
hsize_t count;
- int error;
+ int error;
- TESTING("basic functionality")
+ printf("Testing %-62s", "basic functionality");
+ HDfflush(stdout);
FL_PacketTable wrapper(fileID, H5P_DEFAULT, BASICTEST_PT, H5T_NATIVE_INT, 1);
- if(! wrapper.IsValid())
- goto error;
+ if (!wrapper.IsValid())
+ goto error;
/* Ensure initial count is zero */
count = wrapper.GetPacketCount(error);
- if(count != 0 || error != 0)
- goto error;
+ if (count != 0 || error != 0)
+ goto error;
myRecord = 1;
/* add some records test */
err = wrapper.AppendPacket(&myRecord);
- if(err < 0)
+ if (err < 0)
goto error;
myRecord = 2;
@@ -105,22 +106,22 @@ int BasicTest()
/* get number of records test */
count = wrapper.GetPacketCount();
- if(count != 2)
- goto error;
+ if (count != 2)
+ goto error;
/* get records test */
err = wrapper.GetPacket(0, &myRecord);
- if(err < 0)
- goto error;
+ if (err < 0)
+ goto error;
- if(myRecord != 1)
- goto error;
+ if (myRecord != 1)
+ goto error;
err = wrapper.GetPacket(1, &myRecord);
- if(err < 0)
- goto error;
- if(myRecord != 2)
- goto error;
+ if (err < 0)
+ goto error;
+ if (myRecord != 2)
+ goto error;
PASSED();
return 0;
@@ -130,57 +131,58 @@ error:
return 1;
}
-const char* CMPDTEST_PT("/compoundTest");
-int TestCompoundDatatype()
+const char *CMPDTEST_PT("/compoundTest");
+int
+TestCompoundDatatype()
{
- hid_t dtypeID;
+ hid_t dtypeID;
hsize_t count;
- int error;
+ int error;
- TESTING("compound datatypes")
+ printf("Testing %-62s", "compound datatypes");
+ HDfflush(stdout);
/* Create compound datatype */
- typedef struct compoundType
- {
+ typedef struct {
short a, b, c;
- int e;
+ int e;
} compoundType;
- dtypeID = H5Tcreate( H5T_COMPOUND, sizeof(compoundType));
+ dtypeID = H5Tcreate(H5T_COMPOUND, sizeof(compoundType));
- H5Tinsert(dtypeID, "abbey", HOFFSET( compoundType, a ), H5T_NATIVE_SHORT);
- H5Tinsert(dtypeID, "bert", HOFFSET( compoundType, b ), H5T_NATIVE_SHORT);
- H5Tinsert(dtypeID, "charlie", HOFFSET( compoundType, c ), H5T_NATIVE_SHORT);
- H5Tinsert(dtypeID, "ebert", HOFFSET( compoundType, e ), H5T_NATIVE_INT);
+ H5Tinsert(dtypeID, "abbey", HOFFSET(compoundType, a), H5T_NATIVE_SHORT);
+ H5Tinsert(dtypeID, "bert", HOFFSET(compoundType, b), H5T_NATIVE_SHORT);
+ H5Tinsert(dtypeID, "charlie", HOFFSET(compoundType, c), H5T_NATIVE_SHORT);
+ H5Tinsert(dtypeID, "ebert", HOFFSET(compoundType, e), H5T_NATIVE_INT);
/* Create packet table using default property list. */
FL_PacketTable wrapper(fileID, H5P_DEFAULT, CMPDTEST_PT, dtypeID, 1);
- if(! wrapper.IsValid())
- goto error;
+ if (!wrapper.IsValid())
+ goto error;
compoundType first;
first.a = 1;
first.b = first.c = 3;
- first.e = 5;
+ first.e = 5;
/* Write packet */
wrapper.AppendPacket(&first);
count = wrapper.GetPacketCount(error);
- if(count != 1)
- goto error;
+ if (count != 1)
+ goto error;
first.a = first.b = first.c = 0;
- first.e = 0;
+ first.e = 0;
/* Read packet back */
wrapper.GetPacket(0, &first);
- if(first.a != 1)
- goto error;
- if(first.e != 5)
- goto error;
+ if (first.a != 1)
+ goto error;
+ if (first.e != 5)
+ goto error;
PASSED();
@@ -189,69 +191,71 @@ int TestCompoundDatatype()
error:
- H5E_BEGIN_TRY {
- H5Tclose(dtypeID);
- } H5E_END_TRY;
-
+ H5E_BEGIN_TRY { H5Tclose(dtypeID); }
+ H5E_END_TRY;
H5_FAILED();
return 1;
}
-const char* GETNEXT_PT("/TestGetNext");
-int TestGetNext()
+const char *GETNEXT_PT("/TestGetNext");
+int
+TestGetNext()
{
int error;
int record;
int records[2];
int i;
- TESTING("GetNextPacket")
+ printf("Testing %-62s", "GetNextPacket");
+ HDfflush(stdout);
/* Create a dataset */
FL_PacketTable wrapper(fileID, H5P_DEFAULT, GETNEXT_PT, H5T_NATIVE_INT, 500);
- if(! wrapper.IsValid())
- goto error;
+ if (!wrapper.IsValid())
+ goto error;
/* Append 5 records to the dataset */
- for(record = 1; record < 6; record++)
+ for (record = 1; record < 6; record++)
wrapper.AppendPacket(&record);
/* Ensure that we can interate through the records and get the right ones */
- for(i = 1; i < 6; i++)
- {
+ for (i = 1; i < 6; i++) {
wrapper.GetNextPacket(&record);
- if(record != i)
- goto error;
+ if (record != i)
+ goto error;
}
/* Reset the index and check that it worked */
wrapper.ResetIndex();
- if(wrapper.GetIndex(error) != 0) goto error;
- if(error < 0) goto error;
+ if (wrapper.GetIndex(error) != 0)
+ goto error;
+ if (error < 0)
+ goto error;
/* Ensure that we can interate through the records and get the right ones */
- for(i = 1; i < 6; i++)
- {
+ for (i = 1; i < 6; i++) {
error = wrapper.GetNextPacket(&record);
- if(record != i || error <0)
- goto error;
+ if (record != i || error < 0)
+ goto error;
}
wrapper.SetIndex(1);
- if(wrapper.GetIndex(error) != 1) goto error;
- if(error < 0) goto error;
+ if (wrapper.GetIndex(error) != 1)
+ goto error;
+ if (error < 0)
+ goto error;
/* Ensure we can get multiple records with our index pointer */
wrapper.GetNextPackets(2, records);
- if(records[0] != 2 || records[1] != 3)
- goto error;
+ if (records[0] != 2 || records[1] != 3)
+ goto error;
/* Ensure our pointer was updated correctly */
wrapper.GetNextPacket(&record);
- if(record != 4)
- goto error;
+ if (record != 4)
+ goto error;
PASSED();
return 0;
@@ -261,27 +265,29 @@ error:
return 1;
}
-const char* COMPRESS_PT("/compressTest");
-int TestCompress()
+const char *COMPRESS_PT("/compressTest");
+int
+TestCompress()
{
- unsigned int flags = 0;
- unsigned int config = 0;
- size_t cd_nelemts = 0;
-
- TESTING("compression")
#ifdef H5_HAVE_FILTER_DEFLATE
+ unsigned int flags = 0;
+ unsigned int config = 0;
+ size_t cd_nelemts = 0;
+
+ printf("Testing %-62s", "compression");
+ HDfflush(stdout);
try {
- /* Prepare property list to set compression, randomly use deflate */
- DSetCreatPropList dscreatplist;
- dscreatplist.setDeflate(6);
+ /* Prepare property list to set compression, randomly use deflate */
+ DSetCreatPropList dscreatplist;
+ dscreatplist.setDeflate(6);
/* Create packet table with compression. */
FL_PacketTable wrapper(fileID, COMPRESS_PT, H5T_NATIVE_CHAR, 100, dscreatplist.getId());
- /* Close the property list */
- dscreatplist.close();
+ /* Close the property list */
+ dscreatplist.close();
- /* Verify that the deflate filter is set */
+ /* Verify that the deflate filter is set */
/* Create an HDF5 C++ file object */
H5File file;
@@ -293,52 +299,54 @@ int TestCompress()
DSetCreatPropList dcpl = dset.getCreatePlist();
- char filter_name[8];
+ char filter_name[8];
dcpl.getFilterById(H5Z_FILTER_DEFLATE, flags, cd_nelemts, NULL, 8, filter_name, config);
- if (HDstrncmp(filter_name, "deflate", 7) != 0)
- H5_FAILED()
- } catch (Exception e) {
- H5_FAILED();
- return 1;
+ if (HDstrncmp(filter_name, "deflate", 7) != 0)
+ H5_FAILED()
+ }
+ catch (Exception e) {
+ H5_FAILED();
+ return 1;
}
PASSED();
#else
SKIPPED();
- puts(" deflate filter not enabled");
+ HDputs(" deflate filter not enabled");
#endif /* H5_HAVE_FILTER_DEFLATE */
return 0;
}
-const char* PT_TESTGETPT = "/TestGetPacket";
-int TestGetPacket()
+const char *PT_TESTGETPT = "/TestGetPacket";
+int
+TestGetPacket()
{
int record;
int theRecs[3];
int i;
- TESTING("GetPacket")
+ printf("Testing %-62s", "GetPacket");
+ HDfflush(stdout);
/* Create a dataset. Does not need to specify property list because
there is no compression. */
FL_PacketTable wrapper(fileID, PT_TESTGETPT, H5T_NATIVE_INT, 1);
- if(! wrapper.IsValid())
- goto error;
+ if (!wrapper.IsValid())
+ goto error;
/* Append 5 records to the dataset */
- for(record = 1; record < 6; record++)
+ for (record = 1; record < 6; record++)
wrapper.AppendPacket(&record);
/* Ensure that the records were written properly */
wrapper.GetPacket(1, &record);
- if(record != 2)
- goto error;
+ if (record != 2)
+ goto error;
/* Ensure that we can retrieve multiple records */
wrapper.GetPackets(1, 3, theRecs);
- for(i = 0; i < 3; i++)
- {
- if(theRecs[i] != i+2)
- goto error;
+ for (i = 0; i < 3; i++) {
+ if (theRecs[i] != i + 2)
+ goto error;
}
PASSED();
@@ -349,108 +357,116 @@ error:
return 1;
}
-const char* PT_TESTERROR = "/TestErrors";
+const char *PT_TESTERROR = "/TestErrors";
-int TestErrors()
+int
+TestErrors()
{
- TESTING("error conditions")
+ printf("Testing %-62s", "error conditions");
+ HDfflush(stdout);
/* Create a dataset */
FL_PacketTable wrapper(fileID, PT_TESTERROR, H5T_NATIVE_INT, 1);
- if(! wrapper.IsValid())
- goto error;
+ if (!wrapper.IsValid())
+ goto error;
int record;
int records[3];
int error;
/* Append 4 records to the dataset */
- for(record = 1; record < 5; record++)
+ for (record = 1; record < 5; record++)
wrapper.AppendPacket(&record);
/* Try to confuse functions with bad indexes */
error = wrapper.GetPacket(static_cast<unsigned>(-1), &record);
- if(error >= 0)
- goto error;
+ if (error >= 0)
+ goto error;
error = wrapper.GetPacket(4, &record);
- if(error >= 0)
- goto error;
+ if (error >= 0)
+ goto error;
error = wrapper.GetPacket(static_cast<unsigned>(-250), &record);
- if(error >= 0)
- goto error;
+ if (error >= 0)
+ goto error;
error = wrapper.GetPacket(3000, &record);
- if(error >= 0)
- goto error;
+ if (error >= 0)
+ goto error;
error = wrapper.GetPacket(1, &record);
- if(error < 0)
- goto error;
+ if (error < 0)
+ goto error;
error = wrapper.GetPackets(static_cast<unsigned>(-1), 1, records);
- if(error >= 0)
- goto error;
+ if (error >= 0)
+ goto error;
error = wrapper.GetPackets(2, 4, records);
- if(error >= 0)
- goto error;
+ if (error >= 0)
+ goto error;
error = wrapper.GetPackets(static_cast<unsigned>(-60), static_cast<unsigned>(-62), records);
- if(error >= 0)
- goto error;
+ if (error >= 0)
+ goto error;
error = wrapper.GetPackets(10, 12, records);
- if(error >= 0)
- goto error;
+ if (error >= 0)
+ goto error;
error = wrapper.GetPackets(0, 2, records);
- if(error < 0)
- goto error;
+ if (error < 0)
+ goto error;
error = wrapper.GetPackets(2, 0, records);
- if(error >= 0)
- goto error;
+ if (error >= 0)
+ goto error;
error = wrapper.GetPackets(1, 1, records);
- if(error < 0)
- goto error;
+ if (error < 0)
+ goto error;
error = wrapper.GetPackets(1, 3, records);
- if(error < 0)
- goto error;
+ if (error < 0)
+ goto error;
wrapper.ResetIndex();
error = wrapper.SetIndex(static_cast<unsigned>(-1));
- if(error >= 0)
- goto error;
- if(wrapper.GetIndex(error) != 0) goto error;
- if(error < 0) goto error;
+ if (error >= 0)
+ goto error;
+ if (wrapper.GetIndex(error) != 0)
+ goto error;
+ if (error < 0)
+ goto error;
error = wrapper.GetNextPacket(&record);
- if(error < 0)
- goto error;
- if(record != 1)
- goto error;
- if(wrapper.GetIndex(error) != 1) goto error;
- if(error < 0) goto error;
+ if (error < 0)
+ goto error;
+ if (record != 1)
+ goto error;
+ if (wrapper.GetIndex(error) != 1)
+ goto error;
+ if (error < 0)
+ goto error;
error = wrapper.SetIndex(20);
- if(error >= 0)
- goto error;
+ if (error >= 0)
+ goto error;
error = wrapper.GetNextPacket(&record);
- if(error < 0)
- goto error;
- if(record != 2)
- goto error;
+ if (error < 0)
+ goto error;
+ if (record != 2)
+ goto error;
wrapper.SetIndex(3);
error = wrapper.GetNextPacket(&record);
- if(error < 0)
- goto error;
- if(record != 4)
- goto error;
- if(wrapper.GetIndex(error) != 4) goto error;
- if(error < 0) goto error;
+ if (error < 0)
+ goto error;
+ if (record != 4)
+ goto error;
+ if (wrapper.GetIndex(error) != 4)
+ goto error;
+ if (error < 0)
+ goto error;
error = wrapper.GetNextPacket(&record);
- if(error >= 0)
- goto error;
+ if (error >= 0)
+ goto error;
wrapper.ResetIndex();
error = wrapper.GetNextPackets(10, records);
- if(error >= 0)
- goto error;
+ if (error >= 0)
+ goto error;
error = wrapper.GetNextPackets(0, records);
- if(error < 0)
- goto error;
+ if (error < 0)
+ goto error;
PASSED();
return 0;
@@ -460,44 +476,44 @@ error:
return 1;
}
-const char* PT_SYSTEMTST1 = "/SystemTest1";
-const char* PT_SYSTEMTST2 = "/SystemTest2";
-int SystemTest()
+const char *PT_SYSTEMTST1 = "/SystemTest1";
+const char *PT_SYSTEMTST2 = "/SystemTest2";
+int
+SystemTest()
{
- TESTING("multiple datatypes")
+ printf("Testing %-62s", "multiple datatypes");
+ HDfflush(stdout);
- hid_t dtypeID1, dtypeID2;
+ hid_t dtypeID1, dtypeID2;
hsize_t count;
- int error;
+ int error;
/* Creating two inter-related datatypes. Create two datasets and put
* one datatype in each. */
- typedef struct compoundType
- {
+ typedef struct {
short a, b, c;
- int e;
+ int e;
} compoundType;
dtypeID1 = H5Tcreate(H5T_COMPOUND, sizeof(compoundType));
- H5Tinsert(dtypeID1, "abbey", HOFFSET( compoundType, a ), H5T_NATIVE_SHORT);
- H5Tinsert(dtypeID1, "bert", HOFFSET( compoundType, b ), H5T_NATIVE_SHORT);
- H5Tinsert(dtypeID1, "charlie", HOFFSET( compoundType, c ), H5T_NATIVE_SHORT);
- H5Tinsert(dtypeID1, "ebert", HOFFSET( compoundType, e ), H5T_NATIVE_INT);
+ H5Tinsert(dtypeID1, "abbey", HOFFSET(compoundType, a), H5T_NATIVE_SHORT);
+ H5Tinsert(dtypeID1, "bert", HOFFSET(compoundType, b), H5T_NATIVE_SHORT);
+ H5Tinsert(dtypeID1, "charlie", HOFFSET(compoundType, c), H5T_NATIVE_SHORT);
+ H5Tinsert(dtypeID1, "ebert", HOFFSET(compoundType, e), H5T_NATIVE_INT);
- typedef struct cType2
- {
- char f;
+ typedef struct {
+ char f;
compoundType g;
} cType2;
dtypeID2 = H5Tcreate(H5T_COMPOUND, sizeof(cType2));
- H5Tinsert(dtypeID2, "f", HOFFSET( cType2, f ), H5T_NATIVE_CHAR);
- H5Tinsert(dtypeID2, "g", HOFFSET( cType2, g ), dtypeID1);
+ H5Tinsert(dtypeID2, "f", HOFFSET(cType2, f), H5T_NATIVE_CHAR);
+ H5Tinsert(dtypeID2, "g", HOFFSET(cType2, g), dtypeID1);
cType2 ct2[10];
- ct2[0].f = 'h';
+ ct2[0].f = 'h';
ct2[0].g.a = 9;
ct2[0].g.b = -13;
ct2[0].g.c = 0;
@@ -507,17 +523,17 @@ int SystemTest()
FL_PacketTable wrapper1(fileID, PT_SYSTEMTST1, dtypeID1, 1);
FL_PacketTable wrapper2(fileID, H5P_DEFAULT, PT_SYSTEMTST2, dtypeID2, 1);
- if(! wrapper1.IsValid())
- goto error;
- if(! wrapper2.IsValid())
- goto error;
+ if (!wrapper1.IsValid())
+ goto error;
+ if (!wrapper2.IsValid())
+ goto error;
/* Write and read packets, ensure that nothing is unusual */
wrapper2.AppendPacket(ct2);
count = wrapper1.GetPacketCount();
- if(count != 0)
- goto error;
+ if (count != 0)
+ goto error;
compoundType ct1[10];
ct1[0].a = 31;
@@ -534,13 +550,17 @@ int SystemTest()
wrapper1.ResetIndex();
wrapper1.GetNextPacket(&ct1[1]);
wrapper2.GetPacket(1, &ct2[2]);
- if(wrapper1.GetIndex(error) != 1) goto error;
- if(error < 0) goto error;
- if(wrapper2.GetIndex(error) != 0) goto error;
- if(error < 0) goto error;
+ if (wrapper1.GetIndex(error) != 1)
+ goto error;
+ if (error < 0)
+ goto error;
+ if (wrapper2.GetIndex(error) != 0)
+ goto error;
+ if (error < 0)
+ goto error;
- if(ct1[1].b != ct2[2].g.b)
- goto error;
+ if (ct1[1].b != ct2[2].g.b)
+ goto error;
H5Tclose(dtypeID1);
H5Tclose(dtypeID2);
@@ -549,10 +569,12 @@ int SystemTest()
return 0;
error:
- H5E_BEGIN_TRY {
+ H5E_BEGIN_TRY
+ {
H5Tclose(dtypeID1);
H5Tclose(dtypeID2);
- } H5E_END_TRY;
+ }
+ H5E_END_TRY;
H5_FAILED();
return 1;
@@ -560,120 +582,117 @@ error:
/*-------------------------------------------------------------------------
* TestHDFFV_9758(): Test that a packet table with compound datatype which
- * contains string type can be created and written correctly. (HDFFV-9758)
+ * contains string type can be created and written correctly. (HDFFV-9758)
*
* Notes:
- * Previously, data of the field that follows the string was read back
- * as garbage when #pragma pack(1) is used.
+ * Previously, data of the field that follows the string was read back
+ * as garbage when #pragma pack(1) is used.
* 2016/10/20 -BMR
* Updated:
- * #pragma pack(1) caused failure on Emu because Sparc cannot
- * access misaligned data. Changed it to pack() to do the
- * default alignment.
+ * #pragma pack(1) caused failure on Emu because Sparc cannot
+ * access misaligned data. Changed it to pack() to do the
+ * default alignment.
* 2016/10/25 -BMR
*-------------------------------------------------------------------------
*/
-#pragma pack() // default alignment
-const char* ABHI_PT("/abhiTest");
-const hsize_t NUM_PACKETS = 5;
-const int STRING_LENGTH = 19; // including terminating NULL
-int TestHDFFV_9758()
+#pragma pack() // default alignment
+const char * ABHI_PT("/abhiTest");
+const hsize_t NUM_PACKETS = 5;
+const int STRING_LENGTH = 19; // including terminating NULL
+int
+TestHDFFV_9758()
{
- hid_t strtype;
- hid_t compound_type;
+ hid_t strtype;
+ hid_t compound_type;
herr_t err;
- struct s1_t
- {
- int a;
- float b;
+ struct s1_t {
+ int a;
+ float b;
double c;
- char d[STRING_LENGTH]; // null terminated string
- int e;
+ char d[STRING_LENGTH]; // null terminated string
+ int e;
};
s1_t s1[NUM_PACKETS];
-
- for (hsize_t i = 0; i < NUM_PACKETS; i++)
- {
+
+ for (hsize_t i = 0; i < NUM_PACKETS; i++) {
s1[i].a = i;
s1[i].b = 1.f * static_cast<float>(i * i);
s1[i].c = 1. / (i + 1);
- sprintf(s1[i].d, "string%d", (int)i);
- s1[i].e = 100+i;
+ HDsprintf(s1[i].d, "string%d", (int)i);
+ s1[i].e = 100 + i;
}
- TESTING("data corruption in packed structs (HDFFV-9758)")
+ printf("Testing %-62s", "data corruption in packed structs (HDFFV-9758)");
+ HDfflush(stdout);
// Build a compound datatype
compound_type = H5Tcreate(H5T_COMPOUND, sizeof(s1_t));
if (compound_type < 0)
- goto error;
-
+ goto error;
+
err = H5Tinsert(compound_type, "a_name", HOFFSET(s1_t, a), H5T_NATIVE_INT);
if (err < 0)
- goto error;
+ goto error;
err = H5Tinsert(compound_type, "b_name", HOFFSET(s1_t, b), H5T_NATIVE_FLOAT);
if (err < 0)
- goto error;
+ goto error;
err = H5Tinsert(compound_type, "c_name", HOFFSET(s1_t, c), H5T_NATIVE_DOUBLE);
if (err < 0)
- goto error;
+ goto error;
- strtype = H5Tcopy (H5T_C_S1);
+ strtype = H5Tcopy(H5T_C_S1);
if (compound_type < 0)
- goto error;
- err = H5Tset_size (strtype, STRING_LENGTH); /* create string */
+ goto error;
+ err = H5Tset_size(strtype, STRING_LENGTH); /* create string */
if (err < 0)
- goto error;
+ goto error;
err = H5Tinsert(compound_type, "d_name", HOFFSET(s1_t, d), strtype);
if (err < 0)
- goto error;
+ goto error;
err = H5Tinsert(compound_type, "e_name", HOFFSET(s1_t, e), H5T_NATIVE_INT);
if (err < 0)
- goto error;
+ goto error;
{ // so ptable will go out of scope before PASSED
- // Create a packet table
- FL_PacketTable ptable(fileID, "/examplePacketTable", compound_type, 1);
- if (!ptable.IsValid())
- goto error;
+ // Create a packet table
+ FL_PacketTable ptable(fileID, "/examplePacketTable", compound_type, 1);
+ if (!ptable.IsValid())
+ goto error;
+
+ // Add packets to the table
+ for (size_t i = 0; i < NUM_PACKETS; i++) {
+ /* Appends one packet at the current position */
+ err = ptable.AppendPacket(s1 + i);
+ if (err < 0)
+ goto error;
+ }
- // Add packets to the table
- for (size_t i = 0; i < NUM_PACKETS; i++)
- {
- /* Appends one packet at the current position */
- err = ptable.AppendPacket(s1 + i);
- if (err < 0) goto error;
- }
+ // Check packet count
+ const hsize_t count = ptable.GetPacketCount(err);
+ if (err < 0)
+ goto error;
- // Check packet count
- const hsize_t count = ptable.GetPacketCount(err);
- if (err < 0)
- goto error;
-
- if (count != NUM_PACKETS)
- {
- std::cerr
- << "Number of packets in packet table should be " << NUM_PACKETS
- << " but is " << count << endl;
- }
+ if (count != NUM_PACKETS) {
+ std::cerr << "Number of packets in packet table should be " << NUM_PACKETS << " but is " << count
+ << endl;
+ }
- // Read and verify the data
- ptable.ResetIndex();
- for (size_t i = 0; i < NUM_PACKETS; i++)
- {
- s1_t s2;
- memset(&s2, 0, sizeof(s1_t));
- err = ptable.GetNextPacket(&s2);
- if (err < 0)
- goto error;
-
- if (s2.a != s1[i].a || s2.e != s1[i].e)
- goto error;
- else if (HDstrcmp(s2.d, s1[i].d))
- goto error;
- }
+ // Read and verify the data
+ ptable.ResetIndex();
+ for (size_t i = 0; i < NUM_PACKETS; i++) {
+ s1_t s2;
+ HDmemset(&s2, 0, sizeof(s1_t));
+ err = ptable.GetNextPacket(&s2);
+ if (err < 0)
+ goto error;
+
+ if (s2.a != s1[i].a || s2.e != s1[i].e)
+ goto error;
+ else if (HDstrcmp(s2.d, s1[i].d))
+ goto error;
+ }
} // end of ptable block
PASSED();
@@ -681,13 +700,14 @@ int TestHDFFV_9758()
error:
- H5E_BEGIN_TRY {
+ H5E_BEGIN_TRY
+ {
H5Tclose(strtype);
H5Tclose(compound_type);
H5Fclose(fileID);
- } H5E_END_TRY;
+ }
+ H5E_END_TRY;
H5_FAILED();
return 1;
}
-
diff --git a/hl/c++/test/ptableTest.h b/hl/c++/test/ptableTest.h
index 8af7bff..7504eb2 100644
--- a/hl/c++/test/ptableTest.h
+++ b/hl/c++/test/ptableTest.h
@@ -6,7 +6,7 @@
* 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://support.hdfgroup.org/ftp/HDF5/releases. *
+ * 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. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@@ -21,9 +21,9 @@
#ifndef PTABLETEST
#define PTABLETEST
+#include "h5hltest.h"
#include "H5PacketTable.h"
#include "H5Cpp.h"
-#include "h5hltest.h"
static hid_t fileID;