WFDB Software Package 10.7.0
(3,507 bytes)
#!/bin/sh
# file: libcheck G. Moody 8 September 2001
# Last revised: 18 May 2022
#
# This script checks the functionality of the WFDB library by comparing the
# outputs of 'lcheck' with expected outputs. See 'lcheck.c' for details of
# the tests performed, or examine the output of 'lcheck -v'. Note that
# 'lcheck' must be run within this directory to ensure that its local input
# files (in ../data) are available.
#
# 'make check' invokes this script with DBDIR as a command-line argument;
# this is used to edit the expected lcheck.log to reflect the installation
# directory.
#
# Suggestions for additional checks are welcome; please send them to the
# author (wfdb@physionet.org).
cp -pr ../data .
if [ \! -s ../data/100s.hea ]
then
echo "Run this program from the 'checkpkg' directory of the WFDB sources."
echo "The 'data' directory, including record 100s, must also be present."
exit
fi
case $# in
0) VERBOSE=0 ;;
*) VERBOSE=1 ;;
esac
DBDIR=$1
LIBDIR=$2
DBURL=http://physionet.org/physiobank/database
# If not using DESTDIR, test the built-in path used by the WFDB library.
# If using DESTDIR or WFDB_NO_NET_CHECK, set the WFDB path explicitly.
if [ "x$DESTDIR" = x ] && [ "x$WFDB_NO_NET_CHECK" = x ]
then
unset WFDB
else
if [ "x$WFDB_NO_NET_CHECK" != x ]
then
mkdir data/www
mkdir data/www/udb
cp -p data/100s.* data/www/udb/
DBURL=file://`pwd`/data/www
fi
WFDB=". $DBDIR $DBURL"
export WFDB
fi
## Darwin
if [ "x$DYLD_LIBRARY_PATH" != x ]
then
DYLD_LIBRARY_PATH=$LIBDIR:$DYLD_LIBRARY_PATH
else
DYLD_LIBRARY_PATH=$LIBDIR
fi
export DYLD_LIBRARY_PATH
## Windows (Cygwin/MinGW) and Wine
PATH=.:$LIBDIR/../bin:$PATH
export PATH
WINEPATH=$LIBDIR/../bin\;$WINEPATH
export WINEPATH
## Other *nix
if [ "x$LD_LIBRARY_PATH" != x ]
then
LD_LIBRARY_PATH=$LIBDIR:$LD_LIBRARY_PATH
else
LD_LIBRARY_PATH=$LIBDIR
fi
export LD_LIBRARY_PATH
test -s Makefile || ( cd ..; ./configure )
test -s lcheck || test -s lcheck.exe || make lcheck
if test -s lcheck.exe; then LCHECK=./lcheck.exe; else LCHECK=./lcheck; fi
$LCHECK -v >lcheck.log
cp ../data/100s.atr expected/100s.chk
cp ../data/100s.dat expected/100z.dat
CF="lcheck.log lcheck_cal 100s.chk 100z.dat 100z.hea"
if grep "WFDB supports NETFILES" lcheck.log >/dev/null 2>&1
then
CF="$CF udb/100s.chk udb/100z.dat udb/100z.hea"
cp ../data/100s.atr expected/udb/100s.chk
cp ../data/100s.dat expected/udb/100z.dat
sed "s|/usr/database|$DBDIR|" <expected/lcheck.log-NETFILES | \
sed "s|http://physionet.org/physiobank/database|$DBURL|" \
>expected/lcheck.log
else
sed "s|/usr/database|$DBDIR|" <expected/lcheck.log-no-NETFILES | \
sed "s|http://physionet.org/physiobank/database|$DBURL|" \
>expected/lcheck.log
fi
PASS=0
FAIL=0
TESTS=0
for i in $CF
do
if ( ./checkfile $i )
then
PASS=`expr $PASS + 1`
case $i in
*.hea) rm -f $i ;;
lcheck_cal) rm -f $i ;;
*) rm -f $i expected/$i ;;
esac
else
FAIL=`expr $FAIL + 1`
fi
TESTS=`expr $TESTS + 1`
done
rm -rf data 100y.*
if [ $PASS = $TESTS ]
then
echo "`basename $0`: all $TESTS tests passed."
else
if [ $FAIL = 1 ]
then
echo "`basename $0`: $PASS of $TESTS tests passed, $FAIL test failed."
else
echo "`basename $0`: $PASS of $TESTS tests passed, $FAIL tests failed."
fi
fi
# rmdir will fail if 'udb' is not empty. This is a *feature*, not a bug --
# don't fix it!
test -d udb && rmdir udb