summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Harten <pharten@ncsa.uiuc.edu>1998-11-21 20:00:58 (GMT)
committerPaul Harten <pharten@ncsa.uiuc.edu>1998-11-21 20:00:58 (GMT)
commit6987a7dee5bf9407b81427de4c95c5c2f3083bda (patch)
tree4143876ed37e3eef737d79c7939d5eff2806252c
parentb13a36efd7cce0feb24a2384a3cda18e886746a2 (diff)
downloadhdf5-6987a7dee5bf9407b81427de4c95c5c2f3083bda.zip
hdf5-6987a7dee5bf9407b81427de4c95c5c2f3083bda.tar.gz
hdf5-6987a7dee5bf9407b81427de4c95c5c2f3083bda.tar.bz2
[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
-rw-r--r--tools/testh5toh4260
1 files changed, 260 insertions, 0 deletions
diff --git a/tools/testh5toh4 b/tools/testh5toh4
new file mode 100644
index 0000000..5b5e85f
--- /dev/null
+++ b/tools/testh5toh4
@@ -0,0 +1,260 @@
+#! /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