70 lines
2.2 KiB
Bash
Executable File
70 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Regression test harness for ReactICS BDD module
|
|
# Compares current output against saved expected output
|
|
|
|
set -uo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
REACTICS="$ROOT_DIR/reactics-bdd/reactics"
|
|
EXPECTED_DIR="$SCRIPT_DIR/expected"
|
|
|
|
PASS=0
|
|
FAIL=0
|
|
ERRORS=""
|
|
|
|
run_test() {
|
|
local name="$1"
|
|
local expected_file="$2"
|
|
shift 2
|
|
local actual
|
|
actual=$("$@" 2>&1) || true
|
|
local expected
|
|
expected=$(cat "$expected_file")
|
|
|
|
if [[ "$actual" == "$expected" ]]; then
|
|
echo " PASS: $name"
|
|
((PASS++))
|
|
else
|
|
echo " FAIL: $name"
|
|
diff <(echo "$expected") <(echo "$actual") | head -20
|
|
((FAIL++))
|
|
ERRORS="$ERRORS\n - $name"
|
|
fi
|
|
}
|
|
|
|
echo "Running ReactICS regression tests..."
|
|
echo
|
|
|
|
# --- tgc.drs tests ---
|
|
echo "[tgc]"
|
|
run_test "tgc print" "$EXPECTED_DIR/tgc_print.txt" "$REACTICS" -P examples/bdd/tgc.drs
|
|
run_test "tgc reactions" "$EXPECTED_DIR/tgc_reactions.txt" "$REACTICS" -r examples/bdd/tgc.drs
|
|
run_test "tgc states" "$EXPECTED_DIR/tgc_states.txt" "$REACTICS" -s examples/bdd/tgc.drs
|
|
run_test "tgc mc (f1-f4)" "$EXPECTED_DIR/tgc_mc.txt" \
|
|
bash -c 'for f in f1 f2 f3 f4; do '"$REACTICS"' -c $f examples/bdd/tgc.drs 2>&1; done'
|
|
|
|
echo
|
|
echo "[trivial]"
|
|
run_test "trivial print" "$EXPECTED_DIR/trivial_print.txt" "$REACTICS" -P reactics-bdd/in/trivial.drs
|
|
run_test "trivial reactions" "$EXPECTED_DIR/trivial_reactions.txt" "$REACTICS" -r reactics-bdd/in/trivial.drs
|
|
run_test "trivial states" "$EXPECTED_DIR/trivial_states.txt" "$REACTICS" -s reactics-bdd/in/trivial.drs
|
|
|
|
echo
|
|
echo "[tgc4]"
|
|
run_test "tgc4 print" "$EXPECTED_DIR/tgc4_print.txt" "$REACTICS" -P examples/bdd/tgc4.drs
|
|
run_test "tgc4 states" "$EXPECTED_DIR/tgc4_states.txt" "$REACTICS" -s examples/bdd/tgc4.drs
|
|
run_test "tgc4 mc (f1-f4)" "$EXPECTED_DIR/tgc4_mc.txt" \
|
|
bash -c 'for f in f1 f2 f3 f4; do '"$REACTICS"' -c $f examples/bdd/tgc4.drs 2>&1; done'
|
|
|
|
echo
|
|
echo "================================"
|
|
echo "Results: $PASS passed, $FAIL failed"
|
|
if [[ $FAIL -gt 0 ]]; then
|
|
echo -e "Failures:$ERRORS"
|
|
exit 1
|
|
else
|
|
echo "All tests passed."
|
|
fi
|