150 lines
3.5 KiB
Bash
150 lines
3.5 KiB
Bash
#!/bin/sh
|
|
|
|
#--------------------------------------------------------------------------#
|
|
|
|
die () {
|
|
cecho "${HIDE}test/usage/run.sh:${NORMAL} ${BAD}error:${NORMAL} $*"
|
|
exit 1
|
|
}
|
|
|
|
msg () {
|
|
cecho "${HIDE}test/usage/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/cnf ] || \
|
|
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 "usage testing in '$CADICALBUILD'"
|
|
cecho "---------------------------------------------------------"
|
|
cecho -n "$NORMAL"
|
|
|
|
make -C $CADICALBUILD
|
|
res=$?
|
|
[ $res = 0 ] || exit $res
|
|
|
|
#--------------------------------------------------------------------------#
|
|
|
|
solver="$CADICALBUILD/cadical"
|
|
|
|
#--------------------------------------------------------------------------#
|
|
|
|
cecho "starting test run `pwd`"
|
|
|
|
ok=0
|
|
failed=0
|
|
|
|
run () {
|
|
expected="$1"
|
|
options=`echo "$*"|sed -e 's,[^ ]*,,'`
|
|
name=`echo "@-$options"|sed -e 's,\.\./test/.*/,,g' -e 's,\.cnf\>,,g' -e 's,@,,' -e 's,[ \./],-,g' -e 's,--*,-,g'`
|
|
msg "running usage test ${HILITE}'test-usage$name'${NORMAL}"
|
|
buildprefix="$CADICALBUILD/test-usage$name"
|
|
log="$buildprefix.log"
|
|
err="$buildprefix.err"
|
|
cmd="$solver $options"
|
|
cecho -n "$cmd"
|
|
$cmd 1>$log 2>$err
|
|
res=$?
|
|
if [ $res = $expected ]
|
|
then
|
|
cecho " # ${GOOD}ok${NORMAL} (expected exit code '$res')"
|
|
ok=`expr $ok + 1`
|
|
else
|
|
cecho " # ${BAD}FAILED${NORMAL} (unexpected exit code '$res')"
|
|
failed=`expr $failed + 1`
|
|
fi
|
|
}
|
|
|
|
run 0 -h
|
|
run 0 --help
|
|
run 0 --version
|
|
run 0 --build
|
|
run 0 --copyright
|
|
|
|
run 10 ../test/cnf/empty.cnf
|
|
run 20 ../test/cnf/false.cnf
|
|
|
|
if [ x"`$solver --build 2>/dev/null|grep QUIET`" = x ]
|
|
then
|
|
run 10 -n ../test/cnf/empty.cnf
|
|
run 10 -v ../test/cnf/empty.cnf
|
|
run 10 -v -v ../test/cnf/empty.cnf
|
|
run 10 -v -v -v ../test/cnf/empty.cnf
|
|
run 10 -q ../test/cnf/empty.cnf
|
|
fi
|
|
|
|
run 1 ../test/usage/missing-clause.cnf
|
|
run 1 ../test/usage/variable-too-large.cnf
|
|
run 1 --strict relaxed-header.cnf
|
|
|
|
for option in "-f" "--force" "--force=1" "--force=true"
|
|
do
|
|
run 10 $option ../test/usage/missing-clause.cnf
|
|
run 10 $option ../test/usage/variable-too-large.cnf
|
|
done
|
|
|
|
run 20 ../test/usage/relaxed-header.cnf
|
|
|
|
# TODO: still need to add test cases for these:
|
|
|
|
for option in -O1 -O2 -O3
|
|
do
|
|
run 10 $option ../test/cnf/prime2209.cnf
|
|
done
|
|
|
|
for option in -L1 -L2 -L10
|
|
do
|
|
run 10 $option ../test/cnf/prime9.cnf
|
|
done
|
|
|
|
for option in -P1 -P2 -P16 -P128 -P1024
|
|
do
|
|
run 20 $option ../test/cnf/add16.cnf
|
|
done
|
|
|
|
# run 0 -t
|
|
# run 0 -O
|
|
# run 0 -c 0
|
|
# run 0 -c 1
|
|
# run 0 -c 2
|
|
# run 0 -d 0
|
|
# run 0 -d 1
|
|
# run 0 -d 2
|
|
|
|
# run 0 --colors # TODO all versions ....
|
|
# run 0 --no-colors # TODO all versions ....
|
|
# run 0 --no-leak # not needed
|
|
|
|
#--------------------------------------------------------------------------#
|
|
|
|
# not needed since tested in '../cnf'
|
|
|
|
# run 0 -o # working version not needed since testet in CNF tests
|
|
# run 0 -e # working version not needed since testet in CNF tests
|
|
# run 0 -s # working version not needed since tested in CNF tests
|
|
|
|
#--------------------------------------------------------------------------#
|
|
|
|
[ $ok -gt 0 ] && OK="$GOOD"
|
|
[ $failed -gt 0 ] && FAILED="$BAD"
|
|
|
|
msg "${HILITE}usage testing results:${NORMAL} ${OK}$ok ok${NORMAL}, ${FAILED}$failed failed${NORMAL}"
|
|
|
|
exit $failed
|