stuffy 6502
This commit is contained in:
Executable
+58
@@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env bash
|
||||
# End-to-end test: assemble -> link -> emulate, and check program output.
|
||||
# Usage: tests/e2e.sh
|
||||
set -euo pipefail
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
BIN="build/linux/x86_64/debug"
|
||||
OUT="build/e2e"
|
||||
mkdir -p "$OUT"
|
||||
|
||||
echo "== building =="
|
||||
xmake -y >/dev/null
|
||||
|
||||
WASM="$BIN/wiasm"
|
||||
WLINK="$BIN/wlinker"
|
||||
WCPU="$BIN/weirdcpu"
|
||||
|
||||
for t in "$WASM" "$WLINK" "$WCPU"; do
|
||||
[ -x "$t" ] || { echo "missing binary: $t"; exit 1; }
|
||||
done
|
||||
|
||||
fail=0
|
||||
check() { # name expected actual
|
||||
if [ "$2" = "$3" ]; then
|
||||
echo "PASS $1"
|
||||
else
|
||||
echo "FAIL $1"
|
||||
echo " expected: $(printf '%q' "$2")"
|
||||
echo " actual: $(printf '%q' "$3")"
|
||||
fail=1
|
||||
fi
|
||||
}
|
||||
|
||||
echo
|
||||
echo "== single object: hello =="
|
||||
"$WASM" -o "$OUT/hello.wo" examples/hello.asm
|
||||
"$WLINK" -o "$OUT/hello.wimg" --map "$OUT/hello.map" "$OUT/hello.wo"
|
||||
check "hello" "Hello, World!" "$("$WCPU" "$OUT/hello.wimg")"
|
||||
|
||||
echo
|
||||
echo "== cross object: putc + main =="
|
||||
"$WASM" -o "$OUT/putc.wo" examples/putc.asm
|
||||
"$WASM" -o "$OUT/main.wo" examples/main.asm
|
||||
"$WLINK" -o "$OUT/main.wimg" -e start --map "$OUT/main.map" "$OUT/putc.wo" "$OUT/main.wo"
|
||||
check "cross-object" "Hello, 6502!" "$("$WCPU" "$OUT/main.wimg")"
|
||||
|
||||
echo
|
||||
echo "== arithmetic loop: count =="
|
||||
"$WASM" -o "$OUT/count.wo" examples/count.asm
|
||||
"$WLINK" -o "$OUT/count.wimg" "$OUT/count.wo"
|
||||
check "count" "0123456789" "$("$WCPU" "$OUT/count.wimg")"
|
||||
|
||||
echo
|
||||
if [ "$fail" -ne 0 ]; then
|
||||
echo "e2e: FAILED"
|
||||
exit 1
|
||||
fi
|
||||
echo "e2e: OK"
|
||||
Reference in New Issue
Block a user