diff options
Diffstat (limited to 'HDF5Examples/FORTRAN/H5D/test.sh.in')
-rwxr-xr-x | HDF5Examples/FORTRAN/H5D/test.sh.in | 211 |
1 files changed, 211 insertions, 0 deletions
diff --git a/HDF5Examples/FORTRAN/H5D/test.sh.in b/HDF5Examples/FORTRAN/H5D/test.sh.in new file mode 100755 index 0000000..76dbbcd --- /dev/null +++ b/HDF5Examples/FORTRAN/H5D/test.sh.in @@ -0,0 +1,211 @@ +#! /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 $FC in +*/*) H5DUMP=`echo $FC | 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="alloc \ + checksum \ + chunk \ + compact \ + extern \ + fillval \ + gzip \ + hyper \ + rdwr \ + soint \ + szip \ + unlimmod" + +FORTRAN_2003_CONDITIONAL_F="@FORTRAN_2003_CONDITIONAL_F@" + +if [ "$FORTRAN_2003_CONDITIONAL_F" = "Xyes" ]; then + topics="$topics rdwr_kind" +fi + +return_val=0 + +#Remove external data file from h5ex_d_extern +rm -f h5ex_d_extern.data + +for topic in $topics +do + fname=h5ex_d_$topic + $ECHO_N "Testing FORTRAN/H5D/$fname...$ECHO_C" + exout ./$fname >tmp.test + status=$? + if test $status -eq 1 + then + echo " Unsupported feature" + status=0 + else + if [ "$topic" = "alloc" ]; then + # Check if the only difference is the size of the unallocated space. This + # was fixed later in HDF5 to be of zero size. + status=0 + diff tmp.test $srcdir/tfiles/18/$fname.tst > tmp.diff + if [ $? -ne 0 ]; then + NumOfFinds=`grep -c "0 bytes" tmp.diff | wc -l` + rm -f tmp.diff + if [ "$NumOfFinds" -gt "1" ]; then + status=1 + fi + fi + else + cmp -s tmp.test $srcdir/tfiles/18/$fname.tst + status=$? + fi + status=$? + if test $status -ne 0 + then + echo " FAILED!" + else + dumpout $fname.h5 >tmp.test + rm -f $fname.h5 + cmp -s tmp.test $srcdir/tfiles/18/$fname.ddl + status=$? + if test $status -ne 0 + then + # test to see if the only difference is because of big-endian and little-endian + diff tmp.test $srcdir/tfiles/18/$fname.ddl > tmp.diff + echo " " + NumOfFinds=`grep -c "DATATYPE" tmp.diff` + NumOfFinds=`expr $NumOfFinds \* 2` + NumOfLines=`wc -l <tmp.diff` + rm -f tmp.diff + if test $NumOfLines -gt $NumOfFinds + then + echo " FAILED!" + else + echo " *Inconsequential difference* ... Passed" + status=0 + fi + else + echo " Passed" + fi + fi + return_val=`expr $status + $return_val` + fi +done + +#######Non-standard tests####### +USE_ALT="" +### Set default tfiles directory for tests +nbitdir="18" +version_compare "$H5_LIBVER" "1.8.23" +# check if HDF5 version is < 1.8.23 +if [ "$version_lt" = 1 ]; then + USE_ALT="22" +else +# check if HDF5 version is < 1.10.8 + version_compare "$H5_LIBVER" "1.10.8" + if [ "$version_lt" = 1 ]; then + USE_ALT="07" + nbitdir="110" + fi +fi + +topics="nbit" +for topic in $topics18 +do + fname=h5ex_d_$topic + $ECHO_N "Testing C/H5D/$fname...$ECHO_C" + exout ./$fname >tmp.test + status=$? + if test $status -eq 1 + then + echo " Unsupported feature" + status=0 + else + if [[ $fname == "h5ex_d_nbit" ]] + then + tdir=$nbitdir + if [[ $USE_ALT == "" ]] + then + ### set USE_ALT=07 if not set above + USE_ALT="07" + fi + else + tdir=18 + ### unset USE_ALT for the other topics + USE_ALT="" + fi + cmp -s tmp.test $srcdir/tfiles/18/$fname.tst + status=$? + if test $status -ne 0 + then + echo " FAILED!" + else + if [[ $fname == "h5ex_d_transform" ]] + then + targ="-n" + else + targ="" + fi + dumpout $targ $fname.h5 >tmp.test + rm -f $fname.h5 + cmp -s tmp.test $srcdir/tfiles/$tdir/$fname$USE_ALT.ddl + status=$? + if test $status -ne 0 + then + echo " FAILED!" + else + echo " Passed" + fi + fi + return_val=`expr $status + $return_val` + fi +done + + +rm -f tmp.test +echo "$return_val tests failed in FORTRAN/H5D/" +exit $return_val |