2022-10-21 19:34:18 +08:00

88 lines
2.0 KiB
Bash

#!/bin/sh
#--------------------------------------------------------------------------#
die () {
cecho "${HIDE}test/icnf/run.sh:${NORMAL} ${BAD}error:${NORMAL} $*"
exit 1
}
msg () {
cecho "${HIDE}test/icnf/run.sh:${NORMAL} $*"
}
for dir in . .. ../..
do
[ -f $dir/scripts/colors.sh ] || continue
. $dir/scripts/colors.sh || exit 1
break
done
#--------------------------------------------------------------------------#
[ -d ../test -a -d ../test/icnf ] || \
die "needs to be called from a top-level sub-directory of CaDiCaL"
[ x"$CADICALBUILD" = x ] && CADICALBUILD="../build"
[ -x "$CADICALBUILD/cadical" ] || \
die "can not find '$CADICALBUILD/cadical' (run 'make' first)"
cecho -n "$HILITE"
cecho "---------------------------------------------------------"
cecho "ICNF testing in '$CADICALBUILD'"
cecho "---------------------------------------------------------"
cecho -n "$NORMAL"
make -C $CADICALBUILD
res=$?
[ $res = 0 ] || exit $res
#--------------------------------------------------------------------------#
solver="$CADICALBUILD/cadical"
#--------------------------------------------------------------------------#
ok=0
failed=0
run () {
msg "running ICNF tests ${HILITE}'$1'${NORMAL}"
prefix=$CADICALBUILD/test-icnf
icnf=../test/icnf/$1.icnf
log=$prefix-$1.log
err=$prefix-$1.err
opts="$icnf --check"
opts="$icnf"
cecho "$solver \\"
cecho "$opts"
cecho -n "# $2 ..."
"$solver" $opts 1>$log 2>$err
res=$?
if [ ! $res = $2 ]
then
cecho " ${BAD}FAILED${NORMAL} (actual exit code $res)"
failed=`expr $failed + 1`
else
cecho " ${GOOD}ok${NORMAL} (exit code '$res' as expected)"
ok=`expr $ok + 1`
fi
}
run empty 10
run false 20
run unit1 20
run unit2 10
run two1 20
run two2 10
#--------------------------------------------------------------------------#
[ $ok -gt 0 ] && OK="$GOOD"
[ $failed -gt 0 ] && FAILED="$BAD"
msg "${HILITE}ICNF testing results:${NORMAL} ${OK}$ok ok${NORMAL}, ${FAILED}$failed failed${NORMAL}"
exit $failed