commit 49d8299adf0e869e0c2df7a590b02707b404e982 from: Sven M. Hallberg date: Fri Sep 09 11:17:14 2022 UTC add test script and make target The test target will run test.sh with the list of included roms. The test script (test.sh) runs the emulator on its arguments in trace mode and compares the result against the supplied .tsv file. Includes expected .tsv outputs. Also adds a 'clean' target. commit - be6fc12c3675954cf25b7f1f14171e26e2311d16 commit + 49d8299adf0e869e0c2df7a590b02707b404e982 blob - 1eaee9aedbcc5c9ea070e2047afce1be158c819e blob + a3c5dd0d1b330bc5cb32946fe2847adbf5f54e50 --- .gitignore +++ .gitignore @@ -1,4 +1,3 @@ hackem rom *.rom -*.tsv blob - 8f9f873b16c2d1b01be92656a42a8395c00331ee blob + 3d05b933ee1bcc2721890c605a449cf819aafd12 --- Makefile +++ Makefile @@ -1,9 +1,15 @@ CFLAGS += -Wall -.PHONY: all roms -all: hackem rom roms -roms: add.rom max.rom term0.rom term1.rom term2.rom +PROGS = hackem rom +ROMS = add.rom max.rom term0.rom term1.rom term2.rom +.PHONY: all test clean +all: ${PROGS} ${ROMS} +clean: + rm -f ${PROGS} ${ROMS} +test: all + sh test.sh ${ROMS} + .SUFFIXES: .hack .rom .tsv .hack.rom: ./rom $@ < $< blob - /dev/null blob + 7136a70eeed4cd04bc2191495bd3ffd9cb32d9cc (mode 644) --- /dev/null +++ add.tsv @@ -0,0 +1,9 @@ +T PC instr. A D R0/SP R1/LCL R2/ARG R3/THIS R4/THAT +0 0 000002 0 0 0 0 0 0 0 +1 1 166020 2 0 0 0 0 0 0 +2 2 000003 2 2 0 0 0 0 0 +3 3 160220 3 2 0 0 0 0 0 +4 4 000000 3 5 0 0 0 0 0 +5 5 161410 0 5 0 0 0 0 0 +6 6 000007 0 5 5 0 0 0 0 +7 7 165007 7 5 5 0 0 0 0 blob - /dev/null blob + 00b0dbcbe6317c1d415b054519ed3056358bd373 (mode 644) --- /dev/null +++ max.tsv @@ -0,0 +1,23 @@ +T PC instr. A D R0/SP R1/LCL R2/ARG R3/THIS R4/THAT +0 0 000015 0 0 0 0 0 0 0 +1 1 166020 13 0 0 0 0 0 0 +2 2 000000 13 13 0 0 0 0 0 +3 3 171410 0 13 0 0 0 0 0 +4 4 000021 0 13 13 0 0 0 0 +5 5 166020 17 13 13 0 0 0 0 +6 6 000001 17 17 13 0 0 0 0 +7 7 171410 1 17 13 0 0 0 0 +8 8 000000 1 17 13 17 0 0 0 +9 9 176020 0 17 13 17 0 0 0 +10 10 000001 0 13 13 17 0 0 0 +11 11 172320 1 13 13 17 0 0 0 +12 12 000022 1 -4 13 17 0 0 0 +13 13 161401 18 -4 13 17 0 0 0 +14 14 000001 18 -4 13 17 0 0 0 +15 15 176020 1 -4 13 17 0 0 0 +16 16 000024 1 17 13 17 0 0 0 +17 17 165207 20 17 13 17 0 0 0 +18 20 000002 20 17 13 17 0 0 0 +19 21 161410 2 17 13 17 0 0 0 +20 22 000026 2 17 13 17 17 0 0 +21 23 165207 22 17 13 17 17 0 0 blob - /dev/null blob + cc6e02926d8eca45adcaf77692a0d04caae9621e (mode 644) --- /dev/null +++ term0.tsv @@ -0,0 +1,2 @@ +T PC instr. A D R0/SP R1/LCL R2/ARG R3/THIS R4/THAT +0 0 165007 0 0 0 0 0 0 0 blob - /dev/null blob + 855060ba5a696b6e2b3245f3619c0016747c10f5 (mode 644) --- /dev/null +++ term1.tsv @@ -0,0 +1,4 @@ +T PC instr. A D R0/SP R1/LCL R2/ARG R3/THIS R4/THAT +0 0 167720 0 0 0 0 0 0 0 +1 1 000002 0 1 0 0 0 0 0 +2 2 165007 2 1 0 0 0 0 0 blob - /dev/null blob + ec2d5c39a2e9f99e760c909019ce914a8fae9513 (mode 644) --- /dev/null +++ term2.tsv @@ -0,0 +1,5 @@ +T PC instr. A D R0/SP R1/LCL R2/ARG R3/THIS R4/THAT +0 0 000027 0 0 0 0 0 0 0 +1 1 166020 23 0 0 0 0 0 0 +2 2 000002 23 23 0 0 0 0 0 +3 3 165207 2 23 0 0 0 0 0 blob - /dev/null blob + 6c52061b4721ce12e1d2cfe5e8467c575f2c4b94 (mode 644) --- /dev/null +++ test.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +result=0 + +t=$(mktemp) +for rom in "$@" +do + if ! hackem -t $t $rom + then + echo ERROR: $rom + result=$((result | 2)) + fi + if ! diff -u $(basename $rom .rom).tsv $t + then + echo FAIL: $rom + result=$((result | 1)) + else + echo ok: $rom + fi +done +rm -f $t + +exit $result