hdf5/HDF5Examples/C/H5T/test.sh.in
Allen Byrne fc88fcde10
Develop merge examples (#3851)
* Merge examples repo into library

* Change grepTest to be more fault-tolerant

* Update examples macro file

* Exclude all Fortran examples from doxygen
2023-11-27 15:30:15 -06:00

204 lines
4.9 KiB
Bash
Executable File

#! /bin/sh
#
# Copyright by The HDF Group.
# Copyright by the Board of Trustees of the University of Illinois.
# 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 files COPYING and Copyright.html. COPYING can be found at the root
# of the source code distribution tree; Copyright.html can be found at the
# root level of an installed copy of the electronic HDF5 document set and
# is linked from the top-level documents page. It can also be found at
# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have
# access to either file, you may request a copy from help@hdfgroup.org.
srcdir=@srcdir@
case $CC in
*/*) H5DUMP=`echo $CC | sed -e 's/\/[^/]*$/\/h5dump/'`;
test -x $H5DUMP || H5DUMP=h5dump;;
*) H5DUMP=h5dump;;
esac
case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
*c*,-n*) ECHO_N= ECHO_C='
' ;;
*c*,* ) ECHO_N=-n ECHO_C= ;;
*) ECHO_N= ECHO_C='\c' ;;
esac
ECHO_N="echo $ECHO_N"
exout() {
$*
}
dumpout() {
$H5DUMP $*
}
# compare current version, required version.
# returns if cur_ver < req_ver is true.
version_compare() {
version_lt=0
if [ ! "$(printf '%s\n' "$1" "$2" | sort -V | head -n1)" = "$2" ]; then
version_lt=1
fi
}
H5_LIBVER=@H5_LIBVER@
H5_LIBVER_DIR=@H5_LIBVER_DIR@
topics="array arrayatt bit bitatt cmpd cmpdatt cpxcmpd cpxcmpdatt enum enumatt float floatatt \
int intatt opaque opaqueatt string stringatt vlstring vlstringatt \
commit"
return_val=0
for topic in $topics
do
fname=h5ex_t_$topic
$ECHO_N "Testing C/H5T/$fname...$ECHO_C"
exout ./$fname >tmp.test
cmp -s tmp.test $srcdir/tfiles/16/$fname.tst
status=$?
if test $status -ne 0
then
echo " FAILED!"
else
if [[ $fname == "h5ex_t_cpxcmpd" || $fname == "h5ex_t_cpxcmpdatt" ]]
then
targ="-n"
else
targ=""
fi
dumpout $targ $fname.h5 >tmp.test
rm -f $fname.h5
cmp -s tmp.test $srcdir/tfiles/18/$fname.ddl
status=$?
if test $status -ne 0
then
echo " FAILED!"
else
echo " Passed"
fi
fi
return_val=`expr $status + $return_val`
done
#######Non-standard tests#######
USE_ALT=""
if [ "$H5_LIBVER_DIR" = "110" ]; then
# check if HDF5 version is < 1.10.7
version_compare "$H5_LIBVER" "1.10.7"
if [ "$version_lt" = 1 ]; then
USE_ALT="06"
fi
else
if [ "$H5_LIBVER_DIR" = "18" ]; then
# check if HDF5 version is < 1.8.22
version_compare "$H5_LIBVER" "1.8.22"
if [ "$version_lt" = 1 ]; then
USE_ALT="21"
fi
fi
fi
topics="objref objrefatt regref regrefatt"
for topic in $topics
do
fname=h5ex_t_$topic
$ECHO_N "Testing C/H5T/$fname...$ECHO_C"
exout ./$fname >tmp.test
cmp -s tmp.test $srcdir/tfiles/16/$fname.tst
status=$?
if test $status -ne 0
then
echo " FAILED!"
else
dumpout $fname.h5 >tmp.test
rm -f $fname.h5
version_compare "$H5_LIBVER" "1.10.0"
if [ "$version_lt" = 1 ]; then
cmp -s tmp.test $srcdir/tfiles/18/$fname$USE_ALT.ddl
else
version_compare "$H5_LIBVER" "1.12.0"
if [ "$version_lt" = 1 ]; then
version_compare "$H5_LIBVER" "1.10.7"
if [ "$version_lt" = 1 ]; then
cmp -s tmp.test $srcdir/tfiles/110/$fname$USE_ALT.ddl
else
cmp -s tmp.test $srcdir/tfiles/18/$fname.ddl
fi
else
cmp -s tmp.test $srcdir/tfiles/112/$fname.ddl
fi
fi
status=$?
if test $status -ne 0
then
echo " FAILED!"
else
echo " Passed"
fi
fi
return_val=`expr $status + $return_val`
done
topics="vlen vlenatt"
for topic in $topics
do
fname=h5ex_t_$topic
$ECHO_N "Testing C/H5T/$fname...$ECHO_C"
exout ./$fname >tmp.test
cmp -s tmp.test $srcdir/tfiles/16/$fname.tst
status=$?
if test $status -ne 0
then
echo " FAILED!"
else
dumpout $fname.h5 >tmp.test
rm -f $fname.h5
version_compare "$H5_LIBVER" "1.14.3"
if [ "$version_lt" = 1 ]; then
cmp -s tmp.test $srcdir/tfiles/18/$fname.ddl
else
cmp -s tmp.test $srcdir/tfiles/114/$fname.ddl
fi
status=$?
if test $status -ne 0
then
echo " FAILED!"
else
echo " Passed"
fi
fi
return_val=`expr $status + $return_val`
done
fname=h5ex_t_convert
$ECHO_N "Testing C/H5T/$fname...$ECHO_C"
exout ./$fname >tmp.test
cmp -s tmp.test $srcdir/tfiles/16/$fname.tst
status=$?
if test $status -ne 0
then
echo " FAILED!"
else
echo " Passed"
fi
return_val=`expr $status + $return_val`
rm -f tmp.test
echo "$return_val tests failed in C/H5T/"
exit $return_val