hdf5/tools/testh5toh4
Paul Harten 6987a7dee5 [svn-r939] Purpose:
New Feature

Solution:
    This is a tester for the h5toh4 converter.  It is implemented
    on different HDF5 files to produce HDF4 files.  After each HDF4
    file is produced,  the file is run through the HDF4 dumper hdp.
    The dumper results are compared with expected results and any
    differences are noted.

    Note: The "/hdf4/bin" directory needs to be part of the tester's
    $PATH.

Platform tested:
    Solaris2.5, HP10.20
1998-11-21 15:00:58 -05:00

261 lines
4.6 KiB
Bash

#! /bin/sh
# Test scripts for h5toh4.
# See the USAGE function for command usage.
# Definitions of commands and variables
CMD='../h5toh4'
RM='rm -f'
SED='sed '
H4DUMP='hdp'
DIFF=diff
CMP='cmp -s'
nerrors=0 # number of errors (0)
quitonerr=0 # quit on error (not)
noclean=0 # no cleaning temp. files (yes)
only="" # dumper sub-command to test only
except="" # dumper sub-command to test not
# Definitions of functions/shorthands
#
# Print Usage of the command
USAGE()
{
echo "Usage: $0 [-help] [-noclean] [-quit] [-except <command>] [-only <command>]"
echo " -help: display help information"
echo " -noclean: do not clean away temporary files"
echo " -quit: quit immediately if any test fails"
echo " -except: skip one specific command"
echo " -only: test one specific command"
echo "<command> can be one of {list, dumpsds, dumprig, dumpvd, dumpvg, dumpgr}"
}
# Print message with formats according to message level ($1)
MESG()
{
level=$1
shift
case $level in
0)
echo '============================='
echo $*
echo '============================='
;;
3)
echo '-----------------------------'
echo $*
echo '-----------------------------'
;;
6)
echo "*** Arguments are $* ***"
;;
*)
echo "MESG(): Unknown level ($level)"
exit 1
;;
esac
}
# Run the test to produce an output file which is then
# compared with the expected ($1) output.
# Note that this can be used to produce the expected
# output files by replace "$output" with "$expected"
# in the run-the-test commands.
TEST()
{
# shift
# print a id banner
MESG 6 $@
# run the test
(
echo "#############################"
echo "'$CMD $@'"
echo "#############################"
cd testfiles
$CMD "$@"
cd ..
)
case "$1" in
"-m")
shift
for i in $@
do
h4file=testfiles/`echo $i | $SED -e s/\.h5/.hdf/g`
output=`echo $h4file | $SED -e s/\.hdf/.tmp/`
expected=`echo $h4file | $SED -e s/\.hdf/.dmp/`
$H4DUMP dumpvg $h4file > $output
$H4DUMP dumpvd $h4file >> $output
$H4DUMP dumpsds $h4file >> $output
$CMP $expected $output
if [ $? -ne 0 ]
then
echo $DIFF $expected $output
$DIFF $expected $output
echo " <<< FAILED >>>"
nerrors=`expr $nerrors + 1`
if [ $quitonerr -gt 0 ];
then
FINISH
fi
fi
done
;;
* )
if [ $# -eq 1 ]
then
h4file=testfiles/`echo $1 | $SED -e s/\.h5/.hdf/`
else
h4file=testfiles/$2
fi
output=`echo $h4file | $SED -e s/\.hdf/.tmp/`
expected=`echo $h4file | $SED -e s/\.hdf/.dmp/`
$H4DUMP dumpvg $h4file > $output
$H4DUMP dumpvd $h4file >> $output
$H4DUMP dumpsds $h4file >> $output
$CMP $expected $output
if [ $? -ne 0 ]
then
echo $DIFF $expected $output
$DIFF $expected $output
echo " <<< FAILED >>>"
nerrors=`expr $nerrors + 1`
if [ $quitonerr -gt 0 ];
then
FINISH
fi
fi
;;
esac
# if [ $noclean -eq 0 ]
# then
# $RM $output
# fi
}
# Report the result and exit
FINISH()
{
if [ $nerrors -eq 0 ]
then
MESG 0 "All h5toh4 tests passed"
else
MESG 0 "h5toh4 tests failed: $nerrors"
fi
exit $nerrors
}
#===============
# Main Body
#===============
# parse arguments
while [ $# -gt 0 ]
do
case "$1" in
"-quit")
quitonerr=1
;;
"-noclean")
noclean=1
;;
"-help")
USAGE
exit 0
;;
"-only")
shift
case "$1" in
"h5toh4")
only="$1"
;;
*)
echo "Unknown command: $1"
USAGE
exit 1
;;
esac
;;
"-except")
shift
case "$1" in
"h5toh4")
except="$1"
;;
*)
echo "Unknown command: $1"
USAGE
exit 1
;;
esac
;;
* )
echo "Unknow option: $1"
USAGE
exit 1
;;
esac
shift
done
# Print a beginning banner
MESG 0 "Running h5toh4 tests"
# Test command list
TestCmd=h5toh4
TestName="Test command $TestCmd"
if [ "$except" != $TestCmd -a \( -z "$only" -o "$only" = $TestCmd \) ]
then
MESG 3 "$TestName"
$RM ./testfiles/*.hdf ./testfiles/*.tmp
TEST tgroup.h5
TEST tdset.h5
TEST tattr.h5
TEST tslink.h5
TEST thlink.h5
TEST tcompound.h5
TEST tall.h5
$RM ./testfiles/*.tmp
TEST tgroup.h5 tgroup.hdf
TEST tdset.h5 tdset.hdf
TEST tattr.h5 tattr.hdf
TEST tslink.h5 tslink.hdf
TEST thlink.h5 thlink.hdf
TEST tcompound.h5 tcompound.hdf
TEST tall.h5 tall.hdf
$RM ./testfiles/*.hdf ./testfiles/*.tmp
TEST -m tgroup.h5 tdset.h5 tattr.h5 tslink.h5 thlink.h5 tcompound.h5 tall.h5
$RM ./testfiles/*.hdf ./testfiles/*.tmp
else
MESG 3 "$TestName <<<SKIPPED>>>"
fi
# End of test
FINISH