Files
hdf5/tools/h5dump/CMakeLists.txt

892 lines
29 KiB
CMake

cmake_minimum_required (VERSION 2.8)
PROJECT (HDF5_TOOLS_H5DUMP)
#-----------------------------------------------------------------------------
# Setup include Directories
#-----------------------------------------------------------------------------
INCLUDE_DIRECTORIES (${HDF5_TOOLS_SRC_DIR}/lib)
INCLUDE_DIRECTORIES (${HDF5_PROJECT_DIR}/test)
# --------------------------------------------------------------------
# Add the h5dump executables
# --------------------------------------------------------------------
ADD_EXECUTABLE (h5dump ${HDF5_TOOLS_H5DUMP_SOURCE_DIR}/h5dump.c)
H5_NAMING (h5dump)
TARGET_WIN_PROPERTIES (h5dump)
TARGET_LINK_LIBRARIES (h5dump ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
SET (H5_DEP_EXECUTABLES h5dump)
##############################################################################
##############################################################################
### T E S T I N G ###
##############################################################################
##############################################################################
IF (BUILD_TESTING)
# --------------------------------------------------------------------
# Add the h5dump test executable
# --------------------------------------------------------------------
IF (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
ADD_EXECUTABLE (h5dumpgentest ${HDF5_TOOLS_H5DUMP_SOURCE_DIR}/h5dumpgentest.c)
H5_NAMING (h5dumpgentest)
TARGET_WIN_PROPERTIES (h5dumpgentest)
TARGET_LINK_LIBRARIES (h5dumpgentest ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET})
#ADD_TEST (NAME h5dumpgentest COMMAND $<TARGET_FILE:h5dumpgentest>)
ENDIF (HDF5_BUILD_GENERATORS AND NOT BUILD_SHARED_LIBS)
# --------------------------------------------------------------------
# Copy all the HDF5 files from the test directory into the source directory
# --------------------------------------------------------------------
SET (HDF5_REFERENCE_FILES
tall-1.ddl
tall-2.ddl
tall-2A.ddl
tall-2B.ddl
tall-3.ddl
tall-4s.ddl
tall-5s.ddl
tallfilters.ddl
tarray1.ddl
tarray2.ddl
tarray3.ddl
tarray4.ddl
tarray5.ddl
tarray6.ddl
tarray7.ddl
tarray8.ddl
tattr-1.ddl
tattr-2.ddl
tattr-3.ddl
tattrreg.ddl
tattrregR.ddl
tbinregR.ddl
tbigdims.ddl
tboot1.ddl
tboot2.ddl
tchar1.ddl
tchunked.ddl
tcomp-1.ddl
tcomp-2.ddl
tcomp-3.ddl
tcomp-4.ddl
tcompact.ddl
tcontents.ddl
tcontiguos.ddl
tdatareg.ddl
tdataregR.ddl
tdeflate.ddl
tdset-1.ddl
tdset-2.ddl
tdset-3s.ddl
tempty.ddl
texternal.ddl
textlinksrc.ddl
textlinkfar.ddl
tfamily.ddl
tfill.ddl
tfletcher32.ddl
tfpformat.ddl
tgroup-1.ddl
tgroup-2.ddl
tgrp_comments.ddl
thlink-1.ddl
thlink-2.ddl
thlink-3.ddl
thlink-4.ddl
thlink-5.ddl
thyperslab.ddl
tindicesno.ddl
tindicessub1.ddl
tindicessub2.ddl
tindicessub3.ddl
tindicessub4.ddl
tindicesyes.ddl
tlarge_objname.ddl
#tldouble.ddl
tlonglinks.ddl
tloop-1.ddl
tmulti.ddl
tnamed_dtype_attr.ddl
tnestcomp-1.ddl
tnbit.ddl
tnofilename.ddl
tnullspace.ddl
tordergr1.ddl
tordergr2.ddl
tordergr3.ddl
tordergr4.ddl
tordergr5.ddl
torderattr1.ddl
torderattr2.ddl
torderattr3.ddl
torderattr4.ddl
tperror.ddl
treference.ddl
tsaf.ddl
tscaleoffset.ddl
tshuffle.ddl
tslink-1.ddl
tslink-2.ddl
tsplit_file.ddl
tstr-1.ddl
tstr-2.ddl
tstring.ddl
tstring2.ddl
tstringe.ddl
tszip.ddl
tudlink-1.ddl
tudlink-2.ddl
tuserfilter.ddl
tvldtypes1.ddl
tvldtypes2.ddl
tvldtypes3.ddl
tvldtypes4.ddl
tvldtypes5.ddl
tvlstr.ddl
tvms.ddl
)
SET (HDF5_XML_REFERENCE_FILES
tall.h5.xml
tall-2A.h5.xml
tarray1.h5.xml
tarray2.h5.xml
tarray3.h5.xml
tarray6.h5.xml
tarray7.h5.xml
tattr.h5.xml
tbitfields.h5.xml
tcompound_complex.h5.xml
tcompound.h5.xml
tcompound2.h5.xml
tdatareg.h5.xml
tdset.h5.xml
tdset2.h5.xml
tempty.h5.xml
tempty-dtd.h5.xml
tempty-dtd-2.h5.xml
tempty-dtd-uri.h5.xml
tempty-nons.h5.xml
tempty-nons-2.h5.xml
tempty-nons-uri.h5.xml
tempty-ns.h5.xml
tempty-ns-2.h5.xml
tenum.h5.xml
textlink.h5.xml
tfpformat.h5.xml
tgroup.h5.xml
thlink.h5.xml
tloop.h5.xml
tloop2.h5.xml
tmany.h5.xml
tname-amp.h5.xml
tname-apos.h5.xml
tnamed_dtype_attr.h5.xml
tname-gt.h5.xml
tname-lt.h5.xml
tname-quot.h5.xml
tname-sp.h5.xml
tnestedcomp.h5.xml
tnodata.h5.xml
tobjref.h5.xml
topaque.h5.xml
torderattr1.h5.xml
torderattr2.h5.xml
torderattr3.h5.xml
torderattr4.h5.xml
tref.h5.xml
tref-escapes.h5.xml
tref-escapes-at.h5.xml
tsaf.h5.xml
tslink.h5.xml
tstr.h5.xml
tstr2.h5.xml
tstring.h5.xml
tstring-at.h5.xml
tudlink.h5.xml
tvldtypes1.h5.xml
tvldtypes2.h5.xml
tvldtypes3.h5.xml
tvldtypes4.h5.xml
tvldtypes5.h5.xml
tvlstr.h5.xml
)
SET (HDF5_REFERENCE_TEST_FILES
tbin1.ddl
tbin1.ddl
tbin2.ddl
tbin3.ddl
tbin4.ddl
out3.h5import
taindices.h5
tall.h5
tarray1.h5
tarray2.h5
tarray3.h5
tarray4.h5
tarray5.h5
tarray6.h5
tarray7.h5
tarray8.h5
tattr.h5
tattr2.h5
tattrreg.h5
tbigdims.h5
tbinary.h5
tchar.h5
tcompound.h5
tcompound_complex.h5
tdatareg.h5
tdset.h5
tempty.h5
textlinkfar.h5
textlinksrc.h5
textlinktar.h5
tfamily00000.h5
tfamily00001.h5
tfamily00002.h5
tfamily00003.h5
tfamily00004.h5
tfamily00005.h5
tfamily00006.h5
tfamily00007.h5
tfamily00008.h5
tfamily00009.h5
tfamily00010.h5
tfcontents1.h5
tfcontents2.h5
tfilters.h5
tfpformat.h5
tfvalues.h5
tgroup.h5
tgrp_comments.h5
thlink.h5
thyperslab.h5
tlarge_objname.h5
#tldouble.h5
tlonglinks.h5
tloop.h5
tmulti-b.h5
tmulti-g.h5
tmulti-l.h5
tmulti-o.h5
tmulti-r.h5
tmulti-s.h5
tnamed_dtype_attr.h5
tnestedcomp.h5
tnullspace.h5
torderattr.h5
tordergr.h5
tsaf.h5
tslink.h5
tsplit_file-m.h5
tsplit_file-r.h5
tstr.h5
tstr2.h5
tstr3.h5
tudlink.h5
tvldtypes1.h5
tvldtypes2.h5
tvldtypes3.h5
tvldtypes4.h5
tvldtypes5.h5
tvlstr.h5
tvms.h5
)
SET (HDF5_XML_REFERENCE_TEST_FILES
tbitfields.h5
tcompound2.h5
tdset2.h5
tenum.h5
textlink.h5
tloop2.h5
tmany.h5
tname-amp.h5
tname-apos.h5
tname-gt.h5
tname-lt.h5
tname-quot.h5
tname-sp.h5
tnodata.h5
tobjref.h5
topaque.h5
tref.h5
tref-escapes.h5
tref-escapes-at.h5
tstring.h5
tstring-at.h5
)
FOREACH (ddl_file ${HDF5_REFERENCE_FILES})
SET (ddldest "${PROJECT_BINARY_DIR}/${ddl_file}")
#MESSAGE (STATUS " Translating ${ddl_file}")
ADD_CUSTOM_COMMAND (
TARGET h5dump
POST_BUILD
COMMAND ${XLATE_UTILITY}
ARGS ${HDF5_TOOLS_SRC_DIR}/testfiles/${ddl_file} ${ddldest} -l3
)
ENDFOREACH (ddl_file ${HDF5_REFERENCE_FILES})
FOREACH (xml_file ${HDF5_XML_REFERENCE_FILES})
SET (xmldest "${PROJECT_BINARY_DIR}/${xml_file}")
#MESSAGE (STATUS " Translating ${xml_file}")
ADD_CUSTOM_COMMAND (
TARGET h5dump
POST_BUILD
COMMAND ${XLATE_UTILITY}
ARGS ${HDF5_TOOLS_SRC_DIR}/testfiles/${xml_file} ${xmldest} -l3
)
ENDFOREACH (xml_file ${HDF5_XML_REFERENCE_FILES})
FOREACH (h5_file ${HDF5_REFERENCE_TEST_FILES})
SET (dest "${PROJECT_BINARY_DIR}/${h5_file}")
#MESSAGE (STATUS " Copying ${h5_file}")
ADD_CUSTOM_COMMAND (
TARGET h5dump
POST_BUILD
COMMAND ${CMAKE_COMMAND}
ARGS -E copy_if_different ${HDF5_TOOLS_SRC_DIR}/testfiles/${h5_file} ${dest}
)
ENDFOREACH (h5_file ${HDF5_REFERENCE_TEST_FILES})
FOREACH (h5_xml_file ${HDF5_XML_REFERENCE_TEST_FILES})
SET (dest "${PROJECT_BINARY_DIR}/${h5_xml_file}")
#MESSAGE (STATUS " Copying ${h5_xml_file}")
ADD_CUSTOM_COMMAND (
TARGET h5dump
POST_BUILD
COMMAND ${CMAKE_COMMAND}
ARGS -E copy_if_different ${HDF5_TOOLS_SRC_DIR}/testfiles/${h5_xml_file} ${dest}
)
ENDFOREACH (h5_xml_file ${HDF5_XML_REFERENCE_TEST_FILES})
# --------------------------------------------------------------------
# Special file handling
# --------------------------------------------------------------------
ADD_CUSTOM_COMMAND (
TARGET h5dump
POST_BUILD
COMMAND ${CMAKE_COMMAND}
ARGS -E copy_if_different ${HDF5_TOOLS_SOURCE_DIR}/testfiles/tbin1.ddl ${PROJECT_BINARY_DIR}/tbin1LE.ddl
)
IF (WIN32 AND NOT MINGW)
FILE (READ ${HDF5_TOOLS_SRC_DIR}/testfiles/tbinregR.exp TEST_STREAM)
FILE (WRITE ${PROJECT_BINARY_DIR}/tbinregR.exp "${TEST_STREAM}")
ELSE (WIN32 AND NOT MINGW)
ADD_CUSTOM_COMMAND (
TARGET h5dump
POST_BUILD
COMMAND ${CMAKE_COMMAND}
ARGS -E copy_if_different ${HDF5_TOOLS_SRC_DIR}/testfiles/tbinregR.exp ${PROJECT_BINARY_DIR}/tbinregR.exp
)
ENDIF (WIN32 AND NOT MINGW)
##############################################################################
##############################################################################
### T H E T E S T S M A C R O S ###
##############################################################################
##############################################################################
MACRO (ADD_SKIP_H5_TEST skipresultfile skipresultcode testtype)
IF (${testtype} STREQUAL "SKIP")
ADD_TEST (
NAME H5DUMP-${skipresultfile}
COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${skipresultfile} ${ARGN}"
)
ELSE (${testtype} STREQUAL "SKIP")
ADD_H5_TEST (${skipresultfile} ${skipresultcode} ${ARGN})
ENDIF (${testtype} STREQUAL "SKIP")
ENDMACRO (ADD_SKIP_H5_TEST)
MACRO (ADD_H5_TEST resultfile resultcode)
ADD_TEST (
NAME H5DUMP-${resultfile}
COMMAND "${CMAKE_COMMAND}"
-D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
-D "TEST_ARGS:STRING=${ARGN}"
-D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
-D "TEST_OUTPUT=${resultfile}.out"
-D "TEST_EXPECT=${resultcode}"
-D "TEST_REFERENCE=${resultfile}.ddl"
-P "${HDF5_RESOURCES_DIR}/runTest.cmake"
)
ENDMACRO (ADD_H5_TEST file)
MACRO (ADD_H5_EXPORT_TEST resultfile targetfile resultcode)
ADD_TEST (
NAME H5DUMP-output-${resultfile}
COMMAND $<TARGET_FILE:h5dump> -d /Dataset1 -s 0 -R -y -o ${PROJECT_BINARY_DIR}/${resultfile}.txt ${PROJECT_BINARY_DIR}/${targetfile}
)
ADD_TEST (
NAME H5DUMP-output-cmp-${resultfile}
COMMAND ${CMAKE_COMMAND}
-E compare_files ${PROJECT_BINARY_DIR}/${resultfile}.txt ${PROJECT_BINARY_DIR}/${resultfile}.exp
)
ENDMACRO (ADD_H5_EXPORT_TEST file)
MACRO (ADD_XML_SKIP_H5_TEST skipresultfile skipresultcode testtype)
IF (${testtype} STREQUAL "SKIP")
ADD_TEST (
NAME H5DUMP-XML-${skipresultfile}
COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${skipresultfile}.xml --xml ${ARGN}"
)
ELSE (${testtype} STREQUAL "SKIP")
ADD_XML_H5_TEST (${skipresultfile} ${skipresultcode} ${ARGN})
ENDIF (${testtype} STREQUAL "SKIP")
ENDMACRO (ADD_XML_SKIP_H5_TEST)
MACRO (ADD_XML_H5_TEST resultfile resultcode)
ADD_TEST (
NAME H5DUMP-XML-${resultfile}
COMMAND "${CMAKE_COMMAND}"
-D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
-D "TEST_ARGS:STRING=--xml;${ARGN}"
-D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
-D "TEST_OUTPUT=${resultfile}.out"
-D "TEST_EXPECT=${resultcode}"
-D "TEST_REFERENCE=${resultfile}.xml"
-P "${HDF5_RESOURCES_DIR}/runTest.cmake"
)
ENDMACRO (ADD_XML_H5_TEST file)
# --------------------------------------------------------------------
# Determine which filters are available
# --------------------------------------------------------------------
SET (USE_FILTER_SZIP H5_HAVE_FILTER_SZIP)
SET (USE_FILTER_DEFLATE H5_HAVE_FILTER_DEFLATE)
SET (USE_FILTER_SHUFFLE H5_HAVE_FILTER_SHUFFLE)
SET (USE_FILTER_FLETCHER32 H5_HAVE_FILTER_FLETCHER32)
SET (USE_FILTER_NBIT H5_HAVE_FILTER_NBIT)
SET (USE_FILTER_SCALEOFFSET H5_HAVE_FILTER_SCALEOFFSET)
# --------------------------------------------------------------------
# Determine if H5dump packed bits feature is included
# --------------------------------------------------------------------
SET (USE_PACKED_BITS HDF5_USE_H5DUMP_PACKED_BITS)
##############################################################################
##############################################################################
### T H E T E S T S ###
##############################################################################
##############################################################################
# test for displaying groups
ADD_H5_TEST (tgroup-1 0 tgroup.h5)
# test for displaying the selected groups
ADD_H5_TEST (tgroup-2 1 --group=/g2 --group / -g /y tgroup.h5)
# test for displaying simple space datasets
ADD_H5_TEST (tdset-1 0 tdset.h5)
# test for displaying selected datasets
ADD_H5_TEST (tdset-2 1 -H -d dset1 -d /dset2 --dataset=dset3 tdset.h5)
# test for displaying attributes
ADD_H5_TEST (tattr-1 0 tattr.h5)
# test for displaying the selected attributes of string type and scalar space
ADD_H5_TEST (tattr-2 0 -a /attr1 --attribute /attr4 --attribute=/attr5 tattr.h5)
# test for header and error messages
ADD_H5_TEST (tattr-3 1 --header -a /attr2 --attribute=/attr tattr.h5)
# test for displaying attributes in shared datatype (also in group and dataset)
ADD_H5_TEST (tnamed_dtype_attr 0 tnamed_dtype_attr.h5)
# test for displaying soft links and user-defined links
ADD_H5_TEST (tslink-1 0 tslink.h5)
ADD_H5_TEST (tudlink-1 0 tudlink.h5)
# test for displaying the selected link
ADD_H5_TEST (tslink-2 0 -l slink2 tslink.h5)
ADD_H5_TEST (tudlink-2 0 -l udlink2 tudlink.h5)
# tests for hard links
ADD_H5_TEST (thlink-1 0 thlink.h5)
ADD_H5_TEST (thlink-2 0 -d /g1/dset2 --dataset /dset1 --dataset=/g1/g1.1/dset3 thlink.h5)
ADD_H5_TEST (thlink-3 0 -d /g1/g1.1/dset3 --dataset /g1/dset2 --dataset=/dset1 thlink.h5)
ADD_H5_TEST (thlink-4 0 -g /g1 thlink.h5)
ADD_H5_TEST (thlink-5 0 -d /dset1 -g /g2 -d /g1/dset2 thlink.h5)
# tests for compound data types
ADD_H5_TEST (tcomp-1 0 tcompound.h5)
# test for named data types
ADD_H5_TEST (tcomp-2 0 -t /type1 --datatype /type2 --datatype=/group1/type3 tcompound.h5)
# test for unamed type
#ADD_H5_TEST (tcomp-3 0 -t /#6632 -g /group2 tcompound.h5)
# test complicated compound datatype
ADD_H5_TEST (tcomp-4 0 tcompound_complex.h5)
#test for the nested compound type
ADD_H5_TEST (tnestcomp-1 0 tnestedcomp.h5)
# test for options
ADD_H5_TEST (tall-1 0 tall.h5)
ADD_H5_TEST (tall-2 0 --header -g /g1/g1.1 -a attr2 tall.h5)
ADD_H5_TEST (tall-3 0 -d /g2/dset2.1 -l /g1/g1.2/g1.2.1/slink tall.h5)
# test for loop detection
ADD_H5_TEST (tloop-1 0 tloop.h5)
# test for string
ADD_H5_TEST (tstr-1 0 tstr.h5)
ADD_H5_TEST (tstr-2 0 tstr2.h5)
# test for file created by Lib SAF team
ADD_H5_TEST (tsaf 0 tsaf.h5)
# test for file with variable length data
ADD_H5_TEST (tvldtypes1 0 tvldtypes1.h5)
ADD_H5_TEST (tvldtypes2 0 tvldtypes2.h5)
ADD_H5_TEST (tvldtypes3 0 tvldtypes3.h5)
ADD_H5_TEST (tvldtypes4 0 tvldtypes4.h5)
ADD_H5_TEST (tvldtypes5 0 tvldtypes5.h5)
#test for file with variable length string data
ADD_H5_TEST (tvlstr 0 tvlstr.h5)
# test for files with array data
ADD_H5_TEST (tarray1 0 tarray1.h5)
ADD_H5_TEST (tarray2 0 tarray2.h5)
ADD_H5_TEST (tarray3 0 tarray3.h5)
ADD_H5_TEST (tarray4 0 tarray4.h5)
ADD_H5_TEST (tarray5 0 tarray5.h5)
ADD_H5_TEST (tarray6 0 tarray6.h5)
ADD_H5_TEST (tarray7 0 tarray7.h5)
ADD_H5_TEST (tarray8 0 tarray8.h5)
# test for files with empty data
ADD_H5_TEST (tempty 0 tempty.h5)
# test for files with groups that have comments
ADD_H5_TEST (tgrp_comments 0 tgrp_comments.h5)
# test the --filedriver flag
ADD_H5_TEST (tsplit_file 0 --filedriver=split tsplit_file)
ADD_H5_TEST (tfamily 0 --filedriver=family tfamily%05d.h5)
ADD_H5_TEST (tmulti 0 --filedriver=multi tmulti)
# test for files with group names which reach > 1024 bytes in size
ADD_H5_TEST (tlarge_objname 0 -w157 tlarge_objname.h5)
# test '-A' to suppress data but print attr's
ADD_H5_TEST (tall-2A 0 -A tall.h5)
# test '-r' to print attributes in ASCII instead of decimal
ADD_H5_TEST (tall-2B 0 -A -r tall.h5)
# test Subsetting
ADD_H5_TEST (tall-4s 0 --dataset=/g1/g1.1/dset1.1.1 --start=1,1 --stride=2,3 --count=3,2 --block=1,1 tall.h5)
ADD_H5_TEST (tall-5s 0 -d "/g1/g1.1/dset1.1.2[0;2;10;]" tall.h5)
ADD_H5_TEST (tdset-3s 0 -d "/dset1[1,1;;;]" tdset.h5)
# test printing characters in ASCII instead of decimal
ADD_H5_TEST (tchar1 0 -r tchar.h5)
# test failure handling
# Missing file name
IF (${USE_PACKED_BITS})
ADD_H5_TEST (tnofilename-with-packed-bits 1)
ELSE (${USE_PACKED_BITS})
ADD_H5_TEST (tnofilename 1)
ENDIF (${USE_PACKED_BITS})
# rev. 2004
# tests for super block
ADD_H5_TEST (tboot1 0 -H -B -d dset tfcontents1.h5)
ADD_H5_TEST (tboot2 0 -B tfcontents2.h5)
# test -p with a non existing dataset
ADD_H5_TEST (tperror 1 -p -d bogus tfcontents1.h5)
# test for file contents
ADD_H5_TEST (tcontents 0 -n tfcontents1.h5)
# tests for storage layout
# compact
ADD_H5_TEST (tcompact 0 -H -p -d compact tfilters.h5)
# contiguous
ADD_H5_TEST (tcontiguos 0 -H -p -d contiguous tfilters.h5)
# chunked
ADD_H5_TEST (tchunked 0 -H -p -d chunked tfilters.h5)
# external
ADD_H5_TEST (texternal 0 -H -p -d external tfilters.h5)
# fill values
ADD_H5_TEST (tfill 0 -p tfvalues.h5)
# several datatype, with references , print path
ADD_H5_TEST (treference 0 tattr2.h5)
# escape/not escape non printable characters
ADD_H5_TEST (tstringe 0 -e tstr3.h5)
ADD_H5_TEST (tstring 0 tstr3.h5)
# char data as ASCII with non escape
ADD_H5_TEST (tstring2 0 -r -d str4 tstr3.h5)
# array indices print/not print
ADD_H5_TEST (tindicesyes 0 taindices.h5)
ADD_H5_TEST (tindicesno 0 -y taindices.h5)
########## array indices with subsetting
# 1D case
ADD_H5_TEST (tindicessub1 0 -d 1d -s 1 -S 10 -c 2 -k 3 taindices.h5)
# 2D case
ADD_H5_TEST (tindicessub2 0 -d 2d -s 1,2 -S 3,3 -c 3,2 -k 2,2 taindices.h5)
# 3D case
ADD_H5_TEST (tindicessub3 0 -d 3d -s 0,1,2 -S 1,3,3 -c 2,2,2 -k 1,2,2 taindices.h5)
# 4D case
ADD_H5_TEST (tindicessub4 0 -d 4d -s 0,0,1,2 -c 2,2,3,2 -S 1,1,3,3 -k 1,1,2,2 taindices.h5)
# tests for filters
# SZIP
SET (TESTTYPE "TEST")
IF (NOT USE_FILTER_SZIP)
SET (TESTTYPE "SKIP")
ENDIF (NOT USE_FILTER_SZIP)
ADD_SKIP_H5_TEST (tszip 0 ${TESTTYPE} -H -p -d szip tfilters.h5)
# deflate
SET (TESTTYPE "TEST")
IF (NOT USE_FILTER_DEFLATE)
SET (TESTTYPE "SKIP")
ENDIF (NOT USE_FILTER_DEFLATE)
ADD_SKIP_H5_TEST (tdeflate 0 ${TESTTYPE} -H -p -d deflate tfilters.h5)
# shuffle
SET (TESTTYPE "TEST")
IF (NOT USE_FILTER_SHUFFLE)
SET (TESTTYPE "SKIP")
ENDIF (NOT USE_FILTER_SHUFFLE)
ADD_SKIP_H5_TEST (tshuffle 0 ${TESTTYPE} -H -p -d shuffle tfilters.h5)
# fletcher32
SET (TESTTYPE "TEST")
IF (NOT USE_FILTER_FLETCHER32)
SET (TESTTYPE "SKIP")
ENDIF (NOT USE_FILTER_FLETCHER32)
ADD_SKIP_H5_TEST (tfletcher32 0 ${TESTTYPE} -H -p -d fletcher32 tfilters.h5)
# nbit
SET (TESTTYPE "TEST")
IF (NOT USE_FILTER_NBIT)
SET (TESTTYPE "SKIP")
ENDIF (NOT USE_FILTER_NBIT)
ADD_SKIP_H5_TEST (tnbit 0 ${TESTTYPE} -H -p -d nbit tfilters.h5)
# scaleoffset
SET (TESTTYPE "TEST")
IF (NOT USE_FILTER_SCALEOFFSET)
SET (TESTTYPE "SKIP")
ENDIF (NOT USE_FILTER_SCALEOFFSET)
ADD_SKIP_H5_TEST (tscaleoffset 0 ${TESTTYPE} -H -p -d scaleoffset tfilters.h5)
# all
SET (TESTTYPE "TEST")
IF (NOT USE_FILTER_SZIP OR NOT USE_FILTER_SHUFFLE OR NOT USE_FILTER_FLETCHER32 OR NOT USE_FILTER_DEFLATE OR NOT USE_FILTER_NBIT OR NOT USE_FILTER_SCALEOFFSET)
SET (TESTTYPE "SKIP")
ENDIF (NOT USE_FILTER_SZIP OR NOT USE_FILTER_SHUFFLE OR NOT USE_FILTER_FLETCHER32 OR NOT USE_FILTER_DEFLATE OR NOT USE_FILTER_NBIT OR NOT USE_FILTER_SCALEOFFSET)
ADD_SKIP_H5_TEST (tallfilters 0 ${TESTTYPE} -H -p -d all tfilters.h5)
# user defined
ADD_H5_TEST (tuserfilter 0 -H -p -d myfilter tfilters.h5)
# test for displaying objects with very long names
ADD_H5_TEST (tlonglinks 0 tlonglinks.h5)
# dimensions over 4GB, print boundary
ADD_H5_TEST (tbigdims 0 -d dset4gb -s 4294967284 -c 22 tbigdims.h5)
# hyperslab read
ADD_H5_TEST (thyperslab 0 thyperslab.h5)
# test for displaying dataset and attribute of null space
ADD_H5_TEST (tnullspace 0 tnullspace.h5)
# test for long double (some systems do not have long double)
#ADD_H5_TEST (tldouble 0 tldouble.h5)
# test for vms
ADD_H5_TEST (tvms 0 tvms.h5)
# test for binary output
ADD_H5_TEST (tbin1LE 0 -d integer -o out1LE.bin -b LE tbinary.h5)
# NATIVE default. the NATIVE test can be validated with h5import/h5diff
ADD_H5_TEST (tbin1 0 -d integer -o out1.bin -b tbinary.h5)
ADD_TEST (NAME H5DUMP-clear-out1 COMMAND ${CMAKE_COMMAND} -E remove out1.h5)
ADD_TEST (NAME H5DUMP-h5import-out1 COMMAND h5import out1.bin -c out3.h5import -o out1.h5)
ADD_TEST (NAME H5DUMP-h5diff-out1 COMMAND h5diff tbinary.h5 out1.h5 /integer /integer)
ADD_H5_TEST (tbin2 0 -b BE -d float -o out2.bin tbinary.h5)
# the NATIVE test can be validated with h5import/h5diff
ADD_H5_TEST (tbin3 0 -d integer -o out3.bin -b NATIVE tbinary.h5)
ADD_TEST (NAME H5DUMP-clear-out3 COMMAND ${CMAKE_COMMAND} -E remove out3.h5)
ADD_TEST (NAME H5DUMP-h5import-out3 COMMAND h5import out3.bin -c out3.h5import -o out3.h5)
ADD_TEST (NAME H5DUMP-h5diff-out3 COMMAND h5diff tbinary.h5 out3.h5 /integer /integer -q)
ADD_H5_TEST (tbin4 0 -d double -b FILE -o out4.bin tbinary.h5)
# Clean up binary output files
IF (NOT HDF5_NOCLEANUP)
ADD_TEST (
NAME H5DUMP-clear-objects
COMMAND ${CMAKE_COMMAND}
-E remove
out1.bin
out1LE.bin
out2.bin
out3.bin
out4.bin
out1.h5
out3.h5
)
ENDIF (NOT HDF5_NOCLEANUP)
# test for dataset region references
ADD_H5_TEST (tdatareg 0 tdatareg.h5)
ADD_H5_TEST (tdataregR 0 -R tdatareg.h5)
ADD_H5_TEST (tattrreg 0 tattrreg.h5)
ADD_H5_TEST (tattrregR 0 -R tattrreg.h5)
ADD_H5_EXPORT_TEST (tbinregR tdatareg.h5 0 -d /Dataset1 -s 0 -R -y -o)
# tests for group creation order
# "1" tracked, "2" name, root tracked
ADD_H5_TEST (tordergr1 0 --group=1 --sort_by=creation_order --sort_order=ascending tordergr.h5)
ADD_H5_TEST (tordergr2 0 --group=1 --sort_by=creation_order --sort_order=descending tordergr.h5)
ADD_H5_TEST (tordergr3 0 -g 2 -q name -z ascending tordergr.h5)
ADD_H5_TEST (tordergr4 0 -g 2 -q name -z descending tordergr.h5)
ADD_H5_TEST (tordergr5 0 -q creation_order tordergr.h5)
# tests for attribute order
ADD_H5_TEST (torderattr1 0 -H --sort_by=name --sort_order=ascending torderattr.h5)
ADD_H5_TEST (torderattr2 0 -H --sort_by=name --sort_order=descending torderattr.h5)
ADD_H5_TEST (torderattr3 0 -H --sort_by=creation_order --sort_order=ascending torderattr.h5)
ADD_H5_TEST (torderattr4 0 -H --sort_by=creation_order --sort_order=descending torderattr.h5)
# tests for floating point user defined printf format
ADD_H5_TEST (tfpformat 0 -m %.7f tfpformat.h5)
# tests for traversal of external links
ADD_H5_TEST (textlinksrc 0 textlinksrc.h5)
ADD_H5_TEST (textlinkfar 0 textlinkfar.h5)
# test for dataset packed bits
SET (TESTTYPE "TEST")
IF (NOT ${USE_PACKED_BITS})
SET (TESTTYPE "SKIP")
ENDIF (NOT ${USE_PACKED_BITS})
ADD_SKIP_H5_TEST (tpackedbits 0 ${TESTTYPE} -d /dset1 -M 0,2 tdset.h5)
ADD_SKIP_H5_TEST (tpackedbits2 0 ${TESTTYPE} -d /dset1 -M 0,2,2,1 tdset.h5)
########## test XML
ADD_XML_H5_TEST (tall.h5 0 tall.h5)
ADD_XML_H5_TEST (tattr.h5 0 tattr.h5)
ADD_XML_H5_TEST (tbitfields.h5 0 tbitfields.h5)
ADD_XML_H5_TEST (tcompound.h5 0 tcompound.h5)
ADD_XML_H5_TEST (tcompound2.h5 0 tcompound2.h5)
ADD_XML_H5_TEST (tdatareg.h5 0 tdatareg.h5)
ADD_XML_H5_TEST (tdset.h5 0 tdset.h5)
ADD_XML_H5_TEST (tdset2.h5 0 tdset2.h5)
ADD_XML_H5_TEST (tenum.h5 0 tenum.h5)
ADD_XML_H5_TEST (tgroup.h5 0 tgroup.h5)
ADD_XML_H5_TEST (thlink.h5 0 thlink.h5)
ADD_XML_H5_TEST (tloop.h5 0 tloop.h5)
ADD_XML_H5_TEST (tloop2.h5 0 tloop2.h5)
ADD_XML_H5_TEST (tmany.h5 0 tmany.h5)
ADD_XML_H5_TEST (tnestedcomp.h5 0 tnestedcomp.h5)
ADD_XML_H5_TEST (tcompound_complex.h5 0 tcompound_complex.h5)
ADD_XML_H5_TEST (tobjref.h5 0 tobjref.h5)
ADD_XML_H5_TEST (topaque.h5 0 topaque.h5)
ADD_XML_H5_TEST (tslink.h5 0 tslink.h5)
ADD_XML_H5_TEST (tudlink.h5 0 tudlink.h5)
ADD_XML_H5_TEST (textlink.h5 0 textlink.h5)
ADD_XML_H5_TEST (tstr.h5 0 tstr.h5)
ADD_XML_H5_TEST (tstr2.h5 0 tstr2.h5)
ADD_XML_H5_TEST (tref.h5 0 tref.h5)
ADD_XML_H5_TEST (tname-amp.h5 0 tname-amp.h5)
ADD_XML_H5_TEST (tname-apos.h5 0 tname-apos.h5)
ADD_XML_H5_TEST (tname-gt.h5 0 tname-gt.h5)
ADD_XML_H5_TEST (tname-lt.h5 0 tname-lt.h5)
ADD_XML_H5_TEST (tname-quot.h5 0 tname-quot.h5)
ADD_XML_H5_TEST (tname-sp.h5 0 tname-sp.h5)
ADD_XML_H5_TEST (tstring.h5 0 tstring.h5)
ADD_XML_H5_TEST (tstring-at.h5 0 tstring-at.h5)
ADD_XML_H5_TEST (tref-escapes.h5 0 tref-escapes.h5)
ADD_XML_H5_TEST (tref-escapes-at.h5 0 tref-escapes-at.h5)
ADD_XML_H5_TEST (tnodata.h5 0 tnodata.h5)
ADD_XML_H5_TEST (tarray1.h5 0 tarray1.h5)
ADD_XML_H5_TEST (tarray2.h5 0 tarray2.h5)
ADD_XML_H5_TEST (tarray3.h5 0 tarray3.h5)
ADD_XML_H5_TEST (tarray6.h5 0 tarray6.h5)
ADD_XML_H5_TEST (tarray7.h5 0 tarray7.h5)
ADD_XML_H5_TEST (tvldtypes1.h5 0 tvldtypes1.h5)
ADD_XML_H5_TEST (tvldtypes2.h5 0 tvldtypes2.h5)
ADD_XML_H5_TEST (tvldtypes3.h5 0 tvldtypes3.h5)
ADD_XML_H5_TEST (tvldtypes4.h5 0 tvldtypes4.h5)
ADD_XML_H5_TEST (tvldtypes5.h5 0 tvldtypes5.h5)
ADD_XML_H5_TEST (tvlstr.h5 0 tvlstr.h5)
ADD_XML_H5_TEST (tsaf.h5 0 tsaf.h5)
ADD_XML_H5_TEST (tempty.h5 0 tempty.h5)
ADD_XML_H5_TEST (tnamed_dtype_attr.h5 0 tnamed_dtype_attr.h5)
##Test dataset and attribute of null space. Commented out:
## wait until the XML schema is updated for null space.
## ADD_XML_H5_TEST (tnullspace.h5 0 tnulspace.h5)
# other options for xml
ADD_XML_H5_TEST (tempty-dtd.h5 0 --use-dtd tempty.h5)
ADD_XML_H5_TEST (tempty-dtd-2.h5 0 -u tempty.h5)
# The lone colon here confuses some systems (Cray X1). Skip
# it if configure detects that this is a problem.
SET (TESTTYPE "TEST")
IF (NOT "H5_LONE_COLON")
SET (TESTTYPE "SKIP")
ENDIF (NOT "H5_LONE_COLON")
ADD_XML_SKIP_H5_TEST (tempty-nons.h5 0 ${TESTTYPE} -X : tempty.h5)
ADD_XML_H5_TEST (tempty-nons-2.h5 0 --xml-ns=: tempty.h5)
## Some of these combinations are syntactically correct but
## the URLs are dummies
ADD_XML_H5_TEST (tempty-ns.h5 0 -X thing: tempty.h5)
ADD_XML_H5_TEST (tempty-ns-2.h5 0 --xml-ns=thing: tempty.h5)
ADD_XML_H5_TEST (tempty-nons-uri.h5 0 --xml-ns=: --xml-dtd=http://somewhere.net tempty.h5)
ADD_XML_H5_TEST (tempty-dtd-uri.h5 0 --use-dtd --xml-dtd=http://somewhere.net tempty.h5)
ADD_XML_H5_TEST (tall-2A.h5 0 -A tall.h5)
# tests for attribute order
ADD_XML_H5_TEST (torderattr1.h5 0 -H --sort_by=name --sort_order=ascending torderattr.h5)
ADD_XML_H5_TEST (torderattr2.h5 0 -H --sort_by=name --sort_order=descending torderattr.h5)
ADD_XML_H5_TEST (torderattr3.h5 0 -H --sort_by=creation_order --sort_order=ascending torderattr.h5)
ADD_XML_H5_TEST (torderattr4.h5 0 -H --sort_by=creation_order --sort_order=descending torderattr.h5)
# tests for floating point user defined printf format
ADD_XML_H5_TEST (tfpformat.h5 0 -u -m %.7f tfpformat.h5)
ENDIF (BUILD_TESTING)
##############################################################################
##############################################################################
### I N S T A L L A T I O N ###
##############################################################################
##############################################################################
#-----------------------------------------------------------------------------
# Rules for Installation of tools using make Install target
#-----------------------------------------------------------------------------
INSTALL (
TARGETS
h5dump
RUNTIME DESTINATION
${HDF5_INSTALL_BIN_DIR}/tools
COMPONENT
toolsapplications
)